Imports
/-
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
-/
module
public import Physlib.QFT.PerturbationTheory.WickAlgebra.BasicSuperCommute on Field operator algebra
@[expose] public sectionlemma ι_superCommuteF_eq_zero_of_ι_right_zero (a b : 𝓕.FieldOpFreeAlgebra) (h : ι b = 0) :
ι [a, b]ₛF = 0 := 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι b = 0⊢ ι ((superCommuteF a) b) = 0
𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι b = 0h1:ι ↑(bosonicProjF b) = 0h2:ι ↑(fermionicProjF b) = 0⊢ ι ((superCommuteF a) b) = 0
All goals completed! 🐙lemma ι_superCommuteF_eq_zero_of_ι_left_zero (a b : 𝓕.FieldOpFreeAlgebra) (h : ι a = 0) :
ι [a, b]ₛF = 0 := 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι a = 0⊢ ι ((superCommuteF a) b) = 0
𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι a = 0h1:ι ↑(bosonicProjF a) = 0h2:ι ↑(fermionicProjF a) = 0⊢ ι ((superCommuteF a) b) = 0
All goals completed! 🐙
Defining normal order for FiedOpAlgebra.
lemma ι_superCommuteF_right_zero_of_mem_ideal (a b : 𝓕.FieldOpFreeAlgebra)
(h : b ∈ TwoSidedIdeal.span 𝓕.fieldOpIdealSet) : ι [a, b]ₛF = 0 :=
ι_superCommuteF_eq_zero_of_ι_right_zero a b ((ι_eq_zero_iff_mem_ideal b).mpr h)𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab1:𝓕.FieldOpFreeAlgebrab2:𝓕.FieldOpFreeAlgebrah:b1 ≈ b2⊢ ι ((superCommuteF a) (b1 - b2)) = 0
exact ι_superCommuteF_right_zero_of_mem_ideal a _ ((equiv_iff_sub_mem_ideal _ _).mp h) All goals completed! 🐙lemma superCommuteRight_apply_ι (a b : 𝓕.FieldOpFreeAlgebra) :
superCommuteRight a (ι b) = ι [a, b]ₛF := by 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebra⊢ (superCommuteRight a) (ι b) = ι ((superCommuteF a) b) rfl All goals completed! 🐙lemma superCommuteRight_apply_quot (a b : 𝓕.FieldOpFreeAlgebra) :
superCommuteRight a ⟦b⟧= ι [a, b]ₛF := by 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebra⊢ (superCommuteRight a) ⟦b⟧ = ι ((superCommuteF a) b) rfl All goals completed! 🐙lemma superCommuteRight_eq_of_equiv (a1 a2 : 𝓕.FieldOpFreeAlgebra) (h : a1 ≈ a2) :
superCommuteRight a1 = superCommuteRight a2 := by 𝓕:FieldSpecificationa1:𝓕.FieldOpFreeAlgebraa2:𝓕.FieldOpFreeAlgebrah:a1 ≈ a2⊢ superCommuteRight a1 = superCommuteRight a2
ext b 𝓕:FieldSpecificationa1:𝓕.FieldOpFreeAlgebraa2:𝓕.FieldOpFreeAlgebrah:a1 ≈ a2b:𝓕.WickAlgebra⊢ (superCommuteRight a1) b = (superCommuteRight a2) b
obtain ⟨b, rfl⟩ := ι_surjective b 𝓕:FieldSpecificationa1:𝓕.FieldOpFreeAlgebraa2:𝓕.FieldOpFreeAlgebrah:a1 ≈ a2b:𝓕.FieldOpFreeAlgebra⊢ (superCommuteRight a1) (ι b) = (superCommuteRight a2) (ι b)
simpa [superCommuteRight_apply_ι, sub_eq_zero] using
ι_superCommuteF_eq_zero_of_ι_left_zero (a1 - a2) b
((ι_eq_zero_iff_mem_ideal _).mpr ((equiv_iff_sub_mem_ideal _ _).mp h)) All goals completed! 🐙@[inherit_doc superCommute]
scoped[FieldSpecification.WickAlgebra] notation "[" a "," b "]ₛ" => superCommute a blemma superCommute_eq_ι_superCommuteF (a b : 𝓕.FieldOpFreeAlgebra) :
[ι a, ι b]ₛ = ι [a, b]ₛF := rfl
Properties of superCommute.
Properties from the definition of WickAlgebra
lemma superCommute_create_create {φ φ' : 𝓕.CrAnFieldOp}
(h : 𝓕 |>ᶜ φ = .create) (h' : 𝓕 |>ᶜ φ' = .create) :
[ofCrAnOp φ, ofCrAnOp φ']ₛ = 0 :=
ι_superCommuteF_of_create_create _ _ h h'lemma superCommute_annihilate_annihilate {φ φ' : 𝓕.CrAnFieldOp}
(h : 𝓕 |>ᶜ φ = .annihilate) (h' : 𝓕 |>ᶜ φ' = .annihilate) :
[ofCrAnOp φ, ofCrAnOp φ']ₛ = 0 :=
ι_superCommuteF_of_annihilate_annihilate _ _ h h'lemma superCommute_diff_statistic {φ φ' : 𝓕.CrAnFieldOp} (h : (𝓕 |>ₛ φ) ≠ 𝓕 |>ₛ φ') :
[ofCrAnOp φ, ofCrAnOp φ']ₛ = 0 :=
ι_superCommuteF_of_diff_statistic h
lemma superCommute_ofCrAnOp_ofFieldOp_diff_stat_zero (φ : 𝓕.CrAnFieldOp) (ψ : 𝓕.FieldOp)
(h : (𝓕 |>ₛ φ) ≠ (𝓕 |>ₛ ψ)) : [ofCrAnOp φ, ofFieldOp ψ]ₛ = 0 := by 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp ψ) = 0
rw [ofFieldOp_eq_sum, 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ (superCommute (ofCrAnOp φ)) (∑ i, ofCrAnOp ⟨ψ, i⟩) = 0 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨ψ, x⟩) = 0 map_sum 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨ψ, x⟩) = 0 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨ψ, x⟩) = 0] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψ⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨ψ, x⟩) = 0
refine Finset.sum_eq_zero fun x _ => superCommute_diff_statistic ?_ 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.FieldOph:𝓕.crAnStatistics φ ≠ 𝓕|>ₛψx:𝓕.fieldOpToCrAnType ψx✝:x ∈ Finset.univ⊢ 𝓕.crAnStatistics φ ≠ 𝓕.crAnStatistics ⟨ψ, x⟩
simpa [crAnStatistics] using h All goals completed! 🐙lemma superCommute_anPart_ofFieldOpF_diff_grade_zero (φ ψ : 𝓕.FieldOp)
(h : (𝓕 |>ₛ φ) ≠ (𝓕 |>ₛ ψ)) : [anPart φ, ofFieldOp ψ]ₛ = 0 := by 𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:(𝓕|>ₛφ) ≠ 𝓕|>ₛψ⊢ (superCommute (anPart φ)) (ofFieldOp ψ) = 0
cases φ inAsymp 𝓕:FieldSpecificationψ:𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentumh:(𝓕|>ₛFieldOp.inAsymp a✝) ≠ 𝓕|>ₛψ⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (ofFieldOp ψ) = 0position 𝓕:FieldSpecificationψ:𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimeh:(𝓕|>ₛFieldOp.position a✝) ≠ 𝓕|>ₛψ⊢ (superCommute (anPart (FieldOp.position a✝))) (ofFieldOp ψ) = 0outAsymp 𝓕:FieldSpecificationψ:𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentumh:(𝓕|>ₛFieldOp.outAsymp a✝) ≠ 𝓕|>ₛψ⊢ (superCommute (anPart (FieldOp.outAsymp a✝))) (ofFieldOp ψ) = 0
· inAsymp 𝓕:FieldSpecificationψ:𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentumh:(𝓕|>ₛFieldOp.inAsymp a✝) ≠ 𝓕|>ₛψ⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (ofFieldOp ψ) = 0 simp All goals completed! 🐙
all_goals
exact superCommute_ofCrAnOp_ofFieldOp_diff_stat_zero _ _ (by 𝓕:FieldSpecificationψ:𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentumh:(𝓕|>ₛFieldOp.outAsymp a✝) ≠ 𝓕|>ₛψ⊢ 𝓕.crAnStatistics ⟨FieldOp.outAsymp a✝, ()⟩ ≠ 𝓕|>ₛψ simpa [crAnStatistics] using h All goals completed! 🐙)lemma superCommute_ofCrAnOp_ofCrAnOp_mem_center (φ φ' : 𝓕.CrAnFieldOp) :
[ofCrAnOp φ, ofCrAnOp φ']ₛ ∈ Subalgebra.center ℂ (WickAlgebra 𝓕) :=
ι_superCommuteF_ofCrAnOpF_ofCrAnOpF_mem_center φ φ'lemma superCommute_ofCrAnOp_ofCrAnOp_commute (φ φ' : 𝓕.CrAnFieldOp)
(a : WickAlgebra 𝓕) :
a * [ofCrAnOp φ, ofCrAnOp φ']ₛ = [ofCrAnOp φ, ofCrAnOp φ']ₛ * a :=
Subalgebra.mem_center_iff.mp (superCommute_ofCrAnOp_ofCrAnOp_mem_center φ φ') a
lemma superCommute_ofCrAnOp_ofFieldOp_mem_center (φ : 𝓕.CrAnFieldOp) (φ' : 𝓕.FieldOp) :
[ofCrAnOp φ, ofFieldOp φ']ₛ ∈ Subalgebra.center ℂ (WickAlgebra 𝓕) := by 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebra
rw [ofFieldOp_eq_sum, 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ (superCommute (ofCrAnOp φ)) (∑ i, ofCrAnOp ⟨φ', i⟩) ∈ Subalgebra.center ℂ 𝓕.WickAlgebra 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨φ', x⟩) ∈ Subalgebra.center ℂ 𝓕.WickAlgebra map_sum 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨φ', x⟩) ∈ Subalgebra.center ℂ 𝓕.WickAlgebra 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨φ', x⟩) ∈ Subalgebra.center ℂ 𝓕.WickAlgebra] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':𝓕.FieldOp⊢ ∑ x, (superCommute (ofCrAnOp φ)) (ofCrAnOp ⟨φ', x⟩) ∈ Subalgebra.center ℂ 𝓕.WickAlgebra
exact Subalgebra.sum_mem _ fun x _ => superCommute_ofCrAnOp_ofCrAnOp_mem_center φ ⟨φ', x⟩ All goals completed! 🐙lemma superCommute_ofCrAnOp_ofFieldOp_commute (φ : 𝓕.CrAnFieldOp) (φ' : 𝓕.FieldOp)
(a : WickAlgebra 𝓕) : a * [ofCrAnOp φ, ofFieldOp φ']ₛ =
[ofCrAnOp φ, ofFieldOp φ']ₛ * a :=
Subalgebra.mem_center_iff.mp (superCommute_ofCrAnOp_ofFieldOp_mem_center φ φ') alemma superCommute_anPart_ofFieldOp_mem_center (φ φ' : 𝓕.FieldOp) :
[anPart φ, ofFieldOp φ']ₛ ∈ Subalgebra.center ℂ (WickAlgebra 𝓕) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (superCommute (anPart φ)) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebra
cases φ inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebraposition 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.position a✝))) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebraoutAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝))) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebra
· inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (ofFieldOp φ') ∈ Subalgebra.center ℂ 𝓕.WickAlgebra simp All goals completed! 🐙
all_goals exact superCommute_ofCrAnOp_ofFieldOp_mem_center _ _ All goals completed! 🐙
superCommute on different constructors.
lemma superCommute_ofCrAnList_ofCrAnList (φs φs' : List 𝓕.CrAnFieldOp) :
[ofCrAnList φs, ofCrAnList φs']ₛ =
ofCrAnList (φs ++ φs') - 𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs') • ofCrAnList (φs' ++ φs) :=
congrArg ι (superCommuteF_ofCrAnListF_ofCrAnListF φs φs')lemma superCommute_ofCrAnOp_ofCrAnOp (φ φ' : 𝓕.CrAnFieldOp) :
[ofCrAnOp φ, ofCrAnOp φ']ₛ = ofCrAnOp φ * ofCrAnOp φ' -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • ofCrAnOp φ' * ofCrAnOp φ :=
congrArg ι (superCommuteF_ofCrAnOpF_ofCrAnOpF φ φ')lemma superCommute_ofCrAnList_ofFieldOpList (φcas : List 𝓕.CrAnFieldOp)
(φs : List 𝓕.FieldOp) :
[ofCrAnList φcas, ofFieldOpList φs]ₛ = ofCrAnList φcas * ofFieldOpList φs -
𝓢(𝓕 |>ₛ φcas, 𝓕 |>ₛ φs) • ofFieldOpList φs * ofCrAnList φcas :=
congrArg ι (superCommuteF_ofCrAnListF_ofFieldOpFsList φcas φs)lemma superCommute_ofFieldOpList_ofFieldOpList (φs φs' : List 𝓕.FieldOp) :
[ofFieldOpList φs, ofFieldOpList φs']ₛ = ofFieldOpList φs * ofFieldOpList φs' -
𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs') • ofFieldOpList φs' * ofFieldOpList φs :=
congrArg ι (superCommuteF_ofFieldOpListF_ofFieldOpFsList φs φs')lemma superCommute_ofFieldOp_ofFieldOpList (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp) :
[ofFieldOp φ, ofFieldOpList φs]ₛ = ofFieldOp φ * ofFieldOpList φs -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs) • ofFieldOpList φs * ofFieldOp φ :=
congrArg ι (superCommuteF_ofFieldOpF_ofFieldOpFsList φ φs)lemma superCommute_ofFieldOpList_ofFieldOp (φs : List 𝓕.FieldOp) (φ : 𝓕.FieldOp) :
[ofFieldOpList φs, ofFieldOp φ]ₛ = ofFieldOpList φs * ofFieldOp φ -
𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φ) • ofFieldOp φ * ofFieldOpList φs :=
congrArg ι (superCommuteF_ofFieldOpListF_ofFieldOpF φs φ)lemma superCommute_anPart_crPart (φ φ' : 𝓕.FieldOp) :
[anPart φ, crPart φ']ₛ = anPart φ * crPart φ' -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • crPart φ' * anPart φ :=
congrArg ι (superCommuteF_anPartF_crPartF φ φ')lemma superCommute_crPart_anPart (φ φ' : 𝓕.FieldOp) :
[crPart φ, anPart φ']ₛ = crPart φ * anPart φ' -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • anPart φ' * crPart φ :=
congrArg ι (superCommuteF_crPartF_anPartF φ φ')@[simp]
lemma superCommute_crPart_crPart (φ φ' : 𝓕.FieldOp) : [crPart φ, crPart φ']ₛ = 0 := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (superCommute (crPart φ)) (crPart φ') = 0
cases φ inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.inAsymp a✝))) (crPart φ') = 0position 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.position a✝))) (crPart φ') = 0outAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝))) (crPart φ') = 0 <;> inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.inAsymp a✝))) (crPart φ') = 0position 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.position a✝))) (crPart φ') = 0outAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝))) (crPart φ') = 0 cases φ' outAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.inAsymp a✝)) = 0outAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.position a✝)) = 0outAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.outAsymp a✝)) = 0 <;> inAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.inAsymp a✝¹))) (crPart (FieldOp.inAsymp a✝)) = 0inAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.inAsymp a✝¹))) (crPart (FieldOp.position a✝)) = 0inAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.inAsymp a✝¹))) (crPart (FieldOp.outAsymp a✝)) = 0position.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.position a✝¹))) (crPart (FieldOp.inAsymp a✝)) = 0position.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.position a✝¹))) (crPart (FieldOp.position a✝)) = 0position.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.position a✝¹))) (crPart (FieldOp.outAsymp a✝)) = 0outAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.inAsymp a✝)) = 0outAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.position a✝)) = 0outAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (crPart (FieldOp.outAsymp a✝¹))) (crPart (FieldOp.outAsymp a✝)) = 0
simp [superCommute_create_create, crAnFieldOpToCreateAnnihilate] All goals completed! 🐙@[simp]
lemma superCommute_anPart_anPart (φ φ' : 𝓕.FieldOp) : [anPart φ, anPart φ']ₛ = 0 := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (superCommute (anPart φ)) (anPart φ') = 0
cases φ inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (anPart φ') = 0position 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.position a✝))) (anPart φ') = 0outAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝))) (anPart φ') = 0 <;> inAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝))) (anPart φ') = 0position 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.position a✝))) (anPart φ') = 0outAsymp 𝓕:FieldSpecificationφ':𝓕.FieldOpa✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝))) (anPart φ') = 0 cases φ' outAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.inAsymp a✝)) = 0outAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.position a✝)) = 0outAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.outAsymp a✝)) = 0 <;> inAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝¹))) (anPart (FieldOp.inAsymp a✝)) = 0inAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.inAsymp a✝¹))) (anPart (FieldOp.position a✝)) = 0inAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.inAsymp a✝¹))) (anPart (FieldOp.outAsymp a✝)) = 0position.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.position a✝¹))) (anPart (FieldOp.inAsymp a✝)) = 0position.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.position a✝¹))) (anPart (FieldOp.position a✝)) = 0position.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTimea✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.position a✝¹))) (anPart (FieldOp.outAsymp a✝)) = 0outAsymp.inAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.inAsymp a✝)) = 0outAsymp.position 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.PositionLabel f) × SpaceTime⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.position a✝)) = 0outAsymp.outAsymp 𝓕:FieldSpecificationa✝¹:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentuma✝:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum⊢ (superCommute (anPart (FieldOp.outAsymp a✝¹))) (anPart (FieldOp.outAsymp a✝)) = 0
simp [superCommute_annihilate_annihilate, crAnFieldOpToCreateAnnihilate] All goals completed! 🐙lemma superCommute_crPart_ofFieldOpList (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp) :
[crPart φ, ofFieldOpList φs]ₛ = crPart φ * ofFieldOpList φs -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs) • ofFieldOpList φs * crPart φ :=
congrArg ι (superCommuteF_crPartF_ofFieldOpListF φ φs)lemma superCommute_anPart_ofFieldOpList (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp) :
[anPart φ, ofFieldOpList φs]ₛ = anPart φ * ofFieldOpList φs -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs) • ofFieldOpList φs * anPart φ :=
congrArg ι (superCommuteF_anPartF_ofFieldOpListF φ φs)lemma superCommute_crPart_ofFieldOp (φ φ' : 𝓕.FieldOp) :
[crPart φ, ofFieldOp φ']ₛ = crPart φ * ofFieldOp φ' -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • ofFieldOp φ' * crPart φ :=
congrArg ι (superCommuteF_crPartF_ofFieldOpF φ φ')lemma superCommute_anPart_ofFieldOp (φ φ' : 𝓕.FieldOp) :
[anPart φ, ofFieldOp φ']ₛ = anPart φ * ofFieldOp φ' -
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • ofFieldOp φ' * anPart φ :=
congrArg ι (superCommuteF_anPartF_ofFieldOpF φ φ')Mul equal superCommute
Lemmas which rewrite a multiplication of two elements of the algebra as their commuted multiplication with a sign plus the super commutator.
lemma ofCrAnList_mul_ofCrAnList_eq_superCommute (φs φs' : List 𝓕.CrAnFieldOp) :
ofCrAnList φs * ofCrAnList φs' =
𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs') • ofCrAnList φs' * ofCrAnList φs
+ [ofCrAnList φs, ofCrAnList φs']ₛ := by 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ofCrAnList φs * ofCrAnList φs' =
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList φs +
(superCommute (ofCrAnList φs)) (ofCrAnList φs')
simp [superCommute_ofCrAnList_ofCrAnList, ofCrAnList_append] All goals completed! 🐙
lemma ofCrAnOp_mul_ofCrAnList_eq_superCommute (φ : 𝓕.CrAnFieldOp)
(φs' : List 𝓕.CrAnFieldOp) : ofCrAnOp φ * ofCrAnList φs' =
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs') • ofCrAnList φs' * ofCrAnOp φ
+ [ofCrAnOp φ, ofCrAnList φs']ₛ := by 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ofCrAnOp φ * ofCrAnList φs' =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnOp φ +
(superCommute (ofCrAnOp φ)) (ofCrAnList φs')
rw [← ofCrAnList_singleton, 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ofCrAnList [φ] * ofCrAnList φs' =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') ofCrAnList_mul_ofCrAnList_eq_superCommute 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs')] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs') • ofCrAnList φs' * ofCrAnList [φ] +
(superCommute (ofCrAnList [φ])) (ofCrAnList φs')
simp All goals completed! 🐙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 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφs':List 𝓕.FieldOp⊢ ofFieldOpList φs * ofFieldOpList φs' =
(exchangeSign (ofList 𝓕.fieldOpStatistic φs)) (ofList 𝓕.fieldOpStatistic φs') • ofFieldOpList φs' * ofFieldOpList φs +
(superCommute (ofFieldOpList φs)) (ofFieldOpList φs')
simp [superCommute_ofFieldOpList_ofFieldOpList] All goals completed! 🐙lemma ofFieldOp_mul_ofFieldOpList_eq_superCommute (φ : 𝓕.FieldOp) (φs' : List 𝓕.FieldOp) :
ofFieldOp φ * ofFieldOpList φs' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs') • ofFieldOpList φs' * ofFieldOp φ
+ [ofFieldOp φ, ofFieldOpList φs']ₛ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs':List 𝓕.FieldOp⊢ ofFieldOp φ * ofFieldOpList φs' =
(exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φs') • ofFieldOpList φs' * ofFieldOp φ +
(superCommute (ofFieldOp φ)) (ofFieldOpList φs')
simp [superCommute_ofFieldOp_ofFieldOpList] All goals completed! 🐙
lemma ofFieldOp_mul_ofFieldOp_eq_superCommute (φ φ' : 𝓕.FieldOp) :
ofFieldOp φ * ofFieldOp φ' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • ofFieldOp φ' * ofFieldOp φ
+ [ofFieldOp φ, ofFieldOp φ']ₛ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ ofFieldOp φ * ofFieldOp φ' =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOp φ' * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOp φ')
rw [← ofFieldOpList_singleton φ', 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ ofFieldOp φ * ofFieldOpList [φ'] =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOpList [φ'] * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic [φ']) • ofFieldOpList [φ'] * ofFieldOp φ +
(superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOpList [φ'] * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) ofFieldOp_mul_ofFieldOpList_eq_superCommute 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic [φ']) • ofFieldOpList [φ'] * ofFieldOp φ +
(superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOpList [φ'] * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic [φ']) • ofFieldOpList [φ'] * ofFieldOp φ +
(superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOpList [φ'] * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOpList [φ'])] 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic [φ']) • ofFieldOpList [φ'] * ofFieldOp φ +
(superCommute (ofFieldOp φ)) (ofFieldOpList [φ']) =
(exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • ofFieldOpList [φ'] * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOpList [φ'])
simp All goals completed! 🐙lemma ofFieldOpList_mul_ofFieldOp_eq_superCommute (φs : List 𝓕.FieldOp) (φ : 𝓕.FieldOp) :
ofFieldOpList φs * ofFieldOp φ = 𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φ) • ofFieldOp φ * ofFieldOpList φs
+ [ofFieldOpList φs, ofFieldOp φ]ₛ := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφ:𝓕.FieldOp⊢ ofFieldOpList φs * ofFieldOp φ =
(exchangeSign (ofList 𝓕.fieldOpStatistic φs)) (𝓕|>ₛφ) • ofFieldOp φ * ofFieldOpList φs +
(superCommute (ofFieldOpList φs)) (ofFieldOp φ)
simp [superCommute_ofFieldOpList_ofFieldOp] All goals completed! 🐙lemma ofCrAnList_mul_ofFieldOpList_eq_superCommute (φs : List 𝓕.CrAnFieldOp)
(φs' : List 𝓕.FieldOp) : ofCrAnList φs * ofFieldOpList φs' =
𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs') • ofFieldOpList φs' * ofCrAnList φs
+ [ofCrAnList φs, ofFieldOpList φs']ₛ := by 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ofCrAnList φs * ofFieldOpList φs' =
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic φs') • ofFieldOpList φs' * ofCrAnList φs +
(superCommute (ofCrAnList φs)) (ofFieldOpList φs')
simp [superCommute_ofCrAnList_ofFieldOpList] All goals completed! 🐙lemma crPart_mul_anPart_eq_superCommute (φ φ' : 𝓕.FieldOp) :
crPart φ * anPart φ' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • anPart φ' * crPart φ
+ [crPart φ, anPart φ']ₛ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * anPart φ' = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * crPart φ + (superCommute (crPart φ)) (anPart φ')
simp [superCommute_crPart_anPart] All goals completed! 🐙lemma anPart_mul_crPart_eq_superCommute (φ φ' : 𝓕.FieldOp) :
anPart φ * crPart φ' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • crPart φ' * anPart φ
+ [anPart φ, crPart φ']ₛ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * crPart φ' = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * anPart φ + (superCommute (anPart φ)) (crPart φ')
simp [superCommute_anPart_crPart] All goals completed! 🐙
lemma crPart_mul_crPart_swap (φ φ' : 𝓕.FieldOp) :
crPart φ * crPart φ' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • crPart φ' * crPart φ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ
rw [← sub_eq_zero, 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ = 0 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ = (superCommute (crPart φ)) (crPart φ') ← superCommute_crPart_crPart φ φ' 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ = (superCommute (crPart φ)) (crPart φ') 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ = (superCommute (crPart φ)) (crPart φ')] 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ crPart φ * crPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • crPart φ' * crPart φ = (superCommute (crPart φ)) (crPart φ')
exact (congrArg ι (superCommuteF_crPartF_crPartF φ φ')).symm All goals completed! 🐙
lemma anPart_mul_anPart_swap (φ φ' : 𝓕.FieldOp) :
anPart φ * anPart φ' = 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ') • anPart φ' * anPart φ := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ
rw [← sub_eq_zero, 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ = 0 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ = (superCommute (anPart φ)) (anPart φ') ← superCommute_anPart_anPart φ φ' 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ = (superCommute (anPart φ)) (anPart φ') 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ = (superCommute (anPart φ)) (anPart φ')] 𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOp⊢ anPart φ * anPart φ' - (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') • anPart φ' * anPart φ = (superCommute (anPart φ)) (anPart φ')
exact (congrArg ι (superCommuteF_anPartF_anPartF φ φ')).symm All goals completed! 🐙Symmetry of the super commutator.
lemma superCommute_ofCrAnList_ofCrAnList_symm (φs φs' : List 𝓕.CrAnFieldOp) :
[ofCrAnList φs, ofCrAnList φs']ₛ =
(- 𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs')) • [ofCrAnList φs', ofCrAnList φs]ₛ :=
congrArg ι (superCommuteF_ofCrAnListF_ofCrAnListF_symm φs φs')lemma superCommute_ofCrAnOp_ofCrAnOp_symm (φ φ' : 𝓕.CrAnFieldOp) :
[ofCrAnOp φ, ofCrAnOp φ']ₛ =
(- 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φ')) • [ofCrAnOp φ', ofCrAnOp φ]ₛ :=
congrArg ι (superCommuteF_ofCrAnOpF_ofCrAnOpF_symm φ φ')splitting the super commute into sums
lemma superCommute_ofCrAnList_ofCrAnList_eq_sum (φs φs' : List 𝓕.CrAnFieldOp) :
[ofCrAnList φs, ofCrAnList φs']ₛ =
∑ (n : Fin φs'.length), 𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs'.take n) •
ofCrAnList (φs'.take n) * [ofCrAnList φs, ofCrAnOp (φs'.get n)]ₛ *
ofCrAnList (φs'.drop (n + 1)) := by 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (superCommute (ofCrAnList φs)) (ofCrAnList φs') =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ofCrAnList φs)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs')
rw [ofCrAnList, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (superCommute (ι (ofCrAnListF φs))) (ofCrAnList φs') =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') ofCrAnList, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (superCommute (ι (ofCrAnListF φs))) (ι (ofCrAnListF φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') superCommute_eq_ι_superCommuteF, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ι ((superCommuteF (ofCrAnListF φs)) (ofCrAnListF φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs')
superCommuteF_ofCrAnListF_ofCrAnListF_eq_sum, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ι
(∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnListF (List.take (↑n) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get n)) *
ofCrAnListF (List.drop (↑n + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') map_sum 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs')] 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑x) φs')) •
ofCrAnListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofCrAnOpF (φs'.get x)) *
ofCrAnListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs')
rfl All goals completed! 🐙
lemma superCommute_ofCrAnOp_ofCrAnList_eq_sum (φ : 𝓕.CrAnFieldOp)
(φs' : List 𝓕.CrAnFieldOp) : [ofCrAnOp φ, ofCrAnList φs']ₛ =
∑ (n : Fin φs'.length), 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs'.take n) •
[ofCrAnOp φ, ofCrAnOp (φs'.get n)]ₛ * ofCrAnList (φs'.eraseIdx n) := by 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp⊢ (superCommute (ofCrAnOp φ)) (ofCrAnList φs') =
∑ n,
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n)
conv_lhs => rw [← ofCrAnList_singleton, superCommute_ofCrAnList_ofCrAnList_eq_sum] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOp| ∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ofCrAnList [φ])) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs')
refine Finset.sum_congr rfl fun n _ => ?_ 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ofCrAnList [φ])) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n)
rw [ofCrAnList_singleton, 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n) 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n) superCommute_ofCrAnOp_ofCrAnOp_commute 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n) 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n)] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
ofCrAnList (List.take (↑n) φs') *
ofCrAnList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofCrAnOp (φs'.get n)) *
ofCrAnList (φs'.eraseIdx ↑n)
simp [mul_assoc, ← ofCrAnList_append, ← List.eraseIdx_eq_take_drop_succ, ofList_singleton] All goals completed! 🐙
lemma superCommute_ofCrAnList_ofFieldOpList_eq_sum (φs : List 𝓕.CrAnFieldOp)
(φs' : List 𝓕.FieldOp) : [ofCrAnList φs, ofFieldOpList φs']ₛ =
∑ (n : Fin φs'.length), 𝓢(𝓕 |>ₛ φs, 𝓕 |>ₛ φs'.take n) •
ofFieldOpList (φs'.take n) * [ofCrAnList φs, ofFieldOp (φs'.get n)]ₛ *
ofFieldOpList (φs'.drop (n + 1)) := by 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ (superCommute (ofCrAnList φs)) (ofFieldOpList φs') =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ofCrAnList φs)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs')
rw [ofCrAnList, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ (superCommute (ι (ofCrAnListF φs))) (ofFieldOpList φs') =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') ofFieldOpList, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ (superCommute (ι (ofCrAnListF φs))) (ι (ofFieldOpListF φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') superCommute_eq_ι_superCommuteF, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ι ((superCommuteF (ofCrAnListF φs)) (ofFieldOpListF φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs')
superCommuteF_ofCrAnListF_ofFieldOpListF_eq_sum, 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ι
(∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpListF (List.take (↑n) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get n)) *
ofFieldOpListF (List.drop (↑n + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') map_sum 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs')] 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ ∑ x,
ι
((exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs')) •
ofFieldOpListF (List.take (↑x) φs') *
(superCommuteF (ofCrAnListF φs)) (ofFieldOpF (φs'.get x)) *
ofFieldOpListF (List.drop (↑x + 1) φs')) =
∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics φs)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ι (ofCrAnListF φs))) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs')
rfl All goals completed! 🐙
lemma superCommute_ofCrAnOp_ofFieldOpList_eq_sum (φ : 𝓕.CrAnFieldOp) (φs' : List 𝓕.FieldOp) :
[ofCrAnOp φ, ofFieldOpList φs']ₛ =
∑ (n : Fin φs'.length), 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ φs'.take n) •
[ofCrAnOp φ, ofFieldOp (φs'.get n)]ₛ * ofFieldOpList (φs'.eraseIdx n) := by 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOp⊢ (superCommute (ofCrAnOp φ)) (ofFieldOpList φs') =
∑ n,
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n)
conv_lhs => rw [← ofCrAnList_singleton, superCommute_ofCrAnList_ofFieldOpList_eq_sum] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOp| ∑ n,
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ofCrAnList [φ])) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs')
refine Finset.sum_congr rfl fun n _ => ?_ 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ofCrAnList [φ])) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n)
rw [ofCrAnList_singleton, 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n) 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n) superCommute_ofCrAnOp_ofFieldOp_commute 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n) 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n)] 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs':List 𝓕.FieldOpn:Fin φs'.lengthx✝:n ∈ Finset.univ⊢ (superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
(exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
ofFieldOpList (List.take (↑n) φs') *
ofFieldOpList (List.drop (↑n + 1) φs') =
(exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs')) •
(superCommute (ofCrAnOp φ)) (ofFieldOp (φs'.get n)) *
ofFieldOpList (φs'.eraseIdx ↑n)
simp [mul_assoc, ← ofFieldOpList_append, ← List.eraseIdx_eq_take_drop_succ, ofList_singleton] All goals completed! 🐙