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.Modules public import Mathlib.RepresentationTheory.Rep.Basic

Real Lorentz vectors

We define real Lorentz vectors in as representations of the Lorentz group.

@[expose] public section

The standard basis of contravariant Lorentz vectors.

def contrBasis (d : := 3) : Basis (Fin 1 Fin d) (ContrMod d) := Basis.ofEquivFun ContrMod.toFin1dℝEquiv
d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d((contrBasis d).repr ((ContrMod.rep M) ((contrBasis d) j))) i = M i j d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dContrMod.toFin1dℝEquiv ((ContrMod.rep M) (ContrMod.toFin1dℝEquiv.symm (Pi.single j 1))) i = M i j d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d(M *ᵥ Pi.single j 1) i = M i j All goals completed! 🐙@[simp] lemma contrBasis_toFin1dℝ {d : } (i : Fin 1 Fin d) : (contrBasis d i).toFin1dℝ = Pi.single i 1 := d:i:Fin 1 Fin d((contrBasis d) i).toFin1dℝ = Pi.single i 1 d:i:Fin 1 Fin dContrMod.toFin1dℝEquiv (ContrMod.toFin1dℝEquiv.symm (Pi.single i 1)) = Pi.single i 1 All goals completed! 🐙lemma contrBasis_repr_apply {d : } (p : ContrMod d) (i : Fin 1 Fin d) : (contrBasis d).repr p i = p.val i := d:p:ContrMod di:Fin 1 Fin d((contrBasis d).repr p) i = p.val i d:p:ContrMod di:Fin 1 Fin dContrMod.toFin1dℝEquiv p i = p.val i All goals completed! 🐙

The standard basis of contravariant Lorentz vectors indexed by Fin (1 + d).

def contrBasisFin (d : := 3) : Basis (Fin (1 + d)) (ContrMod d) := Basis.reindex (contrBasis d) finSumFinEquiv
@[simp] lemma contrBasisFin_toFin1dℝ {d : } (i : Fin (1 + d)) : (contrBasisFin d i).toFin1dℝ = Pi.single (finSumFinEquiv.symm i) 1 := d:i:Fin (1 + d)((contrBasisFin d) i).toFin1dℝ = Pi.single (finSumFinEquiv.symm i) 1 All goals completed! 🐙lemma contrBasisFin_repr_apply {d : } (p : ContrMod d) (i : Fin (1 + d)) : (contrBasisFin d).repr p i = p.val (finSumFinEquiv.symm i) := d:p:ContrMod di:Fin (1 + d)((contrBasisFin d).repr p) i = p.val (finSumFinEquiv.symm i) All goals completed! 🐙lemma continuous_contr {T : Type} [TopologicalSpace T] (f : T ContrMod d) (h : Continuous (fun i => (f i).toFin1dℝ)) : Continuous f := d:T:Typeinst✝:TopologicalSpace Tf:T ContrMod dh:Continuous fun i => (f i).toFin1dℝContinuous f All goals completed! 🐙d:T:Typeinst✝:TopologicalSpace Tf:ContrMod d Th:Continuous (f ContrMod.toFin1dℝEquiv.symm)x:ContrMod d ≃ₜ (Fin 1 Fin d ) := ContrMod.toFin1dℝEquiv.toEquiv.toHomeomorphOfIsInducing Continuous (f x.symm) All goals completed! 🐙

The standard basis of contravariant Lorentz vectors.

def coBasis (d : := 3) : Basis (Fin 1 Fin d) (CoMod d) := Basis.ofEquivFun CoMod.toFin1dℝEquiv
d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d((coBasis d).repr ((CoMod.rep M) ((coBasis d) j))) i = (↑M)⁻¹ i j d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin dCoMod.toFin1dℝEquiv ((CoMod.rep M) (CoMod.toFin1dℝEquiv.symm (Pi.single j 1))) i = (↑M)⁻¹ j i d:M:(LorentzGroup d)i:Fin 1 Fin dj:Fin 1 Fin d((LorentzGroup.transpose M⁻¹) *ᵥ Pi.single j 1) i = (↑M)⁻¹ j i All goals completed! 🐙lemma coBasis_repr_apply {d : } (p : CoMod d) (i : Fin 1 Fin d) : (coBasis d).repr p i = p.val i := d:p:CoMod di:Fin 1 Fin d((coBasis d).repr p) i = p.val i d:p:CoMod di:Fin 1 Fin dCoMod.toFin1dℝEquiv p i = p.val i All goals completed! 🐙@[simp] lemma coBasis_toFin1dℝ {d : } (i : Fin 1 Fin d) : (coBasis d i).toFin1dℝ = Pi.single i 1 := d:i:Fin 1 Fin d((coBasis d) i).toFin1dℝ = Pi.single i 1 d:i:Fin 1 Fin d(CoMod.toFin1dℝEquiv.symm (Pi.single i 1)).toFin1dℝ = Pi.single i 1 All goals completed! 🐙

The standard basis of covariant Lorentz vectors indexed by Fin (1 + d).

def coBasisFin (d : := 3) : Basis (Fin (1 + d)) (CoMod d) := Basis.reindex (coBasis d) finSumFinEquiv
@[simp] lemma coBasisFin_toFin1dℝ {d : } (i : Fin (1 + d)) : (coBasisFin d i).toFin1dℝ = Pi.single (finSumFinEquiv.symm i) 1 := d:i:Fin (1 + d)((coBasisFin d) i).toFin1dℝ = Pi.single (finSumFinEquiv.symm i) 1 All goals completed! 🐙lemma coBasisFin_repr_apply {d : } (p : CoMod d) (i : Fin (1 + d)) : (coBasisFin d).repr p i = p.val (finSumFinEquiv.symm i) := d:p:CoMod di:Fin (1 + d)((coBasisFin d).repr p) i = p.val (finSumFinEquiv.symm i) All goals completed! 🐙

Isomorphism between contravariant and covariant Lorentz vectors

The morphism of representations from ContrMod.rep to CoMod.rep defined by multiplication with the metric.

def Contr.toCo (d : ) : IntertwiningMap (ContrMod.rep (d := d)) (CoMod.rep (d := d)) where toFun := fun ψ => CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) map_add' := d: (x y : ContrMod d), CoMod.toFin1dℝEquiv.symm (η *ᵥ (x + y).toFin1dℝ) = CoMod.toFin1dℝEquiv.symm (η *ᵥ x.toFin1dℝ) + CoMod.toFin1dℝEquiv.symm (η *ᵥ y.toFin1dℝ) d:ψ:ContrMod dψ':ContrMod dCoMod.toFin1dℝEquiv.symm (η *ᵥ (ψ + ψ').toFin1dℝ) = CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) + CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ'.toFin1dℝ) All goals completed! 🐙 map_smul' := d: (m : ) (x : ContrMod d), CoMod.toFin1dℝEquiv.symm (η *ᵥ (m x).toFin1dℝ) = (RingHom.id ) m CoMod.toFin1dℝEquiv.symm (η *ᵥ x.toFin1dℝ) d:r:ψ:ContrMod dCoMod.toFin1dℝEquiv.symm (η *ᵥ (r ψ).toFin1dℝ) = (RingHom.id ) r CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) All goals completed! 🐙 isIntertwining' g := d:g:(LorentzGroup d){ toFun := fun ψ => CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } ∘ₗ ContrMod.rep g = CoMod.rep g ∘ₗ { toFun := fun ψ => CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } d:g:(LorentzGroup d)ψ:ContrMod d({ toFun := fun ψ => CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } ∘ₗ ContrMod.rep g) ψ = (CoMod.rep g ∘ₗ { toFun := fun ψ => CoMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := }) ψ conv_lhs => d:g:(LorentzGroup d)ψ:ContrMod d| CoMod.toFin1dℝEquiv.symm (η *ᵥ g *ᵥ ψ.toFin1dℝ) d:g:(LorentzGroup d)ψ:ContrMod d| CoMod.toFin1dℝEquiv.symm ((LorentzGroup.transpose g⁻¹) *ᵥ η *ᵥ ψ.toFin1dℝ) All goals completed! 🐙

The morphism of representations from CoMod.rep to ContrMod.rep defined by multiplication with the metric.

def Co.toContr (d : ) : IntertwiningMap (CoMod.rep (d := d)) (ContrMod.rep (d := d)) where toFun := fun ψ => ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) map_add' := d: (x y : CoMod d), ContrMod.toFin1dℝEquiv.symm (η *ᵥ (x + y).toFin1dℝ) = ContrMod.toFin1dℝEquiv.symm (η *ᵥ x.toFin1dℝ) + ContrMod.toFin1dℝEquiv.symm (η *ᵥ y.toFin1dℝ) d:ψ:CoMod dψ':CoMod dContrMod.toFin1dℝEquiv.symm (η *ᵥ (ψ + ψ').toFin1dℝ) = ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) + ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ'.toFin1dℝ) All goals completed! 🐙 map_smul' := d: (m : ) (x : CoMod d), ContrMod.toFin1dℝEquiv.symm (η *ᵥ (m x).toFin1dℝ) = (RingHom.id ) m ContrMod.toFin1dℝEquiv.symm (η *ᵥ x.toFin1dℝ) d:r:ψ:CoMod dContrMod.toFin1dℝEquiv.symm (η *ᵥ (r ψ).toFin1dℝ) = (RingHom.id ) r ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ) All goals completed! 🐙 isIntertwining' g := d:g:(LorentzGroup d){ toFun := fun ψ => ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } ∘ₗ CoMod.rep g = ContrMod.rep g ∘ₗ { toFun := fun ψ => ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } d:g:(LorentzGroup d)ψ:CoMod d({ toFun := fun ψ => ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := } ∘ₗ CoMod.rep g) ψ = (ContrMod.rep g ∘ₗ { toFun := fun ψ => ContrMod.toFin1dℝEquiv.symm (η *ᵥ ψ.toFin1dℝ), map_add' := , map_smul' := }) ψ conv_lhs => d:g:(LorentzGroup d)ψ:CoMod d| ContrMod.toFin1dℝEquiv.symm (η *ᵥ (LorentzGroup.transpose g⁻¹) *ᵥ ψ.toFin1dℝ) d:g:(LorentzGroup d)ψ:CoMod d| ContrMod.toFin1dℝEquiv.symm (g *ᵥ η *ᵥ ψ.toFin1dℝ) All goals completed! 🐙

The isomorphism between ContrMod.rep and CoMod.rep induced by multiplication with the Minkowski metric.

def contrIsoCo (d : ) : Representation.Equiv (ContrMod.rep (d := d)) (CoMod.rep (d := d)) := d:ContrMod.rep.Equiv CoMod.rep d:Function.LeftInverse (⇑(Co.toContr d)) (Contr.toCo d).toFund:Function.RightInverse (⇑(Co.toContr d)) (Contr.toCo d).toFun d:Function.LeftInverse (⇑(Co.toContr d)) (Contr.toCo d).toFun d:x:ContrMod d(Co.toContr d) ((Contr.toCo d).toFun x) = x All goals completed! 🐙 d:Function.RightInverse (⇑(Co.toContr d)) (Contr.toCo d).toFun d:x:CoMod d(Contr.toCo d).toFun ((Co.toContr d) x) = x All goals completed! 🐙

Other properties

lemma ρ_stdBasis (μ : Fin 1 Fin 3) (Λ : LorentzGroup 3) : ContrMod.rep Λ (ContrMod.stdBasis μ) = j, Λ.1 j μ ContrMod.stdBasis j := μ:Fin 1 Fin 3Λ:(LorentzGroup 3)(ContrMod.rep Λ) (ContrMod.stdBasis μ) = j, Λ j μ ContrMod.stdBasis j μ:Fin 1 Fin 3Λ:(LorentzGroup 3)Λ *ᵥ ContrMod.stdBasis μ = j, Λ j μ ContrMod.stdBasis j μ:Fin 1 Fin 3Λ:(LorentzGroup 3)(Λ *ᵥ ContrMod.stdBasis μ).val = (∑ j, Λ j μ ContrMod.stdBasis j).val All goals completed! 🐙