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:linearParameters⊢ toSpeciesEquiv S.asCharges = fun i x => S.asCharges i S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges i j = S.asCharges i match j with S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges i 0 = S.asCharges i match i with S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges 0 0 = S.asCharges 0 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges 1 0 = S.asCharges 1 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges 2 0 = S.asCharges 2 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv S.asCharges 3 0 = S.asCharges 3 All goals completed! 🐙 S:linearParametersi:Fin 5j:Fin (SMSpecies 1).numberCharges⊢ toSpeciesEquiv 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:linearParameters⊢ accSU2 S.asCharges = 0 S:linearParameters⊢ 3 * S.asCharges 0 + S.asCharges 3 = 0 All goals completed! 🐙) (S:linearParameters⊢ accSU3 S.asCharges = 0 S:linearParameters⊢ 2 * 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:linearParameters⊢ S.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:linearParameters⊢ accCube 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:linearParameters⊢ 6 * (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:linearParameters⊢ 6 * ((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:linearParameters⊢ 6 * ((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:linearParameters⊢ 6 * (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' = 0⊢ S.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 = 0⊢ S.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 = 0⊢ S.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' = 0⊢ S.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⟩ = 0⊢ toSpeciesEquiv 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:linearParameters⊢ S.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.w⊢ S = 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:linearParametersQENeqZero⊢ tolinearParametersQNeqZero S.toLinearParameters = S S:linearParametersQENeqZerohvw:S.v + S.w ≠ 0⊢ tolinearParametersQNeqZero S.toLinearParameters = S S:linearParametersQENeqZerohvw:S.v + S.w ≠ 0hQ:S.x ≠ 0⊢ tolinearParametersQNeqZero 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' ≠ 0⊢ 3 * (↑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' ≠ 0⊢ 3 * (↑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) ^ 3⊢ False 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 ≠ 0⊢ S.w = -1 S:linearParametersQENeqZerohv:S.v = 0h:S.w ^ 3 = -1h':S.w + 1 = 0h'':¬S.w * S.w + -S.w + 1 = 0⊢ S.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 ≠ 0⊢ S.v = -1 S:linearParametersQENeqZerohw:S.w = 0h:S.v ^ 3 = -1h':S.v + 1 = 0h'':¬S.v * S.v + -S.v + 1 = 0⊢ S.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 = 0⊢ S.v = -1 ∧ S.w = 0 ∨ S.v = 0 ∧ S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0h':S.v = 0 ∨ S.w = 0⊢ S.v = -1 ∧ S.w = 0 ∨ S.v = 0 ∧ S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.v = 0⊢ S.v = -1 ∧ S.w = 0 ∨ S.v = 0 ∧ S.w = -1S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.w = 0⊢ S.v = -1 ∧ S.w = 0 ∨ S.v = 0 ∧ S.w = -1 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.v = 0⊢ S.v = -1 ∧ S.w = 0 ∨ S.v = 0 ∧ S.w = -1 All goals completed! 🐙 S:linearParametersQENeqZeroh:accCube (↑(bijection S)).val = 0hx:S.w = 0⊢ S.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 = -1⊢ 0 + -1 = -1 All goals completed! 🐙