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! 🐙