Imports
/- Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Nikolai Kashcheev, Joseph Tooby-Smith -/ module public import Physlib.SpaceAndTime.SpaceTime.Basic public import Physlib.Meta.Linters.Sorry public import Mathlib.RingTheory.RootsOfUnity.Complex

The Standard Model

This file defines the basic properties of the standard model in particle physics.

@[expose] public section

The unquotiented gauge group

The global gauge group of the Standard Model with no discrete quotients. The I in the Name is an indication of the statement that this has no discrete quotients.

abbrev GaugeGroupI : Type := specialUnitaryGroup (Fin 3) ℂ × specialUnitaryGroup (Fin 2) ℂ × unitary ℂ

The underlying element of SU(3) of an element in GaugeGroupI.

def toSU3 : GaugeGroupI →* specialUnitaryGroup (Fin 3) ℂ where toFun g := g.1 map_one' := rfl map_mul' _ _ := rfl

The underlying element of SU(2) of an element in GaugeGroupI.

def toSU2 : GaugeGroupI →* specialUnitaryGroup (Fin 2) ℂ where toFun g := g.2.1 map_one' := rfl map_mul' _ _ := rfl

The underlying element of U(1) of an element in GaugeGroupI.

def toU1 : GaugeGroupI →* unitary ℂ where toFun g := g.2.2 map_one' := rfl map_mul' _ _ := rfl
@[ext] lemma ext {g g' : GaugeGroupI} (hSU3 : toSU3 g = toSU3 g') (hSU2 : toSU2 g = toSU2 g') (hU1 : toU1 g = toU1 g') : g = g' := Prod.ext hSU3 (Prod.ext hSU2 hU1)instance : Star GaugeGroupI where star g := (star g.1, star g.2.1, star g.2.2)lemma star_eq (g : GaugeGroupI) : star g = (star g.1, star g.2.1, star g.2.2) := rfl@[simp] lemma star_toSU3 (g : GaugeGroupI) : toSU3 (star g) = star (toSU3 g) := rfl@[simp] lemma star_toSU2 (g : GaugeGroupI) : toSU2 (star g) = star (toSU2 g) := rfl@[simp] lemma star_toU1 (g : GaugeGroupI) : toU1 (star g) = star (toU1 g) := rflinstance : InvolutiveStar GaugeGroupI where star_involutive g := g:GaugeGroupI⊢ star (star g) = g g:GaugeGroupI⊢ toSU3 (star (star g)) = toSU3 gg:GaugeGroupI⊢ toSU2 (star (star g)) = toSU2 gg:GaugeGroupI⊢ toU1 (star (star g)) = toU1 g g:GaugeGroupI⊢ toSU3 (star (star g)) = toSU3 gg:GaugeGroupI⊢ toSU2 (star (star g)) = toSU2 gg:GaugeGroupI⊢ toU1 (star (star g)) = toU1 g All goals completed! 🐙@[simp] lemma ofU1Subgroup_toSU3 (u1 : unitary ℂ) : toSU3 (ofU1Subgroup u1) = 1 := rflu1:↥(unitary ℂ)i:Fin 2j:Fin 2⊢ ∑ j_1, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] i j_1 * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j_1 j = 1 i j u1:↥(unitary ℂ)j:Fin 2⊢ ∑ j_1, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨0, ⋯⟩) j_1 * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j_1 j = 1 ((fun i => i) ⟨0, ⋯⟩) ju1:↥(unitary ℂ)j:Fin 2⊢ ∑ j_1, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j_1 * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j_1 j = 1 ((fun i => i) ⟨1, ⋯⟩) j u1:↥(unitary ℂ)j:Fin 2⊢ ∑ j_1, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨0, ⋯⟩) j_1 * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j_1 j = 1 ((fun i => i) ⟨0, ⋯⟩) ju1:↥(unitary ℂ)j:Fin 2⊢ ∑ j_1, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j_1 * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j_1 j = 1 ((fun i => i) ⟨1, ⋯⟩) j u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨0, ⋯⟩) = 1 ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨1, ⋯⟩) = 1 ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨0, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨0, ⋯⟩) = 1 ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨0, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨1, ⋯⟩) = 1 ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨0, ⋯⟩) = 1 ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)u1:↥(unitary ℂ)⊢ ∑ j, star !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ((fun i => i) ⟨1, ⋯⟩) j * !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] j ((fun i => i) ⟨1, ⋯⟩) = 1 ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) All goals completed! 🐙, u1:↥(unitary ℂ)⊢ !![star ↑(u1 ^ 3), 0; 0, ↑(u1 ^ 3)] ∈ ↑(MonoidHom.mker detMonoidHom) u1:↥(unitary ℂ)⊢ ↑‖↑(u1 ^ 3)‖ ^ 2 = 1 All goals completed! 🐙⟩ := rfl@[simp] lemma ofU1Subgroup_toU1 (u1 : unitary ℂ) : toU1 (ofU1Subgroup u1) = u1 := rfl

The ℤ₆ quotient

@[simp] lemma gaugeGroupℤ₆UnitaryOfRoot_coe (α : rootsOfUnity 6 ℂ) : (gaugeGroupℤ₆UnitaryOfRoot α : ℂ) = ((α : ℂˣ) : ℂ) := rfllemma gaugeGroupℤ₆SU3OfRoot_eq_mul_id (α : rootsOfUnity 6 ℂ) : (gaugeGroupℤ₆SU3OfRoot α).1 = ((α : ℂˣ) : ℂ) ^ 2 • 1 := α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) = ↑↑α ^ 2 • 1 α:↥(rootsOfUnity 6 ℂ)i:Fin 3j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) i j = (↑↑α ^ 2 • 1) i j α:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨0, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨0, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨1, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨1, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) j α:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨0, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨0, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨1, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨1, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 3⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) j = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) j α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU3OfRoot α) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) = (↑↑α ^ 2 • 1) ((fun i => i) ⟨2, ⋯⟩) ((fun i => i) ⟨2, ⋯⟩) All goals completed! 🐙lemma gaugeGroupℤ₆SU3OfRoot_toEuclideanLin_apply (α : rootsOfUnity 6 ℂ) (v : EuclideanSpace ℂ (Fin 3)) : (gaugeGroupℤ₆SU3OfRoot α).1.toEuclideanLin v = ((α : ℂˣ) : ℂ) ^ 2 • v := α:↥(rootsOfUnity 6 ℂ)v:EuclideanSpace ℂ (Fin 3)⊢ (toEuclideanLin ↑(gaugeGroupℤ₆SU3OfRoot α)) v = ↑↑α ^ 2 • v All goals completed! 🐙lemma gaugeGroupℤ₆SU2OfRoot_eq_mul_id (α : rootsOfUnity 6 ℂ) : (gaugeGroupℤ₆SU2OfRoot α).1 = star ((α : ℂˣ) : ℂ) ^ 3 • 1 := α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) = star ↑↑α ^ 3 • 1 α:↥(rootsOfUnity 6 ℂ)i:Fin 2j:Fin 2⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) i j = (star ↑↑α ^ 3 • 1) i j α:↥(rootsOfUnity 6 ℂ)j:Fin 2⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨0, ⋯⟩) j = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨0, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 2⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) j = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) j α:↥(rootsOfUnity 6 ℂ)j:Fin 2⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨0, ⋯⟩) j = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨0, ⋯⟩) jα:↥(rootsOfUnity 6 ℂ)j:Fin 2⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) j = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) j α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)α:↥(rootsOfUnity 6 ℂ)⊢ ↑(gaugeGroupℤ₆SU2OfRoot α) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) = (star ↑↑α ^ 3 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) All goals completed! 🐙lemma gaugeGroupℤ₆SU2OfRoot_toEuclideanLin_apply (α : rootsOfUnity 6 ℂ) (v : EuclideanSpace ℂ (Fin 2)) : (gaugeGroupℤ₆SU2OfRoot α).1.toEuclideanLin v = star ((α : ℂˣ) : ℂ) ^ 3 • v := α:↥(rootsOfUnity 6 ℂ)v:EuclideanSpace ℂ (Fin 2)⊢ (toEuclideanLin ↑(gaugeGroupℤ₆SU2OfRoot α)) v = star ↑↑α ^ 3 • v All goals completed! 🐙@[simp] lemma gaugeGroupℤ₆OfRoot_toSU3 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₆OfRoot α) = gaugeGroupℤ₆SU3OfRoot α := rfl@[simp] lemma gaugeGroupℤ₆OfRoot_toSU2 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot α) = gaugeGroupℤ₆SU2OfRoot α := rfl@[simp] lemma gaugeGroupℤ₆OfRoot_toU1 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₆OfRoot α) = gaugeGroupℤ₆UnitaryOfRoot α := rflα:↥(rootsOfUnity 6 ℂ)⊢ ∀ (g : GaugeGroupI), g * gaugeGroupℤ₆OfRoot α = gaugeGroupℤ₆OfRoot α * g α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupI⊢ g * gaugeGroupℤ₆OfRoot α = gaugeGroupℤ₆OfRoot α * g α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupI⊢ GaugeGroupI.toSU3 (g * gaugeGroupℤ₆OfRoot α) = GaugeGroupI.toSU3 (gaugeGroupℤ₆OfRoot α * g)α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupI⊢ GaugeGroupI.toSU2 (g * gaugeGroupℤ₆OfRoot α) = GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot α * g) α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupI⊢ GaugeGroupI.toSU3 (g * gaugeGroupℤ₆OfRoot α) = GaugeGroupI.toSU3 (gaugeGroupℤ₆OfRoot α * g)α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupI⊢ GaugeGroupI.toSU2 (g * gaugeGroupℤ₆OfRoot α) = GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot α * g) α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupIi:Fin 2j:Fin 2⊢ ↑(GaugeGroupI.toSU2 (g * gaugeGroupℤ₆OfRoot α)) i j = ↑(GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot α * g)) i j α:↥(rootsOfUnity 6 ℂ)g:GaugeGroupIi:Fin 3j:Fin 3⊢ ↑(GaugeGroupI.toSU3 (g * gaugeGroupℤ₆OfRoot α)) i j = ↑(GaugeGroupI.toSU3 (gaugeGroupℤ₆OfRoot α * g)) i jα:↥(rootsOfUnity 6 ℂ)g:GaugeGroupIi:Fin 2j:Fin 2⊢ ↑(GaugeGroupI.toSU2 (g * gaugeGroupℤ₆OfRoot α)) i j = ↑(GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot α * g)) i j All goals completed! 🐙@[simp] lemma gaugeGroupℤ₆Hom_apply (α : rootsOfUnity 6 ℂ) : gaugeGroupℤ₆Hom α = gaugeGroupℤ₆OfRoot α := rfl@[simp] lemma gaugeGroupℤ₆Hom_toSU3 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₆Hom α) = gaugeGroupℤ₆SU3OfRoot α := rfl@[simp] lemma gaugeGroupℤ₆Hom_toSU2 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₆Hom α) = gaugeGroupℤ₆SU2OfRoot α := rfl@[simp] lemma gaugeGroupℤ₆Hom_toU1 (α : rootsOfUnity 6 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₆Hom α) = gaugeGroupℤ₆UnitaryOfRoot α := rfllemma gaugeGroupℤ₆OfRoot_mem (α : rootsOfUnity 6 ℂ) : gaugeGroupℤ₆OfRoot α ∈ gaugeGroupℤ₆SubGroup := ⟨α, rfl⟩lemma mem_gaugeGroupℤ₆SubGroup_iff (g : GaugeGroupI) : g ∈ gaugeGroupℤ₆SubGroup ↔ ∃ α : rootsOfUnity 6 ℂ, gaugeGroupℤ₆OfRoot α = g := g:GaugeGroupI⊢ g ∈ gaugeGroupℤ₆SubGroup ↔ ∃ α, gaugeGroupℤ₆OfRoot α = g All goals completed! 🐙lemma gaugeGroupℤ₆SubGroup_le_center : gaugeGroupℤ₆SubGroup ≤ Subgroup.center GaugeGroupI := ⊢ gaugeGroupℤ₆SubGroup ≤ Subgroup.center GaugeGroupI α:↥(rootsOfUnity 6 ℂ)⊢ gaugeGroupℤ₆Hom α ∈ Subgroup.center GaugeGroupI All goals completed! 🐙instance gaugeGroupℤ₆SubGroup_normal : gaugeGroupℤ₆SubGroup.Normal where conj_mem n hn g := n:GaugeGroupIhn:n ∈ gaugeGroupℤ₆SubGroupg:GaugeGroupI⊢ g * n * g⁻¹ ∈ gaugeGroupℤ₆SubGroup rwa [n:GaugeGroupIhn:n ∈ gaugeGroupℤ₆SubGroupg:GaugeGroupI⊢ n * g * g⁻¹ ∈ gaugeGroupℤ₆SubGroup n:GaugeGroupIhn:n ∈ gaugeGroupℤ₆SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₆SubGroupn:GaugeGroupIhn:n ∈ gaugeGroupℤ₆SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₆SubGroup

The smallest possible gauge group of the Standard Model, i.e., the quotient of GaugeGroupI by the ℤ₆-subgroup gaugeGroupℤ₆SubGroup.

See https://math.ucr.edu/home/baez/guts.pdf

def GaugeGroupℤ₆ : Type := GaugeGroupI ⧸ gaugeGroupℤ₆SubGroup
@[simp] lemma mk_gaugeGroupℤ₆OfRoot (α : rootsOfUnity 6 ℂ) : mk (gaugeGroupℤ₆OfRoot α) = 1 := (QuotientGroup.eq_one_iff _).mpr (gaugeGroupℤ₆OfRoot_mem α)

The ℤ₂ quotient

@[simp] lemma gaugeGroupℤ₂OfRoot_toSU3 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₂OfRoot α) = gaugeGroupℤ₆SU3OfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₂OfRoot_toSU2 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₂OfRoot α) = gaugeGroupℤ₆SU2OfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₂OfRoot_toU1 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₂OfRoot α) = gaugeGroupℤ₆UnitaryOfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfllemma gaugeGroupℤ₂OfRoot_mem_center (α : rootsOfUnity 2 ℂ) : gaugeGroupℤ₂OfRoot α ∈ Subgroup.center GaugeGroupI := gaugeGroupℤ₆OfRoot_mem_center (gaugeGroupℤ₂RootToℤ₆Root α)@[simp] lemma gaugeGroupℤ₂Hom_apply (α : rootsOfUnity 2 ℂ) : gaugeGroupℤ₂Hom α = gaugeGroupℤ₂OfRoot α := rfl@[simp] lemma gaugeGroupℤ₂Hom_toSU3 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₂Hom α) = gaugeGroupℤ₆SU3OfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₂Hom_toSU2 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₂Hom α) = gaugeGroupℤ₆SU2OfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₂Hom_toU1 (α : rootsOfUnity 2 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₂Hom α) = gaugeGroupℤ₆UnitaryOfRoot (gaugeGroupℤ₂RootToℤ₆Root α) := rfllemma gaugeGroupℤ₂OfRoot_mem (α : rootsOfUnity 2 ℂ) : gaugeGroupℤ₂OfRoot α ∈ gaugeGroupℤ₂SubGroup := ⟨α, rfl⟩lemma mem_gaugeGroupℤ₂SubGroup_iff (g : GaugeGroupI) : g ∈ gaugeGroupℤ₂SubGroup ↔ ∃ α : rootsOfUnity 2 ℂ, gaugeGroupℤ₂OfRoot α = g := g:GaugeGroupI⊢ g ∈ gaugeGroupℤ₂SubGroup ↔ ∃ α, gaugeGroupℤ₂OfRoot α = g All goals completed! 🐙lemma gaugeGroupℤ₂SubGroup_le_gaugeGroupℤ₆SubGroup : gaugeGroupℤ₂SubGroup ≤ gaugeGroupℤ₆SubGroup := ⊢ gaugeGroupℤ₂SubGroup ≤ gaugeGroupℤ₆SubGroup α:↥(rootsOfUnity 2 ℂ)⊢ gaugeGroupℤ₂Hom α ∈ gaugeGroupℤ₆SubGroup All goals completed! 🐙lemma gaugeGroupℤ₂SubGroup_le_center : gaugeGroupℤ₂SubGroup ≤ Subgroup.center GaugeGroupI := gaugeGroupℤ₂SubGroup_le_gaugeGroupℤ₆SubGroup.trans gaugeGroupℤ₆SubGroup_le_centerinstance gaugeGroupℤ₂SubGroup_normal : gaugeGroupℤ₂SubGroup.Normal where conj_mem n hn g := n:GaugeGroupIhn:n ∈ gaugeGroupℤ₂SubGroupg:GaugeGroupI⊢ g * n * g⁻¹ ∈ gaugeGroupℤ₂SubGroup rwa [n:GaugeGroupIhn:n ∈ gaugeGroupℤ₂SubGroupg:GaugeGroupI⊢ n * g * g⁻¹ ∈ gaugeGroupℤ₂SubGroup n:GaugeGroupIhn:n ∈ gaugeGroupℤ₂SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₂SubGroupn:GaugeGroupIhn:n ∈ gaugeGroupℤ₂SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₂SubGroup

The gauge group of the Standard Model with a ℤ₂ quotient, i.e., the quotient of GaugeGroupI by the ℤ₂-subgroup gaugeGroupℤ₂SubGroup.

See https://math.ucr.edu/home/baez/guts.pdf

def GaugeGroupℤ₂ : Type := GaugeGroupI ⧸ gaugeGroupℤ₂SubGroup
@[simp] lemma mk_gaugeGroupℤ₂OfRoot (α : rootsOfUnity 2 ℂ) : mk (gaugeGroupℤ₂OfRoot α) = 1 := (QuotientGroup.eq_one_iff _).mpr (gaugeGroupℤ₂OfRoot_mem α)

The ℤ₃ quotient

@[simp] lemma gaugeGroupℤ₃OfRoot_toSU3 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₃OfRoot α) = gaugeGroupℤ₆SU3OfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₃OfRoot_toSU2 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₃OfRoot α) = gaugeGroupℤ₆SU2OfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₃OfRoot_toU1 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₃OfRoot α) = gaugeGroupℤ₆UnitaryOfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfllemma gaugeGroupℤ₃OfRoot_mem_center (α : rootsOfUnity 3 ℂ) : gaugeGroupℤ₃OfRoot α ∈ Subgroup.center GaugeGroupI := gaugeGroupℤ₆OfRoot_mem_center (gaugeGroupℤ₃RootToℤ₆Root α)@[simp] lemma gaugeGroupℤ₃Hom_apply (α : rootsOfUnity 3 ℂ) : gaugeGroupℤ₃Hom α = gaugeGroupℤ₃OfRoot α := rfl@[simp] lemma gaugeGroupℤ₃Hom_toSU3 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toSU3 (gaugeGroupℤ₃Hom α) = gaugeGroupℤ₆SU3OfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₃Hom_toSU2 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toSU2 (gaugeGroupℤ₃Hom α) = gaugeGroupℤ₆SU2OfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfl@[simp] lemma gaugeGroupℤ₃Hom_toU1 (α : rootsOfUnity 3 ℂ) : GaugeGroupI.toU1 (gaugeGroupℤ₃Hom α) = gaugeGroupℤ₆UnitaryOfRoot (gaugeGroupℤ₃RootToℤ₆Root α) := rfllemma gaugeGroupℤ₃OfRoot_mem (α : rootsOfUnity 3 ℂ) : gaugeGroupℤ₃OfRoot α ∈ gaugeGroupℤ₃SubGroup := ⟨α, rfl⟩lemma mem_gaugeGroupℤ₃SubGroup_iff (g : GaugeGroupI) : g ∈ gaugeGroupℤ₃SubGroup ↔ ∃ α : rootsOfUnity 3 ℂ, gaugeGroupℤ₃OfRoot α = g := g:GaugeGroupI⊢ g ∈ gaugeGroupℤ₃SubGroup ↔ ∃ α, gaugeGroupℤ₃OfRoot α = g All goals completed! 🐙lemma gaugeGroupℤ₃SubGroup_le_gaugeGroupℤ₆SubGroup : gaugeGroupℤ₃SubGroup ≤ gaugeGroupℤ₆SubGroup := ⊢ gaugeGroupℤ₃SubGroup ≤ gaugeGroupℤ₆SubGroup α:↥(rootsOfUnity 3 ℂ)⊢ gaugeGroupℤ₃Hom α ∈ gaugeGroupℤ₆SubGroup All goals completed! 🐙lemma gaugeGroupℤ₃SubGroup_le_center : gaugeGroupℤ₃SubGroup ≤ Subgroup.center GaugeGroupI := gaugeGroupℤ₃SubGroup_le_gaugeGroupℤ₆SubGroup.trans gaugeGroupℤ₆SubGroup_le_centerinstance gaugeGroupℤ₃SubGroup_normal : gaugeGroupℤ₃SubGroup.Normal where conj_mem n hn g := n:GaugeGroupIhn:n ∈ gaugeGroupℤ₃SubGroupg:GaugeGroupI⊢ g * n * g⁻¹ ∈ gaugeGroupℤ₃SubGroup rwa [n:GaugeGroupIhn:n ∈ gaugeGroupℤ₃SubGroupg:GaugeGroupI⊢ n * g * g⁻¹ ∈ gaugeGroupℤ₃SubGroup n:GaugeGroupIhn:n ∈ gaugeGroupℤ₃SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₃SubGroupn:GaugeGroupIhn:n ∈ gaugeGroupℤ₃SubGroupg:GaugeGroupI⊢ n ∈ gaugeGroupℤ₃SubGroup

The gauge group of the Standard Model with a ℤ₃-quotient, i.e., the quotient of GaugeGroupI by the ℤ₃-subgroup gaugeGroupℤ₃SubGroup.

See https://math.ucr.edu/home/baez/guts.pdf

def GaugeGroupℤ₃ : Type := GaugeGroupI ⧸ gaugeGroupℤ₃SubGroup
@[simp] lemma mk_gaugeGroupℤ₃OfRoot (α : rootsOfUnity 3 ℂ) : mk (gaugeGroupℤ₃OfRoot α) = 1 := (QuotientGroup.eq_one_iff _).mpr (gaugeGroupℤ₃OfRoot_mem α)

Gauge groups from quotient choices

Specifies the allowed quotients of SU(3) x SU(2) x U(1) which give a valid gauge group of the Standard Model.

The element of GaugeGroupQuot corresponding to the quotient of the full SM gauge group by the sub-group ℤ₆.

The element of GaugeGroupQuot corresponding to the quotient of the full SM gauge group by the sub-group ℤ₂.

The element of GaugeGroupQuot corresponding to the quotient of the full SM gauge group by the sub-group ℤ₃.

The element of GaugeGroupQuot corresponding to the full SM gauge group.

inductive GaugeGroupQuot : Type | ℤ₆ : GaugeGroupQuot | ℤ₂ : GaugeGroupQuot | ℤ₃ : GaugeGroupQuot | I : GaugeGroupQuot deriving Fintype, DecidableEq

The (global) gauge group of the Standard Model given a choice of quotient, i.e., the map from GaugeGroupQuot to Type which gives the gauge group of the Standard Model for a given choice of quotient.

See https://math.ucr.edu/home/baez/guts.pdf

TODO "Define the unbroken gauge group using the Higgs field."

The subgroup attached to a gauge-group quotient choice lies in the center of GaugeGroupI.

lemma subgroup_le_center (q : GaugeGroupQuot) : subgroup q ≤ Subgroup.center GaugeGroupI := q:GaugeGroupQuot⊢ q.subgroup ≤ Subgroup.center GaugeGroupI ⊢ ℤ₆.subgroup ≤ Subgroup.center GaugeGroupI⊢ ℤ₂.subgroup ≤ Subgroup.center GaugeGroupI⊢ ℤ₃.subgroup ≤ Subgroup.center GaugeGroupI⊢ I.subgroup ≤ Subgroup.center GaugeGroupI ⊢ ℤ₆.subgroup ≤ Subgroup.center GaugeGroupI All goals completed! 🐙 ⊢ ℤ₂.subgroup ≤ Subgroup.center GaugeGroupI All goals completed! 🐙 ⊢ ℤ₃.subgroup ≤ Subgroup.center GaugeGroupI All goals completed! 🐙 ⊢ I.subgroup ≤ Subgroup.center GaugeGroupI All goals completed! 🐙

The subgroup attached to a gauge-group quotient choice is normal in GaugeGroupI.

instance subgroup_normal (q : GaugeGroupQuot) : (subgroup q).Normal := q:GaugeGroupQuot⊢ q.subgroup.Normal ⊢ ℤ₆.subgroup.Normal⊢ ℤ₂.subgroup.Normal⊢ ℤ₃.subgroup.Normal⊢ I.subgroup.Normal ⊢ ℤ₆.subgroup.Normal All goals completed! 🐙 ⊢ ℤ₂.subgroup.Normal All goals completed! 🐙 ⊢ ℤ₃.subgroup.Normal All goals completed! 🐙 ⊢ I.subgroup.Normal All goals completed! 🐙
g:GaugeGroupIhg:g = 1⊢ g ∈ gaugeGroupℤ₆SubGroup All goals completed! 🐙@[simp] lemma quotientMap_I_apply (g : GaugeGroupI) : quotientMap .I g = g := rfl@[simp] lemma quotientMap_ℤ₆_gaugeGroupℤ₆OfRoot (α : rootsOfUnity 6 ℂ) : quotientMap .ℤ₆ (gaugeGroupℤ₆OfRoot α) = 1 := GaugeGroupℤ₆.mk_gaugeGroupℤ₆OfRoot α@[simp] lemma quotientMap_ℤ₂_gaugeGroupℤ₂OfRoot (α : rootsOfUnity 2 ℂ) : quotientMap .ℤ₂ (gaugeGroupℤ₂OfRoot α) = 1 := GaugeGroupℤ₂.mk_gaugeGroupℤ₂OfRoot α@[simp] lemma quotientMap_ℤ₃_gaugeGroupℤ₃OfRoot (α : rootsOfUnity 3 ℂ) : quotientMap .ℤ₃ (gaugeGroupℤ₃OfRoot α) = 1 := GaugeGroupℤ₃.mk_gaugeGroupℤ₃OfRoot α

The kernel of the quotient map is the subgroup selected by the quotient choice.

lemma mem_subgroup_iff_quotientMap_eq_one (q : GaugeGroupQuot) (g : GaugeGroupI) : g ∈ subgroup q ↔ quotientMap q g = 1 := q:GaugeGroupQuotg:GaugeGroupI⊢ g ∈ q.subgroup ↔ q.quotientMap g = 1 g:GaugeGroupI⊢ g ∈ ℤ₆.subgroup ↔ ℤ₆.quotientMap g = 1g:GaugeGroupI⊢ g ∈ ℤ₂.subgroup ↔ ℤ₂.quotientMap g = 1g:GaugeGroupI⊢ g ∈ ℤ₃.subgroup ↔ ℤ₃.quotientMap g = 1g:GaugeGroupI⊢ g ∈ I.subgroup ↔ I.quotientMap g = 1 case I g:GaugeGroupI⊢ g ∈ I.subgroup ↔ I.quotientMap g = 1 All goals completed! 🐙 all_goals All goals completed! 🐙

Two representatives have the same image under the selected quotient map exactly when their quotient lies in the subgroup selected by the quotient choice.

lemma quotientMap_eq_iff (q : GaugeGroupQuot) (g h : GaugeGroupI) : quotientMap q g = quotientMap q h ↔ g / h ∈ subgroup q := q:GaugeGroupQuotg:GaugeGroupIh:GaugeGroupI⊢ q.quotientMap g = q.quotientMap h ↔ g / h ∈ q.subgroup g:GaugeGroupIh:GaugeGroupI⊢ ℤ₆.quotientMap g = ℤ₆.quotientMap h ↔ g / h ∈ ℤ₆.subgroupg:GaugeGroupIh:GaugeGroupI⊢ ℤ₂.quotientMap g = ℤ₂.quotientMap h ↔ g / h ∈ ℤ₂.subgroupg:GaugeGroupIh:GaugeGroupI⊢ ℤ₃.quotientMap g = ℤ₃.quotientMap h ↔ g / h ∈ ℤ₃.subgroupg:GaugeGroupIh:GaugeGroupI⊢ I.quotientMap g = I.quotientMap h ↔ g / h ∈ I.subgroup case I g:GaugeGroupIh:GaugeGroupI⊢ I.quotientMap g = I.quotientMap h ↔ g / h ∈ I.subgroup All goals completed! 🐙 all_goals All goals completed! 🐙

Smoothness structure on the gauge group.

The gauge group GaugeGroupI is a Lie group.

informal_lemma gaugeGroupI_lie where deps := [``GaugeGroupI] tag := "6V2HL"

For every q in GaugeGroupQuot the group GaugeGroup q is a Lie group.

informal_lemma gaugeGroup_lie where deps := [``GaugeGroup] tag := "6V2HR"

Gauge bundles and transformations

The trivial principal bundle over SpaceTime with structure group GaugeGroupI.

informal_definition gaugeBundleI where deps := [``GaugeGroupI, ``SpaceTime] tag := "6V2HX"

A global section of gaugeBundleI.

informal_definition gaugeTransformI where deps := [``gaugeBundleI] tag := "6V2H5"