Imports
/- Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Physlib.Relativity.Tensors.RealTensor.Vector.Pre.Basic public import Mathlib.LinearAlgebra.TensorProduct.Matrix

Tensor products of two real Lorentz vectors

@[expose] public section

Equivalence of ContrMod ⊗ ContrMod to (1 + d) x (1 + d) real matrices.

def contrContrToMatrixRe {d : } : (ContrMod d ⊗[] ContrMod d) ≃ₗ[] Matrix (Fin 1 Fin d) (Fin 1 Fin d) := (Basis.tensorProduct (contrBasis d) (contrBasis d)).repr ≪≫ₗ Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d)) ≪≫ₗ LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)

Expanding contrContrToMatrixRe in terms of the standard basis.

d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) x, y, ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (x, y) ((contrBasis d).tensorProduct (contrBasis d)) (x, y) = i, j, M i j (contrBasis d) i ⊗ₜ[] (contrBasis d) j d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) ((contrBasis d).tensorProduct (contrBasis d)) (i, j) = M i j (contrBasis d) i ⊗ₜ[] (contrBasis d) j erw [d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (contrBasis d) i ⊗ₜ[] (contrBasis d) j = M i j (contrBasis d) i ⊗ₜ[] (contrBasis d) jd:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (contrBasis d) i ⊗ₜ[] (contrBasis d) j = M i j (contrBasis d) i ⊗ₜ[] (contrBasis d) j All goals completed! 🐙 d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) (Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M) Finsupp.supported Finset.univ All goals completed! 🐙

Equivalence of CoMod ⊗ CoMod to (1 + d) x (1 + d) real matrices.

def coCoToMatrixRe {d : } : (CoMod d ⊗[] CoMod d) ≃ₗ[] Matrix (Fin 1 Fin d) (Fin 1 Fin d) := (Basis.tensorProduct (coBasis d) (coBasis d)).repr ≪≫ₗ Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d)) ≪≫ₗ LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)

Expanding coCoToMatrixRe in terms of the standard basis.

d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) x, y, ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (x, y) ((coBasis d).tensorProduct (coBasis d)) (x, y) = i, j, M i j (coBasis d) i ⊗ₜ[] (coBasis d) j d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) ((coBasis d).tensorProduct (coBasis d)) (i, j) = M i j (coBasis d) i ⊗ₜ[] (coBasis d) j erw [d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (coBasis d) i ⊗ₜ[] (coBasis d) j = M i j (coBasis d) i ⊗ₜ[] (coBasis d) jd:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (coBasis d) i ⊗ₜ[] (coBasis d) j = M i j (coBasis d) i ⊗ₜ[] (coBasis d) j All goals completed! 🐙 d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) (Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M) Finsupp.supported Finset.univ All goals completed! 🐙

Equivalence of ContrMod d ⊗ CoMod d to (1 + d) x (1 + d) real matrices.

def contrCoToMatrixRe {d : } : (ContrMod d ⊗[] CoMod d) ≃ₗ[] Matrix (Fin 1 Fin d) (Fin 1 Fin d) := (Basis.tensorProduct (contrBasis d) (coBasis d)).repr ≪≫ₗ Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d)) ≪≫ₗ LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)

Expansion of (coBasis d) (coBasis d) in terms of the standard basis.

d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) x, y, ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (x, y) ((contrBasis d).tensorProduct (coBasis d)) (x, y) = i, j, M i j (contrBasis d) i ⊗ₜ[] (coBasis d) j d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) ((contrBasis d).tensorProduct (coBasis d)) (i, j) = M i j (contrBasis d) i ⊗ₜ[] (coBasis d) j erw [d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (contrBasis d) i ⊗ₜ[] (coBasis d) j = M i j (contrBasis d) i ⊗ₜ[] (coBasis d) jd:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (contrBasis d) i ⊗ₜ[] (coBasis d) j = M i j (contrBasis d) i ⊗ₜ[] (coBasis d) j All goals completed! 🐙 d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) (Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M) Finsupp.supported Finset.univ All goals completed! 🐙

Equivalence of CoMod d ⊗ ContrMod d to (1 + d) x (1 + d) real matrices.

def coContrToMatrixRe : (CoMod d ⊗[] ContrMod d) ≃ₗ[] Matrix (Fin 1 Fin d) (Fin 1 Fin d) := (Basis.tensorProduct (coBasis d) (contrBasis d)).repr ≪≫ₗ Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d)) ≪≫ₗ LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)

Expansion of coContrToMatrixRe in terms of the standard basis.

d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) x, y, ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (x, y) ((coBasis d).tensorProduct (contrBasis d)) (x, y) = i, j, M i j (coBasis d) i ⊗ₜ[] (contrBasis d) j d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) ((coBasis d).tensorProduct (contrBasis d)) (i, j) = M i j (coBasis d) i ⊗ₜ[] (contrBasis d) j erw [d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (coBasis d) i ⊗ₜ[] (contrBasis d) j = M i j (coBasis d) i ⊗ₜ[] (contrBasis d) jd:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) i:Fin 1 Fin dx✝¹:i Finset.univj:Fin 1 Fin dx✝:j Finset.univ((Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M)) (i, j) (coBasis d) i ⊗ₜ[] (contrBasis d) j = M i j (coBasis d) i ⊗ₜ[] (contrBasis d) j All goals completed! 🐙 d:M:Matrix (Fin 1 Fin d) (Fin 1 Fin d) (Finsupp.linearEquivFunOnFinite ((Fin 1 Fin d) × (Fin 1 Fin d))).symm ((LinearEquiv.curry (Fin 1 Fin d) (Fin 1 Fin d)).symm M) Finsupp.supported Finset.univ All goals completed! 🐙

Group actions

d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d y, x, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j y * contrContrToMatrixRe v x y = x, i_1, M i i_1 * contrContrToMatrixRe v i_1 x * M j x d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d(fun y => x, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j y * contrContrToMatrixRe v x y) = fun x => i_1, M i i_1 * contrContrToMatrixRe v i_1 x * M j x d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d x_1, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x_1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * contrContrToMatrixRe v x_1 x = i_1, M i i_1 * contrContrToMatrixRe v i_1 x * M j x d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d(fun x_1 => (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x_1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * contrContrToMatrixRe v x_1 x) = fun i_1 => M i i_1 * contrContrToMatrixRe v i_1 x * M j x d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin d(LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * contrContrToMatrixRe v x1 x = M i x1 * contrContrToMatrixRe v x1 x * M j x d:v:ContrMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin dM i x1 * M j x * contrContrToMatrixRe v x1 x = M i x1 * contrContrToMatrixRe v x1 x * M j x All goals completed! 🐙d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d y, x, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j y * coCoToMatrixRe v x y = x, i_1, (↑M)⁻¹ i_1 i * coCoToMatrixRe v i_1 x * M⁻¹ x j d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d(fun y => x, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j y * coCoToMatrixRe v x y) = fun x => i_1, (↑M)⁻¹ i_1 i * coCoToMatrixRe v i_1 x * M⁻¹ x j d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d x_1, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x_1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * coCoToMatrixRe v x_1 x = i_1, (↑M)⁻¹ i_1 i * coCoToMatrixRe v i_1 x * M⁻¹ x j d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d(fun x_1 => (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x_1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * coCoToMatrixRe v x_1 x) = fun i_1 => (↑M)⁻¹ i_1 i * coCoToMatrixRe v i_1 x * M⁻¹ x j d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin d(LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * coCoToMatrixRe v x1 x = (↑M)⁻¹ x1 i * coCoToMatrixRe v x1 x * M⁻¹ x j d:v:CoMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin dM⁻¹ x1 i * M⁻¹ x j * coCoToMatrixRe v x1 x = M⁻¹ x1 i * coCoToMatrixRe v x1 x * M⁻¹ x j All goals completed! 🐙d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d y, x, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j y * contrCoToMatrixRe v x y = x, i_1, M i i_1 * contrCoToMatrixRe v i_1 x * (↑M)⁻¹ x j d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d(fun y => x, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j y * contrCoToMatrixRe v x y) = fun x => i_1, M i i_1 * contrCoToMatrixRe v i_1 x * (↑M)⁻¹ x j d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d x_1, (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x_1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * contrCoToMatrixRe v x_1 x = i_1, M i i_1 * contrCoToMatrixRe v i_1 x * (↑M)⁻¹ x j d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d(fun x_1 => (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x_1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * contrCoToMatrixRe v x_1 x) = fun i_1 => M i i_1 * contrCoToMatrixRe v i_1 x * (↑M)⁻¹ x j d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin d(LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) i x1 * (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) j x * contrCoToMatrixRe v x1 x = M i x1 * contrCoToMatrixRe v x1 x * (↑M)⁻¹ x j d:v:ContrMod d ⊗[] CoMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin dM i x1 * (↑M)⁻¹ x j * contrCoToMatrixRe v x1 x = M i x1 * contrCoToMatrixRe v x1 x * (↑M)⁻¹ x j All goals completed! 🐙d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d y, x, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j y * coContrToMatrixRe v x y = x, i_1, (↑M)⁻¹ i_1 i * coContrToMatrixRe v i_1 x * M j x d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d(fun y => x, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j y * coContrToMatrixRe v x y) = fun x => i_1, (↑M)⁻¹ i_1 i * coContrToMatrixRe v i_1 x * M j x d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d x_1, (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x_1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * coContrToMatrixRe v x_1 x = i_1, (↑M)⁻¹ i_1 i * coContrToMatrixRe v i_1 x * M j x d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin d(fun x_1 => (LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x_1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * coContrToMatrixRe v x_1 x) = fun i_1 => (↑M)⁻¹ i_1 i * coContrToMatrixRe v i_1 x * M j x d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin d(LinearMap.toMatrix (coBasis d) (coBasis d)) (CoMod.rep M) i x1 * (LinearMap.toMatrix (contrBasis d) (contrBasis d)) (ContrMod.rep M) j x * coContrToMatrixRe v x1 x = (↑M)⁻¹ x1 i * coContrToMatrixRe v x1 x * M j x d:v:CoMod d ⊗[] ContrMod dM:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dx:Fin 1 Fin dx1:Fin 1 Fin d(↑M)⁻¹ x1 i * M j x * coContrToMatrixRe v x1 x = (↑M)⁻¹ x1 i * coContrToMatrixRe v x1 x * M j x All goals completed! 🐙

The symm version of the group actions.

lemma contrContrToMatrixRe_ρ_symm {d : } (v : Matrix (Fin 1 Fin d) (Fin 1 Fin d) ) (M : LorentzGroup d) : TensorProduct.map (ContrMod.rep M) (ContrMod.rep M) (contrContrToMatrixRe.symm v) = contrContrToMatrixRe.symm (M.1 * v * M.1) := d:v:Matrix (Fin 1 Fin d) (Fin 1 Fin d) M:(LorentzGroup d)(TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (contrContrToMatrixRe.symm v) = contrContrToMatrixRe.symm (M * v * (↑M)) d:v:Matrix (Fin 1 Fin d) (Fin 1 Fin d) M:(LorentzGroup d)contrContrToMatrixRe ((TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (contrContrToMatrixRe.symm v)) = contrContrToMatrixRe (contrContrToMatrixRe.symm (M * v * (↑M))) All goals completed! 🐙d:v:Matrix (Fin 1 Fin d) (Fin 1 Fin d) M:(LorentzGroup d)h1:coCoToMatrixRe ((TensorProduct.map (CoMod.rep M) (CoMod.rep M)) (coCoToMatrixRe.symm v)) = (↑M⁻¹) * v * M⁻¹(TensorProduct.map (CoMod.rep M) (CoMod.rep M)) (coCoToMatrixRe.symm v) = coCoToMatrixRe.symm (coCoToMatrixRe ((TensorProduct.map (CoMod.rep M) (CoMod.rep M)) (coCoToMatrixRe.symm v))) All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙