/- Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ import HepLean.PerturbationTheory.FieldOpFreeAlgebra.TimeOrder import HepLean.PerturbationTheory.FieldOpAlgebra.Basic /-! # SuperCommute on Field operator algebra -/ namespace FieldSpecification open FieldOpFreeAlgebra open HepLean.List open FieldStatistic namespace FieldOpAlgebra variable {๐“• : FieldSpecification} lemma ฮน_superCommuteF_eq_zero_of_ฮน_right_zero (a b : ๐“•.FieldOpFreeAlgebra) (h : ฮน b = 0) : ฮน [a, b]โ‚›ca = 0 := by rw [superCommuteF_expand_bosonicProj_fermionicProj] rw [ฮน_eq_zero_iff_ฮน_bosonicProj_fermonicProj_zero] at h simp_all lemma ฮน_superCommuteF_eq_zero_of_ฮน_left_zero (a b : ๐“•.FieldOpFreeAlgebra) (h : ฮน a = 0) : ฮน [a, b]โ‚›ca = 0 := by rw [superCommuteF_expand_bosonicProj_fermionicProj] rw [ฮน_eq_zero_iff_ฮน_bosonicProj_fermonicProj_zero] at h simp_all /-! ## Defining normal order for `FiedOpAlgebra`. -/ lemma ฮน_superCommuteF_right_zero_of_mem_ideal (a b : ๐“•.FieldOpFreeAlgebra) (h : b โˆˆ TwoSidedIdeal.span ๐“•.fieldOpIdealSet) : ฮน [a, b]โ‚›ca = 0 := by apply ฮน_superCommuteF_eq_zero_of_ฮน_right_zero exact (ฮน_eq_zero_iff_mem_ideal b).mpr h lemma ฮน_superCommuteF_eq_of_equiv_right (a b1 b2 : ๐“•.FieldOpFreeAlgebra) (h : b1 โ‰ˆ b2) : ฮน [a, b1]โ‚›ca = ฮน [a, b2]โ‚›ca := by rw [equiv_iff_sub_mem_ideal] at h rw [LinearMap.sub_mem_ker_iff.mp] simp only [LinearMap.mem_ker, โ† map_sub] exact ฮน_superCommuteF_right_zero_of_mem_ideal a (b1 - b2) h /-- The super commutor on the `FieldOpAlgebra` defined as a linear map `[a,_]โ‚›`. -/ noncomputable def superCommuteRight (a : ๐“•.FieldOpFreeAlgebra) : FieldOpAlgebra ๐“• โ†’โ‚—[โ„‚] FieldOpAlgebra ๐“• where toFun := Quotient.lift (ฮน.toLinearMap โˆ˜โ‚— superCommuteF a) (ฮน_superCommuteF_eq_of_equiv_right a) map_add' x y := by obtain โŸจx, hxโŸฉ := ฮน_surjective x obtain โŸจy, hyโŸฉ := ฮน_surjective y subst hx hy rw [โ† map_add, ฮน_apply, ฮน_apply, ฮน_apply] rw [Quotient.lift_mk, Quotient.lift_mk, Quotient.lift_mk] simp map_smul' c y := by obtain โŸจy, hyโŸฉ := ฮน_surjective y subst hy rw [โ† map_smul, ฮน_apply, ฮน_apply] simp lemma superCommuteRight_apply_ฮน (a b : ๐“•.FieldOpFreeAlgebra) : superCommuteRight a (ฮน b) = ฮน [a, b]โ‚›ca := by rfl lemma superCommuteRight_apply_quot (a b : ๐“•.FieldOpFreeAlgebra) : superCommuteRight a โŸฆbโŸง= ฮน [a, b]โ‚›ca := by rfl lemma superCommuteRight_eq_of_equiv (a1 a2 : ๐“•.FieldOpFreeAlgebra) (h : a1 โ‰ˆ a2) : superCommuteRight a1 = superCommuteRight a2 := by rw [equiv_iff_sub_mem_ideal] at h ext b obtain โŸจb, rflโŸฉ := ฮน_surjective b have ha1b1 : (superCommuteRight (a1 - a2)) (ฮน b) = 0 := by rw [superCommuteRight_apply_ฮน] apply ฮน_superCommuteF_eq_zero_of_ฮน_left_zero exact (ฮน_eq_zero_iff_mem_ideal (a1 - a2)).mpr h simp_all only [superCommuteRight_apply_ฮน, map_sub, LinearMap.sub_apply] trans ฮน ((superCommuteF a2) b) + 0 rw [โ† ha1b1] simp only [add_sub_cancel] simp /-- The super commutor on the `FieldOpAlgebra`. -/ noncomputable def superCommute : FieldOpAlgebra ๐“• โ†’โ‚—[โ„‚] FieldOpAlgebra ๐“• โ†’โ‚—[โ„‚] FieldOpAlgebra ๐“• where toFun := Quotient.lift superCommuteRight superCommuteRight_eq_of_equiv map_add' x y := by obtain โŸจx, rflโŸฉ := ฮน_surjective x obtain โŸจy, rflโŸฉ := ฮน_surjective y ext b obtain โŸจb, rflโŸฉ := ฮน_surjective b rw [โ† map_add, ฮน_apply, ฮน_apply, ฮน_apply, ฮน_apply] rw [Quotient.lift_mk, Quotient.lift_mk, Quotient.lift_mk] simp only [LinearMap.add_apply] rw [superCommuteRight_apply_quot, superCommuteRight_apply_quot, superCommuteRight_apply_quot] simp map_smul' c y := by obtain โŸจy, rflโŸฉ := ฮน_surjective y ext b obtain โŸจb, rflโŸฉ := ฮน_surjective b rw [โ† map_smul, ฮน_apply, ฮน_apply, ฮน_apply] simp only [Quotient.lift_mk, RingHom.id_apply, LinearMap.smul_apply] rw [superCommuteRight_apply_quot, superCommuteRight_apply_quot] simp @[inherit_doc superCommute] scoped[FieldSpecification.FieldOpAlgebra] notation "[" a "," b "]โ‚›" => superCommute a b lemma superCommute_eq_ฮน_superCommuteF (a b : ๐“•.FieldOpFreeAlgebra) : [ฮน a, ฮน b]โ‚› = ฮน [a, b]โ‚›ca := rfl /-! ## Properties of `superCommute`. -/ /-! ## Properties from the definition of FieldOpAlgebra -/ lemma superCommute_create_create {ฯ† ฯ†' : ๐“•.CrAnFieldOp} (h : ๐“• |>แถœ ฯ† = .create) (h' : ๐“• |>แถœ ฯ†' = .create) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = 0 := by rw [ofCrAnFieldOp, ofCrAnFieldOp] rw [superCommute_eq_ฮน_superCommuteF, ฮน_superCommuteF_of_create_create _ _ h h'] lemma superCommute_annihilate_annihilate {ฯ† ฯ†' : ๐“•.CrAnFieldOp} (h : ๐“• |>แถœ ฯ† = .annihilate) (h' : ๐“• |>แถœ ฯ†' = .annihilate) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = 0 := by rw [ofCrAnFieldOp, ofCrAnFieldOp] rw [superCommute_eq_ฮน_superCommuteF, ฮน_superCommuteF_of_annihilate_annihilate _ _ h h'] lemma superCommute_diff_statistic {ฯ† ฯ†' : ๐“•.CrAnFieldOp} (h : (๐“• |>โ‚› ฯ†) โ‰  ๐“• |>โ‚› ฯ†') : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = 0 := by rw [ofCrAnFieldOp, ofCrAnFieldOp] rw [superCommute_eq_ฮน_superCommuteF, ฮน_superCommuteF_of_diff_statistic h] lemma superCommute_ofCrAnFieldOp_ofFieldOp_diff_stat_zero (ฯ† : ๐“•.CrAnFieldOp) (ฯˆ : ๐“•.FieldOp) (h : (๐“• |>โ‚› ฯ†) โ‰  (๐“• |>โ‚› ฯˆ)) : [ofCrAnFieldOp ฯ†, ofFieldOp ฯˆ]โ‚› = 0 := by rw [ofFieldOp_eq_sum, map_sum] rw [Finset.sum_eq_zero] intro x hx apply superCommute_diff_statistic simpa [crAnStatistics] using h lemma superCommute_anPart_ofFieldOpF_diff_grade_zero (ฯ† ฯˆ : ๐“•.FieldOp) (h : (๐“• |>โ‚› ฯ†) โ‰  (๐“• |>โ‚› ฯˆ)) : [anPart ฯ†, ofFieldOp ฯˆ]โ‚› = 0 := by match ฯ† with | FieldOp.inAsymp _ => simp | FieldOp.position ฯ† => simp only [anPartF_position] apply superCommute_ofCrAnFieldOp_ofFieldOp_diff_stat_zero _ _ _ simpa [crAnStatistics] using h | FieldOp.outAsymp _ => simp only [anPartF_posAsymp] apply superCommute_ofCrAnFieldOp_ofFieldOp_diff_stat_zero _ _ simpa [crAnStatistics] using h lemma superCommute_ofCrAnFieldOp_ofCrAnFieldOp_mem_center (ฯ† ฯ†' : ๐“•.CrAnFieldOp) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› โˆˆ Subalgebra.center โ„‚ (FieldOpAlgebra ๐“•) := by rw [ofCrAnFieldOp, ofCrAnFieldOp, superCommute_eq_ฮน_superCommuteF] exact ฮน_superCommuteF_ofCrAnOpF_ofCrAnOpF_mem_center ฯ† ฯ†' lemma superCommute_ofCrAnFieldOp_ofCrAnFieldOp_commute (ฯ† ฯ†' : ๐“•.CrAnFieldOp) (a : FieldOpAlgebra ๐“•) : a * [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› * a := by have h1 := superCommute_ofCrAnFieldOp_ofCrAnFieldOp_mem_center ฯ† ฯ†' rw [@Subalgebra.mem_center_iff] at h1 exact h1 a lemma superCommute_ofCrAnFieldOp_ofFieldOp_mem_center (ฯ† : ๐“•.CrAnFieldOp) (ฯ†' : ๐“•.FieldOp) : [ofCrAnFieldOp ฯ†, ofFieldOp ฯ†']โ‚› โˆˆ Subalgebra.center โ„‚ (FieldOpAlgebra ๐“•) := by rw [ofFieldOp_eq_sum] simp only [map_sum] refine Subalgebra.sum_mem (Subalgebra.center โ„‚ ๐“•.FieldOpAlgebra) ?_ intro x hx exact superCommute_ofCrAnFieldOp_ofCrAnFieldOp_mem_center ฯ† โŸจฯ†', xโŸฉ lemma superCommute_ofCrAnFieldOp_ofFieldOp_commute (ฯ† : ๐“•.CrAnFieldOp) (ฯ†' : ๐“•.FieldOp) (a : FieldOpAlgebra ๐“•) : a * [ofCrAnFieldOp ฯ†, ofFieldOp ฯ†']โ‚› = [ofCrAnFieldOp ฯ†, ofFieldOp ฯ†']โ‚› * a := by have h1 := superCommute_ofCrAnFieldOp_ofFieldOp_mem_center ฯ† ฯ†' rw [@Subalgebra.mem_center_iff] at h1 exact h1 a lemma superCommute_anPart_ofFieldOp_mem_center (ฯ† ฯ†' : ๐“•.FieldOp) : [anPart ฯ†, ofFieldOp ฯ†']โ‚› โˆˆ Subalgebra.center โ„‚ (FieldOpAlgebra ๐“•) := by match ฯ† with | FieldOp.inAsymp _ => simp only [anPart_negAsymp, map_zero, LinearMap.zero_apply] exact Subalgebra.zero_mem (Subalgebra.center โ„‚ _) | FieldOp.position ฯ† => exact superCommute_ofCrAnFieldOp_ofFieldOp_mem_center _ _ | FieldOp.outAsymp _ => exact superCommute_ofCrAnFieldOp_ofFieldOp_mem_center _ _ /-! ### `superCommute` on different constructors. -/ lemma superCommute_ofCrAnFieldOpList_ofCrAnFieldOpList (ฯ†s ฯ†s' : List ๐“•.CrAnFieldOp) : [ofCrAnFieldOpList ฯ†s, ofCrAnFieldOpList ฯ†s']โ‚› = ofCrAnFieldOpList (ฯ†s ++ ฯ†s') - ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s') โ€ข ofCrAnFieldOpList (ฯ†s' ++ ฯ†s) := by rw [ofCrAnFieldOpList_eq_ฮน_ofCrAnListF, ofCrAnFieldOpList_eq_ฮน_ofCrAnListF] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnListF_ofCrAnListF] rfl lemma superCommute_ofCrAnFieldOp_ofCrAnFieldOp (ฯ† ฯ†' : ๐“•.CrAnFieldOp) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = ofCrAnFieldOp ฯ† * ofCrAnFieldOp ฯ†' - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข ofCrAnFieldOp ฯ†' * ofCrAnFieldOp ฯ† := by rw [ofCrAnFieldOp, ofCrAnFieldOp] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnOpF_ofCrAnOpF] rfl lemma superCommute_ofCrAnFieldOpList_ofFieldOpList (ฯ†cas : List ๐“•.CrAnFieldOp) (ฯ†s : List ๐“•.FieldOp) : [ofCrAnFieldOpList ฯ†cas, ofFieldOpList ฯ†s]โ‚› = ofCrAnFieldOpList ฯ†cas * ofFieldOpList ฯ†s - ๐“ข(๐“• |>โ‚› ฯ†cas, ๐“• |>โ‚› ฯ†s) โ€ข ofFieldOpList ฯ†s * ofCrAnFieldOpList ฯ†cas := by rw [ofCrAnFieldOpList, ofFieldOpList] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnListF_ofFieldOpFsList] rfl lemma superCommute_ofFieldOpList_ofFieldOpList (ฯ†s ฯ†s' : List ๐“•.FieldOp) : [ofFieldOpList ฯ†s, ofFieldOpList ฯ†s']โ‚› = ofFieldOpList ฯ†s * ofFieldOpList ฯ†s' - ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s') โ€ข ofFieldOpList ฯ†s' * ofFieldOpList ฯ†s := by rw [ofFieldOpList, ofFieldOpList] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofFieldOpListF_ofFieldOpFsList] rfl lemma superCommute_ofFieldOp_ofFieldOpList (ฯ† : ๐“•.FieldOp) (ฯ†s : List ๐“•.FieldOp) : [ofFieldOp ฯ†, ofFieldOpList ฯ†s]โ‚› = ofFieldOp ฯ† * ofFieldOpList ฯ†s - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s) โ€ข ofFieldOpList ฯ†s * ofFieldOp ฯ† := by rw [ofFieldOp, ofFieldOpList] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofFieldOpF_ofFieldOpFsList] rfl lemma superCommute_ofFieldOpList_ofFieldOp (ฯ†s : List ๐“•.FieldOp) (ฯ† : ๐“•.FieldOp) : [ofFieldOpList ฯ†s, ofFieldOp ฯ†]โ‚› = ofFieldOpList ฯ†s * ofFieldOp ฯ† - ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†) โ€ข ofFieldOp ฯ† * ofFieldOpList ฯ†s := by rw [ofFieldOpList, ofFieldOp] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_ofFieldOpListF_ofFieldOpF] rfl lemma superCommute_anPart_crPart (ฯ† ฯ†' : ๐“•.FieldOp) : [anPart ฯ†, crPart ฯ†']โ‚› = anPart ฯ† * crPart ฯ†' - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข crPart ฯ†' * anPart ฯ† := by rw [anPart, crPart] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_anPartF_crPartF] rfl lemma superCommute_crPart_anPart (ฯ† ฯ†' : ๐“•.FieldOp) : [crPart ฯ†, anPart ฯ†']โ‚› = crPart ฯ† * anPart ฯ†' - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข anPart ฯ†' * crPart ฯ† := by rw [anPart, crPart] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_crPartF_anPartF] rfl @[simp] lemma superCommute_crPart_crPart (ฯ† ฯ†' : ๐“•.FieldOp) : [crPart ฯ†, crPart ฯ†']โ‚› = 0 := by match ฯ†, ฯ†' with | FieldOp.outAsymp ฯ†, _ => simp | _, FieldOp.outAsymp ฯ† => simp | FieldOp.position ฯ†, FieldOp.position ฯ†' => simp only [crPart_position] apply superCommute_create_create ยท rfl ยท rfl | FieldOp.position ฯ†, FieldOp.inAsymp ฯ†' => simp only [crPart_position, crPart_negAsymp] apply superCommute_create_create ยท rfl ยท rfl | FieldOp.inAsymp ฯ†, FieldOp.inAsymp ฯ†' => simp only [crPart_negAsymp] apply superCommute_create_create ยท rfl ยท rfl | FieldOp.inAsymp ฯ†, FieldOp.position ฯ†' => simp only [crPart_negAsymp, crPart_position] apply superCommute_create_create ยท rfl ยท rfl @[simp] lemma superCommute_anPart_anPart (ฯ† ฯ†' : ๐“•.FieldOp) : [anPart ฯ†, anPart ฯ†']โ‚› = 0 := by match ฯ†, ฯ†' with | FieldOp.inAsymp ฯ†, _ => simp | _, FieldOp.inAsymp ฯ† => simp | FieldOp.position ฯ†, FieldOp.position ฯ†' => simp only [anPart_position] apply superCommute_annihilate_annihilate ยท rfl ยท rfl | FieldOp.position ฯ†, FieldOp.outAsymp ฯ†' => simp only [anPart_position, anPart_posAsymp] apply superCommute_annihilate_annihilate ยท rfl ยท rfl | FieldOp.outAsymp ฯ†, FieldOp.outAsymp ฯ†' => simp only [anPart_posAsymp] apply superCommute_annihilate_annihilate ยท rfl ยท rfl | FieldOp.outAsymp ฯ†, FieldOp.position ฯ†' => simp only [anPart_posAsymp, anPart_position] apply superCommute_annihilate_annihilate ยท rfl ยท rfl lemma superCommute_crPart_ofFieldOpList (ฯ† : ๐“•.FieldOp) (ฯ†s : List ๐“•.FieldOp) : [crPart ฯ†, ofFieldOpList ฯ†s]โ‚› = crPart ฯ† * ofFieldOpList ฯ†s - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s) โ€ข ofFieldOpList ฯ†s * crPart ฯ† := by rw [crPart, ofFieldOpList] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_crPartF_ofFieldOpListF] rfl lemma superCommute_anPart_ofFieldOpList (ฯ† : ๐“•.FieldOp) (ฯ†s : List ๐“•.FieldOp) : [anPart ฯ†, ofFieldOpList ฯ†s]โ‚› = anPart ฯ† * ofFieldOpList ฯ†s - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s) โ€ข ofFieldOpList ฯ†s * anPart ฯ† := by rw [anPart, ofFieldOpList] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_anPartF_ofFieldOpListF] rfl lemma superCommute_crPart_ofFieldOp (ฯ† ฯ†' : ๐“•.FieldOp) : [crPart ฯ†, ofFieldOp ฯ†']โ‚› = crPart ฯ† * ofFieldOp ฯ†' - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข ofFieldOp ฯ†' * crPart ฯ† := by rw [crPart, ofFieldOp] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_crPartF_ofFieldOpF] rfl lemma superCommute_anPart_ofFieldOp (ฯ† ฯ†' : ๐“•.FieldOp) : [anPart ฯ†, ofFieldOp ฯ†']โ‚› = anPart ฯ† * ofFieldOp ฯ†' - ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข ofFieldOp ฯ†' * anPart ฯ† := by rw [anPart, ofFieldOp] rw [superCommute_eq_ฮน_superCommuteF, superCommuteF_anPartF_ofFieldOpF] rfl /-! ## Mul equal superCommute Lemmas which rewrite a multiplication of two elements of the algebra as their commuted multiplication with a sign plus the super commutor. -/ lemma ofCrAnFieldOpList_mul_ofCrAnFieldOpList_eq_superCommute (ฯ†s ฯ†s' : List ๐“•.CrAnFieldOp) : ofCrAnFieldOpList ฯ†s * ofCrAnFieldOpList ฯ†s' = ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s') โ€ข ofCrAnFieldOpList ฯ†s' * ofCrAnFieldOpList ฯ†s + [ofCrAnFieldOpList ฯ†s, ofCrAnFieldOpList ฯ†s']โ‚› := by rw [superCommute_ofCrAnFieldOpList_ofCrAnFieldOpList] simp [ofCrAnFieldOpList_append] lemma ofCrAnFieldOp_mul_ofCrAnFieldOpList_eq_superCommute (ฯ† : ๐“•.CrAnFieldOp) (ฯ†s' : List ๐“•.CrAnFieldOp) : ofCrAnFieldOp ฯ† * ofCrAnFieldOpList ฯ†s' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s') โ€ข ofCrAnFieldOpList ฯ†s' * ofCrAnFieldOp ฯ† + [ofCrAnFieldOp ฯ†, ofCrAnFieldOpList ฯ†s']โ‚› := by rw [โ† ofCrAnFieldOpList_singleton, ofCrAnFieldOpList_mul_ofCrAnFieldOpList_eq_superCommute] simp lemma ofFieldOpList_mul_ofFieldOpList_eq_superCommute (ฯ†s ฯ†s' : List ๐“•.FieldOp) : ofFieldOpList ฯ†s * ofFieldOpList ฯ†s' = ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s') โ€ข ofFieldOpList ฯ†s' * ofFieldOpList ฯ†s + [ofFieldOpList ฯ†s, ofFieldOpList ฯ†s']โ‚› := by rw [superCommute_ofFieldOpList_ofFieldOpList] simp lemma ofFieldOp_mul_ofFieldOpList_eq_superCommute (ฯ† : ๐“•.FieldOp) (ฯ†s' : List ๐“•.FieldOp) : ofFieldOp ฯ† * ofFieldOpList ฯ†s' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s') โ€ข ofFieldOpList ฯ†s' * ofFieldOp ฯ† + [ofFieldOp ฯ†, ofFieldOpList ฯ†s']โ‚› := by rw [superCommute_ofFieldOp_ofFieldOpList] simp lemma ofFieldOp_mul_ofFieldOp_eq_superCommute (ฯ† ฯ†' : ๐“•.FieldOp) : ofFieldOp ฯ† * ofFieldOp ฯ†' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข ofFieldOp ฯ†' * ofFieldOp ฯ† + [ofFieldOp ฯ†, ofFieldOp ฯ†']โ‚› := by rw [โ† ofFieldOpList_singleton, โ† ofFieldOpList_singleton] rw [ofFieldOpList_mul_ofFieldOpList_eq_superCommute, ofFieldOpList_singleton] simp lemma ofFieldOpList_mul_ofFieldOp_eq_superCommute (ฯ†s : List ๐“•.FieldOp) (ฯ† : ๐“•.FieldOp) : ofFieldOpList ฯ†s * ofFieldOp ฯ† = ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†) โ€ข ofFieldOp ฯ† * ofFieldOpList ฯ†s + [ofFieldOpList ฯ†s, ofFieldOp ฯ†]โ‚› := by rw [superCommute_ofFieldOpList_ofFieldOp] simp lemma ofCrAnFieldOpList_mul_ofFieldOpList_eq_superCommute (ฯ†s : List ๐“•.CrAnFieldOp) (ฯ†s' : List ๐“•.FieldOp) : ofCrAnFieldOpList ฯ†s * ofFieldOpList ฯ†s' = ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s') โ€ข ofFieldOpList ฯ†s' * ofCrAnFieldOpList ฯ†s + [ofCrAnFieldOpList ฯ†s, ofFieldOpList ฯ†s']โ‚› := by rw [superCommute_ofCrAnFieldOpList_ofFieldOpList] simp lemma crPart_mul_anPart_eq_superCommute (ฯ† ฯ†' : ๐“•.FieldOp) : crPart ฯ† * anPart ฯ†' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข anPart ฯ†' * crPart ฯ† + [crPart ฯ†, anPart ฯ†']โ‚› := by rw [superCommute_crPart_anPart] simp lemma anPart_mul_crPart_eq_superCommute (ฯ† ฯ†' : ๐“•.FieldOp) : anPart ฯ† * crPart ฯ†' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข crPart ฯ†' * anPart ฯ† + [anPart ฯ†, crPart ฯ†']โ‚› := by rw [superCommute_anPart_crPart] simp lemma crPart_mul_crPart_swap (ฯ† ฯ†' : ๐“•.FieldOp) : crPart ฯ† * crPart ฯ†' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข crPart ฯ†' * crPart ฯ† := by trans ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข crPart ฯ†' * crPart ฯ† + [crPart ฯ†, crPart ฯ†']โ‚› ยท rw [crPart, crPart, superCommute_eq_ฮน_superCommuteF, superCommuteF_crPartF_crPartF] simp ยท simp lemma anPart_mul_anPart_swap (ฯ† ฯ†' : ๐“•.FieldOp) : anPart ฯ† * anPart ฯ†' = ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข anPart ฯ†' * anPart ฯ† := by trans ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†') โ€ข anPart ฯ†' * anPart ฯ† + [anPart ฯ†, anPart ฯ†']โ‚› ยท rw [anPart, anPart, superCommute_eq_ฮน_superCommuteF, superCommuteF_anPartF_anPartF] simp ยท simp /-! ## Symmetry of the super commutor. -/ lemma superCommute_ofCrAnFieldOpList_ofCrAnFieldOpList_symm (ฯ†s ฯ†s' : List ๐“•.CrAnFieldOp) : [ofCrAnFieldOpList ฯ†s, ofCrAnFieldOpList ฯ†s']โ‚› = (- ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s')) โ€ข [ofCrAnFieldOpList ฯ†s', ofCrAnFieldOpList ฯ†s]โ‚› := by rw [ofCrAnFieldOpList, ofCrAnFieldOpList, superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnListF_ofCrAnListF_symm] rfl lemma superCommute_ofCrAnFieldOp_ofCrAnFieldOp_symm (ฯ† ฯ†' : ๐“•.CrAnFieldOp) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOp ฯ†']โ‚› = (- ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†')) โ€ข [ofCrAnFieldOp ฯ†', ofCrAnFieldOp ฯ†]โ‚› := by rw [ofCrAnFieldOp, ofCrAnFieldOp, superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnOpF_ofCrAnOpF_symm] rfl /-! ## splitting the super commute into sums -/ lemma superCommute_ofCrAnFieldOpList_ofCrAnFieldOpList_eq_sum (ฯ†s ฯ†s' : List ๐“•.CrAnFieldOp) : [ofCrAnFieldOpList ฯ†s, ofCrAnFieldOpList ฯ†s']โ‚› = โˆ‘ (n : Fin ฯ†s'.length), ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s'.take n) โ€ข ofCrAnFieldOpList (ฯ†s'.take n) * [ofCrAnFieldOpList ฯ†s, ofCrAnFieldOp (ฯ†s'.get n)]โ‚› * ofCrAnFieldOpList (ฯ†s'.drop (n + 1)) := by conv_lhs => rw [ofCrAnFieldOpList, ofCrAnFieldOpList, superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnListF_ofCrAnListF_eq_sum] rw [map_sum] rfl lemma superCommute_ofCrAnFieldOp_ofCrAnFieldOpList_eq_sum (ฯ† : ๐“•.CrAnFieldOp) (ฯ†s' : List ๐“•.CrAnFieldOp) : [ofCrAnFieldOp ฯ†, ofCrAnFieldOpList ฯ†s']โ‚› = โˆ‘ (n : Fin ฯ†s'.length), ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s'.take n) โ€ข [ofCrAnFieldOp ฯ†, ofCrAnFieldOp (ฯ†s'.get n)]โ‚› * ofCrAnFieldOpList (ฯ†s'.eraseIdx n) := by conv_lhs => rw [โ† ofCrAnFieldOpList_singleton, superCommute_ofCrAnFieldOpList_ofCrAnFieldOpList_eq_sum] congr funext n simp only [instCommGroup.eq_1, ofList_singleton, List.get_eq_getElem, Algebra.smul_mul_assoc] congr 1 rw [ofCrAnFieldOpList_singleton, superCommute_ofCrAnFieldOp_ofCrAnFieldOp_commute] rw [mul_assoc, โ† ofCrAnFieldOpList_append] congr exact Eq.symm (List.eraseIdx_eq_take_drop_succ ฯ†s' โ†‘n) lemma superCommute_ofCrAnFieldOpList_ofFieldOpList_eq_sum (ฯ†s : List ๐“•.CrAnFieldOp) (ฯ†s' : List ๐“•.FieldOp) : [ofCrAnFieldOpList ฯ†s, ofFieldOpList ฯ†s']โ‚› = โˆ‘ (n : Fin ฯ†s'.length), ๐“ข(๐“• |>โ‚› ฯ†s, ๐“• |>โ‚› ฯ†s'.take n) โ€ข ofFieldOpList (ฯ†s'.take n) * [ofCrAnFieldOpList ฯ†s, ofFieldOp (ฯ†s'.get n)]โ‚› * ofFieldOpList (ฯ†s'.drop (n + 1)) := by conv_lhs => rw [ofCrAnFieldOpList, ofFieldOpList, superCommute_eq_ฮน_superCommuteF, superCommuteF_ofCrAnListF_ofFieldOpListF_eq_sum] rw [map_sum] rfl lemma superCommute_ofCrAnFieldOp_ofFieldOpList_eq_sum (ฯ† : ๐“•.CrAnFieldOp) (ฯ†s' : List ๐“•.FieldOp) : [ofCrAnFieldOp ฯ†, ofFieldOpList ฯ†s']โ‚› = โˆ‘ (n : Fin ฯ†s'.length), ๐“ข(๐“• |>โ‚› ฯ†, ๐“• |>โ‚› ฯ†s'.take n) โ€ข [ofCrAnFieldOp ฯ†, ofFieldOp (ฯ†s'.get n)]โ‚› * ofFieldOpList (ฯ†s'.eraseIdx n) := by conv_lhs => rw [โ† ofCrAnFieldOpList_singleton, superCommute_ofCrAnFieldOpList_ofFieldOpList_eq_sum] congr funext n simp only [instCommGroup.eq_1, ofList_singleton, List.get_eq_getElem, Algebra.smul_mul_assoc] congr 1 rw [ofCrAnFieldOpList_singleton, superCommute_ofCrAnFieldOp_ofFieldOp_commute] rw [mul_assoc, โ† ofFieldOpList_append] congr exact Eq.symm (List.eraseIdx_eq_take_drop_succ ฯ†s' โ†‘n) end FieldOpAlgebra end FieldSpecification