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

Splitting the linear solutions in the even case into two ACC-satisfying planes

i. Overview

We split the linear solutions of PureU1 (2 * n.succ) into two planes, where every point in either plane satisfies both the linear and cubic anomaly cancellation conditions.

ii. Key results

    P' : The inclusion of the first plane into linear solutions

    P_accCube : The statement that chares from the first plane satisfy the cubic ACC

    P!' : The inclusion of the second plane.

    P!_accCube : The statement that charges from the second plane satisfy the cubic ACC

    span_basis : Every linear solution is the sum of a point from each plane.

iii. Table of contents

    A. Splitting the charges up into groups

      A.1. The even split: Spltting the charges up via n.succ + n.succ

      A.2. The shifted even split: Spltting the charges up via 1 + (n + n + 1)

      A.3. Lemmas relating the two splittings

    B. The first plane

      B.1. The basis vectors of the first plane as charges

      B.2. Components of the basis vectors

      B.3. The basis vectors satisfy the linear ACCs

      B.4. The basis vectors satisfy the cubic ACC

      B.5. The basis vectors as linear solutions

      B.6. The inclusion of the first plane into charges

      B.7. Components of the inclusion into charges

      B.8. The inclusion into charges satisfies the linear and cubic ACCs

      B.9. Kernel of the inclusion into charges

      B.10. The inclusion of the plane into linear solutions

      B.11. The basis vectors are linearly independent

      B.12. Every vector-like even solution is in the span of the basis of the first plane

    C. The vectors of the basis spanning the second plane, via the shifted even split

      C.2. Components of the vectors

      C.3. The vectors satisfy the linear ACCs

      C.4. The vectors satisfy the cubic ACC

      C.6. The vectors as linear solutions

      C.7. The inclusion of the second plane into charges

      C.8. Components of the inclusion into charges

      C.9. The inclusion into charges satisfies the cubic ACC

      C.10. Kernel of the inclusion into charges

      C.11. The inclusion of the second plane into the span of the basis

      C.12. The inclusion of the plane into linear solutions

      C.13. The basis vectors are linearly independent

      C.14. Properties of the basis vectors relating to the span

      C.15. Permutations as additions of basis vectors

    D. Mixed cubic ACCs involving points from both planes

    E. The combined basis

      E.1. As a map into linear solutions

      E.2. Inclusion of the span of the basis into charges

      E.3. Components of the inclusion into charges

      E.4. Kernel of the inclusion into charges

      E.5. The inclusion of the span of the basis into linear solutions

      E.6. The combined basis vectors are linearly independent

      E.7. Injectivity of the inclusion into linear solutions

      E.8. Cardinality of the basis

      E.9. The basis vectors as a basis

    F. Every Lienar solution is the sum of a point from each plane

      F.1. Relation under permutations

iv. References

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

@[expose] public section

A. Splitting the charges up into groups

We have 2 * n.succ charges, which we split up in the following ways:

| evenFst j (0 to n) | evenSnd j (n.succ to n + n.succ)|

| evenShiftZero (0) | evenShiftFst j (1 to n) |
  evenShiftSnd j (n.succ to 2 * n) | evenShiftLast (2 * n.succ - 1) |

A.1. The even split: Spltting the charges up via n.succ + n.succ

The inclusion of Fin n.succ into Fin (n.succ + n.succ) via the first n.succ, casted into Fin (2 * n.succ).

def evenFst (j : Fin n.succ) : Fin (2 * n.succ) := Fin.cast (split_equal n.succ) (Fin.castAdd n.succ j)

The inclusion of Fin n.succ into Fin (n.succ + n.succ) via the second n.succ, casted into Fin (2 * n.succ).

def evenSnd (j : Fin n.succ) : Fin (2 * n.succ) := Fin.cast (split_equal n.succ) (Fin.natAdd n.succ j)
n:S:Fin (2 * n.succ) T:Fin (2 * n.succ) h1: (i : Fin n.succ), S (evenFst i) = T (evenFst i)h2: (i : Fin n.succ), S (evenSnd i) = T (evenSnd i)i:Fin (2 * n.succ)hi:¬i < n.succh3:evenSnd i - n.succ, = iS i = T i All goals completed! 🐙n:S:Fin (2 * n.succ) i, S ((Fin.castOrderIso ).toEquiv (Fin.castAdd n.succ i)) + i, S ((Fin.castOrderIso ).toEquiv (Fin.natAdd n.succ i)) = x, (S evenFst) x + x, (S evenSnd) x All goals completed! 🐙

A.2. The shifted even split: Spltting the charges up via 1 + (n + n + 1)

lemma n_cond₂ (n : ) : 1 + ((n + n) + 1) = 2 * n.succ := n:1 + (n + n + 1) = 2 * n.succ All goals completed! 🐙

The inclusion of Fin n into Fin (1 + (n + n + 1)) via the first n, casted into Fin (2 * n.succ).

def evenShiftFst (j : Fin n) : Fin (2 * n.succ) := Fin.cast (n_cond₂ n) (Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n j)))

The inclusion of Fin n into Fin (1 + (n + n + 1)) via the second n, casted into Fin (2 * n.succ).

def evenShiftSnd (j : Fin n) : Fin (2 * n.succ) := Fin.cast (n_cond₂ n) (Fin.natAdd 1 (Fin.castAdd 1 (Fin.natAdd n j)))

The element of Fin (1 + (n + n + 1)) corresponding to the first 1, casted into Fin (2 * n.succ).

def evenShiftZero : Fin (2 * n.succ) := (Fin.cast (n_cond₂ n) (Fin.castAdd ((n + n) + 1) 0))

The element of Fin (1 + (n + n + 1)) corresponding to the second 1, casted into Fin (2 * n.succ).

def evenShiftLast : Fin (2 * n.succ) := (Fin.cast (n_cond₂ n) (Fin.natAdd 1 (Fin.natAdd (n + n) 0)))
n:S:Fin (2 * n.succ) h1: i, S i = i, S (Fin.cast i) i, S (Fin.cast (Fin.castAdd (n + n + 1) i)) + ( i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n i)))) + i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.natAdd n i)))) + i, S (Fin.cast (Fin.natAdd 1 (Fin.natAdd (n + n) i)))) = S evenShiftZero + S evenShiftLast + ( x, (S evenShiftFst) x + x, (S evenShiftSnd) x) n:S:Fin (2 * n.succ) h1: i, S i = i, S (Fin.cast i)S (Fin.cast (Fin.castAdd (n + n + 1) 0)) + ( i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n i)))) + i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.natAdd n i)))) + S (Fin.cast (Fin.natAdd 1 (Fin.natAdd (n + n) 0)))) = S (Fin.cast (Fin.castAdd (n + n + 1) 0)) + S (Fin.cast (Fin.natAdd 1 (Fin.natAdd (n + n) 0))) + ( i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n i)))) + i, S (Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.natAdd n i))))) All goals completed! 🐙

A.3. Lemmas relating the two splittings

lemma evenShiftZero_eq_evenFst_zero : @evenShiftZero n = evenFst 0 := rfln:evenShiftLast = (evenSnd (Fin.last n)) n:1 + (n + n) = n + 1 + n All goals completed! 🐙n:j:Fin n(Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n j)))) = (Fin.cast (Fin.castAdd n.succ j.succ)) n:j:Fin n1 + j = j + 1 All goals completed! 🐙n:j:Fin n(Fin.cast (Fin.natAdd 1 (Fin.castAdd 1 (Fin.natAdd n j)))) = (Fin.cast (Fin.natAdd n.succ j.castSucc)) n:j:Fin n1 + (n + j) = n.succ + j All goals completed! 🐙

B. The first plane

B.1. The basis vectors of the first plane as charges

The first part of the basis as charges.

def basisAsCharges (j : Fin n.succ) : (PureU1 (2 * n.succ)).Charges := fun i => if i = evenFst j then 1 else if i = evenSnd j then - 1 else 0

B.2. Components of the basis vectors

lemma basis_on_evenFst_self (j : Fin n.succ) : basisAsCharges j (evenFst j) = 1 := n:j:Fin n.succbasisAsCharges j (evenFst j) = 1 All goals completed! 🐙n:k:Fin n.succj:Fin n.succh:¬k = jh1:¬k.addNat (n + 1) = Fin.castAdd (n + 1) kh2:(Fin.castAdd (n + 1) j) = (k.addNat (n + 1))False n:k:Fin n.succj:Fin n.succh:¬k = jh1:¬k.addNat (n + 1) = Fin.castAdd (n + 1) kh2:j = k + (n + 1)False All goals completed! 🐙 n:k:Fin n.succj:Fin n.succh:k jh✝¹:¬Fin.cast (Fin.castAdd (n + 1) j) = Fin.cast (Fin.castAdd (n + 1) k)h✝:¬Fin.cast (Fin.castAdd (n + 1) j) = Fin.cast (Fin.natAdd (n + 1) k)0 = 0 All goals completed! 🐙set_option backward.isDefEq.respectTransparency false in lemma basis_on_other {k : Fin n.succ} {j : Fin (2 * n.succ)} (h1 : j evenFst k) (h2 : j evenSnd k) : basisAsCharges k j = 0 := n:k:Fin n.succj:Fin (2 * n.succ)h1:j evenFst kh2:j evenSnd kbasisAsCharges k j = 0 All goals completed! 🐙n:j:Fin n.succi:Fin n.succh✝:¬i.addNat (n + 1) = Fin.castAdd (n + 1) jh3:¬i = jh2:i = j + (n + 1)False n:j:Fin n.succi:Fin n.succh✝:¬i.addNat (n + 1) = Fin.castAdd (n + 1) jh2:i = j + (n + 1)False all_goals All goals completed! 🐙All goals completed! 🐙n:k:Fin n.succj:Fin n.succh:k j-0 = 0 All goals completed! 🐙

B.3. The basis vectors satisfy the linear ACCs

lemma basis_linearACC (j : Fin n.succ) : (accGrav (2 * n.succ)) (basisAsCharges j) = 0 := n:j:Fin n.succ(accGrav (2 * n.succ)) (basisAsCharges j) = 0 All goals completed! 🐙

B.4. The basis vectors satisfy the cubic ACC

n:j:Fin n.succ i, (((fun i => basisAsCharges j i ^ 3) evenFst) i + ((fun i => basisAsCharges j i ^ 3) evenSnd) i) = 0 n:j:Fin n.succi:Fin n.succx✝:i univ((fun i => basisAsCharges j i ^ 3) evenFst) i + ((fun i => basisAsCharges j i ^ 3) evenSnd) i = 0 n:j:Fin n.succi:Fin n.succx✝:i univbasisAsCharges j (evenFst i) ^ 3 + (-basisAsCharges j (evenFst i)) ^ 3 = 0 All goals completed! 🐙

B.5. The basis vectors as linear solutions

The first part of the basis as LinSols.

@[simps!] def basis (j : Fin n.succ) : (PureU1 (2 * n.succ)).LinSols := basisAsCharges j, n:j:Fin n.succ (i : Fin (PureU1 (2 * n.succ)).numberLinear), ((PureU1 (2 * n.succ)).linearACCs i) (basisAsCharges j) = 0 n:j:Fin n.succi:Fin (PureU1 (2 * n.succ)).numberLinear((PureU1 (2 * n.succ)).linearACCs i) (basisAsCharges j) = 0 match i with n:j:Fin n.succi:Fin (PureU1 (2 * n.succ)).numberLinearisLt✝:0 < (PureU1 (2 * n.succ)).numberLinear((PureU1 (2 * n.succ)).linearACCs 0, isLt✝) (basisAsCharges j) = 0 All goals completed! 🐙

B.6. The inclusion of the first plane into charges

A point in the span of the first part of the basis as a charge.

def P (f : Fin n.succ ) : (PureU1 (2 * n.succ)).Charges := i, f i basisAsCharges i

B.7. Components of the inclusion into charges

n:f:Fin n.succ j:Fin n.succf j * basisAsCharges j (evenFst j) = f jn:f:Fin n.succ j:Fin n.succ (x : Fin n.succ), x j f x * basisAsCharges x (evenFst j) = 0 n:f:Fin n.succ j:Fin n.succf j * basisAsCharges j (evenFst j) = f j All goals completed! 🐙 n:f:Fin n.succ j:Fin n.succ (x : Fin n.succ), x j f x * basisAsCharges x (evenFst j) = 0 All goals completed! 🐙n:f:Fin n.succ j:Fin n.succf j * basisAsCharges j (evenSnd j) = -f jn:f:Fin n.succ j:Fin n.succ (x : Fin n.succ), x j f x * basisAsCharges x (evenSnd j) = 0 n:f:Fin n.succ j:Fin n.succf j * basisAsCharges j (evenSnd j) = -f j All goals completed! 🐙 n:f:Fin n.succ j:Fin n.succ (x : Fin n.succ), x j f x * basisAsCharges x (evenSnd j) = 0 All goals completed! 🐙lemma P_evenSnd_evenFst (f : Fin n.succ ) : P f evenSnd = - P f evenFst := n:f:Fin n.succ P f evenSnd = -P f evenFst n:f:Fin n.succ j:Fin n.succ(P f evenSnd) j = (-P f evenFst) j All goals completed! 🐙

B.8. The inclusion into charges satisfies the linear and cubic ACCs

lemma P_linearACC (f : Fin n.succ ) : (accGrav (2 * n.succ)) (P f) = 0 := n:f:Fin n.succ (accGrav (2 * n.succ)) (P f) = 0 All goals completed! 🐙n:f:Fin n.succ i, (((fun i => P f i ^ 3) evenFst) i + ((fun i => P f i ^ 3) evenSnd) i) = 0 n:f:Fin n.succ i:Fin n.succx✝:i univ((fun i => P f i ^ 3) evenFst) i + ((fun i => P f i ^ 3) evenSnd) i = 0 n:f:Fin n.succ i:Fin n.succx✝:i univf i ^ 3 + (-f i) ^ 3 = 0 All goals completed! 🐙

B.9. Kernel of the inclusion into charges

lemma P_zero (f : Fin n.succ ) (h : P f = 0) : i, f i = 0 := n:f:Fin n.succ h:P f = 0 (i : Fin n.succ), f i = 0 All goals completed! 🐙

B.10. The inclusion of the plane into linear solutions

A point in the span of the first part of the basis.

def P' (f : Fin n.succ ) : (PureU1 (2 * n.succ)).LinSols := i, f i basis i
n:f:Fin n.succ i:Fin (PureU1 (2 * (n + 1))).numberCharges i_1, (f i_1 basis i_1).val i = i_1, (f i_1 basisAsCharges i_1) i All goals completed! 🐙

B.11. The basis vectors are linearly independent

theorem basis_linear_independent : LinearIndependent (@basis n) := n:LinearIndependent basis n: (g : Fin n.succ ), i, g i basis i = 0 (i : Fin n.succ), g i = 0 n:f:Fin n.succ h: i, f i basis i = 0 (i : Fin n.succ), f i = 0 n:f:Fin n.succ h:P' f = 0 (i : Fin n.succ), f i = 0 All goals completed! 🐙

B.12. Every vector-like even solution is in the span of the basis of the first plane

n:S:(PureU1 (2 * n.succ)).LinSolshS:VectorLikeEven S.valf:Fin n.succ := fun i => (sortAFL S).val (evenFst i)i:Fin n.succht:sort S.val (evenFst i) = -sort S.val (evenSnd i)h:sort S.val (evenSnd i) = -sort S.val (evenFst i)-f i = -sort S.val (evenFst i) All goals completed! 🐙

C. The vectors of the basis spanning the second plane, via the shifted even split

The second part of the basis as charges.

def basis!AsCharges (j : Fin n) : (PureU1 (2 * n.succ)).Charges := fun i => if i = evenShiftFst j then 1 else if i = evenShiftSnd j then - 1 else 0

C.2. Components of the vectors

lemma basis!_on_evenShiftFst_self (j : Fin n) : basis!AsCharges j (evenShiftFst j) = 1 := n:j:Fin nbasis!AsCharges j (evenShiftFst j) = 1 All goals completed! 🐙set_option backward.isDefEq.respectTransparency false in lemma basis!_on_other {k : Fin n} {j : Fin (2 * n.succ)} (h1 : j evenShiftFst k) (h2 : j evenShiftSnd k) : basis!AsCharges k j = 0 := n:k:Fin nj:Fin (2 * n.succ)h1:j evenShiftFst kh2:j evenShiftSnd kbasis!AsCharges k j = 0 All goals completed! 🐙n:k:Fin nj:Fin nh:¬k = jbasis!AsCharges k (evenShiftFst j) = 0 n:k:Fin nj:Fin nh:¬k = jevenShiftFst j evenShiftFst kn:k:Fin nj:Fin nh:¬k = jevenShiftFst j evenShiftSnd k n:k:Fin nj:Fin nh:¬k = jevenShiftFst j evenShiftFst kn:k:Fin nj:Fin nh:¬k = jevenShiftFst j evenShiftSnd k n:k:Fin nj:Fin nh:¬k = j¬1 + j = 1 + (n + k) n:k:Fin nj:Fin nh:¬k = j¬1 + j = 1 + kn:k:Fin nj:Fin nh:¬k = j¬1 + j = 1 + (n + k) All goals completed! 🐙n:j:Fin ni:Fin nh✝:¬Fin.natAdd 1 (Fin.castAdd 1 (i.addNat n)) = Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n j))h3:¬(Fin.natAdd 1 (Fin.castAdd 1 (i.addNat n))) = (Fin.natAdd 1 (Fin.castAdd 1 (j.addNat n)))h1:¬n = 0h2:i = j + n0 = - -1 n:j:Fin ni:Fin nh✝:¬Fin.natAdd 1 (Fin.castAdd 1 (i.addNat n)) = Fin.natAdd 1 (Fin.castAdd 1 (Fin.castAdd n j))h3:¬1 + (j + n + n) = 1 + (j + n)h1:¬n = 0h2:i = j + n0 = - -1 all_goals All goals completed! 🐙All goals completed! 🐙n:k:Fin nj:Fin nh:k j-0 = 0 All goals completed! 🐙set_option backward.isDefEq.respectTransparency false in lemma basis!_on_evenShiftZero (j : Fin n) : basis!AsCharges j evenShiftZero = 0 := n:j:Fin nbasis!AsCharges j evenShiftZero = 0 n:j:Fin nevenShiftZero evenShiftFst jn:j:Fin nevenShiftZero evenShiftSnd j n:j:Fin nevenShiftZero evenShiftFst jn:j:Fin nevenShiftZero evenShiftSnd j n:j:Fin n¬0 = 1 + (n + j) n:j:Fin n¬0 = 1 + jn:j:Fin n¬0 = 1 + (n + j) All goals completed! 🐙set_option backward.isDefEq.respectTransparency false in lemma basis!_on_evenShiftLast (j : Fin n) : basis!AsCharges j evenShiftLast = 0 := n:j:Fin nbasis!AsCharges j evenShiftLast = 0 n:j:Fin nevenShiftLast evenShiftFst jn:j:Fin nevenShiftLast evenShiftSnd j n:j:Fin nevenShiftLast evenShiftFst jn:j:Fin nevenShiftLast evenShiftSnd j n:j:Fin n¬1 + (n + n) = 1 + (n + j) n:j:Fin n¬1 + (n + n) = 1 + jn:j:Fin n¬1 + (n + n) = 1 + (n + j) All goals completed! 🐙

C.3. The vectors satisfy the linear ACCs

lemma basis!_linearACC (j : Fin n) : (accGrav (2 * n.succ)) (basis!AsCharges j) = 0 := n:j:Fin n(accGrav (2 * n.succ)) (basis!AsCharges j) = 0 All goals completed! 🐙

C.4. The vectors satisfy the cubic ACC

n:j:Fin n0 ^ 3 + 0 ^ 3 + i, (((fun i => basis!AsCharges j i ^ 3) evenShiftFst) i + ((fun i => basis!AsCharges j i ^ 3) evenShiftSnd) i) = 0 n:j:Fin n x, (basis!AsCharges j (evenShiftFst x) ^ 3 + basis!AsCharges j (evenShiftSnd x) ^ 3) = 0 n:j:Fin ni:Fin nx✝:i univbasis!AsCharges j (evenShiftFst i) ^ 3 + basis!AsCharges j (evenShiftSnd i) ^ 3 = 0 n:j:Fin ni:Fin nx✝:i univbasis!AsCharges j (evenShiftFst i) ^ 3 + (-basis!AsCharges j (evenShiftFst i)) ^ 3 = 0 All goals completed! 🐙

C.6. The vectors as linear solutions

The second part of the basis as LinSols.

@[simps!] def basis! (j : Fin n) : (PureU1 (2 * n.succ)).LinSols := basis!AsCharges j, n:j:Fin n (i : Fin (PureU1 (2 * n.succ)).numberLinear), ((PureU1 (2 * n.succ)).linearACCs i) (basis!AsCharges j) = 0 n:j:Fin ni:Fin (PureU1 (2 * n.succ)).numberLinear((PureU1 (2 * n.succ)).linearACCs i) (basis!AsCharges j) = 0 match i with n:j:Fin ni:Fin (PureU1 (2 * n.succ)).numberLinearisLt✝:0 < (PureU1 (2 * n.succ)).numberLinear((PureU1 (2 * n.succ)).linearACCs 0, isLt✝) (basis!AsCharges j) = 0 All goals completed! 🐙

C.7. The inclusion of the second plane into charges

A point in the span of the second part of the basis as a charge.

def P! (f : Fin n ) : (PureU1 (2 * n.succ)).Charges := i, f i basis!AsCharges i

C.8. Components of the inclusion into charges

n:f:Fin n j:Fin nf j * basis!AsCharges j (evenShiftFst j) = f jn:f:Fin n j:Fin n (x : Fin n), x j f x * basis!AsCharges x (evenShiftFst j) = 0 n:f:Fin n j:Fin nf j * basis!AsCharges j (evenShiftFst j) = f j All goals completed! 🐙 n:f:Fin n j:Fin n (x : Fin n), x j f x * basis!AsCharges x (evenShiftFst j) = 0 All goals completed! 🐙n:f:Fin n j:Fin nf j * basis!AsCharges j (evenShiftSnd j) = -f jn:f:Fin n j:Fin n (x : Fin n), x j f x * basis!AsCharges x (evenShiftSnd j) = 0 n:f:Fin n j:Fin nf j * basis!AsCharges j (evenShiftSnd j) = -f j All goals completed! 🐙 n:f:Fin n j:Fin n (x : Fin n), x j f x * basis!AsCharges x (evenShiftSnd j) = 0 All goals completed! 🐙lemma P!_evenShiftZero (f : Fin n ) : P! f (evenShiftZero) = 0 := n:f:Fin n P! f evenShiftZero = 0 All goals completed! 🐙lemma P!_evenShiftLast (f : Fin n ) : P! f evenShiftLast = 0 := n:f:Fin n P! f evenShiftLast = 0 All goals completed! 🐙

C.9. The inclusion into charges satisfies the cubic ACC

n:f:Fin n 0 ^ 3 + 0 ^ 3 + i, (((fun i => P! f i ^ 3) evenShiftFst) i + ((fun i => P! f i ^ 3) evenShiftSnd) i) = 0 n:f:Fin n x, (P! f (evenShiftFst x) ^ 3 + P! f (evenShiftSnd x) ^ 3) = 0 n:f:Fin n i:Fin nx✝:i univP! f (evenShiftFst i) ^ 3 + P! f (evenShiftSnd i) ^ 3 = 0 n:f:Fin n i:Fin nx✝:i univf i ^ 3 + (-f i) ^ 3 = 0 All goals completed! 🐙

C.10. Kernel of the inclusion into charges

lemma P!_zero (f : Fin n ) (h : P! f = 0) : i, f i = 0 := n:f:Fin n h:P! f = 0 (i : Fin n), f i = 0 All goals completed! 🐙

C.11. The inclusion of the second plane into the span of the basis

lemma P!_in_span (f : Fin n ) : P! f Submodule.span (Set.range basis!AsCharges) := n:f:Fin n P! f Submodule.span (Set.range basis!AsCharges) All goals completed! 🐙

C.12. The inclusion of the plane into linear solutions

A point in the span of the second part of the basis.

def P!' (f : Fin n ) : (PureU1 (2 * n.succ)).LinSols := i, f i basis! i
n:f:Fin n i:Fin (PureU1 (2 * (n + 1))).numberCharges i_1, (f i_1 basis! i_1).val i = i_1, (f i_1 basis!AsCharges i_1) i All goals completed! 🐙

C.13. The basis vectors are linearly independent

theorem basis!_linear_independent : LinearIndependent (@basis! n) := n:LinearIndependent basis! n: (g : Fin n ), i, g i basis! i = 0 (i : Fin n), g i = 0 n:f:Fin n h: i, f i basis! i = 0 (i : Fin n), f i = 0 n:f:Fin n h:P!' f = 0 (i : Fin n), f i = 0 All goals completed! 🐙

C.14. Properties of the basis vectors relating to the span

lemma smul_basis!AsCharges_in_span (S : (PureU1 (2 * n.succ)).LinSols) (j : Fin n) : (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges j Submodule.span (Set.range basis!AsCharges) := n:S:(PureU1 (2 * n.succ)).LinSolsj:Fin n(S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges j Submodule.span (Set.range basis!AsCharges) All goals completed! 🐙

C.15. Permutations as additions of basis vectors

Swapping the elements evenShiftFst j and evenShiftSnd j is equivalent to adding a vector basis!AsCharges j.

n:S:(PureU1 (2 * n.succ)).LinSolsS':(PureU1 (2 * n.succ)).LinSolsj:Fin nhS:((FamilyPermutations (2 * n.succ)).linSolRep (Equiv.swap (evenShiftFst j) (evenShiftSnd j))) S = S'i:Fin (PureU1 (2 * n.succ)).numberChargeshi:¬i = evenShiftFst jhi2:¬i = evenShiftSnd jS.val ((Equiv.symm (Equiv.swap (evenShiftFst j) (evenShiftSnd j))) i) = S.val i + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) * 0 All goals completed! 🐙

D. Mixed cubic ACCs involving points from both planes

n:g:Fin n.succ j:Fin ng j.succ * g j.succ + -(-g j.castSucc * -g j.castSucc) = g j.succ ^ 2 - g j.castSucc ^ 2 All goals completed! 🐙 n:g:Fin n.succ j:Fin n (x : Fin n), x j P g (evenShiftFst x) * P g (evenShiftFst x) * basis!AsCharges j (evenShiftFst x) + P g (evenShiftSnd x) * P g (evenShiftSnd x) * basis!AsCharges j (evenShiftSnd x) = 0 n:g:Fin n.succ j:Fin nk:Fin nhkj:k jP g (evenShiftFst k) * P g (evenShiftFst k) * basis!AsCharges j (evenShiftFst k) + P g (evenShiftSnd k) * P g (evenShiftSnd k) * basis!AsCharges j (evenShiftSnd k) = 0 erw [n:g:Fin n.succ j:Fin nk:Fin nhkj:k jP g (evenShiftFst k) * P g (evenShiftFst k) * 0 + P g (evenShiftSnd k) * P g (evenShiftSnd k) * basis!AsCharges j (evenShiftSnd k) = 0 n:g:Fin n.succ j:Fin nk:Fin nhkj:k jP g (evenShiftFst k) * P g (evenShiftFst k) * 0 + P g (evenShiftSnd k) * P g (evenShiftSnd k) * 0 = 0n:g:Fin n.succ j:Fin nk:Fin nhkj:k jP g (evenShiftFst k) * P g (evenShiftFst k) * 0 + P g (evenShiftSnd k) * P g (evenShiftSnd k) * 0 = 0 All goals completed! 🐙n:g:Fin n j:Fin n.succP! g (evenFst j) * P! g (evenFst j) * 1 + P! g (evenSnd j) * P! g (evenSnd j) * -1 = P! g (evenFst j) ^ 2 - P! g (evenSnd j) ^ 2n:g:Fin n j:Fin n.succ (x : Fin n.succ), x j P! g (evenFst x) * P! g (evenFst x) * basisAsCharges j (evenFst x) + P! g (evenSnd x) * P! g (evenSnd x) * basisAsCharges j (evenSnd x) = 0 n:g:Fin n j:Fin n.succP! g (evenFst j) * P! g (evenFst j) * 1 + P! g (evenSnd j) * P! g (evenSnd j) * -1 = P! g (evenFst j) ^ 2 - P! g (evenSnd j) ^ 2 n:g:Fin n j:Fin n.succP! g (evenFst j) * P! g (evenFst j) + -(P! g (evenSnd j) * P! g (evenSnd j)) = P! g (evenFst j) ^ 2 - P! g (evenSnd j) ^ 2 All goals completed! 🐙 n:g:Fin n j:Fin n.succ (x : Fin n.succ), x j P! g (evenFst x) * P! g (evenFst x) * basisAsCharges j (evenFst x) + P! g (evenSnd x) * P! g (evenSnd x) * basisAsCharges j (evenSnd x) = 0 n:g:Fin n j:Fin n.succk:Fin n.succhkj:k jP! g (evenFst k) * P! g (evenFst k) * basisAsCharges j (evenFst k) + P! g (evenSnd k) * P! g (evenSnd k) * basisAsCharges j (evenSnd k) = 0 erw [n:g:Fin n j:Fin n.succk:Fin n.succhkj:k jP! g (evenFst k) * P! g (evenFst k) * 0 + P! g (evenSnd k) * P! g (evenSnd k) * basisAsCharges j (evenSnd k) = 0 n:g:Fin n j:Fin n.succk:Fin n.succhkj:k jP! g (evenFst k) * P! g (evenFst k) * 0 + P! g (evenSnd k) * P! g (evenSnd k) * 0 = 0n:g:Fin n j:Fin n.succk:Fin n.succhkj:k jP! g (evenFst k) * P! g (evenFst k) * 0 + P! g (evenSnd k) * P! g (evenSnd k) * 0 = 0 All goals completed! 🐙

E. The combined basis

E.1. As a map into linear solutions

The whole basis as LinSols.

def basisa : (Fin n.succ) (Fin n) (PureU1 (2 * n.succ)).LinSols := fun i => match i with | .inl i => basis i | .inr i => basis! i

E.2. Inclusion of the span of the basis into charges

A point in the span of the basis as a charge.

def Pa (f : Fin n.succ ) (g : Fin n ) : (PureU1 (2 * n.succ)).Charges := P f + P! g

E.3. Components of the inclusion into charges

All goals completed! 🐙n:f:Fin n.succ g:Fin n j:Fin n-f j.castSucc + -g j = -f j.castSucc - g j All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙

E.4. Kernel of the inclusion into charges

n:f:Fin n.succ g:Fin n h:Pa f g = 0h₃:0 = f 0i:Fin n.succhinduc: (iv : ) (hiv : iv < n.succ), f iv, hiv = 0f i = 0 All goals completed! 🐙n:f:Fin n.succ g:Fin n h: i, f i basisAsCharges i + P! g = 0hf: (i : Fin n.succ), f i = 0 (i : Fin n), g i = 0 n:f:Fin n.succ g:Fin n hf: (i : Fin n.succ), f i = 0h:P! g = 0 (i : Fin n), g i = 0 All goals completed! 🐙

E.5. The inclusion of the span of the basis into linear solutions

A point in the span of the whole basis.

def Pa' (f : (Fin n.succ) (Fin n) ) : (PureU1 (2 * n.succ)).LinSols := i, f i basisa i
lemma Pa'_P'_P!' (f : (Fin n.succ) (Fin n) ) : Pa' f = P' (f Sum.inl) + P!' (f Sum.inr) := n:f:Fin n.succ Fin n Pa' f = P' (f Sum.inl) + P!' (f Sum.inr) All goals completed! 🐙

E.6. The combined basis vectors are linearly independent

n:f:Fin n.succ Fin n h:Pa' f = 0h1:(P' (f Sum.inl) + P!' (f Sum.inr)).val = 0 (i : Fin n.succ Fin n), f i = 0 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0 (i : Fin n.succ Fin n), f i = 0 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0 (i : Fin n.succ Fin n), f i = 0 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0hg: (i : Fin n), (f Sum.inr) i = 0 (i : Fin n.succ Fin n), f i = 0 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0hg: (i : Fin n), (f Sum.inr) i = 0i:Fin n.succf (Sum.inl i) = 0n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0hg: (i : Fin n), (f Sum.inr) i = 0i:Fin nf (Sum.inr i) = 0 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0hg: (i : Fin n), (f Sum.inr) i = 0i:Fin n.succf (Sum.inl i) = 0 All goals completed! 🐙 n:f:Fin n.succ Fin n h:Pa' f = 0h1:P (f Sum.inl) + P! (f Sum.inr) = 0hf: (i : Fin n.succ), (f Sum.inl) i = 0hg: (i : Fin n), (f Sum.inr) i = 0i:Fin nf (Sum.inr i) = 0 All goals completed! 🐙

E.7. Injectivity of the inclusion into linear solutions

All goals completed! 🐙n:g:Fin n.succ g':Fin n.succ f:Fin n f':Fin n h:Pa g f = Pa g' f'(P' (Sum.elim g f Sum.inl) + P!' (Sum.elim g f Sum.inr)).val = (P' (Sum.elim g' f' Sum.inl) + P!' (Sum.elim g' f' Sum.inr)).val n:g:Fin n.succ g':Fin n.succ f:Fin n f':Fin n h:Pa g f = Pa g' f'P (Sum.elim g f Sum.inl) + P! (Sum.elim g f Sum.inr) = P (Sum.elim g' f' Sum.inl) + P! (Sum.elim g' f' Sum.inr) All goals completed! 🐙n:g:Fin n.succ g':Fin n.succ f:Fin n f':Fin n Pa' (Sum.elim g f) = Pa' (Sum.elim g' f') Sum.elim g f = Sum.elim g' f' All goals completed! 🐙

E.8. Cardinality of the basis

lemma basisa_card : Fintype.card ((Fin n.succ) (Fin n)) = Module.finrank (PureU1 (2 * n.succ)).LinSols := n:Fintype.card (Fin n.succ Fin n) = finrank (PureU1 (2 * n.succ)).LinSols erw [n:Fintype.card (Fin n.succ Fin n) = Nat.mul 2 n + 1n:Fintype.card (Fin n.succ Fin n) = Nat.mul 2 n + 1 n:n.succ + n = 2 * n + 1 All goals completed! 🐙

E.9. The basis vectors as a basis

F. Every Lienar solution is the sum of a point from each plane

n:S:(PureU1 (2 * n.succ)).LinSolsf:Fin n.succ Fin n hf:((P' fun i => f (Sum.inl i)) + P!' fun i => f (Sum.inr i)) = S((P' fun i => f (Sum.inl i)) + P!' fun i => f (Sum.inr i)).val = P (f Sum.inl) + P! (f Sum.inr) n:S:(PureU1 (2 * n.succ)).LinSolsf:Fin n.succ Fin n hf:((P' fun i => f (Sum.inl i)) + P!' fun i => f (Sum.inr i)) = S((P fun i => f (Sum.inl i)) + P! fun i => f (Sum.inr i)) = P (f Sum.inl) + P! (f Sum.inr) All goals completed! 🐙

F.1. Relation under permutations

n:S':(PureU1 (2 * n.succ)).LinSolsS:(PureU1 (2 * n.succ)).LinSolsj:Fin nhS:((FamilyPermutations (2 * n.succ)).linSolRep (Equiv.swap (evenShiftFst j) (evenShiftSnd j))) S = S'g:Fin n.succ f:Fin n h:S.val = P g + P! fX:(PureU1 (2 * n.succ)).Charges := P! f + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges jhX:X Submodule.span (Set.range basis!AsCharges)f':Fin n hf':P! f' = XS'.val = S.val + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges j n:S':(PureU1 (2 * n.succ)).LinSolsS:(PureU1 (2 * n.succ)).LinSolsj:Fin ng:Fin n.succ f:Fin n h:S.val = P g + P! fX:(PureU1 (2 * n.succ)).Charges := P! f + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges jhX:X Submodule.span (Set.range basis!AsCharges)f':Fin n hf':P! f' = XhS:S'.val = S.val + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges jS'.val = S.val + (S.val (evenShiftSnd j) - S.val (evenShiftFst j)) basis!AsCharges j All goals completed! 🐙