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.StandardModel.AnomalyCancellation.NoGrav.Basic public import Mathlib.NumberTheory.FLT.Three

Parameterizations for solutions to the linear ACCs for 1 family

In this file we give two parameterizations

    linearParameters of solutions to the linear ACCs for 1 family

    linearParametersQENeqZero of solutions to the linear ACCs for 1 family with Q and E non-zero

These parameterizations are based on: https://arxiv.org/abs/1907.00514

@[expose] public section

The parameters for a linear parameterization to the solution of the linear ACCs.

The parameter Q'.

The parameter Y.

The parameter E'.

structure linearParameters where Q' : Y : E' :
@[ext] lemma ext {S T : linearParameters} (hQ : S.Q' = T.Q') (hY : S.Y = T.Y) (hE : S.E' = T.E') : S = T := S:linearParametersT:linearParametershQ:S.Q' = T.Q'hY:S.Y = T.YhE:S.E' = T.E'S = T T:linearParametersQ'✝:Y✝:E'✝:hQ:{ Q' := Q'✝, Y := Y✝, E' := E'✝ }.Q' = T.Q'hY:{ Q' := Q'✝, Y := Y✝, E' := E'✝ }.Y = T.YhE:{ Q' := Q'✝, Y := Y✝, E' := E'✝ }.E' = T.E'{ Q' := Q'✝, Y := Y✝, E' := E'✝ } = T All goals completed! 🐙

The map from the linear parameters to elements of (SMNoGrav 1).charges.

def asCharges (S : linearParameters) : (SMNoGrav 1).Charges := fun i => match i with | (0 : Fin 5) => S.Q' | (1 : Fin 5) => S.Y - S.Q' | (2 : Fin 5) => - (S.Y + S.Q') | (3: Fin 5) => - 3 * S.Q' | (4 : Fin 5) => S.E'
lemma speciesVal (S : linearParameters) : toSpeciesEquiv S.asCharges= fun i _ => S.asCharges i := S:linearParameterstoSpeciesEquiv S.asCharges = fun i x => S.asCharges i S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges i j = S.asCharges i match j with S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges i 0 = S.asCharges i match i with S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges 0 0 = S.asCharges 0 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges 1 0 = S.asCharges 1 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges 2 0 = S.asCharges 2 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges 3 0 = S.asCharges 3 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberChargestoSpeciesEquiv S.asCharges 4 0 = S.asCharges 4 All goals completed! 🐙lemma toSpecies_apply_asCharges (S : linearParameters) (i : Fin 5) : toSpecies i S.asCharges = fun _ => S.asCharges i := S:linearParametersi:Fin 5(toSpecies i) S.asCharges = fun x => S.asCharges i S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges(toSpecies i) S.asCharges j = S.asCharges i All goals completed! 🐙

The map from the linear parameters to elements of (SMNoGrav 1).LinSols.

def asLinear (S : linearParameters) : (SMNoGrav 1).LinSols := chargeToLinear S.asCharges (S:linearParametersaccSU2 S.asCharges = 0 S:linearParameters3 * S.asCharges 0 + S.asCharges 3 = 0 All goals completed! 🐙) (S:linearParametersaccSU3 S.asCharges = 0 S:linearParameters2 * S.Q' + (S.Y - S.Q') + (-S.Q' + -S.Y) = 0 All goals completed! 🐙)
lemma asLinear_val (S : linearParameters) : S.asLinear.val = S.asCharges := S:linearParametersS.asLinear.val = S.asCharges All goals completed! 🐙set_option backward.isDefEq.respectTransparency false in lemma cubic (S : linearParameters) : accCube (S.asCharges) = - 54 * S.Q'^3 - 18 * S.Q' * S.Y ^ 2 + S.E'^3 := S:linearParametersaccCube S.asCharges = -54 * S.Q' ^ 3 - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3 S:linearParameters x, (6 * (Q S.asCharges x * Q S.asCharges x * Q S.asCharges x) + 3 * (U S.asCharges x * U S.asCharges x * U S.asCharges x) + 3 * (D S.asCharges x * D S.asCharges x * D S.asCharges x) + 2 * (L S.asCharges x * L S.asCharges x * L S.asCharges x) + E S.asCharges x * E S.asCharges x * E S.asCharges x) = -54 * S.Q' ^ 3 - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3 S:linearParameters6 * (toSpeciesEquiv S.asCharges 0 0 * toSpeciesEquiv S.asCharges 0 0 * toSpeciesEquiv S.asCharges 0 0) + 3 * (toSpeciesEquiv S.asCharges 1 0 * toSpeciesEquiv S.asCharges 1 0 * toSpeciesEquiv S.asCharges 1 0) + 3 * (toSpeciesEquiv S.asCharges 2 0 * toSpeciesEquiv S.asCharges 2 0 * toSpeciesEquiv S.asCharges 2 0) + 2 * (toSpeciesEquiv S.asCharges 3 0 * toSpeciesEquiv S.asCharges 3 0 * toSpeciesEquiv S.asCharges 3 0) + toSpeciesEquiv S.asCharges 4 0 * toSpeciesEquiv S.asCharges 4 0 * toSpeciesEquiv S.asCharges 4 0 = -(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3 repeat erw [S:linearParameters6 * ((fun i x => S.asCharges i) 0 0 * (fun i x => S.asCharges i) 0 0 * (fun i x => S.asCharges i) 0 0) + 3 * ((fun i x => S.asCharges i) 1 0 * (fun i x => S.asCharges i) 1 0 * (fun i x => S.asCharges i) 1 0) + 3 * ((fun i x => S.asCharges i) 2 0 * (fun i x => S.asCharges i) 2 0 * (fun i x => S.asCharges i) 2 0) + 2 * ((fun i x => S.asCharges i) 3 0 * (fun i x => S.asCharges i) 3 0 * (fun i x => S.asCharges i) 3 0) + (fun i x => S.asCharges i) 4 0 * (fun i x => S.asCharges i) 4 0 * (fun i x => S.asCharges i) 4 0 = -(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3S:linearParameters6 * ((fun i x => S.asCharges i) 0 0 * (fun i x => S.asCharges i) 0 0 * (fun i x => S.asCharges i) 0 0) + 3 * ((fun i x => S.asCharges i) 1 0 * (fun i x => S.asCharges i) 1 0 * (fun i x => S.asCharges i) 1 0) + 3 * ((fun i x => S.asCharges i) 2 0 * (fun i x => S.asCharges i) 2 0 * (fun i x => S.asCharges i) 2 0) + 2 * ((fun i x => S.asCharges i) 3 0 * (fun i x => S.asCharges i) 3 0 * (fun i x => S.asCharges i) 3 0) + (fun i x => S.asCharges i) 4 0 * (fun i x => S.asCharges i) 4 0 * (fun i x => S.asCharges i) 4 0 = -(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3 S:linearParameters6 * (S.Q' * S.Q' * S.Q') + 3 * ((S.Y - S.Q') * (S.Y - S.Q') * (S.Y - S.Q')) + 3 * ((-S.Q' + -S.Y) * (-S.Q' + -S.Y) * (-S.Q' + -S.Y)) + -(2 * (3 * S.Q' * (3 * S.Q') * (3 * S.Q'))) + S.E' * S.E' * S.E' = -(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 + S.E' ^ 3 All goals completed! 🐙S:linearParametershc:-54 * 0 ^ 3 - 18 * 0 * S.Y ^ 2 + S.E' ^ 3 = 0h:S.Q' = 0S.E' = 0 All goals completed! 🐙S:linearParametersh:S.E' = 0h1:-(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 = -18 * (3 * S.Q' ^ 2 + S.Y ^ 2) * S.Q'hc:3 * S.Q' ^ 2 + S.Y ^ 2 = 0h2:3 * S.Q' ^ 2 = 0 S.Y ^ 2 = 0S.Q' = 0 S:linearParametersh:S.E' = 0h1:-(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 = -18 * (3 * S.Q' ^ 2 + S.Y ^ 2) * S.Q'hc:3 * S.Q' ^ 2 + S.Y ^ 2 = 0h2:S.Q' = 0 S.Y = 0S.Q' = 0 All goals completed! 🐙 S:linearParametersh:S.E' = 0h1:-(54 * S.Q' ^ 3) - 18 * S.Q' * S.Y ^ 2 = -18 * (3 * S.Q' ^ 2 + S.Y ^ 2) * S.Q'hc:S.Q' = 0S.Q' = 0 All goals completed! 🐙

The bijection between the type of linear parameters and (SMNoGrav 1).LinSols.

set_option backward.isDefEq.respectTransparency false inS:(SMNoGrav 1).LinSolsi:Fin 5(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges i) 0 = (toSpecies i) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:accSU3 S.val = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges i) 0 = (toSpecies i) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges i) 0 = (toSpecies i) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:accSU2 S.val = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges i) 0 = (toSpecies i) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges i) 0 = (toSpecies i) S.val 0 match i with S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges 0) 0 = (toSpecies 0) S.val 0 All goals completed! 🐙 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges 1) 0 = (toSpecies 1) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2 - toSpeciesEquiv S.val 0 0 = toSpeciesEquiv S.val 1 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0 - 2 * toSpeciesEquiv S.val 0 0 = toSpeciesEquiv S.val 1 0 * 2 linear_combination (norm := S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0 - toSpeciesEquiv S.val 0 0 * 2 + toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 * 2 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0) -(1 * h1) S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-S.val (finProdFinEquiv (1, 0)) - S.val (finProdFinEquiv (2, 0)) - S.val (finProdFinEquiv (0, 0)) * 2 + S.val (finProdFinEquiv (0, 0)) * 2 + S.val (finProdFinEquiv (1, 0)) + S.val (finProdFinEquiv (2, 0)) = 0 All goals completed! 🐙 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges 2) 0 = (toSpecies 2) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-toSpeciesEquiv S.val 0 0 + -((toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2) = toSpeciesEquiv S.val 2 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(toSpeciesEquiv S.val 0 0 * 2) + -(toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) = toSpeciesEquiv S.val 2 0 * 2 linear_combination (norm := S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(toSpeciesEquiv S.val 0 0 * 2) - toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0 + toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 * 2 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0) -(1 * h1) S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(S.val (finProdFinEquiv (0, 0)) * 2) - S.val (finProdFinEquiv (1, 0)) - S.val (finProdFinEquiv (2, 0)) + S.val (finProdFinEquiv (0, 0)) * 2 + S.val (finProdFinEquiv (1, 0)) + S.val (finProdFinEquiv (2, 0)) = 0 All goals completed! 🐙 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges 3) 0 = (toSpecies 3) S.val 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(3 * toSpeciesEquiv S.val 0 0) = toSpeciesEquiv S.val 3 0 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(3 * toSpeciesEquiv S.val 0 0) = toSpeciesEquiv S.val 3 0 linear_combination (norm := S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(toSpeciesEquiv S.val 0 0 * 3) + toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 * 3 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 - toSpeciesEquiv S.val 3 0 = 0) -(1 * h2) S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0-(S.val (finProdFinEquiv (0, 0)) * 3) + S.val (finProdFinEquiv (0, 0)) * 3 + S.val (finProdFinEquiv (3, 0)) - S.val (finProdFinEquiv (3, 0)) = 0 All goals completed! 🐙 S:(SMNoGrav 1).LinSolsi:Fin 5h1:2 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 1 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 2 0, sum_SMSpecies_numberCharges_one._proof_1 = 0h2:3 * toSpeciesEquiv S.val 0 0, sum_SMSpecies_numberCharges_one._proof_1 + toSpeciesEquiv S.val 3 0, sum_SMSpecies_numberCharges_one._proof_1 = 0(fun x => { Q' := toSpeciesEquiv S.val 0 0, Y := (toSpeciesEquiv S.val 1 0 - toSpeciesEquiv S.val 2 0) / 2, E' := toSpeciesEquiv S.val 4 0 }.asCharges 4) 0 = (toSpecies 4) S.val 0 All goals completed! 🐙

The bijection between the linear parameters and (SMNoGrav 1).LinSols in the special case when Q and E are both not zero.

def bijectionQEZero : {S : linearParameters // S.Q' 0 S.E' 0} {S : (SMNoGrav 1).LinSols // Q S.val (0 : Fin 1) 0 E S.val (0 : Fin 1) 0} where toFun S := bijection S, S.2 invFun S := bijection.symm S, S.2 left_inv S := Subtype.ext (bijection.left_inv S.1) right_inv S := Subtype.ext (bijection.right_inv S.1)
S:linearParametersS.E' = - -(S.Q' * 6) S.E' = S.Q' * 6 All goals completed! 🐙

The parameters for solutions to the linear ACCs with the condition that Q and E are non-zero.

The parameter x.

The parameter v.

The parameter w.

structure linearParametersQENeqZero where x : v : w : hx : x 0 hvw : v + w 0
@[ext] lemma ext {S T : linearParametersQENeqZero} (hx : S.x = T.x) (hv : S.v = T.v) (hw : S.w = T.w) : S = T := S:linearParametersQENeqZeroT:linearParametersQENeqZerohx:S.x = T.xhv:S.v = T.vhw:S.w = T.wS = T T:linearParametersQENeqZerox✝:v✝:w✝:hx✝:x✝ 0hvw✝:v✝ + w✝ 0hx:{ x := x✝, v := v✝, w := w✝, hx := hx✝, hvw := hvw✝ }.x = T.xhv:{ x := x✝, v := v✝, w := w✝, hx := hx✝, hvw := hvw✝ }.v = T.vhw:{ x := x✝, v := v✝, w := w✝, hx := hx✝, hvw := hvw✝ }.w = T.w{ x := x✝, v := v✝, w := w✝, hx := hx✝, hvw := hvw✝ } = T All goals completed! 🐙

A map from linearParametersQENeqZero to linearParameters.

S:linearParametersQENeqZero¬S.x = 0 ¬S.v + S.w = 0 All goals completed! 🐙

A map from linearParameters to linearParametersQENeqZero in the special case when Q' and E' of the linear parameters are non-zero.

@[simps!] def tolinearParametersQNeqZero (S : {S : linearParameters // S.Q' 0 S.E' 0}) : linearParametersQENeqZero := S.1.Q', - (3 * S.1.Q' + S.1.Y) / S.1.E', - (3 * S.1.Q' - S.1.Y)/ S.1.E', S.2.1, S:{ S // S.Q' 0 S.E' 0 }-(3 * (↑S).Q' + (↑S).Y) / (↑S).E' + -(3 * (↑S).Q' - (↑S).Y) / (↑S).E' 0 S:{ S // S.Q' 0 S.E' 0 }¬(-(↑S).Y + -(3 * (↑S).Q')) / (↑S).E' + ((↑S).Y - 3 * (↑S).Q') / (↑S).E' = 0 S:{ S // S.Q' 0 S.E' 0 }¬(-(↑S).Y + -(3 * (↑S).Q') + ((↑S).Y - 3 * (↑S).Q')) / (↑S).E' = 0 S:{ S // S.Q' 0 S.E' 0 }¬-((↑S).Q' * (↑S).E'⁻¹ * 6) = 0 S:{ S // S.Q' 0 S.E' 0 }¬((↑S).Q' = 0 (↑S).E'⁻¹ = 0) All goals completed! 🐙

A bijection between the type linearParametersQENeqZero and linear parameters with Q' and E' non-zero.

@[simps!] def bijectionLinearParameters : linearParametersQENeqZero {S : linearParameters // S.Q' 0 S.E' 0} where toFun := toLinearParameters invFun := tolinearParametersQNeqZero left_inv S := S:linearParametersQENeqZerotolinearParametersQNeqZero S.toLinearParameters = S S:linearParametersQENeqZerohvw:S.v + S.w 0tolinearParametersQNeqZero S.toLinearParameters = S S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0tolinearParametersQNeqZero S.toLinearParameters = S S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).x = S.xS:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).v = S.vS:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).w = S.w S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).x = S.x All goals completed! 🐙 S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).v = S.v S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(-(3 * S.x * (S.v - S.w) / (S.v + S.w)) + -(3 * S.x)) / (-(6 * S.x) / (S.v + S.w)) = S.v S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0-(3 * (-(S.v - S.w) + -(S.v + S.w))) = S.v * 6 All goals completed! 🐙 S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(tolinearParametersQNeqZero S.toLinearParameters).w = S.w S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0(3 * S.x * (S.v - S.w) / (S.v + S.w) - 3 * S.x) / (-(6 * S.x) / (S.v + S.w)) = S.w S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0-(3 * (S.v - S.w - (S.v + S.w))) = S.w * 6 All goals completed! 🐙 right_inv S := S:{ S // S.Q' 0 S.E' 0 }(tolinearParametersQNeqZero S).toLinearParameters = S S:{ S // S.Q' 0 S.E' 0 }(tolinearParametersQNeqZero S).toLinearParameters = S S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0(tolinearParametersQNeqZero S).toLinearParameters = S S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(tolinearParametersQNeqZero S).toLinearParameters = S S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).Q' = (↑S).Q'S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).Y = (↑S).YS:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).E' = (↑S).E' S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).Q' = (↑S).Q' All goals completed! 🐙 S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).Y = (↑S).Y S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 03 * (↑S).Q' * ((-(↑S).Y + -(3 * (↑S).Q')) / (↑S).E' - ((↑S).Y - 3 * (↑S).Q') / (↑S).E') / ((-(↑S).Y + -(3 * (↑S).Q')) / (↑S).E' + ((↑S).Y - 3 * (↑S).Q') / (↑S).E') = (↑S).Y S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 03 * (↑S).Q' * (-(↑S).Y + -(3 * (↑S).Q') - ((↑S).Y - 3 * (↑S).Q')) / (-(↑S).Y + -(3 * (↑S).Q') + ((↑S).Y - 3 * (↑S).Q')) = (↑S).Y S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑S).Q' * (↑S).Y * (↑S).Q'⁻¹ = (↑S).Y All goals completed! 🐙 S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑(tolinearParametersQNeqZero S).toLinearParameters).E' = (↑S).E' S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0-(6 * (↑S).Q') / ((-(↑S).Y + -(3 * (↑S).Q')) / (↑S).E' + ((↑S).Y - 3 * (↑S).Q') / (↑S).E') = (↑S).E' S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0-(6 * (↑S).Q' / (-(↑S).Y + -((↑S).Q' * 3) + ((↑S).Y - (↑S).Q' * 3))) = 1 S:{ S // S.Q' 0 S.E' 0 }hQ:(↑S).Q' 0hE:(↑S).E' 0(↑S).Q' * (↑S).Q'⁻¹ = 1 All goals completed! 🐙

The bijection between linearParametersQENeqZero and LinSols with Q and E non-zero.

def bijection : linearParametersQENeqZero {S : (SMNoGrav 1).LinSols // Q S.val (0 : Fin 1) 0 E S.val (0 : Fin 1) 0} := bijectionLinearParameters.trans (linearParameters.bijectionQEZero)
lemma bijection_coe_val (S : linearParametersQENeqZero) : (bijection S).1.val = (bijectionLinearParameters S : linearParameters).asCharges := rflS:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0h1:-216 - S.v ^ 3 * 216 - S.w ^ 3 * 216 = -216 * (S.v ^ 3 + S.w ^ 3 + 1)-216 * (S.v ^ 3 + S.w ^ 3 + 1) = 0 S.v ^ 3 + S.w ^ 3 = -1 S:linearParametersQENeqZerohvw:¬S.v + S.w = 0hQ:¬S.x = 0h1:-216 - S.v ^ 3 * 216 - S.w ^ 3 * 216 = -(216 * (S.v ^ 3 + S.w ^ 3 + 1))S.v ^ 3 + S.w ^ 3 + 1 = 0 S.v ^ 3 + S.w ^ 3 = -1 All goals completed! 🐙S:linearParametersQENeqZeroh:S.v ^ 3 + S.w ^ 3 = (-1) ^ 3h1:(-1) ^ 3 = -1hn:¬S.v = 0 ¬S.w = 0FLTThree:FermatLastTheoremWith 3h2:S.v ^ 3 + S.w ^ 3 (-1) ^ 3False All goals completed! 🐙S:linearParametersQENeqZerohv:S.v = 0h:S.w ^ 3 = -1h':(S.w + 1) * (1 * S.w * S.w + -1 * S.w + 1) = 0h'':1 * (S.w * S.w) + -1 * S.w + 1 0S.w = -1 S:linearParametersQENeqZerohv:S.v = 0h:S.w ^ 3 = -1h':S.w + 1 = 0h'':¬S.w * S.w + -S.w + 1 = 0S.w = -1 All goals completed! 🐙S:linearParametersQENeqZerohw:S.w = 0h:S.v ^ 3 = -1h':(S.v + 1) * (1 * S.v * S.v + -1 * S.v + 1) = 0h'':1 * (S.v * S.v) + -1 * S.v + 1 0S.v = -1 S:linearParametersQENeqZerohw:S.w = 0h:S.v ^ 3 = -1h':S.v + 1 = 0h'':¬S.v * S.v + -S.v + 1 = 0S.v = -1 All goals completed! 🐙lemma cube_w_v (S : linearParametersQENeqZero) (h : accCube (bijection S).1.val = 0) : (S.v = -1 S.w = 0) (S.v = 0 S.w = -1) := S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0h':S.v = 0 S.w = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.v = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.w = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.v = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1 All goals completed! 🐙 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.w = 0S.v = -1 S.w = 0 S.v = 0 S.w = -1 All goals completed! 🐙All goals completed! 🐙 S:linearParametersQENeqZerohvw:S.v + S.w 0hQ:S.x 0h:S.v + S.w = -1(↑(bijectionLinearParameters S)).E' = 6 * (↑(bijectionLinearParameters S)).Q' All goals completed! 🐙S:linearParametersQENeqZeroh✝:accCube (↑(bijection S)).val = 0h:S.v = 0 S.w = -10 + -1 = -1 All goals completed! 🐙