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

Line In Cubic Odd 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 the charge must be zero.

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 + 1)).LinSols) : Prop := (g f : Fin n ) (_ : S.val = Pa g f) (a b : ), accCube (2 * n + 1) (a P g + b P! f) = 0

The condition that a linear solution sits on a line between the two planes within the cubic expands into a on accCubeTriLinSymm applied to the points within the planes.

set_option backward.isDefEq.respectTransparency false inlemma lineInCubic_expand {S : (PureU1 (2 * n + 1)).LinSols} (h : LineInCubic S) : (g : Fin n ) (f : Fin n ) (_ : S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic S (g f : Fin n ), S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! fa:b:h1:(accCube (2 * n + 1)) (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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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 + 1)).LinSolsh:LineInCubic Sg:Fin n f:Fin n hS:S.val = P g + P! 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! 🐙
lemma line_in_cubic_P_P_P! {S : (PureU1 (2 * n + 1)).LinSols} (h : LineInCubic S) : (g : Fin n ) (f : Fin n ) (_ : S.val = P g + P! f), accCubeTriLinSymm (P g) (P g) (P! f) = 0 := n:S:(PureU1 (2 * n + 1)).LinSolsh:LineInCubic S (g f : Fin n ), S.val = P g + P! f ((accCubeTriLinSymm (P g)) (P g)) (P! f) = 0 n:S:(PureU1 (2 * n + 1)).LinSolsh:LineInCubic Sg:Fin n 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 + 1)).LinSols) : Prop := (M : (FamilyPermutations (2 * n + 1)).group), LineInCubic ((FamilyPermutations (2 * n + 1)).linSolRep M S)

If lineInCubicPerm S, then lineInCubic S.

lemma lineInCubicPerm_self {S : (PureU1 (2 * n + 1)).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 + 1)).LinSols} (hS : LineInCubicPerm S) (M' : (FamilyPermutations (2 * n + 1)).group) : LineInCubicPerm ((FamilyPermutations (2 * n + 1)).linSolRep M' S) := fun M => hS (M * M')
n:S:(PureU1 (2 * n.succ + 1)).LinSolsLIC:LineInCubicPerm Sj:Fin n.succg:Fin n.succ f:Fin n.succ h:S.val = Pa g fg':Fin n.succ f':Fin n.succ hall:(((FamilyPermutations (2 * n.succ + 1)).linSolRep (Equiv.swap (oddShiftFst j) (oddShiftSnd j))) S).val = P g' + P! f' P! f' = P! f + (S.val (oddShiftSnd j) - S.val (oddShiftFst j)) basis!AsCharges j g' = gh1:((accCubeTriLinSymm (P g)) (P g)) (P! f) = 0h2:0 + (S.val (oddShiftSnd j) - S.val (oddShiftFst j)) * ((accCubeTriLinSymm (P g)) (P g)) (basis!AsCharges j) = 0(S.val (oddShiftSnd j) - S.val (oddShiftFst j)) * ((accCubeTriLinSymm (P g)) (P g)) (basis!AsCharges j) = 0 All goals completed! 🐙n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsf:Fin n.succ.succ g:Fin n.succ.succ hS:S.val = Pa f gh1:S.val oddShiftShiftZero = f 0h4:S.val (oddShiftShiftSnd 0) = -f 0 - g 0h2:S.val (oddShiftShiftFst 0) = f 1 + g 0h5:f 1 = S.val (oddShiftShiftFst 0) + S.val oddShiftShiftZero + S.val (oddShiftShiftSnd 0)(S.val (oddShiftFst 0) + S.val oddShiftZero + S.val (oddShiftSnd 0)) ^ 2 - S.val oddShiftZero ^ 2 = (S.val (oddShiftFst 0) + S.val (oddShiftSnd 0)) * (2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0)) All goals completed! 🐙n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:(S.val (oddShiftSnd 0) - S.val (oddShiftFst 0)) * ((S.val (oddShiftFst 0) + S.val (oddShiftSnd 0)) * (2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0))) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftSnd 0) - S.val (oddShiftFst 0) = 0 S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0 2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftSnd 0) - S.val (oddShiftFst 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero)n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero)n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftSnd 0) - S.val (oddShiftFst 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) exact Or.inl (n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftSnd 0) - S.val (oddShiftFst 0) = 0(S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).1 = (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).2.1 All goals completed! 🐙) n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) exact Or.inr (Or.inl (n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0(S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).1 = -(S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).2.1 All goals completed! 🐙)) n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 0LineInPlaneProp (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero) exact Or.inr (Or.inr (n:S:(PureU1 (2 * n.succ.succ + 1)).LinSolsLIC:LineInCubicPerm Sg:Fin (n + 1).succ f:Fin (n + 1).succ hfg:S.val = P g + P! fh1:2 * S.val oddShiftZero + S.val (oddShiftFst 0) + S.val (oddShiftSnd 0) = 02 * (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).2.2 + (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).1 + (S.val (oddShiftSnd 0), S.val (oddShiftFst 0), S.val oddShiftZero).2.1 = 0 All goals completed! 🐙))lemma lineInCubicPerm_last_perm {S : (PureU1 (2 * n.succ.succ + 1)).LinSols} (LIC : LineInCubicPerm S) : LineInPlaneCond S := @Prop_three (2 * n.succ.succ + 1) LineInPlaneProp S (oddShiftSnd 0) (oddShiftFst 0) oddShiftZero (ne_of_beq_false rfl) (ne_of_beq_false rfl) (ne_of_beq_false rfl) (fun M => lineInCubicPerm_last_cond (lineInCubicPerm_permute LIC M))lemma lineInCubicPerm_constAbs {S : (PureU1 (2 * n.succ.succ + 1)).LinSols} (LIC : LineInCubicPerm S) : ConstAbs S.val := linesInPlane_constAbs (lineInCubicPerm_last_perm LIC)theorem lineInCubicPerm_zero {S : (PureU1 (2 * n.succ.succ + 1)).LinSols} (LIC : LineInCubicPerm S) : S = 0 := ConstAbs.boundary_value_odd S (lineInCubicPerm_constAbs LIC)