feat: Fill in sorries

This commit is contained in:
jstoobysmith 2024-12-19 09:48:35 +00:00
parent 3123e831d8
commit ab7da149c6
5 changed files with 1432 additions and 454 deletions

View file

@ -27,15 +27,15 @@ namespace Wick
noncomputable section
class SuperCommuteCenterMap {A : Type} [Semiring A] [Algebra A]
(f : FreeAlgebra I →ₐ[] A) : Prop where
prop : ∀ i j, f (superCommute q (FreeAlgebra.ι i) (FreeAlgebra.ι j)) ∈ Subalgebra.center A
(q : I → Fin 2) (F : FreeAlgebra I →ₐ[] A) : Prop where
prop : ∀ i j, F (superCommute q (FreeAlgebra.ι i) (FreeAlgebra.ι j)) ∈ Subalgebra.center A
dif_grade : ∀ i j, q i ≠ q j → F (superCommute q (FreeAlgebra.ι i) (FreeAlgebra.ι j)) = 0
namespace SuperCommuteCenterMap
variable {I : Type} {A : Type} [Semiring A] [Algebra A]
(f : FreeAlgebra I →ₐ[] A) [SuperCommuteCenterMap f]
(f : FreeAlgebra I →ₐ[] A) (q : I → Fin 2) [SuperCommuteCenterMap q f]
lemma ofList_fst (q : I → Fin 2) (i j : I) :
lemma ofList_fst (i j : I) :
f (superCommute q (ofList [i] xa) (FreeAlgebra.ι j)) ∈ Subalgebra.center A := by
have h1 : f (superCommute q (ofList [i] xa) (FreeAlgebra.ι j)) =
xa • f (superCommute q (FreeAlgebra.ι i) (FreeAlgebra.ι j)) := by
@ -51,7 +51,7 @@ lemma ofList_fst (q : I → Fin 2) (i j : I) :
lemma ofList_freeAlgebraMap {I : Type} {f : I → Type} [∀ i, Fintype (f i)]
(q : I → Fin 2) (c : (Σ i, f i)) (x : )
{A : Type} [Semiring A] [Algebra A] (F : FreeAlgebra (Σ i, f i) →ₐ[] A)
[SuperCommuteCenterMap F] (b : I) :
[SuperCommuteCenterMap (fun i => q i.1) F] (b : I) :
F ((superCommute fun i => q i.fst) (ofList [c] x) ((freeAlgebraMap f) (FreeAlgebra.ι b)))
∈ Subalgebra.center A := by
rw [freeAlgebraMap_ι]
@ -64,7 +64,7 @@ end SuperCommuteCenterMap
lemma superCommuteTake_superCommuteCenterMap {I : Type} (q : I → Fin 2) (lb : List I) (xa xb : ) (n : )
(hn : n < lb.length) {A : Type} [Semiring A] [Algebra A] (f : FreeAlgebra I →ₐ[] A)
[SuperCommuteCenterMap f] (i : I) :
[SuperCommuteCenterMap q f] (i : I) :
f (superCommuteTake q [i] lb xa xb n hn) =
f (superCommute q (ofList [i] xa) (FreeAlgebra.ι (lb.get ⟨n, hn⟩)))
* (superCommuteCoef q [i] (List.take n lb) •
@ -83,7 +83,7 @@ lemma superCommuteTakeM_F {I : Type} {f : I → Type} [∀ i, Fintype (f i)]
(q : I → Fin 2) (c : (Σ i, f i)) (r : List I) (x y : ) (n : )
(hn : n < r.length)
{A : Type} [Semiring A] [Algebra A] (F : FreeAlgebra (Σ i, f i) →ₐ[] A)
[SuperCommuteCenterMap F] :
[SuperCommuteCenterMap (fun i => q i.1) F] :
F (superCommuteTakeM q [c] r x y n hn) = superCommuteCoefM q [c] (List.take n r) •
(F (superCommute (fun i => q i.1) (ofList [c] x) (freeAlgebraMap f (FreeAlgebra.ι (r.get ⟨n, hn⟩))))
* F (ofListM f (List.eraseIdx r n) y)) := by
@ -105,104 +105,102 @@ lemma superCommuteTakeM_F {I : Type} {f : I → Type} [∀ i, Fintype (f i)]
lemma superCommute_koszulOrder_le_ofList {I : Type}
(q : I → Fin 2) (r : List I) (x : )
(le1 :I → I → Prop) [DecidableRel le1]
(le1 :I → I → Prop) [DecidableRel le1] [IsTotal I le1] [IsTrans I le1]
(i : I)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F] :
F ((superCommute q (FreeAlgebra.ι i) (koszulOrder le1 q (ofList r x)))) =
∑ n : Fin r.length, (superCommuteCoef q [r.get n] (r.take n)) •
(F (((superCommute q) (ofList [i] 1)) (FreeAlgebra.ι (r.get n))) *
F ((koszulOrder le1 q) (ofList (r.eraseIdx ↑n) x))) := by
rw [koszulOrder_ofList]
rw [map_smul, map_smul, ← ofList_singleton]
rw [superCommute_ofList_sum]
rw [map_sum]
rw [← (HepLean.List.insertionSortEquiv le1 r).sum_comp]
rw [koszulOrder_ofList, map_smul, map_smul, ← ofList_singleton, superCommute_ofList_sum]
rw [map_sum, ← (HepLean.List.insertionSortEquiv le1 r).sum_comp]
conv_lhs =>
rhs
rhs
enter [2, 2]
intro n
rw [superCommuteTake_superCommuteCenterMap]
lhs
rhs
rhs
rhs
enter [1, 2, 2, 2]
change ((List.insertionSort le1 r).get ∘ (HepLean.List.insertionSortEquiv le1 r)) n
rw [HepLean.List.insertionSort_get_comp_insertionSortEquiv]
have hListErase (n : Fin r.length ) : (List.insertionSort le1 r).eraseIdx ↑((HepLean.List.insertionSortEquiv le1 r) n)
= List.insertionSort le1 (r.eraseIdx n) := by sorry
conv_lhs =>
rhs
rhs
enter [2, 2]
intro n
rw [hListErase]
rw [HepLean.List.eraseIdx_insertionSort_fin le1 r n]
rw [ofList_insertionSort_eq_koszulOrder le1 q]
rw [Finset.smul_sum]
conv_lhs =>
rhs
intro n
rw [map_smul]
rw [smul_smul]
rw [Algebra.mul_smul_comm]
rw [smul_smul]
rw [map_smul, smul_smul, Algebra.mul_smul_comm, smul_smul]
congr
funext n
congr 1
trans superCommuteCoefLE q le1 r i n
· rw [superCommuteCoefLE]
rw [mul_assoc]
exact superCommuteCoefLE_eq_get q le1 r i n
by_cases hq : q i ≠ q (r.get n)
· have hn := SuperCommuteCenterMap.dif_grade (q := q) (F := F) i (r.get n) hq
conv_lhs =>
enter [2, 1]
rw [ofList_singleton, hn]
conv_rhs =>
enter [2, 1]
rw [ofList_singleton, hn]
simp
· congr 1
trans superCommuteCoefLE q le1 r i n
· rw [superCommuteCoefLE, mul_assoc]
refine superCommuteCoefLE_eq_get q le1 r i n ?_
simpa using hq
lemma koszulOrder_of_le_all_ofList {I : Type}
(q : I → Fin 2) (r : List I) (x : ) (le1 : I → I → Prop) [DecidableRel le1]
(i : I) (hi : ∀ j, le1 j i)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F] :
F (koszulOrder le1 q (ofList r x * FreeAlgebra.ι i))
= superCommuteCoef q [i] r • F (koszulOrder le1 q (FreeAlgebra.ι i * ofList r x)) := by
conv_lhs =>
rhs
rhs
enter [2, 2]
rw [← ofList_singleton]
rw [ofListM_ofList_superCommute' q]
rw [map_sub]
rw [sub_eq_add_neg]
rw [map_add]
conv_lhs =>
rhs
rhs
enter [2, 2]
rw [map_smul]
rw [← neg_smul]
rw [map_smul, map_smul, map_smul]
sorry
lemma le_all_mul_koszulOrder_ofList {I : Type}
(q : I → Fin 2) (r : List I) (x : ) (le1 : I → I→ Prop) [DecidableRel le1]
(i : I) (hi : ∀ (j : I), le1 j i)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F] :
F (FreeAlgebra.ι i * koszulOrder le1 q (ofList r x)) =
F ((koszulOrder le1 q) (FreeAlgebra.ι i * ofList r x)) +
F (((superCommute q) (ofList [i] 1)) ((koszulOrder le1 q) (ofList r x))) := by
rw [koszulOrder_ofList, Algebra.mul_smul_comm, map_smul, ← ofList_singleton,
ofList_ofList_superCommute q, map_add, smul_add, ← map_smul]
conv_lhs =>
lhs
rhs
enter [1, 2]
rw [← Algebra.smul_mul_assoc, smul_smul, mul_comm, ← smul_smul, ← koszulOrder_ofList,
Algebra.smul_mul_assoc, ofList_singleton]
rw [koszulOrder_mul_ge, map_smul]
congr
· rw [koszulOrder_of_le_all_ofList]
sorry
sorry
rw [superCommuteCoef_perm_snd q [i] (List.insertionSort le1 r) r
(List.perm_insertionSort le1 r)]
rw [smul_smul]
rw [superCommuteCoef_mul_self]
simp [ofList_singleton]
exact fun j => hi j
· rw [map_smul, map_smul]
· exact fun j => hi j
def superCommuteCenterOrder {I : Type}
(q : I → Fin 2) (r : List I) (i : I)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F]
(n : Option (Fin r.length)) : A :=
match n with
| none => 1
@ -212,7 +210,7 @@ def superCommuteCenterOrder {I : Type}
lemma superCommuteCenterOrder_none {I : Type}
(q : I → Fin 2) (r : List I) (i : I)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F] :
superCommuteCenterOrder q r i F none = 1 := by
simp [superCommuteCenterOrder]
@ -220,9 +218,10 @@ open HepLean.List
lemma le_all_mul_koszulOrder_ofList_expand {I : Type}
(q : I → Fin 2) (r : List I) (x : ) (le1 : I → I→ Prop) [DecidableRel le1]
[IsTotal I le1] [IsTrans I le1]
(i : I) (hi : ∀ (j : I), le1 j i)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra I →ₐ A) [SuperCommuteCenterMap q F] :
F (FreeAlgebra.ι i * koszulOrder le1 q (ofList r x)) =
∑ n, superCommuteCenterOrder q r i F n * F ((koszulOrder le1 q) (ofList (optionEraseZ r i n) x)) := by
rw [le_all_mul_koszulOrder_ofList]
@ -242,9 +241,10 @@ lemma le_all_mul_koszulOrder_ofList_expand {I : Type}
lemma le_all_mul_koszulOrder_ofListM_expand {I : Type} {f : I → Type} [∀ i, Fintype (f i)]
(q : I → Fin 2) (r : List I) (x : ) (le1 : (Σ i, f i) → (Σ i, f i) → Prop) [DecidableRel le1]
[IsTotal (Σ i, f i) le1] [IsTrans (Σ i, f i) le1]
(i : (Σ i, f i)) (hi : ∀ (j : (Σ i, f i)), le1 j i)
{A : Type} [Semiring A] [Algebra A]
(F : FreeAlgebra (Σ i, f i) →ₐ A) [SuperCommuteCenterMap F] :
(F : FreeAlgebra (Σ i, f i) →ₐ A) [SuperCommuteCenterMap (fun i => q i.1) F] :
F (ofList [i] 1 * koszulOrder le1 (fun i => q i.1) (ofListM f r x)) =
F ((koszulOrder le1 fun i => q i.fst) (ofList [i] 1 * ofListM f r x)) +
∑ n : (Fin r.length), superCommuteCoef q [r.get n] (List.take (↑n) r) •
@ -318,19 +318,19 @@ lemma le_all_mul_koszulOrder_ofListM_expand {I : Type} {f : I → Type} [∀ i,
rhs
intro a0
rw [← Finset.mul_sum]
have hl (a0 : f (r0 :: r)[↑n]) (a : (i : Fin r.length) → f (r0 :: r)[↑(n.succAbove i)]):
have hl (n : Fin (r0 :: r).length) (a0 : f (r0 :: r)[↑n]) (a : (i : Fin r.length) → f (r0 :: r)[↑(n.succAbove i)]):
(ofList (optionEraseZ (liftM f (r0 :: r) ((liftMCongrEquiv f r0 r n).symm (a0, a))) i (some (Fin.cast (by simp ) n))) x)
= ofList ((liftM f ((r0 :: r).eraseIdx ↑n) ((listMEraseEquiv q n).symm a))) x := by
simp only [optionEraseZ, List.get_eq_getElem, List.length_cons, Fin.coe_cast]
simp [liftMCongrEquiv]
congr
sorry
conv_lhs =>
rhs
intro a0
rhs
rhs
enter [2, 2]
intro a
erw [hl a0 a]
erw [hl n a0 a]
rw [← Finset.sum_mul]
conv_lhs =>
lhs