Imports
/- 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 -/ module public import Physlib.Particles.BeyondTheStandardModel.RHN.AnomalyCancellation.Permutations public import Physlib.QFT.AnomalyCancellation.GroupActions

ACC system for SM with RHN

We define the ACC system for the Standard Model with right-handed neutrinos.

@[expose] public section

The ACC system for the SM plus RHN with an additional U1.

@[simps!] def PlusU1 (n : ) : ACCSystem where toACCSystemCharges := SMνCharges n numberLinear := 4 linearACCs := fun i => match i with | 0 => @accGrav n | 1 => accSU2 | 2 => accSU3 | 3 => accYY numberQuadratic := 1 quadraticACCs := fun i => match i with | 0 => accQuad cubicACC := accCube
lemma gravSol (S : (PlusU1 n).LinSols) : accGrav S.val = 0 := n:S:(PlusU1 n).LinSolsaccGrav S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), ((PlusU1 n).linearACCs i) S.val = 0accGrav S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 0accGrav S.val = 0 exact hS 0, n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 00 < (PlusU1 n).numberLinear All goals completed! 🐙lemma SU2Sol (S : (PlusU1 n).LinSols) : accSU2 S.val = 0 := n:S:(PlusU1 n).LinSolsaccSU2 S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), ((PlusU1 n).linearACCs i) S.val = 0accSU2 S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 0accSU2 S.val = 0 exact hS 1, n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 01 < (PlusU1 n).numberLinear All goals completed! 🐙lemma SU3Sol (S : (PlusU1 n).LinSols) : accSU3 S.val = 0 := n:S:(PlusU1 n).LinSolsaccSU3 S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), ((PlusU1 n).linearACCs i) S.val = 0accSU3 S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 0accSU3 S.val = 0 exact hS 2, n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 02 < (PlusU1 n).numberLinear All goals completed! 🐙lemma YYsol (S : (PlusU1 n).LinSols) : accYY S.val = 0 := n:S:(PlusU1 n).LinSolsaccYY S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), ((PlusU1 n).linearACCs i) S.val = 0accYY S.val = 0 n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 0accYY S.val = 0 exact hS 3, n:S:(PlusU1 n).LinSolshS: (i : Fin (PlusU1 n).numberLinear), (match i with | 0 => accGrav | 1 => accSU2 | 2 => accSU3 | 3 => accYY) S.val = 03 < (PlusU1 n).numberLinear All goals completed! 🐙lemma quadSol (S : (PlusU1 n).QuadSols) : accQuad S.val = 0 := n:S:(PlusU1 n).QuadSolsaccQuad S.val = 0 n:S:(PlusU1 n).QuadSolshS: (i : Fin (PlusU1 n).numberQuadratic), ((PlusU1 n).quadraticACCs i) S.val = 0accQuad S.val = 0 n:S:(PlusU1 n).QuadSolshS: (i : Fin (PlusU1 n).numberQuadratic), (match i with | 0 => quadBiLin.toHomogeneousQuad) S.val = 0accQuad S.val = 0 exact hS 0, n:S:(PlusU1 n).QuadSolshS: (i : Fin (PlusU1 n).numberQuadratic), (match i with | 0 => quadBiLin.toHomogeneousQuad) S.val = 00 < (PlusU1 n).numberQuadratic All goals completed! 🐙lemma cubeSol (S : (PlusU1 n).Sols) : accCube S.val = 0 := n:S:(PlusU1 n).SolsaccCube S.val = 0 All goals completed! 🐙

An element of charges which satisfies the linear ACCs gives us a element of LinSols.

def chargeToLinear (S : (PlusU1 n).Charges) (hGrav : accGrav S = 0) (hSU2 : accSU2 S = 0) (hSU3 : accSU3 S = 0) (hYY : accYY S = 0) : (PlusU1 n).LinSols := S, n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0 (i : Fin (PlusU1 n).numberLinear), ((PlusU1 n).linearACCs i) S = 0 n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0i:Fin (PlusU1 n).numberLinear((PlusU1 n).linearACCs i) S = 0 match i with n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0i:Fin (PlusU1 n).numberLinearisLt✝:0 < (PlusU1 n).numberLinear((PlusU1 n).linearACCs 0, isLt✝) S = 0 All goals completed! 🐙 n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0i:Fin (PlusU1 n).numberLinearisLt✝:1 < (PlusU1 n).numberLinear((PlusU1 n).linearACCs 1, isLt✝) S = 0 All goals completed! 🐙 n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0i:Fin (PlusU1 n).numberLinearisLt✝:2 < (PlusU1 n).numberLinear((PlusU1 n).linearACCs 2, isLt✝) S = 0 All goals completed! 🐙 n:S:(PlusU1 n).ChargeshGrav:accGrav S = 0hSU2:accSU2 S = 0hSU3:accSU3 S = 0hYY:accYY S = 0i:Fin (PlusU1 n).numberLinearisLt✝:3 < (PlusU1 n).numberLinear((PlusU1 n).linearACCs 3, isLt✝) S = 0 All goals completed! 🐙

An element of LinSols which satisfies the quadratic ACCs gives us a element of AnomalyFreeQuad.

def linearToQuad (S : (PlusU1 n).LinSols) (hQ : accQuad S.val = 0) : (PlusU1 n).QuadSols := S, n:S:(PlusU1 n).LinSolshQ:accQuad S.val = 0 (i : Fin (PlusU1 n).numberQuadratic), ((PlusU1 n).quadraticACCs i) S.val = 0 n:S:(PlusU1 n).LinSolshQ:accQuad S.val = 0i:Fin (PlusU1 n).numberQuadratic((PlusU1 n).quadraticACCs i) S.val = 0 match i with n:S:(PlusU1 n).LinSolshQ:accQuad S.val = 0i:Fin (PlusU1 n).numberQuadraticisLt✝:0 < (PlusU1 n).numberQuadratic((PlusU1 n).quadraticACCs 0, isLt✝) S.val = 0 All goals completed! 🐙

An element of QuadSols which satisfies the quadratic ACCs gives us a element of Sols.

def quadToAF (S : (PlusU1 n).QuadSols) (hc : accCube S.val = 0) : (PlusU1 n).Sols := S, hc

An element of charges which satisfies the linear and quadratic ACCs gives us a element of QuadSols.

def chargeToQuad (S : (PlusU1 n).Charges) (hGrav : accGrav S = 0) (hSU2 : accSU2 S = 0) (hSU3 : accSU3 S = 0) (hYY : accYY S = 0) (hQ : accQuad S = 0) : (PlusU1 n).QuadSols := linearToQuad (chargeToLinear S hGrav hSU2 hSU3 hYY) hQ

An element of charges which satisfies the linear, quadratic and cubic ACCs gives us a element of Sols.

def chargeToAF (S : (PlusU1 n).Charges) (hGrav : accGrav S = 0) (hSU2 : accSU2 S = 0) (hSU3 : accSU3 S = 0) (hYY : accYY S = 0) (hQ : accQuad S = 0) (hc : accCube S = 0) : (PlusU1 n).Sols := quadToAF (chargeToQuad S hGrav hSU2 hSU3 hYY hQ) hc

An element of LinSols which satisfies the quadratic and cubic ACCs gives us a element of Sols.

def linearToAF (S : (PlusU1 n).LinSols) (hQ : accQuad S.val = 0) (hc : accCube S.val = 0) : (PlusU1 n).Sols := quadToAF (linearToQuad S hQ) hc

The permutations acting on the ACC system corresponding to the SM with RHN.

def perm (n : ) : ACCSystemGroupAction (PlusU1 n) where group := PermGroup n groupInst := inferInstance rep := repCharges linearInvariant := n✝:n: (i : Fin (PlusU1 n).numberLinear) (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs i) ((repCharges g) S) = ((PlusU1 n).linearACCs i) S n✝:n:i:Fin (PlusU1 n).numberLinear (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs i) ((repCharges g) S) = ((PlusU1 n).linearACCs i) S match i with n✝:n:i:Fin (PlusU1 n).numberLinearisLt✝:0 < (PlusU1 n).numberLinear (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs 0, isLt✝) ((repCharges g) S) = ((PlusU1 n).linearACCs 0, isLt✝) S All goals completed! 🐙 n✝:n:i:Fin (PlusU1 n).numberLinearisLt✝:1 < (PlusU1 n).numberLinear (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs 1, isLt✝) ((repCharges g) S) = ((PlusU1 n).linearACCs 1, isLt✝) S All goals completed! 🐙 n✝:n:i:Fin (PlusU1 n).numberLinearisLt✝:2 < (PlusU1 n).numberLinear (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs 2, isLt✝) ((repCharges g) S) = ((PlusU1 n).linearACCs 2, isLt✝) S All goals completed! 🐙 n✝:n:i:Fin (PlusU1 n).numberLinearisLt✝:3 < (PlusU1 n).numberLinear (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).linearACCs 3, isLt✝) ((repCharges g) S) = ((PlusU1 n).linearACCs 3, isLt✝) S All goals completed! 🐙 quadInvariant := n✝:n: (i : Fin (PlusU1 n).numberQuadratic) (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).quadraticACCs i) ((repCharges g) S) = ((PlusU1 n).quadraticACCs i) S n✝:n:i:Fin (PlusU1 n).numberQuadratic (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).quadraticACCs i) ((repCharges g) S) = ((PlusU1 n).quadraticACCs i) S match i with n✝:n:i:Fin (PlusU1 n).numberQuadraticisLt✝:0 < (PlusU1 n).numberQuadratic (g : PermGroup n) (S : (PlusU1 n).Charges), ((PlusU1 n).quadraticACCs 0, isLt✝) ((repCharges g) S) = ((PlusU1 n).quadraticACCs 0, isLt✝) S All goals completed! 🐙 cubicInvariant := accCube_invariant