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.QFT.QED.AnomalyCancellation.Even.LineInCubic

Parameterization in even case

Given maps g : Fin n.succ → ℚ, f : Fin n → ℚ and a : ℚ we form a solution to the anomaly equations. We show that every solution can be got in this way, up to permutation, unless it, up to permutation, lives in the unshifted plane.

The main reference is:

    https://arxiv.org/pdf/1912.04804.pdf

@[expose] public section

Given coefficients g of a point in the unshifted plane and f of a point in the shifted plane, and a rational, we get a rational a ∈ ℚ, we get a point in (PureU1 (2 * n.succ)).AnomalyFreeLinear, which we will later show extends to an anomaly free point.

def parameterizationAsLinear (g : Fin n.succ → ℚ) (f : Fin n → ℚ) (a : ℚ) : (PureU1 (2 * n.succ)).LinSols := a • ((accCubeTriLinSymm (Shifted.planeCharges f) (Shifted.planeCharges f) (Unshifted.planeCharges g)) • Unshifted.planeLinSols g + (- accCubeTriLinSymm (Unshifted.planeCharges g) (Unshifted.planeCharges g) (Shifted.planeCharges f)) • Shifted.planeLinSols f)
All goals completed! 🐙n:ℕg:Fin n.succ → ℚf:Fin n → ℚa:ℚ⊢ a ^ 3 * (((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) ^ 3 * 0 + (-((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f)) ^ 3 * 0 + 3 * (((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) * (((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) * (-((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) * ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f)))) + 3 * (-((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) * (-((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) * (((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g))))) = 0 All goals completed! 🐙

The construction of a Sol from a Fin n.succ → ℚ, a Fin n → ℚ and a ℚ.

def parameterization (g : Fin n.succ → ℚ) (f : Fin n → ℚ) (a : ℚ) : (PureU1 (2 * n.succ)).Sols := ⟨⟨parameterizationAsLinear g f a, fun i => Fin.elim0 i⟩, parameterizationCharge_cube g f a⟩
n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:(PureU1 (2 * n.succ)).cubicACC (Unshifted.planeCharges g + Shifted.planeCharges f) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:(accCube (2 * n.succ)) (Unshifted.planeCharges g + Shifted.planeCharges f) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) erw [n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:accCubeTriLinSymm.toCubic (Unshifted.planeCharges g) + accCubeTriLinSymm.toCubic (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:0 + accCubeTriLinSymm.toCubic (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:0 + 0 + 3 * ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g)n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:0 + 0 + 3 * ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) + 3 * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = -((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) at hC All goals completed! 🐙

A proposition on a solution which is true if accCubeTriLinSymm (Unshifted.planeCharges g, Unshifted.planeCharges g, Shifted.planeCharges f) ≠ 0. In this case our parameterization above will be able to recover this point.

def GenericCase (S : (PureU1 (2 * n.succ)).Sols) : Prop := ∀ (g : Fin n.succ → ℚ) (f : Fin n → ℚ) (_ : S.val = Unshifted.planeCharges g + Shifted.planeCharges f), accCubeTriLinSymm (Unshifted.planeCharges g) (Unshifted.planeCharges g) (Shifted.planeCharges f) ≠ 0
n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fg':Fin n.succ → ℚf':Fin n → ℚhC:((accCubeTriLinSymm (Unshifted.planeCharges g')) (Unshifted.planeCharges g')) (Shifted.planeCharges f') = 0hS':g = g' ∧ f = f'hC':((accCubeTriLinSymm (Unshifted.planeCharges g')) (Unshifted.planeCharges g')) (Shifted.planeCharges f') ≠ 0⊢ False All goals completed! 🐙

A proposition on a solution which is true if accCubeTriLinSymm (Unshifted.planeCharges g, Unshifted.planeCharges g, Shifted.planeCharges f) = 0.

def SpecialCase (S : (PureU1 (2 * n.succ)).Sols) : Prop := ∀ (g : Fin n.succ → ℚ) (f : Fin n → ℚ) (_ : S.val = Unshifted.planeCharges g + Shifted.planeCharges f), accCubeTriLinSymm (Unshifted.planeCharges g) (Unshifted.planeCharges g) (Shifted.planeCharges f) = 0
n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fg':Fin n.succ → ℚf':Fin n → ℚhS':g = g' ∧ f = f'hC':((accCubeTriLinSymm (Unshifted.planeCharges g')) (Unshifted.planeCharges g')) (Shifted.planeCharges f') = 0⊢ ((accCubeTriLinSymm (Unshifted.planeCharges g')) (Unshifted.planeCharges g')) (Shifted.planeCharges f') = 0 All goals completed! 🐙n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚh:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) ≠ 0 ∨ ((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0⊢ GenericCase S ∨ SpecialCase S n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚh:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) ≠ 0⊢ GenericCase S ∨ SpecialCase Sn:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚh:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0⊢ GenericCase S ∨ SpecialCase S n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚh:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) ≠ 0⊢ GenericCase S ∨ SpecialCase S All goals completed! 🐙 n:ℕS:(PureU1 (2 * n.succ)).Solsg:Fin n.succ → ℚf:Fin n → ℚh:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0⊢ GenericCase S ∨ SpecialCase S All goals completed! 🐙n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:GenericCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh:-((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) ≠ 0⊢ ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) ≠ 0 n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:GenericCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh:¬∑ i, Shifted.planeCharges f i * Shifted.planeCharges f i * Unshifted.planeCharges g i = 0⊢ ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) ≠ 0 All goals completed! 🐙n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:SpecialCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Pa g fa:ℚb:ℚh:-((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g)))) = 0 n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:SpecialCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Pa g fa:ℚb:ℚh:∑ i, Shifted.planeCharges f i * Shifted.planeCharges f i * Unshifted.planeCharges g i = 0⊢ a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g)))) = 0 n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:SpecialCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Pa g fa:ℚb:ℚh:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g)))) = 0 erw [n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:SpecialCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Pa g fa:ℚb:ℚh:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * 0))) = 0n:ℕS:(PureU1 (2 * n.succ)).Solsh✝:SpecialCase Sg:Fin n.succ → ℚf:Fin n → ℚhS:S.val = Pa g fa:ℚb:ℚh:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0⊢ a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * 0))) = 0 All goals completed! 🐙lemma special_case_lineInCubic_perm {S : (PureU1 (2 * n.succ)).Sols} (h : ∀ (M : (FamilyPermutations (2 * n.succ)).group), SpecialCase ((FamilyPermutations (2 * n.succ)).solAction.toFun _ _ S M)) : LineInCubicPerm S.1.1 := fun M => special_case_lineInCubic (h M)theorem special_case {S : (PureU1 (2 * n.succ.succ)).Sols} (h : ∀ (M : (FamilyPermutations (2 * n.succ.succ)).group), SpecialCase ((FamilyPermutations (2 * n.succ.succ)).solAction.toFun _ _ S M)) : ∃ (M : (FamilyPermutations (2 * n.succ.succ)).group), ((FamilyPermutations (2 * n.succ.succ)).solAction.toFun _ _ S M).1.1 ∈ Submodule.span ℚ (Set.range Unshifted.basis) := lineInCubicPerm_in_plane S (special_case_lineInCubic_perm h)