feat: add properties of spacetime

This commit is contained in:
jstoobysmith 2024-05-10 16:57:45 -04:00
parent 4ff3d9bc0b
commit b9c20861d1
2 changed files with 160 additions and 2 deletions

View file

@ -10,6 +10,7 @@ import Mathlib.Geometry.Manifold.Instances.Real
import Mathlib.RepresentationTheory.Basic import Mathlib.RepresentationTheory.Basic
import Mathlib.LinearAlgebra.Matrix.ToLin import Mathlib.LinearAlgebra.Matrix.ToLin
import Mathlib.Analysis.InnerProductSpace.Adjoint import Mathlib.Analysis.InnerProductSpace.Adjoint
import Mathlib.LinearAlgebra.CliffordAlgebra.Basic
/-! /-!
# The Standard Model # The Standard Model
@ -29,8 +30,86 @@ open Matrix
open Complex open Complex
open ComplexConjugate open ComplexConjugate
/-- The space-time (TODO: Change to Minkowski.) -/ noncomputable section spaceTime
abbrev spaceTime := EuclideanSpace (Fin 4)
/-- The space-time -/
def spaceTime : Type := Fin 4 →
/-- Give spacetime the structure of an additive commutative monoid. -/
instance : AddCommMonoid spaceTime := Pi.addCommMonoid
/-- Give spacetime the structure of a module over the reals. -/
instance : Module spaceTime := Pi.module _ _ _
instance euclideanNormedAddCommGroup : NormedAddCommGroup spaceTime := Pi.normedAddCommGroup
instance euclideanNormedSpace : NormedSpace spaceTime := Pi.normedSpace
namespace spaceTime
def asSmoothManifold : ModelWithCorners spaceTime spaceTime := 𝓘(, spaceTime)
@[simp]
def η : Matrix (Fin 4) (Fin 4) :=
![![1, 0, 0, 0], ![0, -1, 0, 0], ![0, 0, -1, 0], ![0, 0, 0, -1]]
lemma η_symmetric (μ ν : Fin 4) : η μ ν = η ν μ := by
fin_cases μ <;>
fin_cases ν <;>
simp only [η, Fin.zero_eta, Matrix.cons_val', Matrix.cons_val_fin_one, Matrix.cons_val_one,
Matrix.cons_val_succ', Matrix.cons_val_zero, Matrix.empty_val', Matrix.head_cons,
Matrix.head_fin_const, Matrix.head_cons, Matrix.vecCons_const, Fin.mk_one, Fin.mk_one]
@[simps!]
def linearMapForSpaceTime (x : spaceTime) : spaceTime →ₗ[] where
toFun y := x ⬝ᵥ (η *ᵥ y)
map_add' y z := by
simp only
rw [mulVec_add, dotProduct_add]
map_smul' c y := by
simp only
rw [mulVec_smul, dotProduct_smul]
rfl
def ηLin : LinearMap.BilinForm spaceTime where
toFun x := linearMapForSpaceTime x
map_add' x y := by
apply LinearMap.ext
intro z
simp only [linearMapForSpaceTime_apply, LinearMap.add_apply]
rw [add_dotProduct]
map_smul' c x := by
apply LinearMap.ext
intro z
simp only [linearMapForSpaceTime_apply, RingHom.id_apply, LinearMap.smul_apply, smul_eq_mul]
rw [smul_dotProduct]
rfl
def quadraticForm : QuadraticForm spaceTime := ηLin.toQuadraticForm
def lorentzGroup : Subgroup (GeneralLinearGroup (Fin 4) ) where
carrier := {Λ | ∀ (x y : spaceTime), ηLin (Λ *ᵥ x) (Λ *ᵥ y) = ηLin x y}
mul_mem' {a b} := by
intros ha hb x y
simp
rw [← mulVec_mulVec, ← mulVec_mulVec, ha, hb]
one_mem' := by
intros x y
simp
inv_mem' {a} := by
intros ha x y
simp only [coe_units_inv, ← ha ((a.1⁻¹) *ᵥ x) ((a.1⁻¹) *ᵥ y), mulVec_mulVec]
have hx : (a.1 * (a.1)⁻¹) = 1 := by
simp only [@Units.mul_eq_one_iff_inv_eq, coe_units_inv]
simp [hx]
abbrev cliffordAlgebra := CliffordAlgebra quadraticForm
end spaceTime
end spaceTime
/-- The global gauge group of the standard model. TODO: Generalize to quotient. -/ /-- The global gauge group of the standard model. TODO: Generalize to quotient. -/
abbrev gaugeGroup : Type := abbrev gaugeGroup : Type :=

View file

@ -0,0 +1,79 @@
/-
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license.
Authors: Joseph Tooby-Smith
-/
import HepLean.StandardModel.Basic
/-!
# The Clifford Algebra
This file defines the Gamma matrices.
## TODO
- Prove that the algebra generated by the gamma matrices is ismorphic to the
Clifford algebra assocaited with spacetime.
-
-/
namespace StandardModel
open Complex
noncomputable section diracRepresentation
def γ0 : Matrix (Fin 4) (Fin 4) :=
![![1, 0, 0, 0], ![0, 1, 0, 0], ![0, 0, -1, 0], ![0, 0, 0, -1]]
def γ1 : Matrix (Fin 4) (Fin 4) :=
![![0, 0, 0, 1], ![0, 0, 1, 0], ![0, -1, 0, 0], ![-1, 0, 0, 0]]
def γ2 : Matrix (Fin 4) (Fin 4) :=
![![0, 0, 0, - I], ![0, 0, I, 0], ![0, I, 0, 0], ![-I, 0, 0, 0]]
def γ3 : Matrix (Fin 4) (Fin 4) :=
![![0, 0, 1, 0], ![0, 0, 0, -1], ![-1, 0, 0, 0], ![0, 1, 0, 0]]
def γ5 : Matrix (Fin 4) (Fin 4) := I • (γ0 * γ1 * γ2 * γ3)
@[simp]
def γ : Fin 4 → Matrix (Fin 4) (Fin 4) := ![γ0, γ1, γ2, γ3]
namespace γ
variable (μ : Fin 4)
/-- The trace of the gamma matrices is zero. -/
lemma trace_eq_zero (μ : Fin 4) : Matrix.trace (γ μ) = 0 := by
fin_cases μ
<;> simp [γ, γ0, γ1, γ2, γ3]
<;> rw [Matrix.trace, Fin.sum_univ_four]
<;> simp
any_goals rfl
change 0 + 0 = 0
simp [add_zero]
@[simp]
def γSet : Set (Matrix (Fin 4) (Fin 4) ) := {γ i | i : Fin 4}
lemma γ_in_γSet (μ : Fin 4) : γ μ ∈ γSet := by
simp [γSet]
def diracAlgebra : Subalgebra (Matrix (Fin 4) (Fin 4) ) :=
Algebra.adjoin γSet
lemma γSet_subset_diracAlgebra : γSet ⊆ diracAlgebra :=
Algebra.subset_adjoin
lemma γ_in_diracAlgebra (μ : Fin 4) : γ μ ∈ diracAlgebra :=
γSet_subset_diracAlgebra (γ_in_γSet μ)
end γ
end diracRepresentation
end StandardModel