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.ComplexTensor.Matrix.Pre public import Physlib.Relativity.Tensors.ComplexTensor.Vector.Pre.Contraction

Unit for complex Lorentz vectors

@[expose] public section

The contra-co unit for complex lorentz vectors. Usually denoted δⁱᵢ.

def contrCoUnitVal : ContrℂModule ⊗[] CoℂModule := contrCoToMatrix.symm 1

Expansion of contrCoUnitVal into basis.

lemma contrCoUnitVal_expand_tmul : contrCoUnitVal = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) := contrCoUnitVal = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) contrCoToMatrix.symm 1 = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) erw [ i, j, 1 i j complexContrBasis i ⊗ₜ[] complexCoBasis j = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) i, j, 1 i j complexContrBasis i ⊗ₜ[] complexCoBasis j = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) All goals completed! 🐙
lemma contrCoUnitVal_eq_sum_tmul : contrCoUnitVal = i, complexContrBasis i ⊗ₜ[] complexCoBasis i := contrCoUnitVal = i, complexContrBasis i ⊗ₜ[] complexCoBasis i complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) All goals completed! 🐙

The contra-co unit for complex lorentz vectors as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ complexContr ⊗ complexCo, manifesting the invariance under the SL(2, ℂ) action.

M:SL(2, )x:contrCoToMatrix.symm 1 = contrCoToMatrix.symm (LorentzGroup.toComplex (SL2C.toLorentzGroup M) * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹) M:SL(2, )x:1 = LorentzGroup.toComplex (SL2C.toLorentzGroup M) * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ All goals completed! 🐙
All goals completed! 🐙

The co-contra unit for complex lorentz vectors. Usually denoted δᵢⁱ.

def coContrUnitVal : CoℂModule ⊗[] ContrℂModule := coContrToMatrix.symm 1

Expansion of coContrUnitVal into basis.

i, j, 1 i j complexCoBasis i ⊗ₜ[] complexContrBasis j = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) All goals completed! 🐙
lemma coContrUnitVal_eq_sum_tmul : coContrUnitVal = i, complexCoBasis i ⊗ₜ[] complexContrBasis i := coContrUnitVal = i, complexCoBasis i ⊗ₜ[] complexContrBasis i complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) All goals completed! 🐙

The co-contra unit for complex lorentz vectors as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ complexCo ⊗ complexContr, manifesting the invariance under the SL(2, ℂ) action.

M:SL(2, )x:coContrToMatrix.symm 1 = coContrToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))) M:SL(2, )x:1 = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) M:SL(2, )x:(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) = 1 M:SL(2, )x:((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ * 1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))) = 1 All goals completed! 🐙
All goals completed! 🐙

Contraction of the units

Contraction on the right with contrCoUnit does nothing.

lemma contr_contrCoUnit (x : CoℂModule) : (TensorProduct.lid _ <| coContrContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (contrCoUnit (1 : ))) = x := x:CoℂModule(TensorProduct.lid CoℂModule) ((LinearMap.rTensor CoℂModule coContrContraction.toLinearMap) ((TensorProduct.assoc CoℂModule ContrℂModule CoℂModule).symm (x ⊗ₜ[] contrCoUnit 1))) = x x:CoℂModulec:Fin 1 Fin 3 hc: i, c i complexCoBasis i = x(TensorProduct.lid CoℂModule) ((LinearMap.rTensor CoℂModule coContrContraction.toLinearMap) ((TensorProduct.assoc CoℂModule ContrℂModule CoℂModule).symm (x ⊗ₜ[] contrCoUnit 1))) = x c:Fin 1 Fin 3 (TensorProduct.lid CoℂModule) ((LinearMap.rTensor CoℂModule coContrContraction.toLinearMap) ((TensorProduct.assoc CoℂModule ContrℂModule CoℂModule).symm ((∑ i, c i complexCoBasis i) ⊗ₜ[] contrCoUnit 1))) = i, c i complexCoBasis i All goals completed! 🐙

Contraction on the right with coContrUnit.

lemma contr_coContrUnit (x : ContrℂModule) : (TensorProduct.lid _ <| contrCoContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (coContrUnit (1 : ))) = x := x:ContrℂModule(TensorProduct.lid ContrℂModule) ((LinearMap.rTensor ContrℂModule contrCoContraction.toLinearMap) ((TensorProduct.assoc ContrℂModule CoℂModule ContrℂModule).symm (x ⊗ₜ[] coContrUnit 1))) = x x:ContrℂModulec:Fin 1 Fin 3 hc: i, c i complexContrBasis i = x(TensorProduct.lid ContrℂModule) ((LinearMap.rTensor ContrℂModule contrCoContraction.toLinearMap) ((TensorProduct.assoc ContrℂModule CoℂModule ContrℂModule).symm (x ⊗ₜ[] coContrUnit 1))) = x c:Fin 1 Fin 3 (TensorProduct.lid ContrℂModule) ((LinearMap.rTensor ContrℂModule contrCoContraction.toLinearMap) ((TensorProduct.assoc ContrℂModule CoℂModule ContrℂModule).symm ((∑ i, c i complexContrBasis i) ⊗ₜ[] coContrUnit 1))) = i, c i complexContrBasis i All goals completed! 🐙

Symmetry properties of the units

complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) = (LinearMap.lTensor ContrℂModule (LinearEquiv.refl CoℂModule)) ((TensorProduct.comm CoℂModule ContrℂModule) (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2))) All goals completed! 🐙complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) = (LinearMap.lTensor CoℂModule (LinearEquiv.refl ContrℂModule)) ((TensorProduct.comm ContrℂModule CoℂModule) (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2))) All goals completed! 🐙