PhysLean/HepLean/SpaceTime/LorentzTensor/Real/Basic.lean

145 lines
4.2 KiB
Text
Raw Normal View History

2024-07-29 16:54:59 -04:00
/-
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.SpaceTime.LorentzVector.Contraction
2024-07-30 07:51:07 -04:00
import HepLean.SpaceTime.LorentzVector.LorentzAction
import HepLean.SpaceTime.LorentzTensor.MulActionTensor
2024-07-29 16:54:59 -04:00
/-!
# Real Lorentz tensors
-/
open TensorProduct
open minkowskiMatrix
namespace realTensor
variable {d : }
/-!
## Definitions and lemmas needed to define a `LorentzTensorStructure`
-/
2024-07-30 08:07:47 -04:00
/-- The type colors for real Lorentz tensors. -/
2024-07-29 16:54:59 -04:00
inductive ColorType
| up
| down
2024-08-01 15:19:56 -04:00
/-- An equivalence between `ColorType ≃ Fin 1 ⊕ Fin 1`. -/
2024-08-01 15:08:02 -04:00
def colorTypEquivFin1Fin1 : ColorType ≃ Fin 1 ⊕ Fin 1 where
toFun
| ColorType.up => Sum.inl ⟨0, Nat.zero_lt_one⟩
| ColorType.down => Sum.inr ⟨0, Nat.zero_lt_one⟩
invFun
| Sum.inl _ => ColorType.up
| Sum.inr _ => ColorType.down
left_inv := by
intro x
cases x
2024-08-01 15:19:56 -04:00
simp only
simp only
2024-08-01 15:08:02 -04:00
right_inv := by
intro x
cases x
2024-08-01 15:19:56 -04:00
simp only [Fin.zero_eta, Fin.isValue, Sum.inl.injEq]
2024-08-01 15:08:02 -04:00
rename_i f
exact (Fin.fin_one_eq_zero f).symm
2024-08-01 15:19:56 -04:00
simp only [Fin.zero_eta, Fin.isValue, Sum.inr.injEq]
2024-08-01 15:08:02 -04:00
rename_i f
exact (Fin.fin_one_eq_zero f).symm
instance : DecidableEq realTensor.ColorType :=
Equiv.decidableEq colorTypEquivFin1Fin1
instance : Fintype realTensor.ColorType where
elems := {realTensor.ColorType.up, realTensor.ColorType.down}
complete := by
intro x
cases x
2024-08-01 15:19:56 -04:00
simp only [Finset.mem_insert, Finset.mem_singleton, or_false]
simp only [Finset.mem_insert, Finset.mem_singleton, or_true]
2024-08-01 15:08:02 -04:00
2024-07-29 16:54:59 -04:00
end realTensor
2024-08-01 15:08:02 -04:00
noncomputable section
2024-07-29 16:54:59 -04:00
open realTensor
/-! TODO: Set up the notation `𝓛𝓣` or similar. -/
/-- The `LorentzTensorStructure` associated with real Lorentz tensors. -/
def realLorentzTensor (d : ) : TensorStructure where
2024-07-30 08:07:47 -04:00
Color := ColorType
ColorModule μ :=
match μ with
| .up => LorentzVector d
| .down => CovariantLorentzVector d
τ μ :=
match μ with
| .up => .down
| .down => .up
τ_involutive μ :=
match μ with
| .up => rfl
| .down => rfl
colorModule_addCommMonoid μ :=
match μ with
| .up => instAddCommMonoidLorentzVector d
| .down => instAddCommMonoidCovariantLorentzVector d
colorModule_module μ :=
match μ with
| .up => instModuleRealLorentzVector d
| .down => instModuleRealCovariantLorentzVector d
contrDual μ :=
match μ with
| .up => LorentzVector.contrUpDown
| .down => LorentzVector.contrDownUp
contrDual_symm μ :=
match μ with
| .up => by
intro x y
simp only [LorentzVector.contrDownUp, Equiv.cast_refl, Equiv.refl_apply, LinearMap.coe_comp,
LinearEquiv.coe_coe, Function.comp_apply, comm_tmul]
| .down => by
intro x y
simp only [LorentzVector.contrDownUp, LinearMap.coe_comp, LinearEquiv.coe_coe,
Function.comp_apply, comm_tmul, Equiv.cast_refl, Equiv.refl_apply]
unit μ :=
match μ with
| .up => LorentzVector.unitUp
| .down => LorentzVector.unitDown
2024-07-30 16:31:38 -04:00
unit_rid μ :=
2024-07-30 08:07:47 -04:00
match μ with
2024-07-30 16:31:38 -04:00
| .up => LorentzVector.unitUp_rid
| .down => LorentzVector.unitDown_rid
2024-07-30 08:07:47 -04:00
metric μ :=
match μ with
| realTensor.ColorType.up => asTenProd
| realTensor.ColorType.down => asCoTenProd
2024-07-30 08:07:47 -04:00
metric_dual μ :=
match μ with
| realTensor.ColorType.up => asTenProd_contr_asCoTenProd
| realTensor.ColorType.down => asCoTenProd_contr_asTenProd
2024-07-29 16:54:59 -04:00
2024-08-01 15:08:02 -04:00
instance : Fintype (realLorentzTensor d).Color := realTensor.instFintypeColorType
instance : DecidableEq (realLorentzTensor d).Color := realTensor.instDecidableEqColorType
2024-07-30 07:51:07 -04:00
/-- The action of the Lorentz group on real Lorentz tensors. -/
instance : MulActionTensor (LorentzGroup d) (realLorentzTensor d) where
repColorModule μ :=
match μ with
| .up => LorentzVector.rep
| .down => CovariantLorentzVector.rep
contrDual_inv μ _ :=
match μ with
| .up => TensorProduct.ext' (fun _ _ => LorentzVector.contrUpDown_invariant_lorentzAction)
| .down => TensorProduct.ext' (fun _ _ => LorentzVector.contrDownUp_invariant_lorentzAction)
metric_inv μ g :=
match μ with
| .up => asTenProd_invariant g
| .down => asCoTenProd_invariant g
2024-07-29 16:54:59 -04:00
end