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.PlusU1.BMinusL

Solutions from quad solutions

We use $B-L$ to form a surjective map from quad solutions to solutions. The main reference for this material is:

    https://arxiv.org/abs/2006.03588

@[expose] public section

A helper function for what follows.

def α₁ (S : (PlusU1 n).QuadSols) : := - 3 * cubeTriLin S.val S.val (BL n).val

A helper function for what follows.

def α₂ (S : (PlusU1 n).QuadSols) : := accCube S.val
lemma cube_α₁_α₂_zero (S : (PlusU1 n).QuadSols) (a b : ) (h1 : α₁ S = 0) (h2 : α₂ S = 0) : accCube (BL.addQuad S a b).val = 0 := n:S:(PlusU1 n).QuadSolsa:b:h1:α₁ S = 0h2:α₂ S = 0accCube (BL.addQuad S a b).val = 0 erw [n:S:(PlusU1 n).QuadSolsa:b:h1:α₁ S = 0h2:α₂ S = 0a ^ 2 * (a * accCube S.val + 3 * b * ((cubeTriLin S.val) S.val) (BL n).val) = 0n:S:(PlusU1 n).QuadSolsa:b:h1:α₁ S = 0h2:α₂ S = 0a ^ 2 * (a * accCube S.val + 3 * b * ((cubeTriLin S.val) S.val) (BL n).val) = 0 All goals completed! 🐙lemma α₂_AF (S : (PlusU1 n).Sols) : α₂ S.toQuadSols = 0 := S.2lemma BL_add_α₁_α₂_cube (S : (PlusU1 n).QuadSols) : accCube (BL.addQuad S (α₁ S) (α₂ S)).val = 0 := n:S:(PlusU1 n).QuadSolsaccCube (BL.addQuad S (α₁ S) (α₂ S)).val = 0 erw [n:S:(PlusU1 n).QuadSolsα₁ S ^ 2 * (α₁ S * accCube S.val + 3 * α₂ S * ((cubeTriLin S.val) S.val) (BL n).val) = 0n:S:(PlusU1 n).QuadSolsα₁ S ^ 2 * (α₁ S * accCube S.val + 3 * α₂ S * ((cubeTriLin S.val) S.val) (BL n).val) = 0 n:S:(PlusU1 n).QuadSols((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) = 0 -(3 * ((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) * accCube S.val) + 3 * accCube S.val * ((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) = 0 n:S:(PlusU1 n).QuadSols-(3 * ((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) * accCube S.val) + 3 * accCube S.val * ((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) = 0 n:S:(PlusU1 n).QuadSols3 * ((cubeTriLin S.val) S.val) ((familyUniversal n) BL₁.val) * accCube S.val * (-1 + 1) = 0 All goals completed! 🐙All goals completed! 🐙

The construction of a Sol from a QuadSol in the generic case.

def generic (S : (PlusU1 n).QuadSols) : (PlusU1 n).Sols := quadToAF (BL.addQuad S (α₁ S) (α₂ S)) (BL_add_α₁_α₂_cube S)
n:S:(PlusU1 n).Sols(α₁ S.toQuadSols S.toQuadSols).val = (α₁ S.toQuadSols S).val All goals completed! 🐙All goals completed! 🐙

The construction of a Sol from a QuadSol in the case when α₁ S = 0 and α₂ S = 0.

def special (S : (PlusU1 n).QuadSols) (a b : ) (h1 : α₁ S = 0) (h2 : α₂ S = 0) : (PlusU1 n).Sols := quadToAF (BL.addQuad S a b) (cube_α₁_α₂_zero S a b h1 h2)
n:S:(PlusU1 n).Solsh1:α₁ S.toQuadSols = 0(1 S.toQuadSols).val = S.val All goals completed! 🐙

A map from QuadSols × ℚ × ℚ to Sols taking account of the special and generic cases. We will show that this map is a surjection.

def quadSolToSol {n : } : (PlusU1 n).QuadSols × × (PlusU1 n).Sols := fun S => if h1 : α₁ S.1 = 0 α₂ S.1 = 0 then special S.1 S.2.1 S.2.2 h1.1 h1.2 else S.2.1 generic S.1

A map from Sols to QuadSols × ℚ × ℚ which forms a right-inverse to quadSolToSol, as shown in quadSolToSolInv_rightInverse.

def quadSolToSolInv {n : } : (PlusU1 n).Sols (PlusU1 n).QuadSols × × := fun S => if α₁ S.1 = 0 then (S.1, 1, 0) else (S.1, (α₁ S.1)⁻¹, 0)
lemma quadSolToSolInv_1 (S : (PlusU1 n).Sols) : (quadSolToSolInv S).1 = S.1 := n:S:(PlusU1 n).Sols(quadSolToSolInv S).1 = S.toQuadSols n:S:(PlusU1 n).Sols(if i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i) = 0 then (S.toQuadSols, 1, 0) else (S.toQuadSols, (-(3 * i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i)))⁻¹, 0)).1 = S.toQuadSols n:S:(PlusU1 n).Solsh✝: i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i) = 0(S.toQuadSols, 1, 0).1 = S.toQuadSolsn:S:(PlusU1 n).Solsh✝:¬ i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i) = 0(S.toQuadSols, (-(3 * i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i)))⁻¹, 0).1 = S.toQuadSols n:S:(PlusU1 n).Solsh✝: i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i) = 0(S.toQuadSols, 1, 0).1 = S.toQuadSolsn:S:(PlusU1 n).Solsh✝:¬ i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i) = 0(S.toQuadSols, (-(3 * i, (6 * (SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv S.val 0 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 0 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv S.val 1 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 1 i) + 3 * (SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv S.val 2 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 2 i) + 2 * (SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv S.val 3 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 3 i) + SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv S.val 4 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 4 i + SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv S.val 5 i * SMνCharges.toSpeciesEquiv ((familyUniversal n) BL₁.val) 5 i)))⁻¹, 0).1 = S.toQuadSols All goals completed! 🐙n:S:(PlusU1 n).Solsh:α₁ S.toQuadSols = 00 = 0 0 = 0 All goals completed! 🐙n:S:(PlusU1 n).Solsh:α₁ S.toQuadSols 0α₁ S.toQuadSols = 0 ¬0 = 0 n:S:(PlusU1 n).Solsh:α₁ S.toQuadSols 0hn:α₁ S.toQuadSols = 0¬0 = 0 All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙n:S:(PlusU1 n).Solsh:¬α₁ S.toQuadSols = 0(quadSolToSolInv S).2.1 generic (quadSolToSolInv S).1 = S All goals completed! 🐙theorem quadSolToSol_surjective : Function.Surjective (@quadSolToSol n) := Function.RightInverse.surjective quadSolToSolInv_rightInverse