refactor: Move Real Lorentz vect
This commit is contained in:
parent
58ea861113
commit
e3ad445866
9 changed files with 10 additions and 10 deletions
|
@ -1,403 +0,0 @@
|
|||
/-
|
||||
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 HepLean.Meta.Informal
|
||||
import HepLean.Lorentz.Group.Basic
|
||||
import Mathlib.RepresentationTheory.Rep
|
||||
import Mathlib.Logic.Equiv.TransferInstance
|
||||
import HepLean.SpaceTime.PauliMatrices.SelfAdjoint
|
||||
/-!
|
||||
|
||||
## Modules associated with Real Lorentz vectors
|
||||
|
||||
We define the modules underlying real Lorentz vectors.
|
||||
|
||||
These definitions are preludes to the definitions of
|
||||
`Lorentz.contr` and `Lorentz.co`.
|
||||
|
||||
-/
|
||||
|
||||
namespace Lorentz
|
||||
|
||||
noncomputable section
|
||||
open Matrix
|
||||
open MatrixGroups
|
||||
open Complex
|
||||
|
||||
/-- The module for contravariant (up-index) real Lorentz vectors. -/
|
||||
structure ContrMod (d : ℕ) where
|
||||
/-- The underlying value as a vector `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
val : Fin 1 ⊕ Fin d → ℝ
|
||||
|
||||
namespace ContrMod
|
||||
|
||||
variable {d : ℕ}
|
||||
|
||||
@[ext]
|
||||
lemma ext {ψ ψ' : ContrMod d} (h : ψ.val = ψ'.val) : ψ = ψ' := by
|
||||
cases ψ
|
||||
cases ψ'
|
||||
subst h
|
||||
rfl
|
||||
|
||||
/-- The equivalence between `ContrℝModule` and `Fin 1 ⊕ Fin d → ℂ`. -/
|
||||
def toFin1dℝFun : ContrMod d ≃ (Fin 1 ⊕ Fin d → ℝ) where
|
||||
toFun v := v.val
|
||||
invFun f := ⟨f⟩
|
||||
left_inv _ := rfl
|
||||
right_inv _ := rfl
|
||||
|
||||
/-- The instance of `AddCommMonoid` on `ContrℝModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : AddCommMonoid (ContrMod d) := Equiv.addCommMonoid toFin1dℝFun
|
||||
|
||||
/-- The instance of `AddCommGroup` on `ContrℝModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : AddCommGroup (ContrMod d) := Equiv.addCommGroup toFin1dℝFun
|
||||
|
||||
/-- The instance of `Module` on `ContrℝModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : Module ℝ (ContrMod d) := Equiv.module ℝ toFin1dℝFun
|
||||
|
||||
@[simp]
|
||||
lemma val_add (ψ ψ' : ContrMod d) : (ψ + ψ').val = ψ.val + ψ'.val := rfl
|
||||
|
||||
@[simp]
|
||||
lemma val_smul (r : ℝ) (ψ : ContrMod d) : (r • ψ).val = r • ψ.val := rfl
|
||||
|
||||
/-- The linear equivalence between `ContrℝModule` and `(Fin 1 ⊕ Fin d → ℝ)`. -/
|
||||
def toFin1dℝEquiv : ContrMod d ≃ₗ[ℝ] (Fin 1 ⊕ Fin d → ℝ) :=
|
||||
Equiv.linearEquiv ℝ toFin1dℝFun
|
||||
|
||||
/-- The underlying element of `Fin 1 ⊕ Fin d → ℝ` of a element in `ContrℝModule` defined
|
||||
through the linear equivalence `toFin1dℝEquiv`. -/
|
||||
abbrev toFin1dℝ (ψ : ContrMod d) := toFin1dℝEquiv ψ
|
||||
|
||||
lemma toFin1dℝ_eq_val (ψ : ContrMod d) : ψ.toFin1dℝ = ψ.val := by rfl
|
||||
/-!
|
||||
|
||||
## The standard basis.
|
||||
|
||||
-/
|
||||
|
||||
/-- The standard basis of `ContrℝModule` indexed by `Fin 1 ⊕ Fin d`. -/
|
||||
@[simps!]
|
||||
def stdBasis : Basis (Fin 1 ⊕ Fin d) ℝ (ContrMod d) := Basis.ofEquivFun toFin1dℝEquiv
|
||||
|
||||
|
||||
@[simp]
|
||||
lemma stdBasis_toFin1dℝEquiv_apply_same (μ : Fin 1 ⊕ Fin d) :
|
||||
toFin1dℝEquiv (stdBasis μ) μ = 1 := by
|
||||
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
|
||||
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
|
||||
rw [@LinearEquiv.apply_symm_apply]
|
||||
exact Pi.single_eq_same μ 1
|
||||
|
||||
@[simp]
|
||||
lemma stdBasis_apply_same (μ : Fin 1 ⊕ Fin d) : (stdBasis μ).val μ = 1 :=
|
||||
stdBasis_toFin1dℝEquiv_apply_same μ
|
||||
|
||||
lemma stdBasis_toFin1dℝEquiv_apply_ne {μ ν : Fin 1 ⊕ Fin d} (h : μ ≠ ν) :
|
||||
toFin1dℝEquiv (stdBasis μ) ν = 0 := by
|
||||
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
|
||||
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
|
||||
rw [@LinearEquiv.apply_symm_apply]
|
||||
exact Pi.single_eq_of_ne' h 1
|
||||
|
||||
@[simp]
|
||||
lemma stdBasis_inl_apply_inr (i : Fin d) : (stdBasis (Sum.inl 0)).val (Sum.inr i) = 0 := by
|
||||
refine stdBasis_toFin1dℝEquiv_apply_ne ?_
|
||||
simp
|
||||
|
||||
lemma stdBasis_apply (μ ν : Fin 1 ⊕ Fin d) : (stdBasis μ).val ν = if μ = ν then 1 else 0 := by
|
||||
simp [stdBasis, Pi.basisFun_apply, Pi.single_apply]
|
||||
change Pi.single μ 1 ν = _
|
||||
simp [Pi.single_apply]
|
||||
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl)
|
||||
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a)
|
||||
|
||||
/-- Decomposition of a contrvariant Lorentz vector into the standard basis. -/
|
||||
lemma stdBasis_decomp (v : ContrMod d) : v = ∑ i, v.toFin1dℝ i • stdBasis i := by
|
||||
apply toFin1dℝEquiv.injective
|
||||
simp only [map_sum, _root_.map_smul]
|
||||
funext μ
|
||||
rw [Fintype.sum_apply μ fun c => toFin1dℝEquiv v c • toFin1dℝEquiv (stdBasis c)]
|
||||
change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dℝEquiv v x • (toFin1dℝEquiv (stdBasis x) μ)
|
||||
rw [Finset.sum_eq_single_of_mem μ (Finset.mem_univ μ)]
|
||||
· simp only [stdBasis_toFin1dℝEquiv_apply_same, smul_eq_mul, mul_one]
|
||||
· intro b _ hbμ
|
||||
rw [stdBasis_toFin1dℝEquiv_apply_ne hbμ]
|
||||
simp only [smul_eq_mul, mul_zero]
|
||||
|
||||
/-!
|
||||
|
||||
## mulVec
|
||||
|
||||
-/
|
||||
|
||||
abbrev mulVec (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : ContrMod d) :
|
||||
ContrMod d := Matrix.toLinAlgEquiv stdBasis M v
|
||||
|
||||
scoped[Lorentz] infixr:73 " *ᵥ " => ContrMod.mulVec
|
||||
|
||||
@[simp]
|
||||
lemma mulVec_toFin1dℝ (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : ContrMod d) :
|
||||
(M *ᵥ v).toFin1dℝ = M *ᵥ v.toFin1dℝ := by
|
||||
rfl
|
||||
|
||||
lemma mulVec_sub (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v w : ContrMod d) :
|
||||
M *ᵥ (v - w) = M *ᵥ v - M *ᵥ w := by
|
||||
simp only [mulVec, LinearMap.map_sub]
|
||||
|
||||
lemma sub_mulVec (M N : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : ContrMod d) :
|
||||
(M - N) *ᵥ v = M *ᵥ v - N *ᵥ v := by
|
||||
simp only [mulVec, map_sub, LinearMap.sub_apply]
|
||||
|
||||
lemma mulVec_add (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v w : ContrMod d) :
|
||||
M *ᵥ (v + w) = M *ᵥ v + M *ᵥ w := by
|
||||
simp only [mulVec, LinearMap.map_add]
|
||||
|
||||
@[simp]
|
||||
lemma one_mulVec (v : ContrMod d) : (1 : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) *ᵥ v = v := by
|
||||
simp only [mulVec, _root_.map_one, LinearMap.one_apply]
|
||||
|
||||
lemma mulVec_mulVec (M N : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : ContrMod d) :
|
||||
M *ᵥ (N *ᵥ v) = (M * N) *ᵥ v := by
|
||||
simp only [mulVec, _root_.map_mul, LinearMap.mul_apply]
|
||||
|
||||
/-!
|
||||
|
||||
## The norm
|
||||
|
||||
(Not the Minkowski norm, but the norm of a vector in `ContrℝModule d`.)
|
||||
-/
|
||||
|
||||
def norm : NormedAddCommGroup (ContrMod d) where
|
||||
norm v := ‖v.val‖₊
|
||||
dist_self x := Pi.normedAddCommGroup.dist_self x.val
|
||||
dist_triangle x y z := Pi.normedAddCommGroup.dist_triangle x.val y.val z.val
|
||||
dist_comm x y := Pi.normedAddCommGroup.dist_comm x.val y.val
|
||||
eq_of_dist_eq_zero {x y} := fun h => ext (MetricSpace.eq_of_dist_eq_zero h)
|
||||
|
||||
def toSpace (v : ContrMod d) : EuclideanSpace ℝ (Fin d) := v.val ∘ Sum.inr
|
||||
|
||||
/-!
|
||||
|
||||
## The representation.
|
||||
|
||||
-/
|
||||
|
||||
|
||||
/-- The representation of the Lorentz group acting on `ContrℝModule d`. -/
|
||||
def rep : Representation ℝ (LorentzGroup d) (ContrMod d) where
|
||||
toFun g := Matrix.toLinAlgEquiv stdBasis g
|
||||
map_one' := (MulEquivClass.map_eq_one_iff (Matrix.toLinAlgEquiv stdBasis)).mpr rfl
|
||||
map_mul' x y := by
|
||||
simp only [lorentzGroupIsGroup_mul_coe, _root_.map_mul]
|
||||
|
||||
lemma rep_apply_toFin1dℝ (g : LorentzGroup d) (ψ : ContrMod d) :
|
||||
(rep g ψ).toFin1dℝ = g.1 *ᵥ ψ.toFin1dℝ := by
|
||||
rfl
|
||||
|
||||
/-!
|
||||
|
||||
## To Self-Adjoint Matrix
|
||||
-/
|
||||
|
||||
/-- The linear equivalence between the vector-space `ContrMod 3` and self-adjoint
|
||||
`2×2`-complex matrices. -/
|
||||
def toSelfAdjoint : ContrMod 3 ≃ₗ[ℝ] selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ) :=
|
||||
toFin1dℝEquiv ≪≫ₗ (Finsupp.linearEquivFunOnFinite ℝ ℝ (Fin 1 ⊕ Fin 3)).symm ≪≫ₗ
|
||||
PauliMatrix.σSAL.repr.symm
|
||||
|
||||
lemma toSelfAdjoint_apply (x : ContrMod 3) : toSelfAdjoint x =
|
||||
x.toFin1dℝ (Sum.inl 0) • ⟨PauliMatrix.σ0, PauliMatrix.σ0_selfAdjoint⟩
|
||||
- x.toFin1dℝ (Sum.inr 0) • ⟨PauliMatrix.σ1, PauliMatrix.σ1_selfAdjoint⟩
|
||||
- x.toFin1dℝ (Sum.inr 1) • ⟨PauliMatrix.σ2, PauliMatrix.σ2_selfAdjoint⟩
|
||||
- x.toFin1dℝ (Sum.inr 2) • ⟨PauliMatrix.σ3, PauliMatrix.σ3_selfAdjoint⟩ := by
|
||||
simp only [toSelfAdjoint, PauliMatrix.σSAL, LinearEquiv.trans_apply, Basis.repr_symm_apply,
|
||||
Basis.coe_mk, Fin.isValue]
|
||||
rw [Finsupp.linearCombination_apply_of_mem_supported ℝ (s := Finset.univ)]
|
||||
· change (∑ i : Fin 1 ⊕ Fin 3, x.toFin1dℝ i • PauliMatrix.σSAL' i) = _
|
||||
simp only [PauliMatrix.σSAL', Fintype.sum_sum_type, Finset.univ_unique, Fin.default_eq_zero,
|
||||
Fin.isValue, Finset.sum_singleton, Fin.sum_univ_three]
|
||||
apply Subtype.ext
|
||||
simp only [Fin.isValue, AddSubgroup.coe_add, selfAdjoint.val_smul, smul_neg,
|
||||
AddSubgroupClass.coe_sub]
|
||||
simp only [neg_add, add_assoc, sub_eq_add_neg]
|
||||
· simp_all only [Finset.coe_univ, Finsupp.supported_univ, Submodule.mem_top]
|
||||
|
||||
lemma toSelfAdjoint_apply_coe (x : ContrMod 3) : (toSelfAdjoint x).1 =
|
||||
x.toFin1dℝ (Sum.inl 0) • PauliMatrix.σ0
|
||||
- x.toFin1dℝ (Sum.inr 0) • PauliMatrix.σ1
|
||||
- x.toFin1dℝ (Sum.inr 1) • PauliMatrix.σ2
|
||||
- x.toFin1dℝ (Sum.inr 2) • PauliMatrix.σ3 := by
|
||||
rw [toSelfAdjoint_apply]
|
||||
rfl
|
||||
|
||||
|
||||
lemma toSelfAdjoint_stdBasis (i : Fin 1 ⊕ Fin 3) :
|
||||
toSelfAdjoint (stdBasis i) = PauliMatrix.σSAL i := by
|
||||
rw [toSelfAdjoint_apply]
|
||||
match i with
|
||||
| Sum.inl 0 =>
|
||||
simp only [stdBasis, Fin.isValue, Basis.coe_ofEquivFun, LinearEquiv.apply_symm_apply,
|
||||
Pi.single_eq_same, one_smul, ne_eq, reduceCtorEq, not_false_eq_true, Pi.single_eq_of_ne,
|
||||
zero_smul, sub_zero, PauliMatrix.σSAL, Basis.coe_mk, PauliMatrix.σSAL']
|
||||
| Sum.inr 0 =>
|
||||
simp only [stdBasis, Fin.isValue, Basis.coe_ofEquivFun, LinearEquiv.apply_symm_apply, ne_eq,
|
||||
reduceCtorEq, not_false_eq_true, Pi.single_eq_of_ne, zero_smul, Pi.single_eq_same, one_smul,
|
||||
zero_sub, Sum.inr.injEq, one_ne_zero, sub_zero, Fin.reduceEq, PauliMatrix.σSAL, Basis.coe_mk,
|
||||
PauliMatrix.σSAL']
|
||||
rfl
|
||||
| Sum.inr 1 =>
|
||||
simp only [stdBasis, Fin.isValue, Basis.coe_ofEquivFun, LinearEquiv.apply_symm_apply, ne_eq,
|
||||
reduceCtorEq, not_false_eq_true, Pi.single_eq_of_ne, zero_smul, Sum.inr.injEq, zero_ne_one,
|
||||
sub_self, Pi.single_eq_same, one_smul, zero_sub, Fin.reduceEq, sub_zero, PauliMatrix.σSAL,
|
||||
Basis.coe_mk, PauliMatrix.σSAL']
|
||||
rfl
|
||||
| Sum.inr 2 =>
|
||||
simp only [stdBasis, Fin.isValue, Basis.coe_ofEquivFun, LinearEquiv.apply_symm_apply, ne_eq,
|
||||
reduceCtorEq, not_false_eq_true, Pi.single_eq_of_ne, zero_smul, Sum.inr.injEq, Fin.reduceEq,
|
||||
sub_self, Pi.single_eq_same, one_smul, zero_sub, PauliMatrix.σSAL, Basis.coe_mk,
|
||||
PauliMatrix.σSAL']
|
||||
rfl
|
||||
|
||||
@[simp]
|
||||
lemma toSelfAdjoint_symm_basis (i : Fin 1 ⊕ Fin 3) :
|
||||
toSelfAdjoint.symm (PauliMatrix.σSAL i) = (stdBasis i) := by
|
||||
refine (LinearEquiv.symm_apply_eq toSelfAdjoint).mpr ?_
|
||||
rw [toSelfAdjoint_stdBasis]
|
||||
|
||||
end ContrMod
|
||||
|
||||
/-- The module for covariant (up-index) complex Lorentz vectors. -/
|
||||
structure CoMod (d : ℕ) where
|
||||
/-- The underlying value as a vector `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
val : Fin 1 ⊕ Fin d → ℝ
|
||||
|
||||
namespace CoMod
|
||||
|
||||
variable {d : ℕ}
|
||||
|
||||
@[ext]
|
||||
lemma ext {ψ ψ' : CoMod d} (h : ψ.val = ψ'.val) : ψ = ψ' := by
|
||||
cases ψ
|
||||
cases ψ'
|
||||
subst h
|
||||
rfl
|
||||
|
||||
/-- The equivalence between `CoℝModule` and `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
def toFin1dℝFun : CoMod d ≃ (Fin 1 ⊕ Fin d → ℝ) where
|
||||
toFun v := v.val
|
||||
invFun f := ⟨f⟩
|
||||
left_inv _ := rfl
|
||||
right_inv _ := rfl
|
||||
|
||||
/-- The instance of `AddCommMonoid` on `CoℂModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : AddCommMonoid (CoMod d) := Equiv.addCommMonoid toFin1dℝFun
|
||||
|
||||
/-- The instance of `AddCommGroup` on `CoℝModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : AddCommGroup (CoMod d) := Equiv.addCommGroup toFin1dℝFun
|
||||
|
||||
/-- The instance of `Module` on `CoℝModule` defined via its equivalence
|
||||
with `Fin 1 ⊕ Fin d → ℝ`. -/
|
||||
instance : Module ℝ (CoMod d) := Equiv.module ℝ toFin1dℝFun
|
||||
|
||||
/-- The linear equivalence between `CoℝModule` and `(Fin 1 ⊕ Fin d → ℝ)`. -/
|
||||
def toFin1dℝEquiv : CoMod d ≃ₗ[ℝ] (Fin 1 ⊕ Fin d → ℝ) :=
|
||||
Equiv.linearEquiv ℝ toFin1dℝFun
|
||||
|
||||
/-- The underlying element of `Fin 1 ⊕ Fin d → ℝ` of a element in `CoℝModule` defined
|
||||
through the linear equivalence `toFin1dℝEquiv`. -/
|
||||
abbrev toFin1dℝ (ψ : CoMod d) := toFin1dℝEquiv ψ
|
||||
|
||||
/-!
|
||||
|
||||
## The standard basis.
|
||||
|
||||
-/
|
||||
|
||||
/-- The standard basis of `CoℝModule` indexed by `Fin 1 ⊕ Fin d`. -/
|
||||
@[simps!]
|
||||
def stdBasis : Basis (Fin 1 ⊕ Fin d) ℝ (CoMod d) := Basis.ofEquivFun toFin1dℝEquiv
|
||||
|
||||
@[simp]
|
||||
lemma stdBasis_toFin1dℝEquiv_apply_same (μ : Fin 1 ⊕ Fin d) :
|
||||
toFin1dℝEquiv (stdBasis μ) μ = 1 := by
|
||||
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
|
||||
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
|
||||
rw [@LinearEquiv.apply_symm_apply]
|
||||
exact Pi.single_eq_same μ 1
|
||||
|
||||
@[simp]
|
||||
lemma stdBasis_apply_same (μ : Fin 1 ⊕ Fin d) : (stdBasis μ).val μ = 1 :=
|
||||
stdBasis_toFin1dℝEquiv_apply_same μ
|
||||
|
||||
lemma stdBasis_toFin1dℝEquiv_apply_ne {μ ν : Fin 1 ⊕ Fin d} (h : μ ≠ ν) :
|
||||
toFin1dℝEquiv (stdBasis μ) ν = 0 := by
|
||||
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
|
||||
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
|
||||
rw [@LinearEquiv.apply_symm_apply]
|
||||
exact Pi.single_eq_of_ne' h 1
|
||||
|
||||
lemma stdBasis_apply (μ ν : Fin 1 ⊕ Fin d) : (stdBasis μ).val ν = if μ = ν then 1 else 0 := by
|
||||
simp [stdBasis, Pi.basisFun_apply, Pi.single_apply]
|
||||
change Pi.single μ 1 ν = _
|
||||
simp [Pi.single_apply]
|
||||
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl)
|
||||
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a)
|
||||
|
||||
|
||||
/-- Decomposition of a covariant Lorentz vector into the standard basis. -/
|
||||
lemma stdBasis_decomp (v : CoMod d) : v = ∑ i, v.toFin1dℝ i • stdBasis i := by
|
||||
apply toFin1dℝEquiv.injective
|
||||
simp only [map_sum, _root_.map_smul]
|
||||
funext μ
|
||||
rw [Fintype.sum_apply μ fun c => toFin1dℝEquiv v c • toFin1dℝEquiv (stdBasis c)]
|
||||
change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dℝEquiv v x • (toFin1dℝEquiv (stdBasis x) μ)
|
||||
rw [Finset.sum_eq_single_of_mem μ (Finset.mem_univ μ)]
|
||||
· simp only [stdBasis_toFin1dℝEquiv_apply_same, smul_eq_mul, mul_one]
|
||||
· intro b _ hbμ
|
||||
rw [stdBasis_toFin1dℝEquiv_apply_ne hbμ]
|
||||
simp only [smul_eq_mul, mul_zero]
|
||||
|
||||
/-!
|
||||
|
||||
## mulVec
|
||||
|
||||
-/
|
||||
|
||||
abbrev mulVec (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : CoMod d) :
|
||||
CoMod d := Matrix.toLinAlgEquiv stdBasis M v
|
||||
|
||||
scoped[Lorentz] infixr:73 " *ᵥ " => CoMod.mulVec
|
||||
|
||||
@[simp]
|
||||
lemma mulVec_toFin1dℝ (M : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ℝ) (v : CoMod d) :
|
||||
(M *ᵥ v).toFin1dℝ = M *ᵥ v.toFin1dℝ := by
|
||||
rfl
|
||||
|
||||
/-!
|
||||
|
||||
## The representation
|
||||
|
||||
-/
|
||||
|
||||
/-- The representation of the Lorentz group acting on `CoℝModule d`. -/
|
||||
def rep : Representation ℝ (LorentzGroup d) (CoMod d) where
|
||||
toFun g := Matrix.toLinAlgEquiv stdBasis (LorentzGroup.transpose g⁻¹)
|
||||
map_one' := by
|
||||
simp only [inv_one, LorentzGroup.transpose_one, lorentzGroupIsGroup_one_coe, _root_.map_one]
|
||||
map_mul' x y := by
|
||||
simp only [_root_.mul_inv_rev, lorentzGroupIsGroup_inv, LorentzGroup.transpose_mul,
|
||||
lorentzGroupIsGroup_mul_coe, _root_.map_mul]
|
||||
|
||||
end CoMod
|
||||
|
||||
end
|
||||
end Lorentz
|
Loading…
Add table
Add a link
Reference in a new issue