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.AnomalyCancellation.Basic public import Mathlib.Tactic.LinearCombination

Anomaly cancellation of a theory with a pure U(1)-gauge group

In a pure U(1) gauge theory with n Weyl fermions carrying charges xᵢ the anomaly cancellation conditions (ACCs) which must be satisfied for a consistent gauge theory correspond to:

    The linear ACC: ∑ xᵢ = 0

    The cubic ACC: ∑ xᵢ³ = 0

The charges xᵢ have rational fractions with one another, here they are specified as rational numbers.

@[expose] public sectionTODO "The implementation of pure U(1) anomaly cancellation conditions is done currently through the type `ACCSystemCharges`. This whole directory could be simplified by refactoring to remove `ACCSystemCharges` defining `PureU1Charges` as `Fin n → ℚ` directly, or this space quotiented by permutations and overall factors."

The vector space of charges.

@[simps!] def PureU1Charges (n : ) : ACCSystemCharges := n

The symmetric trilinear form used to define the cubic anomaly.

n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).ChargesR:(PureU1Charges n).Charges x, (S x + L x) * T x * R x = x, (S x * T x * R x + L x * T x * R x) n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).ChargesR:(PureU1Charges n).Charges (a : Fin (PureU1Charges n).numberCharges), (S a + L a) * T a * R a = S a * T a * R a + L a * T a * R a n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).ChargesR:(PureU1Charges n).Chargesi:Fin (PureU1Charges n).numberCharges(S i + L i) * T i * R i = S i * T i * R i + L i * T i * R i All goals completed! 🐙) (n: (S T L : (PureU1Charges n).Charges), i, (S, T, L).1 i * (S, T, L).2.1 i * (S, T, L).2.2 i = i, (T, S, L).1 i * (T, S, L).2.1 i * (T, S, L).2.2 i n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Charges i, (S, L, T).1 i * (S, L, T).2.1 i * (S, L, T).2.2 i = i, (L, S, T).1 i * (L, S, T).2.1 i * (L, S, T).2.2 i n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Charges (a : Fin (PureU1Charges n).numberCharges), (S, L, T).1 a * (S, L, T).2.1 a * (S, L, T).2.2 a = (L, S, T).1 a * (L, S, T).2.1 a * (L, S, T).2.2 a n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Chargesi:Fin (PureU1Charges n).numberCharges(S, L, T).1 i * (S, L, T).2.1 i * (S, L, T).2.2 i = (L, S, T).1 i * (L, S, T).2.1 i * (L, S, T).2.2 i All goals completed! 🐙) (n: (S T L : (PureU1Charges n).Charges), i, (S, T, L).1 i * (S, T, L).2.1 i * (S, T, L).2.2 i = i, (S, L, T).1 i * (S, L, T).2.1 i * (S, L, T).2.2 i n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Charges i, (S, L, T).1 i * (S, L, T).2.1 i * (S, L, T).2.2 i = i, (S, T, L).1 i * (S, T, L).2.1 i * (S, T, L).2.2 i n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Charges (a : Fin (PureU1Charges n).numberCharges), (S, L, T).1 a * (S, L, T).2.1 a * (S, L, T).2.2 a = (S, T, L).1 a * (S, T, L).2.1 a * (S, T, L).2.2 a n:S:(PureU1Charges n).ChargesL:(PureU1Charges n).ChargesT:(PureU1Charges n).Chargesi:Fin (PureU1Charges n).numberCharges(S, L, T).1 i * (S, L, T).2.1 i * (S, L, T).2.2 i = (S, T, L).1 i * (S, T, L).2.1 i * (S, T, L).2.2 i All goals completed! 🐙)

The cubic anomaly equation.

@[simp] def accCube (n : ) : HomogeneousCubic ((PureU1Charges n).Charges) := (accCubeTriLinSymm).toCubic

The cubic ACC for the pure-U(1) anomaly equations is equal to the sum of the cubed charges.

n:S:(PureU1Charges n).Charges(((TriLinearSymm.mk₃ (fun S => i, S.1 i * S.2.1 i * S.2.2 i) ) S) S) S = i, S i ^ 3 n:S:(PureU1Charges n).Charges x, S x * S x * S x = i, S i ^ 3 All goals completed! 🐙

The ACC system for a pure $U(1)$ gauge theory with $n$ fermions.

@[simps!] def PureU1 (n : ) : ACCSystem where numberCharges := n numberLinear := 1 linearACCs := fun i => match i with | 0 => PureU1.accGrav n numberQuadratic := 0 quadraticACCs := Fin.elim0 cubicACC := PureU1.accCube n

An equivalence of vector spaces of charges when the number of fermions is equal.

def pureU1EqCharges {n m : } (h : n = m) : (PureU1 n).Charges ≃ₗ[] (PureU1 m).Charges where toFun f := f Fin.cast h.symm invFun f := f Fin.cast h map_add' _ _ := rfl map_smul' _ _:= rfl left_inv _ := rfl right_inv _ := rfl

A solution to the pure U(1) accs satisfies the linear ACCs.

lemma pureU1_linear {n : } (S : (PureU1 n).LinSols) : (i : Fin n), S.val i = 0 := n:S:(PureU1 n).LinSols i, S.val i = 0 n:S:(PureU1 n).LinSolshS: (i : Fin (PureU1 n).numberLinear), ((PureU1 n).linearACCs i) S.val = 0 i, S.val i = 0 n:S:(PureU1 n).LinSolshS: (i : Fin (PureU1 n).numberLinear), (match i with | 0 => PureU1.accGrav n) S.val = 0 i, S.val i = 0 exact hS 0, n:S:(PureU1 n).LinSolshS: (i : Fin (PureU1 n).numberLinear), (match i with | 0 => PureU1.accGrav n) S.val = 00 < (PureU1 n).numberLinear All goals completed! 🐙

A solution to the pure U(1) accs satisfies the cubic ACCs.

n:S:(PureU1 n).Sols(PureU1.accCube (PureU1 n).numberCharges) S.val = 0 All goals completed! 🐙

The last charge of a solution to the linear ACCs is equal to the negation of the sum of the other charges.

n:S:(PureU1 n.succ).LinSolshS: i, S.val i.castSucc + S.val (Fin.last n) = 0S.val (Fin.last n) = - i, S.val i.castSucc All goals completed! 🐙

Two solutions to the Linear ACCs for n.succ are equal if their first n charges are equal.

n:S:(PureU1 n.succ).LinSolsT:(PureU1 n.succ).LinSolsh: (i : Fin n), S.val i.castSucc = T.val i.castSucci:Fin (PureU1 n.succ).numberChargeshi:i = Fin.last n- i, S.val i.castSucc = - i, T.val i.castSucc All goals completed! 🐙

The jth charge of a sum of pure-U(1) charges is equal to the sum of their jth charges.

n:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).Charges), (∑ i, f i) j = i, f i jf:Fin (n✝ + 1) (PureU1 n).Charges( i, f i.castSucc + f (Fin.last k)) j = i, f i.castSucc j + f (Fin.last k) j erw [n:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).Charges), (∑ i, f i) j = i, f i jf:Fin (n✝ + 1) (PureU1 n).Charges( i, f i.castSucc + f (Fin.last k)) j = (∑ i, (f Fin.castSucc) i) j + f (Fin.last k) jn:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).Charges), (∑ i, f i) j = i, f i jf:Fin (n✝ + 1) (PureU1 n).Charges( i, f i.castSucc + f (Fin.last k)) j = (∑ i, (f Fin.castSucc) i) j + f (Fin.last k) j All goals completed! 🐙

The jth charge of a sum of solutions to the linear ACC is equal to the sum of their jth charges.

n:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).LinSols), (∑ i, f i).val j = i, (f i).val jf:Fin (n✝ + 1) (PureU1 n).LinSols( i, f i.castSucc + f (Fin.last k)).val j = i, (f i.castSucc).val j + (f (Fin.last k)).val j erw [n:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).LinSols), (∑ i, f i).val j = i, (f i).val jf:Fin (n✝ + 1) (PureU1 n).LinSols( i, f i.castSucc + f (Fin.last k)).val j = (∑ i, (f Fin.castSucc) i).val j + (f (Fin.last k)).val jn:j:Fin nk:hl: (f : Fin n✝ (PureU1 n).LinSols), (∑ i, f i).val j = i, (f i).val jf:Fin (n✝ + 1) (PureU1 n).LinSols( i, f i.castSucc + f (Fin.last k)).val j = (∑ i, (f Fin.castSucc) i).val j + (f (Fin.last k)).val j All goals completed! 🐙