Imports
/- Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Nikolai Kashcheev, Joseph Tooby-Smith -/ module public import Physlib.Relativity.Tensors.ComplexTensor.Vector.Pre.Modules

Complex Lorentz vectors

We define complex Lorentz vectors in 4d space-time as representations of SL(2, C).

@[expose] public section

The standard basis of complex contravariant Lorentz vectors.

def complexContrBasis : Basis (Fin 1 ⊕ Fin 3) ℂ ContrℂModule := Basis.ofEquivFun ContrℂModule.toFin13ℂEquiv
@[simp] lemma complexContrBasis_toFin13ℂ (i :Fin 1 ⊕ Fin 3) : (complexContrBasis i).toFin13ℂ = Pi.single i 1 := i:Fin 1 ⊕ Fin 3⊢ (complexContrBasis i).toFin13ℂ = Pi.single i 1 i:Fin 1 ⊕ Fin 3⊢ (ContrℂModule.toFin13ℂEquiv.symm (Pi.single i 1)).toFin13ℂ = Pi.single i 1 All goals completed! 🐙M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (complexContrBasis.repr ((ContrℂModule.SL2CRep M) (complexContrBasis j))) i = LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ContrℂModule.toFin13ℂEquiv ((ContrℂModule.SL2CRep M) (ContrℂModule.toFin13ℂEquiv.symm (Pi.single j 1))) i = LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (LorentzGroup.toComplex (SL2C.toLorentzGroup M) *ᵥ Pi.single j 1) i = LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j All goals completed! 🐙lemma complexContrBasis_ρ_val (M : SL(2,ℂ)) (v : ContrℂModule) : ((ContrℂModule.SL2CRep M) v).val = LorentzGroup.toComplex (SL2C.toLorentzGroup M) *ᵥ v.val := M:SL(2, ℂ)v:ContrℂModule⊢ ((ContrℂModule.SL2CRep M) v).val = LorentzGroup.toComplex (SL2C.toLorentzGroup M) *ᵥ v.val All goals completed! 🐙

The standard basis of complex contravariant Lorentz vectors indexed by Fin 4.

def complexContrBasisFin4 : Basis (Fin 4) ℂ ContrℂModule := Basis.reindex complexContrBasis finSumFinEquiv
lemma complexContrBasisFin4_eq_reindex : complexContrBasisFin4 = complexContrBasis.reindex finSumFinEquiv := rfllemma complexContrBasis_reindex_apply_eq_fin4 (j : Fin 4) : (complexContrBasis.reindex finSumFinEquiv) j = complexContrBasisFin4 j := rfl@[simp] lemma complexContrBasisFin4_apply_zero : complexContrBasisFin4 0 = complexContrBasis (Sum.inl 0) := ⊢ complexContrBasisFin4 0 = complexContrBasis (Sum.inl 0) ⊢ complexContrBasis (finSumFinEquiv.symm 0) = complexContrBasis (Sum.inl 0) All goals completed! 🐙@[simp] lemma complexContrBasisFin4_apply_one : complexContrBasisFin4 1 = complexContrBasis (Sum.inr 0) := ⊢ complexContrBasisFin4 1 = complexContrBasis (Sum.inr 0) ⊢ complexContrBasis (finSumFinEquiv.symm 1) = complexContrBasis (Sum.inr 0) All goals completed! 🐙@[simp] lemma complexContrBasisFin4_apply_two : complexContrBasisFin4 2 = complexContrBasis (Sum.inr 1) := ⊢ complexContrBasisFin4 2 = complexContrBasis (Sum.inr 1) ⊢ complexContrBasis (finSumFinEquiv.symm 2) = complexContrBasis (Sum.inr 1) All goals completed! 🐙@[simp] lemma complexContrBasisFin4_apply_three : complexContrBasisFin4 3 = complexContrBasis (Sum.inr 2) := ⊢ complexContrBasisFin4 3 = complexContrBasis (Sum.inr 2) ⊢ complexContrBasis (finSumFinEquiv.symm 3) = complexContrBasis (Sum.inr 2) All goals completed! 🐙@[simp] lemma complexContrBasisFin4_apply_succ (i : Fin 3) : complexContrBasisFin4 i.succ = complexContrBasis (Sum.inr i) := i:Fin 3⊢ complexContrBasisFin4 i.succ = complexContrBasis (Sum.inr i) i:Fin 3⊢ complexContrBasis (finSumFinEquiv.symm i.succ) = complexContrBasis (Sum.inr i) i:Fin 3⊢ finSumFinEquiv.symm i.succ = Sum.inr i ⊢ finSumFinEquiv.symm ((fun i => i) ⟨0, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨0, ⋯⟩)⊢ finSumFinEquiv.symm ((fun i => i) ⟨1, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨1, ⋯⟩)⊢ finSumFinEquiv.symm ((fun i => i) ⟨2, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨2, ⋯⟩) ⊢ finSumFinEquiv.symm ((fun i => i) ⟨0, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨0, ⋯⟩)⊢ finSumFinEquiv.symm ((fun i => i) ⟨1, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨1, ⋯⟩)⊢ finSumFinEquiv.symm ((fun i => i) ⟨2, ⋯⟩).succ = Sum.inr ((fun i => i) ⟨2, ⋯⟩) All goals completed! 🐙

The standard basis of complex covariant Lorentz vectors.

def complexCoBasis : Basis (Fin 1 ⊕ Fin 3) ℂ CoℂModule := Basis.ofEquivFun CoℂModule.toFin13ℂEquiv
@[simp] lemma complexCoBasis_toFin13ℂ (i :Fin 1 ⊕ Fin 3) : (complexCoBasis i).toFin13ℂ = Pi.single i 1 := i:Fin 1 ⊕ Fin 3⊢ (complexCoBasis i).toFin13ℂ = Pi.single i 1 i:Fin 1 ⊕ Fin 3⊢ (CoℂModule.toFin13ℂEquiv.symm (Pi.single i 1)).toFin13ℂ = Pi.single i 1 All goals completed! 🐙M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (complexCoBasis.repr ((CoℂModule.SL2CRep M) (complexCoBasis j))) i = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ i j M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ CoℂModule.toFin13ℂEquiv ((CoℂModule.SL2CRep M) (CoℂModule.toFin13ℂEquiv.symm (Pi.single j 1))) i = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ j i M:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ *ᵥ Pi.single j 1) i = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ j i All goals completed! 🐙lemma CoℂModule.SL2CRep_val (M : SL(2,ℂ)) (v : CoℂModule) : ((CoℂModule.SL2CRep M) v).val = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ *ᵥ v.val := M:SL(2, ℂ)v:CoℂModule⊢ ((SL2CRep M) v).val = (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ *ᵥ v.val All goals completed! 🐙

The standard basis of complex covariant Lorentz vectors indexed by Fin 4.

def complexCoBasisFin4 : Basis (Fin 4) ℂ CoℂModule := Basis.reindex complexCoBasis finSumFinEquiv
lemma complexCoBasisFin4_eq_reindex : complexCoBasisFin4 = complexCoBasis.reindex finSumFinEquiv := rfllemma complexCoBasis_reindex_apply_eq_fin4 (j : Fin 4) : (complexCoBasis.reindex finSumFinEquiv) j = complexCoBasisFin4 j := rfl@[simp] lemma complexCoBasisFin4_apply_zero : complexCoBasisFin4 0 = complexCoBasis (Sum.inl 0) := ⊢ complexCoBasisFin4 0 = complexCoBasis (Sum.inl 0) ⊢ complexCoBasis (finSumFinEquiv.symm 0) = complexCoBasis (Sum.inl 0) All goals completed! 🐙@[simp] lemma complexCoBasisFin4_apply_one : complexCoBasisFin4 1 = complexCoBasis (Sum.inr 0) := ⊢ complexCoBasisFin4 1 = complexCoBasis (Sum.inr 0) ⊢ complexCoBasis (finSumFinEquiv.symm 1) = complexCoBasis (Sum.inr 0) All goals completed! 🐙@[simp] lemma complexCoBasisFin4_apply_two : complexCoBasisFin4 2 = complexCoBasis (Sum.inr 1) := ⊢ complexCoBasisFin4 2 = complexCoBasis (Sum.inr 1) ⊢ complexCoBasis (finSumFinEquiv.symm 2) = complexCoBasis (Sum.inr 1) All goals completed! 🐙@[simp] lemma complexCoBasisFin4_apply_three : complexCoBasisFin4 3 = complexCoBasis (Sum.inr 2) := ⊢ complexCoBasisFin4 3 = complexCoBasis (Sum.inr 2) ⊢ complexCoBasis (finSumFinEquiv.symm 3) = complexCoBasis (Sum.inr 2) All goals completed! 🐙

Relation to real

The semilinear map including real Lorentz vectors into complex contravariant lorentz vectors.

c:ℝx:ContrMod 3⊢ { val := ofReal ∘ (c • x).toFin1dℝ }.val = ofRealHom c • { val := ofReal ∘ x.toFin1dℝ }.val c:ℝx:ContrMod 3i:Fin 1 ⊕ Fin 3⊢ { val := ofReal ∘ (c • x).toFin1dℝ }.val i = (ofRealHom c • { val := ofReal ∘ x.toFin1dℝ }.val) i c:ℝx:ContrMod 3i:Fin 1 ⊕ Fin 3⊢ ↑(c • ContrMod.toFin1dℝEquiv x i) = ↑c • ↑(x.toFin1dℝ i) All goals completed! 🐙
lemma inclCongrRealLorentz_val (v : ContrMod 3) : (inclCongrRealLorentz v).val = ofRealHom ∘ v.toFin1dℝ := rfli:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h:¬i = j⊢ Pi.single i 1 j = ↑0 All goals completed! 🐙M:SL(2, ℂ)v:ContrMod 3⊢ ⇑ofRealHom ∘ (↑(SL2C.toLorentzGroup M) *ᵥ v.toFin1dℝ) = ⇑ofRealHom ∘ ((ContrMod.rep (SL2C.toLorentzGroup M)) v).toFin1dℝ All goals completed! 🐙All goals completed! 🐙

The semilinear map including real Lorentz co-vectors into complex covariant Lorentz vectors.

c:ℝx:CoMod 3i:Fin 1 ⊕ Fin 3⊢ { val := ofReal ∘ (c • x).toFin1dℝ }.val i = (ofRealHom c • { val := ofReal ∘ x.toFin1dℝ }.val) i c:ℝx:CoMod 3i:Fin 1 ⊕ Fin 3⊢ ↑(c • CoMod.toFin1dℝEquiv x i) = ↑c • ↑(x.toFin1dℝ i) All goals completed! 🐙
lemma inclCoRealLorentz_val (v : CoMod 3) : (inclCoRealLorentz v).val = ofRealHom ∘ v.toFin1dℝ := rfli:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h:¬i = j⊢ Pi.single i 1 j = ↑0 All goals completed! 🐙All goals completed! 🐙