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
|
2024-07-31 08:52:09 -04:00
|
|
|
|
| realTensor.ColorType.up => asTenProd
|
|
|
|
|
| realTensor.ColorType.down => asCoTenProd
|
2024-07-30 08:07:47 -04:00
|
|
|
|
metric_dual μ :=
|
|
|
|
|
match μ with
|
2024-07-31 08:52:09 -04:00
|
|
|
|
| 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)
|
2024-07-31 08:52:09 -04:00
|
|
|
|
metric_inv μ g :=
|
|
|
|
|
match μ with
|
|
|
|
|
| .up => asTenProd_invariant g
|
|
|
|
|
| .down => asCoTenProd_invariant g
|
2024-07-29 16:54:59 -04:00
|
|
|
|
end
|