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.BasisLinear public import Physlib.QFT.QED.AnomalyCancellation.LineInPlaneCond

Line In Cubic Even case

We say that a linear solution satisfies the lineInCubic property if the line through that point and through the two different planes formed by the basis of LinSols lies in the cubic.

We show that for a solution all its permutations satisfy this property, then there exists a permutation for which it lies in the plane spanned by the first part of the basis.

The main reference for this file is:

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

@[expose] public section

A property on LinSols, satisfied if every point on the line between the two planes in the basis through that point is in the cubic.

def LineInCubic (S : (PureU1 (2 * n.succ)).LinSols) : Prop := (g : Fin n.succ ) (f : Fin n ) (_ : S.val = Pa g f) (a b : ), accCube (2 * n.succ) (a P g + b P! f) = 0
set_option backward.isDefEq.respectTransparency false in lemma lineInCubic_expand {S : (PureU1 (2 * n.succ)).LinSols} (h : LineInCubic S) : (g : Fin n.succ ) (f : Fin n ) (_ : S.val = Pa g f) (a b : ), 3 * a * b * (a * accCubeTriLinSymm (P g) (P g) (P! f) + b * accCubeTriLinSymm (P! f) (P! f) (P g)) = 0 := n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic S (g : Fin n.succ ) (f : Fin n ), S.val = Pa g f (a b : ), 3 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:3 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:(accCube (2 * n.succ)) (a P g + b P! f) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:accCubeTriLinSymm.toCubic (a P g + b P! f) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:a ^ 3 * accCubeTriLinSymm.toCubic (P g) + b ^ 3 * accCubeTriLinSymm.toCubic (P! f) + 3 * (a * (a * (b * ((accCubeTriLinSymm (P g)) (P g)) (P! f)))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)))) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 erw [n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:a ^ 3 * 0 + b ^ 3 * accCubeTriLinSymm.toCubic (P! f) + 3 * (a * (a * (b * ((accCubeTriLinSymm (P g)) (P g)) (P! f)))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)))) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * ((accCubeTriLinSymm (P g)) (P g)) (P! f)))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)))) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = Pa g fa:b:h1:a ^ 3 * 0 + b ^ 3 * 0 + 3 * (a * (a * (b * ((accCubeTriLinSymm (P g)) (P g)) (P! f)))) + 3 * (b * (b * (a * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)))) = 03 * a * b * (a * ((accCubeTriLinSymm (P g)) (P g)) (P! f) + b * ((accCubeTriLinSymm (P! f)) (P! f)) (P g)) = 0 at h1 All goals completed! 🐙

This lemma states that for a given S of type (PureU1 (2 * n.succ)).AnomalyFreeLinear and a proof h that the line through S lies on a cubic curve, for any functions g : Fin n.succ → ℚ and f : Fin n → ℚ, if S.val = P g + P! f, then accCubeTriLinSymm.toFun (P g, P g, P! f) = 0.

lemma line_in_cubic_P_P_P! {S : (PureU1 (2 * n.succ)).LinSols} (h : LineInCubic S) : (g : Fin n.succ ) (f : Fin n ) (_ : S.val = P g + P! f), accCubeTriLinSymm (P g) (P g) (P! f) = 0 := n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic S (g : Fin n.succ ) (f : Fin n ), S.val = P g + P! f ((accCubeTriLinSymm (P g)) (P g)) (P! f) = 0 n:S:(PureU1 (2 * n.succ)).LinSolsh:LineInCubic Sg:Fin n.succ f:Fin n hS:S.val = P g + P! f((accCubeTriLinSymm (P g)) (P g)) (P! f) = 0 All goals completed! 🐙

A LinSol satisfies LineInCubicPerm if all its permutations satisfy lineInCubic.

def LineInCubicPerm (S : (PureU1 (2 * n.succ)).LinSols) : Prop := (M : (FamilyPermutations (2 * n.succ)).group), LineInCubic ((FamilyPermutations (2 * n.succ)).linSolRep M S)

If lineInCubicPerm S then lineInCubic S.

lemma lineInCubicPerm_self {S : (PureU1 (2 * n.succ)).LinSols} (hS : LineInCubicPerm S) : LineInCubic S := hS 1

If lineInCubicPerm S then lineInCubicPerm (M S) for all permutations M.

lemma lineInCubicPerm_permute {S : (PureU1 (2 * n.succ)).LinSols} (hS : LineInCubicPerm S) (M' : (FamilyPermutations (2 * n.succ)).group) : LineInCubicPerm ((FamilyPermutations (2 * n.succ)).linSolRep M' S) := n:S:(PureU1 (2 * n.succ)).LinSolshS:LineInCubicPerm SM':(FamilyPermutations (2 * n.succ)).groupLineInCubicPerm (((FamilyPermutations (2 * n.succ)).linSolRep M') S) n:S:(PureU1 (2 * n.succ)).LinSolshS:LineInCubicPerm SM':(FamilyPermutations (2 * n.succ)).groupM:(FamilyPermutations (2 * n.succ)).groupLineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M) (((FamilyPermutations (2 * n.succ)).linSolRep M') S)) n:S:(PureU1 (2 * n.succ)).LinSolshS:LineInCubicPerm SM':(FamilyPermutations (2 * n.succ)).groupM:(FamilyPermutations (2 * n.succ)).grouph:LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep (M * M')) S)LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M) (((FamilyPermutations (2 * n.succ)).linSolRep M') S)) erw [n:S:(PureU1 (2 * n.succ)).LinSolshS:LineInCubicPerm SM':(FamilyPermutations (2 * n.succ)).groupM:(FamilyPermutations (2 * n.succ)).grouph:LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M * (FamilyPermutations (2 * n.succ)).linSolRep M') S)LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M) (((FamilyPermutations (2 * n.succ)).linSolRep M') S))n:S:(PureU1 (2 * n.succ)).LinSolshS:LineInCubicPerm SM':(FamilyPermutations (2 * n.succ)).groupM:(FamilyPermutations (2 * n.succ)).grouph:LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M * (FamilyPermutations (2 * n.succ)).linSolRep M') S)LineInCubic (((FamilyPermutations (2 * n.succ)).linSolRep M) (((FamilyPermutations (2 * n.succ)).linSolRep M') S)) at h All goals completed! 🐙
n:S:(PureU1 (2 * n.succ)).LinSolsLIC:LineInCubicPerm Sj:Fin ng:Fin n.succ f:Fin n h:S.val = Pa g fg':Fin n.succ f':Fin n hall:(((FamilyPermutations (2 * n.succ)).linSolRep (Equiv.swap (evenShiftFst j) (evenShiftSnd j))) S).val = P g' + P! f' P! f' = P! f + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges j g' = gh1:((accCubeTriLinSymm (P g)) (P g)) (P! f) = 0h2:0 + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) * ((accCubeTriLinSymm (P g)) (P g)) (basis!AsCharges j) = 0(S.val (evenShiftSnd j) - S.val (evenShiftFst j)) * ((accCubeTriLinSymm (P g)) (P g)) (basis!AsCharges j) = 0 All goals completed! 🐙n:S:(PureU1 (2 * n.succ.succ)).LinSolsf:Fin n.succ.succ g:Fin n.succ hS:S.val = Pa f gf (Fin.last n.succ) ^ 2 - f (Fin.last n).castSucc ^ 2 = -(-f (Fin.last n).castSucc - g (Fin.last n) + (f (Fin.last n.succ) + g (Fin.last n))) * (2 * -f (Fin.last (n + 1)) + (-f (Fin.last n).castSucc - g (Fin.last n)) + (f (Fin.last n.succ) + g (Fin.last n))) All goals completed! 🐙n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:(S.val (evenShiftSnd (Fin.last n)) - S.val (evenShiftFst (Fin.last n))) * (-(S.val (evenShiftSnd (Fin.last n)) + S.val (evenShiftFst (Fin.last n))) * (2 * S.val evenShiftLast + S.val (evenShiftSnd (Fin.last n)) + S.val (evenShiftFst (Fin.last n)))) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:S.val (evenShiftSnd (Fin.last n)) - S.val (evenShiftFst (Fin.last n)) = 0 -S.val (evenShiftFst (Fin.last n)) + -S.val (evenShiftSnd (Fin.last n)) = 0 2 * S.val evenShiftLast + S.val (evenShiftSnd (Fin.last n)) + S.val (evenShiftFst (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:S.val (evenShiftSnd (Fin.last n)) - S.val (evenShiftFst (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast)n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:-S.val (evenShiftFst (Fin.last n)) + -S.val (evenShiftSnd (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast)n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:2 * S.val evenShiftLast + S.val (evenShiftSnd (Fin.last n)) + S.val (evenShiftFst (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:S.val (evenShiftSnd (Fin.last n)) - S.val (evenShiftFst (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) exact Or.inl (n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:S.val (evenShiftSnd (Fin.last n)) - S.val (evenShiftFst (Fin.last n)) = 0(S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast).1 = (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast).2.1 All goals completed! 🐙) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:-S.val (evenShiftFst (Fin.last n)) + -S.val (evenShiftSnd (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) exact Or.inr (Or.inl (n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:-S.val (evenShiftFst (Fin.last n)) + -S.val (evenShiftSnd (Fin.last n)) = 0(S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast).1 = -(S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast).2.1 All goals completed! 🐙)) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1) hfg:S.val = P g + P! fh1:2 * S.val evenShiftLast + S.val (evenShiftSnd (Fin.last n)) + S.val (evenShiftFst (Fin.last n)) = 0LineInPlaneProp (S.val (evenShiftSnd (Fin.last n)), S.val (evenShiftFst (Fin.last n)), S.val evenShiftLast) All goals completed! 🐙lemma lineInCubicPerm_last_perm {S : (PureU1 (2 * n.succ.succ)).LinSols} (LIC : LineInCubicPerm S) : LineInPlaneCond S := n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SLineInPlaneCond S n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftSnd (Fin.last n) evenShiftFst (Fin.last n)n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftSnd (Fin.last n) evenShiftLastn:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftFst (Fin.last n) evenShiftLastn:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm S (f : (FamilyPermutations (2 * n.succ.succ)).group), LineInPlaneProp ((((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val (evenShiftSnd (Fin.last n)), (((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val (evenShiftFst (Fin.last n)), (((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val evenShiftLast) n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftSnd (Fin.last n) evenShiftFst (Fin.last n) All goals completed! 🐙 n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftSnd (Fin.last n) evenShiftLast All goals completed! 🐙 n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm SevenShiftFst (Fin.last n) evenShiftLast n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm S¬n = n + 1 + (n + 1) All goals completed! 🐙 n:S:(PureU1 (2 * n.succ.succ)).LinSolsLIC:LineInCubicPerm S (f : (FamilyPermutations (2 * n.succ.succ)).group), LineInPlaneProp ((((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val (evenShiftSnd (Fin.last n)), (((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val (evenShiftFst (Fin.last n)), (((FamilyPermutations (2 * n.succ.succ)).linSolRep f) S).val evenShiftLast) All goals completed! 🐙lemma lineInCubicPerm_constAbs {S : (PureU1 (2 * n.succ.succ)).Sols} (LIC : LineInCubicPerm S.1.1) : ConstAbs S.val := linesInPlane_constAbs_AF S (lineInCubicPerm_last_perm LIC)theorem lineInCubicPerm_vectorLike {S : (PureU1 (2 * n.succ.succ)).Sols} (LIC : LineInCubicPerm S.1.1) : VectorLikeEven S.val := ConstAbs.boundary_value_even S.1.1 (lineInCubicPerm_constAbs LIC)theorem lineInCubicPerm_in_plane (S : (PureU1 (2 * n.succ.succ)).Sols) (LIC : LineInCubicPerm S.1.1) : (M : (FamilyPermutations (2 * n.succ.succ)).group), (FamilyPermutations (2 * n.succ.succ)).linSolRep M S.1.1 Submodule.span (Set.range basis) := vectorLikeEven_in_span S.1.1 (lineInCubicPerm_vectorLike LIC)