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.Odd.LineInCubic

Parameterization in odd case

Given maps g : Fin n → ℚ, 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 is zero.

The main reference is:

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

@[expose] public section

Given a g f : Fin n → ℚ and a a : ℚ we form a linear solution. We will later show that this can be extended to a complete solution.

def parameterizationAsLinear (g f : Fin n ) (a : ) : (PureU1 (2 * n + 1)).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! 🐙

The parameterization satisfies the cubic ACC.

set_option backward.isDefEq.respectTransparency false inn:g:Fin n 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! 🐙

Given a g f : Fin n → ℚ and a a : ℚ we form a solution.

def parameterization (g f : Fin n ) (a : ) : (PureU1 (2 * n + 1)).Sols := parameterizationAsLinear g f a, fun i => Fin.elim0 i, parameterizationCharge_cube g f a
n:S:(PureU1 (2 * n + 1)).Solsg:Fin n f:Fin n hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:(PureU1 (2 * n + 1)).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 + 1)).Solsg:Fin n f:Fin n hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fhC:(accCube (2 * n + 1)) (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 + 1)).Solsg:Fin n 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 + 1)).Solsg:Fin n 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) at hC erw [n:S:(PureU1 (2 * n + 1)).Solsg:Fin n 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 + 1)).Solsg:Fin n 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) at hC erw [n:S:(PureU1 (2 * n + 1)).Solsg:Fin n 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 + 1)).Solsg:Fin n 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 + 1)).Sols) : Prop := (g f : Fin n.succ ) (_ : 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 + 1)).Solsg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fg':Fin n.succ f':Fin n.succ 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') 0False 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 we will show that S is zero if it is true for all permutations.

def SpecialCase (S : (PureU1 (2 * n.succ + 1)).Sols) : Prop := (g f : Fin n.succ ) (_ : 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 + 1)).Solsg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fg':Fin n.succ f':Fin n.succ 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 + 1)).Solsg:Fin n.succ f:Fin n.succ 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) = 0GenericCase S SpecialCase S n:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh✝:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) 0GenericCase S SpecialCase Sn:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh✝:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0GenericCase S SpecialCase S n:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh✝:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) 0GenericCase S SpecialCase Sn:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh✝:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0GenericCase S SpecialCase S n:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0GenericCase S SpecialCase S n:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) 0GenericCase S SpecialCase S All goals completed! 🐙 n:S:(PureU1 (2 * n.succ + 1)).Solsg:Fin n.succ f:Fin n.succ h:S.val = Unshifted.planeCharges g + Shifted.planeCharges fh1:((accCubeTriLinSymm (Unshifted.planeCharges g)) (Unshifted.planeCharges g)) (Shifted.planeCharges f) = 0GenericCase S SpecialCase S All goals completed! 🐙n:S:(PureU1 (2 * n.succ + 1)).Solsh:GenericCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fS.val = Unshifted.planeCharges g + Shifted.planeCharges fn:S:(PureU1 (2 * n.succ + 1)).Solsh:GenericCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges f((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) 0 n:S:(PureU1 (2 * n.succ + 1)).Solsh:GenericCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges fS.val = Unshifted.planeCharges g + Shifted.planeCharges f All goals completed! 🐙 n:S:(PureU1 (2 * n.succ + 1)).Solsh:GenericCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Unshifted.planeCharges g + Shifted.planeCharges f((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) 0 All goals completed! 🐙n:S:(PureU1 (2 * n.succ + 1)).Solsh✝:SpecialCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Pa g fa:b:h:-((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0a ^ 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 + 1)).Solsh✝:SpecialCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Pa g fa:b:h: i, Shifted.planeCharges f i * Shifted.planeCharges f i * Unshifted.planeCharges g i = 0a ^ 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 + 1)).Solsh✝:SpecialCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Pa g fa:b:h:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0a ^ 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 + 1)).Solsh✝:SpecialCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Pa g fa:b:h:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * 0))) + 3 * (b * (b * (a * 0))) = 0n:S:(PureU1 (2 * n.succ + 1)).Solsh✝:SpecialCase Sg:Fin n.succ f:Fin n.succ hS:S.val = Pa g fa:b:h:((accCubeTriLinSymm (Shifted.planeCharges f)) (Shifted.planeCharges f)) (Unshifted.planeCharges g) = 0a ^ 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 + 1)).Sols} (h : (M : (FamilyPermutations (2 * n.succ + 1)).group), SpecialCase ((FamilyPermutations (2 * n.succ + 1)).solAction.toFun _ _ S M)) : LineInCubicPerm S.1.1 := n:S:(PureU1 (2 * n.succ + 1)).Solsh: (M : (FamilyPermutations (2 * n.succ + 1)).group), SpecialCase ((MulAction.toFun (FamilyPermutations (2 * n.succ + 1)).group (PureU1 (2 * n.succ + 1)).Sols) S M)LineInCubicPerm S.toLinSols n:S:(PureU1 (2 * n.succ + 1)).Solsh: (M : (FamilyPermutations (2 * n.succ + 1)).group), SpecialCase ((MulAction.toFun (FamilyPermutations (2 * n.succ + 1)).group (PureU1 (2 * n.succ + 1)).Sols) S M)M:(FamilyPermutations (2 * n.succ + 1)).groupLineInCubic (((FamilyPermutations (2 * n.succ + 1)).linSolRep M) S.toLinSols) n:S:(PureU1 (2 * n.succ + 1)).Solsh: (M : (FamilyPermutations (2 * n.succ + 1)).group), SpecialCase ((MulAction.toFun (FamilyPermutations (2 * n.succ + 1)).group (PureU1 (2 * n.succ + 1)).Sols) S M)M:(FamilyPermutations (2 * n.succ + 1)).grouphM:LineInCubic ((MulAction.toFun (FamilyPermutations (2 * n.succ + 1)).group (PureU1 (2 * n.succ + 1)).Sols) S M).toLinSolsLineInCubic (((FamilyPermutations (2 * n.succ + 1)).linSolRep M) S.toLinSols) All goals completed! 🐙theorem special_case {S : (PureU1 (2 * n.succ.succ + 1)).Sols} (h : (M : (FamilyPermutations (2 * n.succ.succ + 1)).group), SpecialCase ((FamilyPermutations (2 * n.succ.succ + 1)).solAction.toFun _ _ S M)) : S.1.1 = 0 := n:S:(PureU1 (2 * n.succ.succ + 1)).Solsh: (M : (FamilyPermutations (2 * n.succ.succ + 1)).group), SpecialCase ((MulAction.toFun (FamilyPermutations (2 * n.succ.succ + 1)).group (PureU1 (2 * n.succ.succ + 1)).Sols) S M)S.toLinSols = 0 n:S:(PureU1 (2 * n.succ.succ + 1)).Solsh: (M : (FamilyPermutations (2 * n.succ.succ + 1)).group), SpecialCase ((MulAction.toFun (FamilyPermutations (2 * n.succ.succ + 1)).group (PureU1 (2 * n.succ.succ + 1)).Sols) S M)ht:LineInCubicPerm S.toLinSolsS.toLinSols = 0 All goals completed! 🐙