refactor: def of symmetric trilin function

This commit is contained in:
jstoobysmith 2024-04-22 09:48:44 -04:00
parent 748bcb61ae
commit e36c61b331
24 changed files with 279 additions and 246 deletions

View file

@ -55,7 +55,7 @@ open BigOperators
variable {V : Type} [AddCommMonoid V] [Module V]
instance instFun (V : Type) [AddCommMonoid V] [Module V] :
FunLike (BiLinearSymm V) (V) (V →ₗ[] ) where
FunLike (BiLinearSymm V) V (V →ₗ[] ) where
coe f := f.toFun
coe_injective' f g h := by
cases f
@ -180,92 +180,119 @@ lemma map_smul (f : HomogeneousCubic V) (a : ) (S : V) : f (a • S) = a ^ 3
end HomogeneousCubic
/-- The structure of a symmetric trilinear function. -/
structure TriLinearSymm' (V : Type) [AddCommMonoid V] [Module V] extends
structure TriLinearSymm (V : Type) [AddCommMonoid V] [Module V] extends
V →ₗ[] V →ₗ[] V →ₗ[] where
swap₁' : ∀ S T L, toFun S T L = toFun T S L
swap₁' : ∀ S T L, toFun S T L = toFun T S L
swap₂' : ∀ S T L, toFun S T L = toFun S L T
/-- The structure of a symmetric trilinear function. -/
structure TriLinearSymm (V : Type) [AddCommMonoid V] [Module V] where
/-- The underlying function. -/
toFun : V × V × V →
map_smul₁' : ∀ a S T L, toFun (a • S, T, L) = a * toFun (S, T, L)
map_add₁' : ∀ S1 S2 T L, toFun (S1 + S2, T, L) = toFun (S1, T, L) + toFun (S2, T, L)
swap₁' : ∀ S T L, toFun (S, T, L) = toFun (T, S, L)
swap₂' : ∀ S T L, toFun (S, T, L) = toFun (S, L, T)
namespace TriLinearSymm
open BigOperators
variable {V : Type} [AddCommMonoid V] [Module V]
instance instFun : FunLike (TriLinearSymm V) (V × V × V) where
instance instFun : FunLike (TriLinearSymm V) V (V →ₗ[] V →ₗ[] ) where
coe f := f.toFun
coe_injective' f g h := by
cases f
cases g
simp_all
lemma toFun_eq_coe (f : TriLinearSymm V) : f.toFun = f := rfl
/-- The construction of a symmetric trilinear map from smul and map_add in the first factor,
and two swap. -/
@[simps!]
def mk₃ (f : V × V × V→ ) (map_smul : ∀ a S T L, f (a • S, T, L) = a * f (S, T, L))
(map_add : ∀ S1 S2 T L, f (S1 + S2, T, L) = f (S1, T, L) + f (S2, T, L))
(swap₁ : ∀ S T L, f (S, T, L) = f (T, S, L))
(swap₂ : ∀ S T L, f (S, T, L) = f (S, L, T)) : TriLinearSymm V where
toFun := fun S => (BiLinearSymm.mk₂ (fun T => f (S, T))
(by
intro a T L
simp only
rw [swap₁, map_smul, swap₁])
(by
intro S1 S2 T
simp only
rw [swap₁, map_add, swap₁, swap₁ S2 S T])
(by
intro L T
simp only
rw [swap₂])).toLinearMap
map_add' S1 S2 := by
apply LinearMap.ext
intro T
apply LinearMap.ext
intro S
simp [BiLinearSymm.mk₂, map_add]
map_smul' a S := by
apply LinearMap.ext
intro T
apply LinearMap.ext
intro L
simp [BiLinearSymm.mk₂, map_smul]
swap₁' := swap₁
swap₂' := swap₂
lemma swap₁ (f : TriLinearSymm V) (S T L : V) : f (S, T, L) = f (T, S, L) :=
lemma swap₁ (f : TriLinearSymm V) (S T L : V) : f S T L = f T S L :=
f.swap₁' S T L
lemma swap₂ (f : TriLinearSymm V) (S T L : V) : f (S, T, L) = f (S, L, T) :=
lemma swap₂ (f : TriLinearSymm V) (S T L : V) : f S T L = f S L T :=
f.swap₂' S T L
lemma swap₃ (f : TriLinearSymm V) (S T L : V) : f (S, T, L) = f (L, T, S) := by
lemma swap₃ (f : TriLinearSymm V) (S T L : V) : f S T L = f L T S := by
rw [f.swap₁, f.swap₂, f.swap₁]
lemma map_smul₁ (f : TriLinearSymm V) (a : ) (S T L : V) :
f (a • S, T, L) = a * f (S, T, L) :=
f.map_smul₁' a S T L
f (a • S) T L = a * f S T L := by
erw [f.map_smul a S]
rfl
lemma map_smul₂ (f : TriLinearSymm V) (S : V) (a : ) (T L : V) :
f (S, a • T, L) = a * f (S, T, L) := by
f S (a • T) L = a * f S T L := by
rw [f.swap₁, f.map_smul₁, f.swap₁]
lemma map_smul₃ (f : TriLinearSymm V) (S T : V) (a : ) (L : V) :
f (S, T, a • L) = a * f (S, T, L) := by
f S T (a • L) = a * f S T L := by
rw [f.swap₃, f.map_smul₁, f.swap₃]
lemma map_add₁ (f : TriLinearSymm V) (S1 S2 T L : V) :
f (S1 + S2, T, L) = f (S1, T, L) + f (S2, T, L) :=
f.map_add₁' S1 S2 T L
f (S1 + S2) T L = f S1 T L + f S2 T L := by
erw [f.map_add]
rfl
lemma map_add₂ (f : TriLinearSymm V) (S T1 T2 L : V) :
f (S, T1 + T2, L) = f (S, T1, L) + f (S, T2, L) := by
f S (T1 + T2) L = f S T1 L + f S T2 L := by
rw [f.swap₁, f.map_add₁, f.swap₁ S T1, f.swap₁ S T2]
lemma map_add₃ (f : TriLinearSymm V) (S T L1 L2 : V) :
f (S, T, L1 + L2) = f (S, T, L1) + f (S, T, L2) := by
f S T (L1 + L2) = f S T L1 + f S T L2 := by
rw [f.swap₃, f.map_add₁, f.swap₃, f.swap₃ L2 T S]
/-- Fixing the second and third input vectors, the resulting linear map. -/
def toLinear₁ (f : TriLinearSymm V) (T L : V) : V →ₗ[] where
toFun S := f (S, T, L)
toFun S := f S T L
map_add' S1 S2 := by
simp only [f.map_add₁]
map_smul' a S := by
simp only [f.map_smul₁]
rfl
lemma toLinear₁_apply (f : TriLinearSymm V) (S T L : V) : f (S, T, L) = f.toLinear₁ T L S := rfl
lemma toLinear₁_apply (f : TriLinearSymm V) (S T L : V) : f S T L = f.toLinear₁ T L S := rfl
lemma map_sum₁ {n : } (f : TriLinearSymm V) (S : Fin n → V) (T : V) (L : V) :
f (∑ i, S i, T, L) = ∑ i, f (S i, T, L) := by
f (∑ i, S i) T L = ∑ i, f (S i) T L := by
rw [f.toLinear₁_apply]
rw [map_sum]
rfl
lemma map_sum₂ {n : } (f : TriLinearSymm V) (S : Fin n → V) (T : V) (L : V) :
f ( T, ∑ i, S i, L) = ∑ i, f (T, S i, L) := by
f T (∑ i, S i) L = ∑ i, f T (S i) L := by
rw [swap₁, map_sum₁]
apply Fintype.sum_congr
intro i
rw [swap₁]
lemma map_sum₃ {n : } (f : TriLinearSymm V) (S : Fin n → V) (T : V) (L : V) :
f ( T, L, ∑ i, S i) = ∑ i, f (T, L, S i) := by
f T L (∑ i, S i) = ∑ i, f T L (S i) := by
rw [swap₃, map_sum₁]
apply Fintype.sum_congr
intro i
@ -273,7 +300,7 @@ lemma map_sum₃ {n : } (f : TriLinearSymm V) (S : Fin n → V) (T : V) (L :
lemma map_sum₁₂₃ {n1 n2 n3 : } (f : TriLinearSymm V) (S : Fin n1 → V)
(T : Fin n2 → V) (L : Fin n3 → V) :
f (∑ i, S i, ∑ i, T i, ∑ i, L i) = ∑ i, ∑ k, ∑ l, f (S i, T k, L l) := by
f (∑ i, S i) (∑ i, T i) (∑ i, L i) = ∑ i, ∑ k, ∑ l, f (S i) (T k) (L l) := by
rw [map_sum₁]
apply Fintype.sum_congr
intro i
@ -287,7 +314,7 @@ lemma map_sum₁₂₃ {n1 n2 n3 : } (f : TriLinearSymm V) (S : Fin n1 → V)
@[simps!]
def toCubic {charges : Type} [AddCommMonoid charges] [Module charges]
(τ : TriLinearSymm charges) : HomogeneousCubic charges where
toFun S := τ (S, S, S)
toFun S := τ S S S
map_smul' a S := by
simp only [smul_eq_mul]
rw [τ.map_smul₁, τ.map_smul₂, τ.map_smul₃]
@ -296,7 +323,7 @@ def toCubic {charges : Type} [AddCommMonoid charges] [Module charges]
lemma toCubic_add {charges : Type} [AddCommMonoid charges] [Module charges]
(τ : TriLinearSymm charges) (S T : charges) :
τ.toCubic (S + T) = τ.toCubic S +
τ.toCubic T + 3 * τ (S, S, T) + 3 * τ (T, T, S) := by
τ.toCubic T + 3 * τ S S T + 3 * τ T T S := by
simp only [HomogeneousCubic, toCubic_apply]
rw [τ.map_add₁, τ.map_add₂, τ.map_add₂, τ.map_add₃, τ.map_add₃, τ.map_add₃, τ.map_add₃]
rw [τ.swap₂ S T S, τ.swap₁ T S S, τ.swap₂ S T S, τ.swap₂ T S T, τ.swap₁ S T T, τ.swap₂ T S T]

View file

@ -59,9 +59,9 @@ def B₃ : MSSMACC.Sols :=
lemma B₃_val : B₃.val = B₃AsCharge := by
rfl
lemma doublePoint_B₃_B₃ (R : MSSMACC.LinSols) : cubeTriLin (B₃.val, B₃.val, R.val) = 0 := by
rw [← TriLinearSymm.toFun_eq_coe]
simp only [cubeTriLin, cubeTriLinToFun, MSSMSpecies_numberCharges]
lemma doublePoint_B₃_B₃ (R : MSSMACC.LinSols) : cubeTriLin B₃.val B₃.val R.val = 0 := by
simp only [cubeTriLin, TriLinearSymm.mk₃_toFun_apply_apply, cubeTriLinToFun,
MSSMSpecies_numberCharges, Fin.isValue, Fin.reduceFinMk]
rw [Fin.sum_univ_three]
rw [B₃_val]
rw [B₃AsCharge]

View file

@ -409,12 +409,13 @@ lemma cubeTriLinToFun_swap2 (S T R : MSSMCharges.charges) :
ring
/-- The symmetric trilinear form used to define the cubic ACC. -/
def cubeTriLin : TriLinearSymm MSSMCharges.charges where
toFun S := cubeTriLinToFun S
map_smul₁' := cubeTriLinToFun_map_smul₁
map_add₁' := cubeTriLinToFun_map_add₁
swap₁' := cubeTriLinToFun_swap1
swap₂' := cubeTriLinToFun_swap2
@[simps!]
def cubeTriLin : TriLinearSymm MSSMCharges.charges := TriLinearSymm.mk₃
cubeTriLinToFun
cubeTriLinToFun_map_smul₁
cubeTriLinToFun_map_add₁
cubeTriLinToFun_swap1
cubeTriLinToFun_swap2
/-- The cubic ACC. -/
@[simp]
@ -426,10 +427,8 @@ lemma accCube_ext {S T : MSSMCharges.charges}
∑ i, ((fun a => a^3) ∘ toSMSpecies j T) i)
(hd : Hd S = Hd T) (hu : Hu S = Hu T) :
accCube S = accCube T := by
simp [cubeTriLin, cubeTriLinToFun]
erw [← cubeTriLin.toFun_eq_coe]
rw [cubeTriLin]
simp only [cubeTriLinToFun]
simp only [HomogeneousCubic, accCube, cubeTriLin, TriLinearSymm.toCubic_apply,
TriLinearSymm.mk₃_toFun_apply_apply, cubeTriLinToFun]
repeat erw [Finset.sum_add_distrib]
repeat erw [← Finset.mul_sum]
ring_nf

View file

@ -54,8 +54,8 @@ lemma lineY₃B₃Charges_cubic (a b : ) : accCube (lineY₃B₃Charges a b).
rw [cubeTriLin.map_smul₁, cubeTriLin.map_smul₂, cubeTriLin.map_smul₃]
rw [cubeTriLin.map_smul₁, cubeTriLin.map_smul₂, cubeTriLin.map_smul₃]
erw [Y₃.cubicSol, B₃.cubicSol]
rw [show cubeTriLin (Y₃.val, Y₃.val, B₃.val) = 0 by rfl]
rw [show cubeTriLin (B₃.val, B₃.val, Y₃.val) = 0 by rfl]
rw [show cubeTriLin Y₃.val Y₃.val B₃.val = 0 by rfl]
rw [show cubeTriLin B₃.val B₃.val Y₃.val = 0 by rfl]
simp
/-- The line through $Y_3$ and $B_3$ as `Sols`. -/
@ -63,9 +63,9 @@ def lineY₃B₃ (a b : ) : MSSMACC.Sols :=
AnomalyFreeMk' (lineY₃B₃Charges a b) (lineY₃B₃Charges_quad a b) (lineY₃B₃Charges_cubic a b)
lemma doublePoint_Y₃_B₃ (R : MSSMACC.LinSols) :
cubeTriLin (Y₃.val, B₃.val, R.val) = 0 := by
rw [← TriLinearSymm.toFun_eq_coe]
simp only [cubeTriLin, cubeTriLinToFun, MSSMSpecies_numberCharges]
cubeTriLin Y₃.val B₃.val R.val = 0 := by
simp only [cubeTriLin, TriLinearSymm.mk₃_toFun_apply_apply, cubeTriLinToFun,
MSSMSpecies_numberCharges, Fin.isValue, Fin.reduceFinMk]
rw [Fin.sum_univ_three]
rw [B₃_val, Y₃_val]
rw [B₃AsCharge, Y₃AsCharge]
@ -83,8 +83,8 @@ lemma doublePoint_Y₃_B₃ (R : MSSMACC.LinSols) :
linear_combination -(12 * h2) + 9 * h1 + 3 * h3
lemma lineY₃B₃_doublePoint (R : MSSMACC.LinSols) (a b : ) :
cubeTriLin ((lineY₃B₃ a b).val, (lineY₃B₃ a b).val, R.val) = 0 := by
change cubeTriLin (a • Y₃.val + b • B₃.val , a • Y₃.val + b • B₃.val, R.val ) = 0
cubeTriLin (lineY₃B₃ a b).val (lineY₃B₃ a b).val R.val = 0 := by
change cubeTriLin (a • Y₃.val + b • B₃.val) (a • Y₃.val + b • B₃.val) R.val = 0
rw [cubeTriLin.map_add₂, cubeTriLin.map_add₁, cubeTriLin.map_add₁]
repeat rw [cubeTriLin.map_smul₂, cubeTriLin.map_smul₁]
rw [doublePoint_B₃_B₃, doublePoint_Y₃_Y₃, doublePoint_Y₃_B₃]

View file

@ -121,8 +121,8 @@ lemma quad_proj (T : MSSMACC.Sols) :
lemma cube_proj_proj_Y₃ (T : MSSMACC.LinSols) :
cubeTriLin ((proj T).val, (proj T).val, Y₃.val) =
(dot Y₃.val B₃.val)^2 * cubeTriLin (T.val, T.val, Y₃.val) := by
cubeTriLin (proj T).val (proj T).val Y₃.val =
(dot Y₃.val B₃.val)^2 * cubeTriLin T.val T.val Y₃.val := by
rw [proj_val]
rw [cubeTriLin.map_add₁, cubeTriLin.map_add₂]
erw [lineY₃B₃_doublePoint]
@ -143,8 +143,8 @@ lemma cube_proj_proj_Y₃ (T : MSSMACC.LinSols) :
ring
lemma cube_proj_proj_B₃ (T : MSSMACC.LinSols) :
cubeTriLin ((proj T).val, (proj T).val, B₃.val) =
(dot Y₃.val B₃.val)^2 * cubeTriLin (T.val, T.val, B₃.val) := by
cubeTriLin (proj T).val (proj T).val B₃.val =
(dot Y₃.val B₃.val)^2 * cubeTriLin T.val T.val B₃.val := by
rw [proj_val]
rw [cubeTriLin.map_add₁, cubeTriLin.map_add₂]
erw [lineY₃B₃_doublePoint]
@ -159,10 +159,10 @@ lemma cube_proj_proj_B₃ (T : MSSMACC.LinSols) :
ring
lemma cube_proj_proj_self (T : MSSMACC.Sols) :
cubeTriLin ((proj T.1.1).val, (proj T.1.1).val, T.val) =
cubeTriLin (proj T.1.1).val (proj T.1.1).val T.val =
2 * dot Y₃.val B₃.val *
((dot B₃.val T.val - dot Y₃.val T.val) * cubeTriLin (T.val, T.val, Y₃.val) +
( dot Y₃.val T.val- 2 * dot B₃.val T.val) * cubeTriLin (T.val, T.val, B₃.val)) := by
((dot B₃.val T.val - dot Y₃.val T.val) * cubeTriLin T.val T.val Y₃.val +
( dot Y₃.val T.val- 2 * dot B₃.val T.val) * cubeTriLin T.val T.val B₃.val) := by
rw [proj_val]
rw [cubeTriLin.map_add₁, cubeTriLin.map_add₂]
erw [lineY₃B₃_doublePoint]
@ -176,10 +176,10 @@ lemma cube_proj_proj_self (T : MSSMACC.Sols) :
ring
lemma cube_proj (T : MSSMACC.Sols) :
cubeTriLin ((proj T.1.1).val, (proj T.1.1).val, (proj T.1.1).val) =
cubeTriLin (proj T.1.1).val (proj T.1.1).val (proj T.1.1).val =
3 * dot Y₃.val B₃.val ^ 2 *
((dot B₃.val T.val - dot Y₃.val T.val) * cubeTriLin (T.val, T.val, Y₃.val) +
(dot Y₃.val T.val - 2 * dot B₃.val T.val) * cubeTriLin (T.val, T.val, B₃.val)) := by
((dot B₃.val T.val - dot Y₃.val T.val) * cubeTriLin T.val T.val Y₃.val +
(dot Y₃.val T.val - 2 * dot B₃.val T.val) * cubeTriLin T.val T.val B₃.val) := by
nth_rewrite 3 [proj_val]
repeat rw [cubeTriLin.map_add₃]
repeat rw [cubeTriLin.map_smul₃]

View file

@ -115,8 +115,8 @@ lemma planeY₃B₃_quad (R : MSSMACC.AnomalyFreePerp) (a b c : ) :
lemma planeY₃B₃_cubic (R : MSSMACC.AnomalyFreePerp) (a b c : ) :
accCube (planeY₃B₃ R a b c).val = c ^ 2 *
(3 * a * cubeTriLin (R.val, R.val, Y₃.val)
+ 3 * b * cubeTriLin (R.val, R.val, B₃.val) + c * cubeTriLin (R.val, R.val, R.val) ) := by
(3 * a * cubeTriLin R.val R.val Y₃.val
+ 3 * b * cubeTriLin R.val R.val B₃.val + c * cubeTriLin R.val R.val R.val) := by
rw [planeY₃B₃_val]
erw [TriLinearSymm.toCubic_add]
erw [lineY₃B₃Charges_cubic]
@ -124,7 +124,7 @@ lemma planeY₃B₃_cubic (R : MSSMACC.AnomalyFreePerp) (a b c : ) :
rw [cubeTriLin.toCubic.map_smul]
rw [cubeTriLin.map_smul₁, cubeTriLin.map_smul₂]
rw [cubeTriLin.map_add₃, cubeTriLin.map_smul₃, cubeTriLin.map_smul₃]
rw [show (TriLinearSymm.toCubic cubeTriLin) R.val = cubeTriLin (R.val, R.val, R.val) by rfl]
rw [show (TriLinearSymm.toCubic cubeTriLin) R.val = cubeTriLin R.val R.val R.val by rfl]
ring
/-- The line in the plane spanned by $Y_3$, $B_3$ and $R$ which is in the quadratic,
@ -163,18 +163,18 @@ lemma lineQuad_smul (R : MSSMACC.AnomalyFreePerp) (a b c d : ) :
/-- A helper function to simplify following expressions. -/
def α₁ (T : MSSMACC.AnomalyFreePerp) : :=
(3 * cubeTriLin (T.val, T.val, B₃.val) * quadBiLin T.val T.val -
2 * cubeTriLin (T.val, T.val, T.val) * quadBiLin B₃.val T.val)
(3 * cubeTriLin T.val T.val B₃.val * quadBiLin T.val T.val -
2 * cubeTriLin T.val T.val T.val * quadBiLin B₃.val T.val)
/-- A helper function to simplify following expressions. -/
def α₂ (T : MSSMACC.AnomalyFreePerp) : :=
(2 * cubeTriLin (T.val, T.val, T.val) * quadBiLin Y₃.val T.val -
3 * cubeTriLin (T.val, T.val, Y₃.val) * quadBiLin T.val T.val)
(2 * cubeTriLin T.val T.val T.val * quadBiLin Y₃.val T.val -
3 * cubeTriLin T.val T.val Y₃.val * quadBiLin T.val T.val)
/-- A helper function to simplify following expressions. -/
def α₃ (T : MSSMACC.AnomalyFreePerp) : :=
6 * ((cubeTriLin (T.val, T.val, Y₃.val)) * quadBiLin B₃.val T.val -
(cubeTriLin (T.val, T.val, B₃.val)) * quadBiLin Y₃.val T.val)
6 * ((cubeTriLin T.val T.val Y₃.val) * quadBiLin B₃.val T.val -
(cubeTriLin T.val T.val B₃.val) * quadBiLin Y₃.val T.val)
lemma lineQuad_cube (R : MSSMACC.AnomalyFreePerp) (c₁ c₂ c₃ : ) :
accCube (lineQuad R c₁ c₂ c₃).val =
@ -188,9 +188,9 @@ def α₁ (T : MSSMACC.AnomalyFreePerp) : :=
def lineCube (R : MSSMACC.AnomalyFreePerp) (a₁ a₂ a₃ : ) :
MSSMACC.LinSols :=
planeY₃B₃ R
(a₂ * cubeTriLin (R.val, R.val, R.val) - 3 * a₃ * cubeTriLin (R.val, R.val, B₃.val))
(3 * a₃ * cubeTriLin (R.val, R.val, Y₃.val) - a₁ * cubeTriLin (R.val, R.val, R.val))
(3 * (a₁ * cubeTriLin (R.val, R.val, B₃.val) - a₂ * cubeTriLin (R.val, R.val, Y₃.val)))
(a₂ * cubeTriLin R.val R.val R.val - 3 * a₃ * cubeTriLin R.val R.val B₃.val)
(3 * a₃ * cubeTriLin R.val R.val Y₃.val - a₁ * cubeTriLin R.val R.val R.val)
(3 * (a₁ * cubeTriLin R.val R.val B₃.val - a₂ * cubeTriLin R.val R.val Y₃.val))
lemma lineCube_smul (R : MSSMACC.AnomalyFreePerp) (a b c d : ) :
@ -210,7 +210,7 @@ lemma lineCube_cube (R : MSSMACC.AnomalyFreePerp) (a₁ a₂ a₃ : ) :
lemma lineCube_quad (R : MSSMACC.AnomalyFreePerp) (a₁ a₂ a₃ : ) :
accQuad (lineCube R a₁ a₂ a₃).val =
3 * (a₁ * cubeTriLin (R.val, R.val, B₃.val) - a₂ * cubeTriLin (R.val, R.val, Y₃.val)) *
3 * (a₁ * cubeTriLin R.val R.val B₃.val - a₂ * cubeTriLin R.val R.val Y₃.val) *
(α₁ R * a₁ + α₂ R * a₂ + α₃ R * a₃) := by
erw [planeY₃B₃_quad]
rw [α₁, α₂, α₃]
@ -221,8 +221,8 @@ section proj
lemma α₃_proj (T : MSSMACC.Sols) : α₃ (proj T.1.1) =
6 * dot Y₃.val B₃.val ^ 3 * (
cubeTriLin (T.val, T.val, Y₃.val) * quadBiLin B₃.val T.val -
cubeTriLin (T.val, T.val, B₃.val) * quadBiLin Y₃.val T.val) := by
cubeTriLin T.val T.val Y₃.val * quadBiLin B₃.val T.val -
cubeTriLin T.val T.val B₃.val * quadBiLin Y₃.val T.val) := by
rw [α₃]
rw [cube_proj_proj_Y₃, cube_proj_proj_B₃, quad_B₃_proj, quad_Y₃_proj]
ring

View file

@ -46,8 +46,8 @@ instance (R : MSSMACC.AnomalyFreePerp) : Decidable (lineEqProp R) := by
/-- A condition on `Sols` which we will show in `linEqPropSol_iff_proj_linEqProp` that is equivalent
to the condition that the `proj` of the solution satisfies `lineEqProp`. -/
def lineEqPropSol (R : MSSMACC.Sols) : Prop :=
cubeTriLin (R.val, R.val, Y₃.val) * quadBiLin B₃.val R.val -
cubeTriLin (R.val, R.val, B₃.val) * quadBiLin Y₃.val R.val = 0
cubeTriLin R.val R.val Y₃.val * quadBiLin B₃.val R.val -
cubeTriLin R.val R.val B₃.val * quadBiLin Y₃.val R.val = 0
/-- A rational which appears in `toSolNS` acting on sols, and which been zero is
equivalent to satisfying `lineEqPropSol`. -/
@ -134,8 +134,8 @@ lemma inQuadSolProp_iff_proj_inQuadProp (R : MSSMACC.Sols) :
/-- A condition which is satisfied if the plane spanned by `R`, `Y₃` and `B₃` lies
entirely in the cubic surface. -/
def inCubeProp (R : MSSMACC.AnomalyFreePerp) : Prop :=
cubeTriLin (R.val, R.val, R.val) = 0 ∧ cubeTriLin (R.val, R.val, B₃.val) = 0 ∧
cubeTriLin (R.val, R.val, Y₃.val) = 0
cubeTriLin R.val R.val R.val = 0 ∧ cubeTriLin R.val R.val B₃.val = 0 ∧
cubeTriLin R.val R.val Y₃.val = 0
instance (R : MSSMACC.AnomalyFreePerp) : Decidable (inCubeProp R) := by
@ -144,13 +144,13 @@ instance (R : MSSMACC.AnomalyFreePerp) : Decidable (inCubeProp R) := by
/-- A condition which is satisfied if the plane spanned by the solutions `R`, `Y₃` and `B₃`
lies entirely in the cubic surface. -/
def inCubeSolProp (R : MSSMACC.Sols) : Prop :=
cubeTriLin (R.val, R.val, B₃.val) = 0 ∧ cubeTriLin (R.val, R.val, Y₃.val) = 0
cubeTriLin R.val R.val B₃.val = 0 ∧ cubeTriLin R.val R.val Y₃.val = 0
/-- A rational which has two properties. It is zero for a solution `T` if and only if
that solution satisfies `inCubeSolProp`. It appears in the definition of `inLineEqProj`. -/
def cubicCoeff (T : MSSMACC.Sols) : :=
3 * (dot Y₃.val B₃.val) ^ 3 * (cubeTriLin (T.val, T.val, Y₃.val) ^ 2 +
cubeTriLin (T.val, T.val, B₃.val) ^ 2 )
3 * (dot Y₃.val B₃.val) ^ 3 * (cubeTriLin T.val T.val Y₃.val ^ 2 +
cubeTriLin T.val T.val B₃.val ^ 2 )
lemma inCubeSolProp_iff_cubicCoeff_zero (T : MSSMACC.Sols) :
inCubeSolProp T ↔ cubicCoeff T = 0 := by
@ -214,9 +214,9 @@ def inQuadCubeSol : Type :=
/-- Given a `R` perpendicular to `Y₃` and `B₃` a quadratic solution. -/
def toSolNSQuad (R : MSSMACC.AnomalyFreePerp) : MSSMACC.QuadSols :=
lineQuad R
(3 * cubeTriLin (R.val, R.val, Y₃.val))
(3 * cubeTriLin (R.val, R.val, B₃.val))
(cubeTriLin (R.val, R.val, R.val))
(3 * cubeTriLin R.val R.val Y₃.val)
(3 * cubeTriLin R.val R.val B₃.val)
(cubeTriLin R.val R.val R.val)
lemma toSolNSQuad_cube (R : MSSMACC.AnomalyFreePerp) :
accCube (toSolNSQuad R).val = 0 := by
@ -325,11 +325,11 @@ lemma inQuadToSol_smul (R : inQuad) (c₁ c₂ c₃ d : ) :
def inQuadProj (T : inQuadSol) : inQuad × × × :=
(⟨⟨proj T.val.1.1, (linEqPropSol_iff_proj_linEqProp T.val).mp T.prop.1 ⟩,
(inQuadSolProp_iff_proj_inQuadProp T.val).mp T.prop.2.1⟩,
(cubicCoeff T.val)⁻¹ * (cubeTriLin (T.val.val, T.val.val, B₃.val)),
(cubicCoeff T.val)⁻¹ * (- cubeTriLin (T.val.val, T.val.val, Y₃.val)),
(cubicCoeff T.val)⁻¹ * (cubeTriLin T.val.val T.val.val B₃.val),
(cubicCoeff T.val)⁻¹ * (- cubeTriLin T.val.val T.val.val Y₃.val),
(cubicCoeff T.val)⁻¹ *
(cubeTriLin (T.val.val, T.val.val, B₃.val) * (dot B₃.val T.val.val - dot Y₃.val T.val.val)
- cubeTriLin (T.val.val, T.val.val, Y₃.val)
(cubeTriLin T.val.val T.val.val B₃.val * (dot B₃.val T.val.val - dot Y₃.val T.val.val)
- cubeTriLin T.val.val T.val.val Y₃.val
* (dot Y₃.val T.val.val - 2 * dot B₃.val T.val.val)))
@ -342,8 +342,8 @@ lemma inQuadToSol_proj (T : inQuadSol) : inQuadToSol (inQuadProj T) = T.val := b
rw [cube_proj, cube_proj_proj_B₃, cube_proj_proj_Y₃]
ring_nf
simp only [zero_smul, add_zero, Fin.isValue, Fin.reduceFinMk, zero_add]
have h1 : (cubeTriLin (T.val.val, T.val.val, Y₃.val) ^ 2 * dot Y₃.val B₃.val ^ 3 * 3 +
dot Y₃.val B₃.val ^ 3 * cubeTriLin (T.val.val, T.val.val, B₃.val) ^ 2
have h1 : (cubeTriLin T.val.val T.val.val Y₃.val ^ 2 * dot Y₃.val B₃.val ^ 3 * 3 +
dot Y₃.val B₃.val ^ 3 * cubeTriLin T.val.val T.val.val B₃.val ^ 2
* 3) = cubicCoeff T.val := by
rw [cubicCoeff]
ring

View file

@ -60,9 +60,9 @@ lemma Y₃_val : Y₃.val = Y₃AsCharge := by
rfl
lemma doublePoint_Y₃_Y₃ (R : MSSMACC.LinSols) :
cubeTriLin (Y₃.val, Y₃.val, R.val) = 0 := by
rw [← TriLinearSymm.toFun_eq_coe]
simp only [cubeTriLin, cubeTriLinToFun, MSSMSpecies_numberCharges]
cubeTriLin Y₃.val Y₃.val R.val = 0 := by
simp only [cubeTriLin, TriLinearSymm.mk₃_toFun_apply_apply, cubeTriLinToFun,
MSSMSpecies_numberCharges, Fin.isValue, Fin.reduceFinMk]
rw [Fin.sum_univ_three]
rw [Y₃_val]
rw [Y₃AsCharge]

View file

@ -38,42 +38,39 @@ def accGrav (n : ) : ((PureU1Charges n).charges →ₗ[] ) where
/-- The symmetric trilinear form used to define the cubic anomaly. -/
@[simps!]
def accCubeTriLinSymm {n : } : TriLinearSymm (PureU1Charges n).charges where
toFun S := ∑ i, S.1 i * S.2.1 i * S.2.2 i
map_smul₁' a S L T := by
def accCubeTriLinSymm {n : } : TriLinearSymm (PureU1Charges n).charges := TriLinearSymm.mk₃
(fun S => ∑ i, S.1 i * S.2.1 i * S.2.2 i)
(by
intro a S L T
simp [HSMul.hSMul]
rw [Finset.mul_sum]
apply Fintype.sum_congr
intro i
ring
map_add₁' S L T R := by
ring)
(by
intro S L T R
simp only [PureU1Charges_numberCharges, ACCSystemCharges.chargesAddCommMonoid_add]
rw [← Finset.sum_add_distrib]
apply Fintype.sum_congr
intro i
ring
swap₁' S L T := by
)
(by
intro S L T
simp only [PureU1Charges_numberCharges]
apply Fintype.sum_congr
intro i
ring
swap₂' S L T := by
)
(by
intro S L T
simp only [PureU1Charges_numberCharges]
apply Fintype.sum_congr
intro i
ring
)
lemma accCubeTriLinSymm_cast {n m : } (h : m = n)
(S : (PureU1Charges n).charges × (PureU1Charges n).charges × (PureU1Charges n).charges) :
accCubeTriLinSymm S = ∑ i : Fin m,
S.1 (Fin.cast h i) * S.2.1 (Fin.cast h i) * S.2.2 (Fin.cast h i) := by
rw [← accCubeTriLinSymm.toFun_eq_coe, accCubeTriLinSymm]
simp only [PureU1Charges_numberCharges]
rw [Finset.sum_equiv (Fin.castIso h).symm.toEquiv]
intro i
simp only [mem_univ, Fin.symm_castIso, RelIso.coe_fn_toEquiv, Fin.castIso_apply]
intro i
simp
/-- The cubic anomaly equation. -/
@[simp]
@ -84,9 +81,9 @@ def accCube (n : ) : HomogeneousCubic ((PureU1Charges n).charges) :=
lemma accCube_explicit (n : ) (S : (PureU1Charges n).charges) :
accCube n S = ∑ i : Fin n, S i ^ 3:= by
rw [accCube, TriLinearSymm.toCubic]
change accCubeTriLinSymm.toFun (S, S, S) = _
change accCubeTriLinSymm S S S = _
rw [accCubeTriLinSymm]
simp only [PureU1Charges_numberCharges]
simp only [PureU1Charges_numberCharges, TriLinearSymm.mk₃_toFun_apply_apply]
apply Finset.sum_congr
simp only
ring_nf

View file

@ -470,7 +470,7 @@ lemma P!_accCube (f : Fin n → ) : accCube (2 * n.succ) (P! f) = 0 := by
ring
lemma P_P_P!_accCube (g : Fin n.succ → ) (j : Fin n) :
accCubeTriLinSymm.toFun (P g, P g, basis!AsCharges j)
accCubeTriLinSymm (P g) (P g) (basis!AsCharges j)
= g (j.succ) ^ 2 - g (j.castSucc) ^ 2 := by
simp [accCubeTriLinSymm]
rw [sum_δ!₁_δ!₂, basis!_on_δ!₃, basis!_on_δ!₄]
@ -485,7 +485,7 @@ lemma P_P_P!_accCube (g : Fin n.succ → ) (j : Fin n) :
simp
lemma P_P!_P!_accCube (g : Fin n → ) (j : Fin n.succ) :
accCubeTriLinSymm.toFun (P! g, P! g, basisAsCharges j)
accCubeTriLinSymm (P! g) (P! g) (basisAsCharges j)
= (P! g (δ₁ j))^2 - (P! g (δ₂ j))^2 := by
simp [accCubeTriLinSymm]
rw [sum_δ₁_δ₂]

View file

@ -42,8 +42,8 @@ def lineInCubic (S : (PureU1 (2 * n.succ)).LinSols) : Prop :=
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 := by
3 * a * b * (a * accCubeTriLinSymm (P g) (P g) (P! f)
+ b * accCubeTriLinSymm (P! f) (P! f) (P g)) = 0 := by
intro g f hS a b
have h1 := h g f hS a b
change accCubeTriLinSymm.toCubic (a • P g + b • P! f) = 0 at h1
@ -62,7 +62,7 @@ lemma lineInCubic_expand {S : (PureU1 (2 * n.succ)).LinSols} (h : lineInCubic S)
-/
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 := by
accCubeTriLinSymm (P g) (P g) (P! f) = 0 := by
intro g f hS
linear_combination 2 / 3 * (lineInCubic_expand h g f hS 1 1) -
(lineInCubic_expand h g f hS 1 2) / 6
@ -92,7 +92,7 @@ lemma lineInCubicPerm_swap {S : (PureU1 (2 * n.succ)).LinSols}
(LIC : lineInCubicPerm S) :
∀ (j : Fin n) (g : Fin n.succ → ) (f : Fin n → ) (_ : S.val = Pa g f) ,
(S.val (δ!₂ j) - S.val (δ!₁ j))
* accCubeTriLinSymm.toFun (P g, P g, basis!AsCharges j) = 0 := by
* accCubeTriLinSymm (P g) (P g) (basis!AsCharges j) = 0 := by
intro j g f h
let S' := (FamilyPermutations (2 * n.succ)).linSolRep (pairSwap (δ!₁ j) (δ!₂ j)) S
have hSS' : ((FamilyPermutations (2 * n.succ)).linSolRep (pairSwap (δ!₁ j) (δ!₂ j))) S = S' := rfl
@ -106,7 +106,7 @@ lemma lineInCubicPerm_swap {S : (PureU1 (2 * n.succ)).LinSols}
lemma P_P_P!_accCube' {S : (PureU1 (2 * n.succ.succ )).LinSols}
(f : Fin n.succ.succ → ) (g : Fin n.succ → ) (hS : S.val = Pa f g) :
accCubeTriLinSymm.toFun (P f, P f, basis!AsCharges (Fin.last n)) =
accCubeTriLinSymm (P f) (P f) (basis!AsCharges (Fin.last n)) =
- (S.val (δ!₂ (Fin.last n)) + S.val (δ!₁ (Fin.last n))) * (2 * S.val δ!₄ +
S.val (δ!₂ (Fin.last n)) + S.val (δ!₁ (Fin.last n))) := by
rw [P_P_P!_accCube f (Fin.last n)]

View file

@ -38,13 +38,13 @@ point in `(PureU1 (2 * n.succ)).AnomalyFreeLinear`, which we will later show ext
free point. -/
def parameterizationAsLinear (g : Fin n.succ → ) (f : Fin n → ) (a : ) :
(PureU1 (2 * n.succ)).LinSols :=
a • ((accCubeTriLinSymm (P! f, P! f, P g)) • P' g +
(- accCubeTriLinSymm (P g, P g, P! f)) • P!' f)
a • ((accCubeTriLinSymm (P! f) (P! f) (P g)) • P' g +
(- accCubeTriLinSymm (P g) (P g) (P! f)) • P!' f)
lemma parameterizationAsLinear_val (g : Fin n.succ → ) (f : Fin n → ) (a : ) :
(parameterizationAsLinear g f a).val =
a • ((accCubeTriLinSymm (P! f, P! f, P g)) • P g +
(- accCubeTriLinSymm (P g, P g, P! f)) • P! f) := by
a • ((accCubeTriLinSymm (P! f) (P! f) (P g)) • P g +
(- accCubeTriLinSymm (P g) (P g) (P! f)) • P! f) := by
rw [parameterizationAsLinear]
change a • (_ • (P' g).val + _ • (P!' f).val) = _
rw [P'_val, P!'_val]
@ -68,7 +68,7 @@ def parameterization (g : Fin n.succ → ) (f : Fin n → ) (a : ) :
lemma anomalyFree_param {S : (PureU1 (2 * n.succ)).Sols}
(g : Fin n.succ → ) (f : Fin n → ) (hS : S.val = P g + P! f) :
accCubeTriLinSymm (P g, P g, P! f) = - accCubeTriLinSymm (P! f, P! f, P g) := by
accCubeTriLinSymm (P g) (P g) (P! f) = - accCubeTriLinSymm (P! f) (P! f) (P g) := by
have hC := S.cubicSol
rw [hS] at hC
change (accCube (2 * n.succ)) (P g + P! f) = 0 at hC
@ -81,11 +81,11 @@ lemma anomalyFree_param {S : (PureU1 (2 * n.succ)).Sols}
In this case our parameterization above will be able to recover this point. -/
def genericCase (S : (PureU1 (2 * n.succ)).Sols) : Prop :=
∀ (g : Fin n.succ → ) (f : Fin n → ) (_ : S.val = P g + P! f) ,
accCubeTriLinSymm (P g, P g, P! f) ≠ 0
accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0
lemma genericCase_exists (S : (PureU1 (2 * n.succ)).Sols)
(hs : ∃ (g : Fin n.succ → ) (f : Fin n → ), S.val = P g + P! f ∧
accCubeTriLinSymm (P g, P g, P! f) ≠ 0) : genericCase S := by
accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0) : genericCase S := by
intro g f hS hC
obtain ⟨g', f', hS', hC'⟩ := hs
rw [hS] at hS'
@ -96,11 +96,11 @@ lemma genericCase_exists (S : (PureU1 (2 * n.succ)).Sols)
/-- A proposition on a solution which is true if `accCubeTriLinSymm (P g, P g, P! f) = 0`.-/
def specialCase (S : (PureU1 (2 * n.succ)).Sols) : Prop :=
∀ (g : Fin n.succ → ) (f : Fin n → ) (_ : S.val = P g + P! f) ,
accCubeTriLinSymm (P g, P g, P! f) = 0
accCubeTriLinSymm (P g) (P g) (P! f) = 0
lemma specialCase_exists (S : (PureU1 (2 * n.succ)).Sols)
(hs : ∃ (g : Fin n.succ → ) (f : Fin n → ), S.val = P g + P! f ∧
accCubeTriLinSymm (P g, P g, P! f) = 0) : specialCase S := by
accCubeTriLinSymm (P g) (P g) (P! f) = 0) : specialCase S := by
intro g f hS
obtain ⟨g', f', hS', hC'⟩ := hs
rw [hS] at hS'
@ -111,8 +111,8 @@ lemma specialCase_exists (S : (PureU1 (2 * n.succ)).Sols)
lemma generic_or_special (S : (PureU1 (2 * n.succ)).Sols) :
genericCase S specialCase S := by
obtain ⟨g, f, h⟩ := span_basis S.1.1
have h1 : accCubeTriLinSymm (P g, P g, P! f) ≠ 0
accCubeTriLinSymm (P g, P g, P! f) = 0 := by
have h1 : accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0
accCubeTriLinSymm (P g) (P g) (P! f) = 0 := by
exact ne_or_eq _ _
cases h1 <;> rename_i h1
exact Or.inl (genericCase_exists S ⟨g, f, h, h1⟩)
@ -121,7 +121,7 @@ lemma generic_or_special (S : (PureU1 (2 * n.succ)).Sols) :
theorem generic_case {S : (PureU1 (2 * n.succ)).Sols} (h : genericCase S) :
∃ g f a, S = parameterization g f a := by
obtain ⟨g, f, hS⟩ := span_basis S.1.1
use g, f, (accCubeTriLinSymm (P! f, P! f, P g))⁻¹
use g, f, (accCubeTriLinSymm (P! f) (P! f) (P g))⁻¹
rw [parameterization]
apply ACCSystem.Sols.ext
rw [parameterizationAsLinear_val]
@ -148,7 +148,7 @@ lemma special_case_lineInCubic {S : (PureU1 (2 * n.succ)).Sols}
rw [h]
rw [anomalyFree_param _ _ hS] at h
simp at h
change accCubeTriLinSymm (P! f, P! f, P g) = 0 at h
change accCubeTriLinSymm (P! f) (P! f) (P g) = 0 at h
erw [h]
simp

View file

@ -471,7 +471,7 @@ lemma P!_accCube (f : Fin n → ) : accCube (2 * n +1) (P! f) = 0 := by
ring
lemma P_P_P!_accCube (g : Fin n → ) (j : Fin n) :
accCubeTriLinSymm.toFun (P g, P g, basis!AsCharges j)
accCubeTriLinSymm (P g) (P g) (basis!AsCharges j)
= (P g (δ!₁ j))^2 - (g j)^2 := by
simp [accCubeTriLinSymm]
rw [sum_δ!, basis!_on_δ!₃]

View file

@ -42,8 +42,8 @@ def lineInCubic (S : (PureU1 (2 * n + 1)).LinSols) : Prop :=
lemma 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 := by
3 * a * b * (a * accCubeTriLinSymm (P g) (P g) (P! f)
+ b * accCubeTriLinSymm (P! f) (P! f) (P g)) = 0 := by
intro g f hS a b
have h1 := h g f hS a b
change accCubeTriLinSymm.toCubic (a • P g + b • P! f) = 0 at h1
@ -57,7 +57,7 @@ lemma lineInCubic_expand {S : (PureU1 (2 * n + 1)).LinSols} (h : lineInCubic S)
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 := by
accCubeTriLinSymm (P g) (P g) (P! f) = 0 := by
intro g f hS
linear_combination 2 / 3 * (lineInCubic_expand h g f hS 1 1 ) -
(lineInCubic_expand h g f hS 1 2 ) / 6
@ -91,7 +91,7 @@ lemma lineInCubicPerm_swap {S : (PureU1 (2 * n.succ + 1)).LinSols}
(LIC : lineInCubicPerm S) :
∀ (j : Fin n.succ) (g f : Fin n.succ → ) (_ : S.val = Pa g f) ,
(S.val (δ!₂ j) - S.val (δ!₁ j))
* accCubeTriLinSymm.toFun (P g, P g, basis!AsCharges j) = 0 := by
* accCubeTriLinSymm (P g) (P g) (basis!AsCharges j) = 0 := by
intro j g f h
let S' := (FamilyPermutations (2 * n.succ + 1)).linSolRep
(pairSwap (δ!₁ j) (δ!₂ j)) S
@ -107,7 +107,7 @@ lemma lineInCubicPerm_swap {S : (PureU1 (2 * n.succ + 1)).LinSols}
lemma P_P_P!_accCube' {S : (PureU1 (2 * n.succ.succ + 1)).LinSols}
(f g : Fin n.succ.succ → ) (hS : S.val = Pa f g) :
accCubeTriLinSymm.toFun (P f, P f, basis!AsCharges 0) =
accCubeTriLinSymm (P f) (P f) (basis!AsCharges 0) =
(S.val (δ!₁ 0) + S.val (δ!₂ 0)) * (2 * S.val δ!₃ + S.val (δ!₁ 0) + S.val (δ!₂ 0)) := by
rw [P_P_P!_accCube f 0]
rw [← Pa_δa₁ f g]

View file

@ -33,13 +33,13 @@ open VectorLikeOddPlane
show that this can be extended to a complete solution. -/
def parameterizationAsLinear (g f : Fin n → ) (a : ) :
(PureU1 (2 * n + 1)).LinSols :=
a • ((accCubeTriLinSymm (P! f, P! f, P g)) • P' g +
(- accCubeTriLinSymm (P g, P g, P! f)) • P!' f)
a • ((accCubeTriLinSymm (P! f) (P! f) (P g)) • P' g +
(- accCubeTriLinSymm (P g) (P g) (P! f)) • P!' f)
lemma parameterizationAsLinear_val (g f : Fin n → ) (a : ) :
(parameterizationAsLinear g f a).val =
a • ((accCubeTriLinSymm (P! f, P! f, P g)) • P g +
(- accCubeTriLinSymm (P g, P g, P! f)) • P! f) := by
a • ((accCubeTriLinSymm (P! f) (P! f) (P g)) • P g +
(- accCubeTriLinSymm (P g) (P g) (P! f)) • P! f) := by
rw [parameterizationAsLinear]
change a • (_ • (P' g).val + _ • (P!' f).val) = _
rw [P'_val, P!'_val]
@ -65,8 +65,8 @@ def parameterization (g f : Fin n → ) (a : ) :
lemma anomalyFree_param {S : (PureU1 (2 * n + 1)).Sols}
(g f : Fin n → ) (hS : S.val = P g + P! f) :
accCubeTriLinSymm (P g, P g, P! f) =
- accCubeTriLinSymm (P! f, P! f, P g) := by
accCubeTriLinSymm (P g) (P g) (P! f) =
- accCubeTriLinSymm (P! f) (P! f) (P g) := by
have hC := S.cubicSol
rw [hS] at hC
change (accCube (2 * n + 1)) (P g + P! f) = 0 at hC
@ -79,11 +79,11 @@ lemma anomalyFree_param {S : (PureU1 (2 * n + 1)).Sols}
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 = P g + P! f) ,
accCubeTriLinSymm (P g, P g, P! f) ≠ 0
accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0
lemma genericCase_exists (S : (PureU1 (2 * n.succ + 1)).Sols)
(hs : ∃ (g f : Fin n.succ → ), S.val = P g + P! f ∧
accCubeTriLinSymm (P g, P g, P! f) ≠ 0) : genericCase S := by
accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0) : genericCase S := by
intro g f hS hC
obtain ⟨g', f', hS', hC'⟩ := hs
rw [hS] at hS'
@ -95,11 +95,11 @@ lemma genericCase_exists (S : (PureU1 (2 * n.succ + 1)).Sols)
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 = P g + P! f) ,
accCubeTriLinSymm (P g, P g, P! f) = 0
accCubeTriLinSymm (P g) (P g) (P! f) = 0
lemma specialCase_exists (S : (PureU1 (2 * n.succ + 1)).Sols)
(hs : ∃ (g f : Fin n.succ → ), S.val = P g + P! f ∧
accCubeTriLinSymm (P g, P g, P! f) = 0) : specialCase S := by
accCubeTriLinSymm (P g) (P g) (P! f) = 0) : specialCase S := by
intro g f hS
obtain ⟨g', f', hS', hC'⟩ := hs
rw [hS] at hS'
@ -110,8 +110,8 @@ lemma specialCase_exists (S : (PureU1 (2 * n.succ + 1)).Sols)
lemma generic_or_special (S : (PureU1 (2 * n.succ + 1)).Sols) :
genericCase S specialCase S := by
obtain ⟨g, f, h⟩ := span_basis S.1.1
have h1 : accCubeTriLinSymm (P g, P g, P! f) ≠ 0
accCubeTriLinSymm (P g, P g, P! f) = 0 := by
have h1 : accCubeTriLinSymm (P g) (P g) (P! f) ≠ 0
accCubeTriLinSymm (P g) (P g) (P! f) = 0 := by
exact ne_or_eq _ _
cases h1 <;> rename_i h1
exact Or.inl (genericCase_exists S ⟨g, f, h, h1⟩)
@ -120,7 +120,7 @@ lemma generic_or_special (S : (PureU1 (2 * n.succ + 1)).Sols) :
theorem generic_case {S : (PureU1 (2 * n.succ + 1)).Sols} (h : genericCase S) :
∃ g f a, S = parameterization g f a := by
obtain ⟨g, f, hS⟩ := span_basis S.1.1
use g, f, (accCubeTriLinSymm (P! f, P! f, P g))⁻¹
use g, f, (accCubeTriLinSymm (P! f) (P! f) (P g))⁻¹
rw [parameterization]
apply ACCSystem.Sols.ext
rw [parameterizationAsLinear_val]
@ -149,7 +149,7 @@ lemma special_case_lineInCubic {S : (PureU1 (2 * n.succ + 1)).Sols}
rw [h]
rw [anomalyFree_param _ _ hS] at h
simp at h
change accCubeTriLinSymm (P! f, P! f, P g) = 0 at h
change accCubeTriLinSymm (P! f) (P! f) (P g) = 0 at h
erw [h]
simp

View file

@ -262,13 +262,14 @@ lemma accQuad_ext {S T : (SMCharges n).charges}
/-- The trilinear function defining the cubic. -/
@[simps!]
def cubeTriLin : TriLinearSymm (SMCharges n).charges where
toFun S := ∑ i, (6 * ((Q S.1 i) * (Q S.2.1 i) * (Q S.2.2 i))
def cubeTriLin : TriLinearSymm (SMCharges n).charges := TriLinearSymm.mk₃
(fun S => ∑ i, (6 * ((Q S.1 i) * (Q S.2.1 i) * (Q S.2.2 i))
+ 3 * ((U S.1 i) * (U S.2.1 i) * (U S.2.2 i))
+ 3 * ((D S.1 i) * (D S.2.1 i) * (D S.2.2 i))
+ 2 * ((L S.1 i) * (L S.2.1 i) * (L S.2.2 i))
+ ((E S.1 i) * (E S.2.1 i) * (E S.2.2 i)))
map_smul₁' a S T R := by
+ ((E S.1 i) * (E S.2.1 i) * (E S.2.2 i))))
(by
intro a S T R
simp only
rw [Finset.mul_sum]
apply Fintype.sum_congr
@ -276,7 +277,9 @@ def cubeTriLin : TriLinearSymm (SMCharges n).charges where
repeat erw [map_smul]
simp [HSMul.hSMul, SMul.smul]
ring
map_add₁' S T R L := by
)
(by
intro S T R L
simp only
rw [← Finset.sum_add_distrib]
apply Fintype.sum_congr
@ -284,16 +287,21 @@ def cubeTriLin : TriLinearSymm (SMCharges n).charges where
repeat erw [map_add]
simp only [ACCSystemCharges.chargesAddCommMonoid_add, toSpecies_apply, Fin.isValue]
ring
swap₁' S T L := by
)
(by
intro S T L
simp only [SMSpecies_numberCharges, toSpecies_apply, Fin.isValue]
apply Fintype.sum_congr
intro i
ring
swap₂' S T L := by
)
(by
intro S T L
simp only [SMSpecies_numberCharges, toSpecies_apply, Fin.isValue]
apply Fintype.sum_congr
intro i
ring
)
/-- The cubic acc. -/
@[simp]
@ -304,10 +312,8 @@ lemma accCube_ext {S T : (SMCharges n).charges}
(h : ∀ j, ∑ i, ((fun a => a^3) ∘ toSpecies j S) i =
∑ i, ((fun a => a^3) ∘ toSpecies j T) i) :
accCube S = accCube T := by
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply]
erw [← cubeTriLin.toFun_eq_coe]
rw [cubeTriLin]
simp only
simp only [HomogeneousCubic, accCube, cubeTriLin, TriLinearSymm.toCubic_apply,
TriLinearSymm.mk₃_toFun_apply_apply]
repeat erw [Finset.sum_add_distrib]
repeat erw [← Finset.mul_sum]
ring_nf

View file

@ -84,9 +84,8 @@ lemma asLinear_val (S : linearParameters) : S.asLinear.val = S.asCharges := by
lemma cubic (S : linearParameters) :
accCube (S.asCharges) = - 54 * S.Q'^3 - 18 * S.Q' * S.Y ^ 2 + S.E'^3 := by
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, neg_mul]
erw [← TriLinearSymm.toFun_eq_coe]
rw [cubeTriLin]
simp only [HomogeneousCubic, accCube, cubeTriLin, TriLinearSymm.toCubic_apply,
TriLinearSymm.mk₃_toFun_apply_apply]
simp only [SMSpecies_numberCharges, Finset.univ_unique, Fin.default_eq_zero, Fin.isValue,
Finset.sum_singleton]
repeat erw [speciesVal]

View file

@ -295,47 +295,52 @@ lemma accQuad_ext {S T : (SMνCharges n).charges}
/-- The symmetric trilinear form used to define the cubic acc. -/
@[simps!]
def cubeTriLin : TriLinearSymm (SMνCharges n).charges where
toFun S := ∑ i, (6 * ((Q S.1 i) * (Q S.2.1 i) * (Q S.2.2 i))
def cubeTriLin : TriLinearSymm (SMνCharges n).charges := TriLinearSymm.mk₃
(fun S => ∑ i, (6 * ((Q S.1 i) * (Q S.2.1 i) * (Q S.2.2 i))
+ 3 * ((U S.1 i) * (U S.2.1 i) * (U S.2.2 i))
+ 3 * ((D S.1 i) * (D S.2.1 i) * (D S.2.2 i))
+ 2 * ((L S.1 i) * (L S.2.1 i) * (L S.2.2 i))
+ ((E S.1 i) * (E S.2.1 i) * (E S.2.2 i))
+ ((N S.1 i) * (N S.2.1 i) * (N S.2.2 i)))
map_smul₁' a S T R := by
+ ((N S.1 i) * (N S.2.1 i) * (N S.2.2 i))))
(by
intro a S T R
simp only
rw [Finset.mul_sum]
apply Fintype.sum_congr
intro i
repeat erw [map_smul]
simp [HSMul.hSMul, SMul.smul]
ring
map_add₁' S T R L := by
ring)
(by
intro S T R L
simp only
rw [← Finset.sum_add_distrib]
apply Fintype.sum_congr
intro i
repeat erw [map_add]
simp only [ACCSystemCharges.chargesAddCommMonoid_add, toSpecies_apply, Fin.isValue]
ring
swap₁' S T L := by
ring)
(by
intro S T L
simp only [SMνSpecies_numberCharges, toSpecies_apply, Fin.isValue]
apply Fintype.sum_congr
intro i
ring
swap₂' S T L := by
ring)
(by
intro S T L
simp only [SMνSpecies_numberCharges, toSpecies_apply, Fin.isValue]
apply Fintype.sum_congr
intro i
ring
ring)
lemma cubeTriLin_decomp (S T R : (SMνCharges n).charges) :
cubeTriLin (S, T, R) = 6 * ∑ i, (Q S i * Q T i * Q R i) + 3 * ∑ i, (U S i * U T i * U R i) +
cubeTriLin S T R = 6 * ∑ i, (Q S i * Q T i * Q R i) + 3 * ∑ i, (U S i * U T i * U R i) +
3 * ∑ i, (D S i * D T i * D R i) + 2 * ∑ i, (L S i * L T i * L R i) +
∑ i, (E S i * E T i * E R i) + ∑ i, (N S i * N T i * N R i) := by
erw [← cubeTriLin.toFun_eq_coe]
rw [cubeTriLin]
simp only
simp only [TriLinearSymm.mk₃, BiLinearSymm.mk₂, SMνSpecies_numberCharges, toSpecies_apply,
Fin.isValue, AddHom.toFun_eq_coe, AddHom.coe_mk, LinearMap.coe_mk]
repeat erw [Finset.sum_add_distrib]
repeat erw [← Finset.mul_sum]

View file

@ -210,7 +210,7 @@ lemma familyUniversal_accQuad (S : (SMνCharges 1).charges) :
ring
lemma familyUniversal_cubeTriLin (S : (SMνCharges 1).charges) (T R : (SMνCharges n).charges) :
cubeTriLin (familyUniversal n S, T, R) = 6 * S (0 : Fin 6) * ∑ i, (Q T i * Q R i) +
cubeTriLin (familyUniversal n S) T R = 6 * S (0 : Fin 6) * ∑ i, (Q T i * Q R i) +
3 * S (1 : Fin 6) * ∑ i, (U T i * U R i) + 3 * S (2 : Fin 6) * ∑ i, (D T i * D R i)
+ 2 * S (3 : Fin 6) * ∑ i, (L T i * L R i) +
S (4 : Fin 6) * ∑ i, (E T i * E R i) + S (5 : Fin 6) * ∑ i, (N T i * N R i) := by
@ -221,7 +221,7 @@ lemma familyUniversal_cubeTriLin (S : (SMνCharges 1).charges) (T R : (SMνCharg
ring
lemma familyUniversal_cubeTriLin' (S T : (SMνCharges 1).charges) (R : (SMνCharges n).charges) :
cubeTriLin (familyUniversal n S, familyUniversal n T, R) =
cubeTriLin (familyUniversal n S) (familyUniversal n T) R =
6 * S (0 : Fin 6) * T (0 : Fin 6) * ∑ i, Q R i +
3 * S (1 : Fin 6) * T (1 : Fin 6) * ∑ i, U R i
+ 3 * S (2 : Fin 6) * T (2 : Fin 6) * ∑ i, D R i +

View file

@ -31,7 +31,7 @@ def B₀ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₀_cubic (S T : (SM 3).charges) : cubeTriLin (B₀, S, T) =
lemma B₀_cubic (S T : (SM 3).charges) : cubeTriLin B₀ S T =
6 * (S (0 : Fin 18) * T (0 : Fin 18) - S (1 : Fin 18) * T (1 : Fin 18)) := by
simp [Fin.sum_univ_three, B₀, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring
@ -44,7 +44,7 @@ def B₁ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₁_cubic (S T : (SM 3).charges) : cubeTriLin (B₁, S, T) =
lemma B₁_cubic (S T : (SM 3).charges) : cubeTriLin B₁ S T =
3 * (S (3 : Fin 18) * T (3 : Fin 18) - S (4 : Fin 18) * T (4 : Fin 18)) := by
simp [Fin.sum_univ_three, B₁, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring
@ -57,7 +57,7 @@ def B₂ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₂_cubic (S T : (SM 3).charges) : cubeTriLin (B₂, S, T) =
lemma B₂_cubic (S T : (SM 3).charges) : cubeTriLin B₂ S T =
3 * (S (6 : Fin 18) * T (6 : Fin 18) - S (7 : Fin 18) * T (7 : Fin 18)) := by
simp [Fin.sum_univ_three, B₂, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring
@ -70,7 +70,7 @@ def B₃ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₃_cubic (S T : (SM 3).charges) : cubeTriLin (B₃, S, T) =
lemma B₃_cubic (S T : (SM 3).charges) : cubeTriLin B₃ S T =
2 * (S (9 : Fin 18) * T (9 : Fin 18) - S (10 : Fin 18) * T (10 : Fin 18)) := by
simp [Fin.sum_univ_three, B₃, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring_nf
@ -84,7 +84,7 @@ def B₄ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₄_cubic (S T : (SM 3).charges) : cubeTriLin (B₄, S, T) =
lemma B₄_cubic (S T : (SM 3).charges) : cubeTriLin B₄ S T =
(S (12 : Fin 18) * T (12 : Fin 18) - S (13 : Fin 18) * T (13 : Fin 18)) := by
simp [Fin.sum_univ_three, B₄, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring_nf
@ -98,7 +98,7 @@ def B₅ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₅_cubic (S T : (SM 3).charges) : cubeTriLin (B₅, S, T) =
lemma B₅_cubic (S T : (SM 3).charges) : cubeTriLin B₅ S T =
(S (15 : Fin 18) * T (15 : Fin 18) - S (16 : Fin 18) * T (16 : Fin 18)) := by
simp [Fin.sum_univ_three, B₅, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring_nf
@ -112,7 +112,7 @@ def B₆ : (SM 3).charges := toSpeciesEquiv.invFun ( fun s => fun i =>
| _, _ => 0
)
lemma B₆_cubic (S T : (SM 3).charges) : cubeTriLin (B₆, S, T) =
lemma B₆_cubic (S T : (SM 3).charges) : cubeTriLin B₆ S T =
3* (S (5 : Fin 18) * T (5 : Fin 18) - S (8 : Fin 18) * T (8 : Fin 18)) := by
simp [Fin.sum_univ_three, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
ring_nf
@ -130,8 +130,8 @@ def B : Fin 7 → (SM 3).charges := fun i =>
| 6 => B₆
lemma B₀_Bi_cubic {i : Fin 7} (hi : 0 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 0, B i, S) = 0 := by
change cubeTriLin (B₀, B i, S) = 0
cubeTriLin (B 0) (B i) S = 0 := by
change cubeTriLin B₀ (B i) S = 0
rw [B₀_cubic]
fin_cases i <;>
simp at hi <;>
@ -139,55 +139,55 @@ lemma B₀_Bi_cubic {i : Fin 7} (hi : 0 ≠ i) (S : (SM 3).charges) :
lemma B₁_Bi_cubic {i : Fin 7} (hi : 1 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 1, B i, S) = 0 := by
change cubeTriLin (B₁, B i, S) = 0
cubeTriLin (B 1) (B i) S = 0 := by
change cubeTriLin B₁ (B i) S = 0
rw [B₁_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₂_Bi_cubic {i : Fin 7} (hi : 2 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 2, B i, S) = 0 := by
change cubeTriLin (B₂, B i, S) = 0
cubeTriLin (B 2) (B i) S = 0 := by
change cubeTriLin B₂ (B i) S = 0
rw [B₂_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₃_Bi_cubic {i : Fin 7} (hi : 3 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 3, B i, S) = 0 := by
change cubeTriLin (B₃, B i, S) = 0
cubeTriLin (B 3) (B i) S = 0 := by
change cubeTriLin (B₃) (B i) S = 0
rw [B₃_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₄_Bi_cubic {i : Fin 7} (hi : 4 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 4, B i, S) = 0 := by
change cubeTriLin (B₄, B i, S) = 0
cubeTriLin (B 4) (B i) S = 0 := by
change cubeTriLin (B₄) (B i) S = 0
rw [B₄_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₅_Bi_cubic {i : Fin 7} (hi : 5 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 5, B i, S) = 0 := by
change cubeTriLin (B₅, B i, S) = 0
cubeTriLin (B 5) (B i) S = 0 := by
change cubeTriLin (B₅) (B i) S = 0
rw [B₅_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₆_Bi_cubic {i : Fin 7} (hi : 6 ≠ i) (S : (SM 3).charges) :
cubeTriLin (B 6, B i, S) = 0 := by
change cubeTriLin (B₆, B i, S) = 0
cubeTriLin (B 6) (B i) S = 0 := by
change cubeTriLin (B₆) (B i) S = 0
rw [B₆_cubic]
fin_cases i <;>
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
simp at hi <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma Bi_Bj_ne_cubic {i j : Fin 7} (h : i ≠ j) (S : (SM 3).charges) :
cubeTriLin (B i, B j, S) = 0 := by
cubeTriLin (B i) (B j) S = 0 := by
fin_cases i
exact B₀_Bi_cubic h S
exact B₁_Bi_cubic h S
@ -198,57 +198,57 @@ lemma Bi_Bj_ne_cubic {i j : Fin 7} (h : i ≠ j) (S : (SM 3).charges) :
exact B₆_Bi_cubic h S
lemma B₀_B₀_Bi_cubic {i : Fin 7} :
cubeTriLin (B 0, B 0, B i) = 0 := by
change cubeTriLin (B₀, B₀, B i) = 0
cubeTriLin (B 0) (B 0) (B i) = 0 := by
change cubeTriLin (B₀) (B₀) (B i) = 0
rw [B₀_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₁_B₁_Bi_cubic {i : Fin 7} :
cubeTriLin (B 1, B 1, B i) = 0 := by
change cubeTriLin (B₁, B₁, B i) = 0
cubeTriLin (B 1) (B 1) (B i) = 0 := by
change cubeTriLin (B₁) (B₁) (B i) = 0
rw [B₁_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₂_B₂_Bi_cubic {i : Fin 7} :
cubeTriLin (B 2, B 2, B i) = 0 := by
change cubeTriLin (B₂, B₂, B i) = 0
cubeTriLin (B 2) (B 2) (B i) = 0 := by
change cubeTriLin (B₂) (B₂) (B i) = 0
rw [B₂_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₃_B₃_Bi_cubic {i : Fin 7} :
cubeTriLin (B 3, B 3, B i) = 0 := by
change cubeTriLin (B₃, B₃, B i) = 0
cubeTriLin (B 3) (B 3) (B i) = 0 := by
change cubeTriLin (B₃) (B₃) (B i) = 0
rw [B₃_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₄_B₄_Bi_cubic {i : Fin 7} :
cubeTriLin (B 4, B 4, B i) = 0 := by
change cubeTriLin (B₄, B₄, B i) = 0
cubeTriLin (B 4) (B 4) (B i) = 0 := by
change cubeTriLin (B₄) (B₄) (B i) = 0
rw [B₄_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₅_B₅_Bi_cubic {i : Fin 7} :
cubeTriLin (B 5, B 5, B i) = 0 := by
change cubeTriLin (B₅, B₅, B i) = 0
cubeTriLin (B 5) (B 5) (B i) = 0 := by
change cubeTriLin (B₅) (B₅) (B i) = 0
rw [B₅_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma B₆_B₆_Bi_cubic {i : Fin 7} :
cubeTriLin (B 6, B 6, B i) = 0 := by
change cubeTriLin (B₆, B₆, B i) = 0
cubeTriLin (B 6) (B 6) (B i) = 0 := by
change cubeTriLin (B₆) (B₆) (B i) = 0
rw [B₆_cubic]
fin_cases i <;>
simp [B₀, B₁, B₂, B₃, B₄, B₅, B₆, Fin.divNat, Fin.modNat, finProdFinEquiv]
lemma Bi_Bi_Bj_cubic (i j : Fin 7) :
cubeTriLin (B i, B i, B j) = 0 := by
cubeTriLin (B i) (B i) (B j) = 0 := by
fin_cases i
exact B₀_B₀_Bi_cubic
exact B₁_B₁_Bi_cubic
@ -259,7 +259,7 @@ lemma Bi_Bi_Bj_cubic (i j : Fin 7) :
exact B₆_B₆_Bi_cubic
lemma Bi_Bj_Bk_cubic (i j k : Fin 7) :
cubeTriLin (B i, B j, B k) = 0 := by
cubeTriLin (B i) (B j) (B k) = 0 := by
by_cases hij : i ≠ j
exact Bi_Bj_ne_cubic hij (B k)
simp at hij
@ -267,7 +267,7 @@ lemma Bi_Bj_Bk_cubic (i j k : Fin 7) :
exact Bi_Bi_Bj_cubic j k
theorem B_in_accCube (f : Fin 7 → ) : accCube (∑ i, f i • B i) = 0 := by
change cubeTriLin _ = 0
change cubeTriLin _ _ _ = 0
rw [cubeTriLin.map_sum₁₂₃]
apply Fintype.sum_eq_zero
intro i

View file

@ -91,7 +91,7 @@ lemma addQuad_zero (S : (PlusU1 n).QuadSols) (a : ): addQuad S a 0 = a • S
rfl
lemma on_cubeTriLin (S : (PlusU1 n).charges) :
cubeTriLin ((BL n).val, (BL n).val, S) = 9 * accGrav S - 24 * accSU3 S := by
cubeTriLin (BL n).val (BL n).val S = 9 * accGrav S - 24 * accSU3 S := by
erw [familyUniversal_cubeTriLin']
rw [accGrav_decomp, accSU3_decomp]
simp only [Fin.isValue, BL₁_val, mul_one, SMνSpecies_numberCharges, toSpecies_apply, mul_neg,
@ -99,18 +99,18 @@ lemma on_cubeTriLin (S : (PlusU1 n).charges) :
ring
lemma on_cubeTriLin_AFL (S : (PlusU1 n).LinSols) :
cubeTriLin ((BL n).val, (BL n).val, S.val) = 0 := by
cubeTriLin (BL n).val (BL n).val S.val = 0 := by
rw [on_cubeTriLin]
rw [gravSol S, SU3Sol S]
simp
lemma add_AFL_cube (S : (PlusU1 n).LinSols) (a b : ) :
accCube (a • S.val + b • (BL n).val) =
a ^ 2 * (a * accCube S.val + 3 * b * cubeTriLin (S.val, S.val, (BL n).val)) := by
a ^ 2 * (a * accCube S.val + 3 * b * cubeTriLin S.val S.val (BL n).val) := by
erw [TriLinearSymm.toCubic_add, cubeSol (b • (BL n)), accCube.map_smul]
repeat rw [cubeTriLin.map_smul₁, cubeTriLin.map_smul₂, cubeTriLin.map_smul₃]
rw [on_cubeTriLin_AFL]
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, cubeTriLin_toFun, Fin.isValue,
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, Fin.isValue,
add_zero, BL_val, mul_zero]
ring

View file

@ -90,7 +90,7 @@ lemma addQuad_zero (S : (PlusU1 n).QuadSols) (a : ): addQuad S a 0 = a • S
rfl
lemma on_cubeTriLin (S : (PlusU1 n).charges) :
cubeTriLin ((Y n).val, (Y n).val, S) = 6 * accYY S := by
cubeTriLin (Y n).val (Y n).val S = 6 * accYY S := by
erw [familyUniversal_cubeTriLin']
rw [accYY_decomp]
simp only [Fin.isValue, Y₁_val, mul_one, SMνSpecies_numberCharges, toSpecies_apply, mul_neg,
@ -98,13 +98,13 @@ lemma on_cubeTriLin (S : (PlusU1 n).charges) :
ring
lemma on_cubeTriLin_AFL (S : (PlusU1 n).LinSols) :
cubeTriLin ((Y n).val, (Y n).val, S.val) = 0 := by
cubeTriLin (Y n).val (Y n).val S.val = 0 := by
rw [on_cubeTriLin]
rw [YYsol S]
simp
lemma on_cubeTriLin' (S : (PlusU1 n).charges) :
cubeTriLin ((Y n).val, S, S) = 6 * accQuad S := by
cubeTriLin (Y n).val S S = 6 * accQuad S := by
erw [familyUniversal_cubeTriLin]
rw [accQuad_decomp]
simp only [Fin.isValue, Y₁_val, mul_one, SMνSpecies_numberCharges, toSpecies_apply, mul_neg,
@ -112,18 +112,18 @@ lemma on_cubeTriLin' (S : (PlusU1 n).charges) :
ring_nf
lemma on_cubeTriLin'_ALQ (S : (PlusU1 n).QuadSols) :
cubeTriLin ((Y n).val, S.val, S.val) = 0 := by
cubeTriLin (Y n).val S.val S.val = 0 := by
rw [on_cubeTriLin']
rw [quadSol S]
simp
lemma add_AFL_cube (S : (PlusU1 n).LinSols) (a b : ) :
accCube (a • S.val + b • (Y n).val) =
a ^ 2 * (a * accCube S.val + 3 * b * cubeTriLin (S.val, S.val, (Y n).val)) := by
a ^ 2 * (a * accCube S.val + 3 * b * cubeTriLin S.val S.val (Y n).val) := by
erw [TriLinearSymm.toCubic_add, cubeSol (b • (Y n)), accCube.map_smul]
repeat rw [cubeTriLin.map_smul₁, cubeTriLin.map_smul₂, cubeTriLin.map_smul₃]
rw [on_cubeTriLin_AFL]
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, cubeTriLin_toFun, Fin.isValue,
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, Fin.isValue,
add_zero, Y_val, mul_zero]
ring

View file

@ -204,8 +204,8 @@ lemma isSolution_f9 (f : Fin 11 → ) (hS : (PlusU1 3).isSolution (∑ i, f i
cubeTriLin.map_smul₃, cubeTriLin.map_smul₃] at hc
rw [show accCube B₉ = 9 by rfl] at hc
rw [show accCube B₁₀ = 1 by rfl] at hc
rw [show cubeTriLin (B₉, B₉, B₁₀) = 0 by rfl] at hc
rw [show cubeTriLin (B₁₀, B₁₀, B₉) = 0 by rfl] at hc
rw [show cubeTriLin B₉ B₉ B₁₀ = 0 by rfl] at hc
rw [show cubeTriLin B₁₀ B₁₀ B₉ = 0 by rfl] at hc
simp at hc
have h1 : f 9 ^ 3 * 9 + (-(3 * f 9)) ^ 3 = - 18 * f 9 ^ 3 := by
ring

View file

@ -29,7 +29,7 @@ open BigOperators
variable {n : }
/-- A helper function for what follows. -/
@[simp]
def α₁ (S : (PlusU1 n).QuadSols) : := - 3 * cubeTriLin (S.val, S.val, (BL n).val)
def α₁ (S : (PlusU1 n).QuadSols) : := - 3 * cubeTriLin S.val S.val (BL n).val
/-- A helper function for what follows. -/
@[simp]