refactor: Quad Lin equations

This commit is contained in:
jstoobysmith 2024-04-22 08:41:50 -04:00
parent 772e78ca77
commit b5dd319eed
14 changed files with 245 additions and 299 deletions

View file

@ -230,21 +230,23 @@ lemma accYY_ext {S T : (SMνCharges n).charges}
/-- The quadratic bilinear map. -/
@[simps!]
def quadBiLin : BiLinearSymm (SMνCharges n).charges where
toFun S := ∑ i, (Q S.1 i * Q S.2 i +
def quadBiLin : BiLinearSymm (SMνCharges n).charges := BiLinearSymm.mk₂
(fun S => ∑ i, (Q S.1 i * Q S.2 i +
- 2 * (U S.1 i * U S.2 i) +
D S.1 i * D S.2 i +
(- 1) * (L S.1 i * L S.2 i) +
E S.1 i * E S.2 i)
map_smul₁' a S T := by
E S.1 i * E S.2 i))
(by
intro a S T
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 := by
ring)
(by
intro S T R
simp only
rw [← Finset.sum_add_distrib]
apply Fintype.sum_congr
@ -252,19 +254,20 @@ def quadBiLin : BiLinearSymm (SMνCharges n).charges where
repeat erw [map_add]
simp only [ACCSystemCharges.chargesAddCommMonoid_add, toSpecies_apply, Fin.isValue, neg_mul,
one_mul]
ring
swap' S T := by
ring)
(by
intro S T
simp only [SMνSpecies_numberCharges, toSpecies_apply, Fin.isValue, neg_mul, one_mul]
apply Fintype.sum_congr
intro i
ring
ring)
lemma quadBiLin_decomp (S T : (SMνCharges n).charges) :
quadBiLin (S, T) = ∑ i, Q S i * Q T i - 2 * ∑ i, U S i * U T i +
quadBiLin S T = ∑ i, Q S i * Q T i - 2 * ∑ i, U S i * U T i +
∑ i, D S i * D T i - ∑ i, L S i * L T i + ∑ i, E S i * E T i := by
erw [← quadBiLin.toFun_eq_coe]
rw [quadBiLin]
simp only
simp only [quadBiLin, BiLinearSymm.mk₂, AddHom.toFun_eq_coe, AddHom.coe_mk, LinearMap.coe_mk]
repeat erw [Finset.sum_add_distrib]
repeat erw [← Finset.mul_sum]
simp only [SMνSpecies_numberCharges, toSpecies_apply, Fin.isValue, neg_mul, one_mul, add_left_inj]

View file

@ -190,7 +190,7 @@ lemma familyUniversal_accYY (S : (SMνCharges 1).charges) :
ring
lemma familyUniversal_quadBiLin (S : (SMνCharges 1).charges) (T : (SMνCharges n).charges) :
quadBiLin (familyUniversal n S, T) =
quadBiLin (familyUniversal n S) T =
S (0 : Fin 6) * ∑ i, Q T i - 2 * S (1 : Fin 6) * ∑ i, U T i + S (2 : Fin 6) *∑ i, D T i -
S (3 : Fin 6) * ∑ i, L T i + S (4 : Fin 6) * ∑ i, E T i := by
rw [quadBiLin_decomp]

View file

@ -58,14 +58,14 @@ namespace BL
variable {n : }
lemma on_quadBiLin (S : (PlusU1 n).charges) :
quadBiLin ((BL n).val, S) = 1/2 * accYY S + 3/2 * accSU2 S - 2 * accSU3 S := by
quadBiLin (BL n).val S = 1/2 * accYY S + 3/2 * accSU2 S - 2 * accSU3 S := by
erw [familyUniversal_quadBiLin]
rw [accYY_decomp, accSU2_decomp, accSU3_decomp]
simp only [Fin.isValue, BL₁_val, SMνSpecies_numberCharges, toSpecies_apply, one_mul, mul_neg,
mul_one, neg_mul, sub_neg_eq_add, one_div]
ring
lemma on_quadBiLin_AFL (S : (PlusU1 n).LinSols) : quadBiLin ((BL n).val, S.val) = 0 := by
lemma on_quadBiLin_AFL (S : (PlusU1 n).LinSols) : quadBiLin (BL n).val S.val = 0 := by
rw [on_quadBiLin]
rw [YYsol S, SU2Sol S, SU3Sol S]
simp
@ -110,8 +110,8 @@ lemma add_AFL_cube (S : (PlusU1 n).LinSols) (a b : ) :
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 [accCube, TriLinearSymm.toCubic_toFun, cubeTriLin_toFun, Fin.isValue, add_zero, BL_val,
mul_zero]
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, cubeTriLin_toFun, Fin.isValue,
add_zero, BL_val, mul_zero]
ring

View file

@ -56,7 +56,7 @@ namespace Y
variable {n : }
lemma on_quadBiLin (S : (PlusU1 n).charges) :
quadBiLin ((Y n).val, S) = accYY S := by
quadBiLin (Y n).val S = accYY S := by
erw [familyUniversal_quadBiLin]
rw [accYY_decomp]
simp only [Fin.isValue, Y₁_val, SMνSpecies_numberCharges, toSpecies_apply, one_mul, mul_neg,
@ -64,7 +64,7 @@ lemma on_quadBiLin (S : (PlusU1 n).charges) :
ring_nf
simp
lemma on_quadBiLin_AFL (S : (PlusU1 n).LinSols) : quadBiLin ((Y n).val, S.val) = 0 := by
lemma on_quadBiLin_AFL (S : (PlusU1 n).LinSols) : quadBiLin (Y n).val S.val = 0 := by
rw [on_quadBiLin]
rw [YYsol S]
@ -123,8 +123,8 @@ lemma add_AFL_cube (S : (PlusU1 n).LinSols) (a b : ) :
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 [accCube, TriLinearSymm.toCubic_toFun, cubeTriLin_toFun, Fin.isValue, add_zero, Y_val,
mul_zero]
simp only [HomogeneousCubic, accCube, TriLinearSymm.toCubic_apply, cubeTriLin_toFun, Fin.isValue,
add_zero, Y_val, mul_zero]
ring
lemma add_AFQ_cube (S : (PlusU1 n).QuadSols) (a b : ) :

View file

@ -74,13 +74,13 @@ def B : Fin 11 → (PlusU1 3).charges := fun i =>
| 9 => B₉
| 10 => B₁₀
lemma Bi_Bj_quad {i j : Fin 11} (hi : i ≠ j) : quadBiLin (B i, B j) = 0 := by
lemma Bi_Bj_quad {i j : Fin 11} (hi : i ≠ j) : quadBiLin (B i) (B j) = 0 := by
fin_cases i <;> fin_cases j
any_goals rfl
all_goals simp at hi
lemma Bi_sum_quad (i : Fin 11) (f : Fin 11 → ) :
quadBiLin (B i, ∑ k, f k • B k) = f i * quadBiLin (B i, B i) := by
quadBiLin (B i) (∑ k, f k • B k) = f i * quadBiLin (B i) (B i) := by
rw [quadBiLin.map_sum₂]
rw [Fintype.sum_eq_single i]
rw [quadBiLin.map_smul₂]
@ -92,13 +92,13 @@ lemma Bi_sum_quad (i : Fin 11) (f : Fin 11 → ) :
@[simp]
def quadCoeff : Fin 11 → := ![1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]
lemma quadCoeff_eq_bilinear (i : Fin 11) : quadCoeff i = quadBiLin (B i, B i) := by
lemma quadCoeff_eq_bilinear (i : Fin 11) : quadCoeff i = quadBiLin (B i) (B i) := by
fin_cases i
all_goals rfl
lemma on_accQuad (f : Fin 11 → ) :
accQuad (∑ i, f i • B i) = ∑ i, quadCoeff i * (f i)^2 := by
change quadBiLin _ = _
change quadBiLin _ _ = _
rw [quadBiLin.map_sum₁]
apply Fintype.sum_congr
intro i

View file

@ -33,14 +33,14 @@ variable (C : (PlusU1 n).QuadSols)
lemma add_AFL_quad (S : (PlusU1 n).LinSols) (a b : ) :
accQuad (a • S.val + b • C.val) =
a * (a * accQuad S.val + 2 * b * quadBiLin (S.val, C.val)) := by
a * (a * accQuad S.val + 2 * b * quadBiLin S.val C.val) := by
erw [BiLinearSymm.toHomogeneousQuad_add, quadSol (b • C)]
rw [quadBiLin.map_smul₁, quadBiLin.map_smul₂]
erw [accQuad.map_smul]
ring
/-- A helper function for what comes later. -/
def α₁ (S : (PlusU1 n).LinSols) : := - 2 * quadBiLin (S.val, C.val)
def α₁ (S : (PlusU1 n).LinSols) : := - 2 * quadBiLin S.val C.val
/-- A helper function for what comes later. -/
def α₂ (S : (PlusU1 n).LinSols) : := accQuad S.val