PhysLean/HepLean/Lorentz/ComplexVector/Basic.lean

155 lines
5.8 KiB
Text
Raw Normal View History

/-
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
-/
import Mathlib.Data.Complex.Exponential
import Mathlib.Analysis.InnerProductSpace.PiL2
2024-11-09 17:43:48 +00:00
import HepLean.Lorentz.SL2C.Basic
2024-11-09 17:41:00 +00:00
import HepLean.Lorentz.ComplexVector.Modules
import HepLean.Meta.Informal
import Mathlib.RepresentationTheory.Rep
2024-11-09 17:43:48 +00:00
import HepLean.Lorentz.PauliMatrices.SelfAdjoint
/-!
# Complex Lorentz vectors
We define complex Lorentz vectors in 4d space-time as representations of SL(2, C).
-/
noncomputable section
open Matrix
open MatrixGroups
open Complex
open TensorProduct
namespace Lorentz
/-- The representation of `SL(2, )` on complex vectors corresponding to contravariant
Lorentz vectors. In index notation these have an up index `ψⁱ`. -/
def complexContr : Rep SL(2, ) := Rep.of ContrModule.SL2CRep
/-- The representation of `SL(2, )` on complex vectors corresponding to contravariant
Lorentz vectors. In index notation these have a down index `ψⁱ`. -/
def complexCo : Rep SL(2, ) := Rep.of CoModule.SL2CRep
/-- The standard basis of complex contravariant Lorentz vectors. -/
2024-11-08 06:41:33 +00:00
def complexContrBasis : Basis (Fin 1 ⊕ Fin 3) complexContr :=
Basis.ofEquivFun ContrModule.toFin13Equiv
2024-10-23 08:01:23 +00:00
@[simp]
lemma complexContrBasis_toFin13 (i :Fin 1 ⊕ Fin 3) :
(complexContrBasis i).toFin13 = Pi.single i 1 := by
simp only [complexContrBasis, Basis.coe_ofEquivFun]
rfl
@[simp]
lemma complexContrBasis_ρ_apply (M : SL(2,)) (i j : Fin 1 ⊕ Fin 3) :
(LinearMap.toMatrix complexContrBasis complexContrBasis) (complexContr.ρ M) i j =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M)) i j := by
rw [LinearMap.toMatrix_apply]
simp only [complexContrBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply, transpose_apply]
change (((LorentzGroup.toComplex (SL2C.toLorentzGroup M))) *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, transpose_apply, mul_one]
2024-10-16 10:39:11 +00:00
lemma complexContrBasis_ρ_val (M : SL(2,)) (v : complexContr) :
((complexContr.ρ M) v).val =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) *ᵥ v.val := by
rfl
2024-10-23 08:01:23 +00:00
/-- The standard basis of complex contravariant Lorentz vectors indexed by `Fin 4`. -/
def complexContrBasisFin4 : Basis (Fin 4) complexContr :=
Basis.reindex complexContrBasis finSumFinEquiv
/-- The standard basis of complex covariant Lorentz vectors. -/
2024-11-08 06:41:33 +00:00
def complexCoBasis : Basis (Fin 1 ⊕ Fin 3) complexCo :=
Basis.ofEquivFun CoModule.toFin13Equiv
2024-10-23 08:01:23 +00:00
@[simp]
lemma complexCoBasis_toFin13 (i :Fin 1 ⊕ Fin 3) : (complexCoBasis i).toFin13 = Pi.single i 1 := by
simp only [complexCoBasis, Basis.coe_ofEquivFun]
rfl
@[simp]
lemma complexCoBasis_ρ_apply (M : SL(2,)) (i j : Fin 1 ⊕ Fin 3) :
(LinearMap.toMatrix complexCoBasis complexCoBasis) (complexCo.ρ M) i j =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ i j := by
rw [LinearMap.toMatrix_apply]
simp only [complexCoBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply, transpose_apply]
change ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, transpose_apply, mul_one]
2024-10-23 08:01:23 +00:00
/-- The standard basis of complex covariant Lorentz vectors indexed by `Fin 4`. -/
def complexCoBasisFin4 : Basis (Fin 4) complexCo :=
Basis.reindex complexCoBasis finSumFinEquiv
2024-10-16 10:39:11 +00:00
/-!
## Relation to real
-/
2024-10-16 10:57:46 +00:00
/-- The semilinear map including real Lorentz vectors into complex contravariant
lorentz vectors. -/
def inclCongrRealLorentz : ContrMod 3 →ₛₗ[Complex.ofRealHom] complexContr where
toFun v := {val := ofReal ∘ v.toFin1d}
2024-10-16 10:39:11 +00:00
map_add' x y := by
apply Lorentz.ContrModule.ext
rw [Lorentz.ContrModule.val_add]
funext i
simp only [Function.comp_apply, ofRealHom_eq_coe, Pi.add_apply, map_add]
2024-11-02 08:50:17 +00:00
simp only [ofRealHom_eq_coe, ofReal_add]
2024-10-16 10:39:11 +00:00
map_smul' c x := by
apply Lorentz.ContrModule.ext
rw [Lorentz.ContrModule.val_smul]
funext i
simp only [Function.comp_apply, ofRealHom_eq_coe, Pi.smul_apply, _root_.map_smul]
2024-11-02 08:50:17 +00:00
simp only [smul_eq_mul, ofRealHom_eq_coe, ofReal_mul]
2024-10-16 10:39:11 +00:00
lemma inclCongrRealLorentz_val (v : ContrMod 3) :
(inclCongrRealLorentz v).val = ofRealHom ∘ v.toFin1d := rfl
2024-10-16 10:39:11 +00:00
lemma complexContrBasis_of_real (i : Fin 1 ⊕ Fin 3) :
(complexContrBasis i) = inclCongrRealLorentz (ContrMod.stdBasis i) := by
2024-10-16 10:39:11 +00:00
apply Lorentz.ContrModule.ext
simp only [complexContrBasis, Basis.coe_ofEquivFun, inclCongrRealLorentz,
2024-10-16 11:09:52 +00:00
LinearMap.coe_mk, AddHom.coe_mk]
2024-10-16 10:39:11 +00:00
ext j
2024-11-09 17:29:43 +00:00
simp only [Function.comp_apply]
2024-10-16 10:39:11 +00:00
change (Pi.single i 1) j = _
by_cases h : i = j
· subst h
rw [ContrMod.toFin1d, ContrMod.stdBasis_toFin1dEquiv_apply_same]
simp
· rw [ContrMod.toFin1d, ContrMod.stdBasis_toFin1dEquiv_apply_ne h]
simp [h]
lemma inclCongrRealLorentz_ρ (M : SL(2, )) (v : ContrMod 3) :
2024-10-16 10:39:11 +00:00
(complexContr.ρ M) (inclCongrRealLorentz v) =
inclCongrRealLorentz ((Contr 3).ρ (SL2C.toLorentzGroup M) v) := by
2024-10-16 10:39:11 +00:00
apply Lorentz.ContrModule.ext
rw [complexContrBasis_ρ_val, inclCongrRealLorentz_val, inclCongrRealLorentz_val]
rw [LorentzGroup.toComplex_mulVec_ofReal]
apply congrArg
2024-10-16 10:57:46 +00:00
simp only [SL2C.toLorentzGroup_apply_coe]
change _ = ContrMod.toFin1d ((SL2C.toLorentzGroup M) *ᵥ v)
simp only [SL2C.toLorentzGroup_apply_coe, ContrMod.mulVec_toFin1d]
2024-10-16 10:39:11 +00:00
2024-11-09 18:12:05 +00:00
/-! TODO: Rename. -/
2024-10-16 10:39:11 +00:00
lemma SL2CRep_ρ_basis (M : SL(2, )) (i : Fin 1 ⊕ Fin 3) :
(complexContr.ρ M) (complexContrBasis i) =
∑ j, (SL2C.toLorentzGroup M).1 j i •
complexContrBasis j := by
rw [complexContrBasis_of_real, inclCongrRealLorentz_ρ]
rw [Contr.ρ_stdBasis, map_sum]
2024-10-16 10:39:11 +00:00
apply congrArg
funext j
2024-11-02 08:50:17 +00:00
simp only [LinearMap.map_smulₛₗ, ofRealHom_eq_coe, coe_smul]
2024-10-16 10:39:11 +00:00
rw [complexContrBasis_of_real]
2024-11-09 18:12:05 +00:00
/-! TODO: Include relation to real Lorentz vectors. -/
end Lorentz
end