Imports
/-
Copyright (c) 2026 Nathaneal Sajan. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Nathaneal Sajan
-/
module
public import Physlib.Particles.StandardModel.Basic
public import Physlib.Relativity.Tensors.ComplexTensor.BasicLepton doublets
i. Overview
The Standard Model lepton doublet is a left-handed Weyl spinor in the (1, 2)_{-3}
representation. Here charges are normalized as 6Y, so -3 is the usual hypercharge
Y = -1/2.
LeptonDoublet is the target vector space of one lepton multiplet. Its Weyl factor
carries the Lorentz index and its two-dimensional factor carries the weak index.
The absence of a colour factor makes it an SU(3) singlet.
The Lorentz and gauge actions are first defined separately. The gauge action is then computed on a basis, used to identify its kernel, and descended to each supported global form of the Standard Model gauge group.
ii. Key results
LeptonDoublet : the target space of the (1, 2)_{-3} multiplet.
repLorentzGroup : the left-handed Lorentz action.
repGaugeGroupI : the action of the unquotiented gauge group.
repGaugeGroupI_tmul_basis_eq_sum : the gauge action in a tensor-product basis.
mem_repGaugeGroupI_ker_iff_eq : the kernel of the full-group action.
gaugeGroup_subgroup_ℤ₆_le_ker_repGaugeGroupI : triviality of the central ℤ₆.
repGaugeGroup : the action descended to every supported gauge-group quotient.
iii. Table of contents
A. The lepton-doublet space
B. Linear structure
C. Lorentz action
D. Gauge action
E. Kernel of the gauge action
F. Descent to quotient gauge groups
@[expose] public sectionA. The lepton-doublet space
The Weyl factor carries the left-handed Lorentz index, while
EuclideanSpace ℂ (Fin 2) carries the weak index.
The target vector space of one Standard Model lepton doublet.
It carries the (1, 2)_{-3} representation of the gauge group.
The left-handed Weyl spinor with its weak-doublet index.
@[ext]
structure LeptonDoublet where val : Fermion.LeftHandedWeyl ⊗[ℂ] EuclideanSpace ℂ (Fin 2)B. Linear structure
The wrapper distinguishes lepton doublets from other isomorphic vector spaces. The following equivalences transfer the linear structure of the tensor product and expose that model when defining representations.
Identifies a lepton doublet with its underlying tensor-product value.
def valEquiv : LeptonDoublet ≃ Fermion.LeftHandedWeyl ⊗[ℂ] EuclideanSpace ℂ (Fin 2) where
toFun := val
invFun := fun m => ⟨m⟩instance : AddCommGroup LeptonDoublet := Equiv.addCommGroup valEquivinstance : Module ℂ LeptonDoublet := Equiv.module ℂ valEquivThe linear identification with the underlying tensor product.
def valLinEquiv : LeptonDoublet ≃ₗ[ℂ]
Fermion.LeftHandedWeyl ⊗[ℂ] EuclideanSpace ℂ (Fin 2) where
toFun := val
invFun := fun m => ⟨m⟩
map_add' := ⊢ ∀ (x y : LeptonDoublet), (x + y).val = x.val + y.val x✝:LeptonDoublety✝:LeptonDoublet⊢ (x✝ + y✝).val = x✝.val + y✝.val; All goals completed! 🐙
map_smul' := ⊢ ∀ (m : ℂ) (x : LeptonDoublet), (m • x).val = (RingHom.id ℂ) m • x.val m✝:ℂx✝:LeptonDoublet⊢ (m✝ • x✝).val = (RingHom.id ℂ) m✝ • x✝.val; All goals completed! 🐙@[simp]
lemma valLinEquiv_apply (l : LeptonDoublet) : valLinEquiv l = l.val := rfllemma valLinEquiv_symm_apply
(m : Fermion.LeftHandedWeyl ⊗[ℂ] EuclideanSpace ℂ (Fin 2)) :
valLinEquiv.symm m = ⟨m⟩ := rfl@[simp]
lemma val_add (l₁ l₂ : LeptonDoublet) : (l₁ + l₂).val = l₁.val + l₂.val := rfl@[simp]
lemma val_smul (r : ℂ) (l : LeptonDoublet) : (r • l).val = r • l.val := rflC. Lorentz action
The Lorentz group acts on the left-handed Weyl factor and leaves the weak index fixed.
D. Gauge action
The colour factor acts trivially, while SU(2) acts on the weak index. The U(1) action
is star z ^ 3; since z is unitary, star z = z⁻¹, so this represents charge -3.
The tensor and basis formulas below expose the coefficients used to compare actions and compute the kernel.
The gauge action on a pure spinor–weak tensor.
lemma repGaugeGroupI_tmul (g : GaugeGroupI) (v : Fermion.LeftHandedWeyl)
(w : EuclideanSpace ℂ (Fin 2)) :
repGaugeGroupI g ⟨v ⊗ₜ w⟩ =
⟨(star g.toU1.1 ^ 3) • v ⊗ₜ (g.toSU2.1.toEuclideanLin w)⟩ := rflE. Kernel of the gauge action
An element acts trivially when its weak action is scalar and that scalar cancels its
U(1) phase. Its colour component is unrestricted because the lepton doublet is an
SU(3) singlet.
Characterizes the full-group elements acting trivially on the lepton doublet.
h g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) = ↑(GaugeGroupI.toSU2 g) 0 0 • 1 ∧
↑(GaugeGroupI.toSU2 g) 0 0 * star ↑(GaugeGroupI.toU1 g) ^ 3 = 1
refine ⟨?_, ?_⟩ h.refine_1 g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) = ↑(GaugeGroupI.toSU2 g) 0 0 • 1h.refine_2 g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) 0 0 * star ↑(GaugeGroupI.toU1 g) ^ 3 = 1
· h.refine_1 g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) = ↑(GaugeGroupI.toSU2 g) 0 0 • 1 ext i j h.refine_1 g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0i:Fin 2j:Fin 2⊢ ↑(GaugeGroupI.toSU2 g) i j = (↑(GaugeGroupI.toSU2 g) 0 0 • 1) i j
fin_cases i h.refine_1.«0» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0j:Fin 2⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨0, ⋯⟩) j = (↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨0, ⋯⟩) jh.refine_1.«1» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0j:Fin 2⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) j = (↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) j <;> h.refine_1.«0» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0j:Fin 2⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨0, ⋯⟩) j = (↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨0, ⋯⟩) jh.refine_1.«1» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0j:Fin 2⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) j = (↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) j fin_cases j h.refine_1.«1».«0» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)h.refine_1.«1».«1» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) <;> h.refine_1.«0».«0» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)h.refine_1.«0».«1» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨0, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩)h.refine_1.«1».«0» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨0, ⋯⟩)h.refine_1.«1».«1» g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) =
(↑(GaugeGroupI.toSU2 g) 0 0 • 1) ((fun i => i) ⟨1, ⋯⟩) ((fun i => i) ⟨1, ⋯⟩) simp [h₁₀', h₀₁', hdiag] All goals completed! 🐙
· h.refine_2 g:GaugeGroupIhc:star ↑(GaugeGroupI.toU1 g) ^ 3 ≠ 0h₀₀:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 0 0 = 1h₁₀:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁:star ↑(GaugeGroupI.toU1 g) ^ 3 = 0 ∨ ↑(GaugeGroupI.toSU2 g) 0 1 = 0h₁₁:star ↑(GaugeGroupI.toU1 g) ^ 3 * ↑(GaugeGroupI.toSU2 g) 1 1 = 1h₁₀':↑(GaugeGroupI.toSU2 g) 1 0 = 0h₀₁':↑(GaugeGroupI.toSU2 g) 0 1 = 0hdiag:↑(GaugeGroupI.toSU2 g) 1 1 = ↑(GaugeGroupI.toSU2 g) 0 0⊢ ↑(GaugeGroupI.toSU2 g) 0 0 * star ↑(GaugeGroupI.toU1 g) ^ 3 = 1 simpa [mul_comm] using h₀₀ All goals completed! 🐙F. Descent to quotient gauge groups
A representation descends through a quotient when the quotient subgroup lies in its
kernel. For the central ℤ₆, the weak central phase and charge -3 phase combine to a
sixth power and therefore act trivially.
The central ℤ₆ subgroup acts trivially on (1, 2)_{-3}.
lemma gaugeGroup_subgroup_ℤ₆_le_ker_repGaugeGroupI :
GaugeGroupQuot.subgroup .ℤ₆ ≤ repGaugeGroupI.ker := by ⊢ GaugeGroupQuot.ℤ₆.subgroup ≤ MonoidHom.ker repGaugeGroupI
simp only [GaugeGroupQuot.subgroup, gaugeGroupℤ₆SubGroup, SetLike.le_def,
MonoidHom.mem_range, gaugeGroupℤ₆Hom_apply, Subtype.exists,
mem_repGaugeGroupI_ker_iff_eq, forall_exists_index] ⊢ ∀ ⦃x : GaugeGroupI⦄ (x_1 : ℂˣ) (x_2 : x_1 ∈ rootsOfUnity 6 ℂ),
gaugeGroupℤ₆OfRoot ⟨x_1, x_2⟩ = x → ∃ a, ↑(GaugeGroupI.toSU2 x) = a • 1 ∧ a * star ↑(GaugeGroupI.toU1 x) ^ 3 = 1
rintro g x hx ⟨rfl⟩ x:ℂˣhx:x ∈ rootsOfUnity 6 ℂ⊢ ∃ a,
↑(GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot ⟨x, hx⟩)) = a • 1 ∧
a * star ↑(GaugeGroupI.toU1 (gaugeGroupℤ₆OfRoot ⟨x, hx⟩)) ^ 3 = 1
use starRingEnd ℂ (x ^ 3) h x:ℂˣhx:x ∈ rootsOfUnity 6 ℂ⊢ ↑(GaugeGroupI.toSU2 (gaugeGroupℤ₆OfRoot ⟨x, hx⟩)) = (starRingEnd ℂ) (↑x ^ 3) • 1 ∧
(starRingEnd ℂ) (↑x ^ 3) * star ↑(GaugeGroupI.toU1 (gaugeGroupℤ₆OfRoot ⟨x, hx⟩)) ^ 3 = 1
simp only [gaugeGroupℤ₆OfRoot_toSU2, gaugeGroupℤ₆SU2OfRoot_eq_mul_id,
RCLike.star_def, Complex.conj_rootsOfUnity hx, Units.val_inv_eq_inv_val, inv_pow,
map_pow, gaugeGroupℤ₆OfRoot_toU1, gaugeGroupℤ₆UnitaryOfRoot_coe, true_and] h x:ℂˣhx:x ∈ rootsOfUnity 6 ℂ⊢ (↑x ^ 3)⁻¹ * (↑x ^ 3)⁻¹ = 1
field_simp h x:ℂˣhx:x ∈ rootsOfUnity 6 ℂ⊢ 1 = ↑x ^ 6
exact ((mem_rootsOfUnity' 6 x).mp hx).symm All goals completed! 🐙Every supported quotient subgroup acts trivially on the lepton doublet.
lemma gaugeGroup_subgroup_le_ker_repGaugeGroupI (Q : GaugeGroupQuot) :
Q.subgroup ≤ repGaugeGroupI.ker := Q.subgroup_le_subgroup_ℤ₆.trans
gaugeGroup_subgroup_ℤ₆_le_ker_repGaugeGroupI