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.Basic

Grading on the field operation algebra

@[expose] public section

The submodule of 𝓕.WickAlgebra spanned by lists of field statistic f.

def statSubmodule (f : FieldStatistic) : Submodule 𝓕.WickAlgebra := Submodule.span {a | φs, a = ofCrAnList φs (𝓕 |>ₛ φs) = f}
lemma ofCrAnList_mem_statSubmodule_of_eq (φs : List 𝓕.CrAnFieldOp) (f : FieldStatistic) (h : (𝓕 |>ₛ φs) = f) : ofCrAnList φs statSubmodule f := Submodule.mem_span.mpr fun _ a => a φs, rfl, hlemma ofCrAnList_mem_statSubmodule (φs : List 𝓕.CrAnFieldOp) : ofCrAnList φs statSubmodule (𝓕 |>ₛ φs) := Submodule.mem_span.mpr fun _ a => a φs, rfl, rfllemma mem_bosonic_of_mem_free_bosonic (a : 𝓕.FieldOpFreeAlgebra) (h : a statisticSubmodule bosonic) : ι a statSubmodule .bosonic := 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicι a statSubmodule bosonic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicι a statSubmodule bosonic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicp a h 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (x : 𝓕.FieldOpFreeAlgebra) (h : x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicp 0 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (x y : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}) (hy : y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (a : ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p (a x) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (x : 𝓕.FieldOpFreeAlgebra) (h : x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicx:𝓕.FieldOpFreeAlgebrahx:x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicx:𝓕.FieldOpFreeAlgebrahx: φs, x = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonicp x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = bosonicp (ofCrAnListF φs) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = bosonicι (ofCrAnListF φs) statSubmodule bosonic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = bosonicofList 𝓕.crAnStatistics φs = bosonic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicp 0 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic0 statSubmodule bosonic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (x y : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}) (hy : y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicx:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hy:y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hpx:p x hxhpy:p y hyp (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonicx:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hy:y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hpx:ι x statSubmodule bosonichpy:ι y statSubmodule bosonicι x + ι y statSubmodule bosonic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonic (a : ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p (a x) 𝓕:FieldSpecificationa✝:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonica:x:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hy:p x hxp (a x) 𝓕:FieldSpecificationa✝:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule bosonic Prop := fun a hx => ι a statSubmodule bosonica:x:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = bosonic}hy:ι x statSubmodule bosonica ι x statSubmodule bosonic All goals completed! 🐙lemma mem_fermionic_of_mem_free_fermionic (a : 𝓕.FieldOpFreeAlgebra) (h : a statisticSubmodule fermionic) : ι a statSubmodule .fermionic := 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicι a statSubmodule fermionic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicι a statSubmodule fermionic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicp a h 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (x : 𝓕.FieldOpFreeAlgebra) (h : x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicp 0 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (x y : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}) (hy : y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (a : ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p (a x) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (x : 𝓕.FieldOpFreeAlgebra) (h : x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicx:𝓕.FieldOpFreeAlgebrahx:x {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}p x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicx:𝓕.FieldOpFreeAlgebrahx: φs, x = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionicp x 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = fermionicp (ofCrAnListF φs) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = fermionicι (ofCrAnListF φs) statSubmodule fermionic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah✝:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = fermionicofList 𝓕.crAnStatistics φs = fermionic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicp 0 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic0 statSubmodule fermionic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (x y : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}) (hy : y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicx:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hy:y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hpx:p x hxhpy:p y hyp (x + y) 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionicx:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hy:y Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hpx:ι x statSubmodule fermionichpy:ι y statSubmodule fermionicι x + ι y statSubmodule fermionic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionic (a : ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p (a x) 𝓕:FieldSpecificationa✝:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionica:x:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hy:p x hxp (a x) 𝓕:FieldSpecificationa✝:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicp:(a : 𝓕.FieldOpFreeAlgebra) a statisticSubmodule fermionic Prop := fun a hx => ι a statSubmodule fermionica:x:𝓕.FieldOpFreeAlgebrahx:x Submodule.span {a | φs, a = ofCrAnListF φs ofList 𝓕.crAnStatistics φs = fermionic}hy:ι x statSubmodule fermionica ι x statSubmodule fermionic All goals completed! 🐙lemma mem_statSubmodule_of_mem_statisticSubmodule (f : FieldStatistic) (a : 𝓕.FieldOpFreeAlgebra) (h : a statisticSubmodule f) : ι a statSubmodule f := 𝓕:FieldSpecificationf:FieldStatistica:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fι a statSubmodule f 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicι a statSubmodule bosonic𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicι a statSubmodule fermionic 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule bosonicι a statSubmodule bosonic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:a statisticSubmodule fermionicι a statSubmodule fermionic All goals completed! 🐙

The projection of statisticSubmodule (𝓕 := 𝓕) f defined in the free algebra to statSubmodule (𝓕 := 𝓕) f.

def ιStateSubmodule (f : FieldStatistic) : statisticSubmodule (𝓕 := 𝓕) f →ₗ[] statSubmodule (𝓕 := 𝓕) f where toFun a := a.1, mem_statSubmodule_of_mem_statisticSubmodule f a.1 a.2 map_add' _ _ := rfl map_smul' _ _ := rfl

Defining bosonicProj

The projection of 𝓕.FieldOpFreeAlgebra to statSubmodule (𝓕 := 𝓕) bosonic.

def bosonicProjFree : 𝓕.FieldOpFreeAlgebra →ₗ[] statSubmodule (𝓕 := 𝓕) bosonic := ιStateSubmodule .bosonic ∘ₗ bosonicProjF
lemma bosonicProjFree_eq_ι_bosonicProjF (a : 𝓕.FieldOpFreeAlgebra) : (bosonicProjFree a).1 = ι (bosonicProjF a) := rfl𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:ι (bosonicProjF a) = 0 ι (fermionicProjF a) = 0ι (bosonicProjF a) = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι (a - b) = 0a - b bosonicProjFree.ker 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι (a - b) = 0bosonicProjFree (a - b) = 0 All goals completed! 🐙

The projection of 𝓕.WickAlgebra to statSubmodule (𝓕 := 𝓕) bosonic.

𝓕:FieldSpecificationc:y:𝓕.FieldOpFreeAlgebraQuotient.lift bosonicProjFree c y = (RingHom.id ) c Quotient.lift bosonicProjFree y All goals completed! 🐙
lemma bosonicProj_eq_bosonicProjFree (a : 𝓕.FieldOpFreeAlgebra) : bosonicProj (ι a) = bosonicProjFree a := rfl

Defining fermionicProj

The projection of 𝓕.FieldOpFreeAlgebra to statSubmodule (𝓕 := 𝓕) fermionic.

def fermionicProjFree : 𝓕.FieldOpFreeAlgebra →ₗ[] statSubmodule (𝓕 := 𝓕) fermionic := ιStateSubmodule .fermionic ∘ₗ fermionicProjF
lemma fermionicProjFree_eq_ι_fermionicProjF (a : 𝓕.FieldOpFreeAlgebra) : (fermionicProjFree a).1 = ι (fermionicProjF a) := rfl𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrah:ι (bosonicProjF a) = 0 ι (fermionicProjF a) = 0ι (fermionicProjF a) = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι (a - b) = 0a - b fermionicProjFree.ker 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrah:ι (a - b) = 0fermionicProjFree (a - b) = 0 All goals completed! 🐙

The projection of 𝓕.WickAlgebra to statSubmodule (𝓕 := 𝓕) fermionic.

𝓕:FieldSpecificationc:y:𝓕.FieldOpFreeAlgebraQuotient.lift fermionicProjFree c y = (RingHom.id ) c Quotient.lift fermionicProjFree y All goals completed! 🐙
lemma fermionicProj_eq_fermionicProjFree (a : 𝓕.FieldOpFreeAlgebra) : fermionicProj (ι a) = fermionicProjFree a := rfl

Interaction between bosonicProj and fermionicProj

All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hxφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = bosonicofCrAnListF φs statisticSubmodule bosonic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hxp 0 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hx0 = 0, All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hx (x y : 𝓕.WickAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}) (hy : y Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hxx:𝓕.WickAlgebray:𝓕.WickAlgebrahx:x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}hy:y Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}hpx:p x hxhpy:p y hyp (x + y) All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hx (a : ) (x : 𝓕.WickAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}), p x hx p (a x) 𝓕:FieldSpecificationa✝:𝓕.WickAlgebraha:a statSubmodule bosonicp:(a : 𝓕.WickAlgebra) a statSubmodule bosonic Prop := fun a hx => bosonicProj a = a, hxa:x:𝓕.WickAlgebrahx:x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = bosonic}hy:p x hxp (a x) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hxφs:List 𝓕.CrAnFieldOph:ofList 𝓕.crAnStatistics φs = fermionicofCrAnListF φs statisticSubmodule fermionic All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hxp 0 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hx0 = 0, All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hx (x y : 𝓕.WickAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}) (hy : y Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p y hy p (x + y) 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hxx:𝓕.WickAlgebray:𝓕.WickAlgebrahx:x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}hy:y Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}hpx:p x hxhpy:p y hyp (x + y) All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hx (a : ) (x : 𝓕.WickAlgebra) (hx : x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}), p x hx p (a x) 𝓕:FieldSpecificationa✝:𝓕.WickAlgebraha:a statSubmodule fermionicp:(a : 𝓕.WickAlgebra) a statSubmodule fermionic Prop := fun a hx => fermionicProj a = a, hxa:x:𝓕.WickAlgebrahx:x Submodule.span {a | φs, a = ofCrAnList φs ofList 𝓕.crAnStatistics φs = fermionic}hy:p x hxp (a x) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule fermionich:(bosonicProj a) + a, ha = abosonicProj a = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebraha:a statSubmodule bosonich:a, ha + (fermionicProj a) = afermionicProj a = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebrah:fermionicProj a = 0ha:(bosonicProj a) = a(bosonicProj a) statSubmodule bosonic All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebrah:bosonicProj a = 0ha:(fermionicProj a) = a(fermionicProj a) statSubmodule fermionic All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebrahb✝:a statSubmodule bosonichf:a statSubmodule fermionicha:bosonicProj a = a, hbhb:fermionicProj a = a, hfhc:a, hb✝ + a, hf = aa = 0 All goals completed! 🐙@[simp] lemma bosonicProj_fermionicProj_eq_zero (a : 𝓕.WickAlgebra) : bosonicProj (fermionicProj a).1 = 0 := 𝓕:FieldSpecificationa:𝓕.WickAlgebrabosonicProj (fermionicProj a) = 0 𝓕:FieldSpecificationa:𝓕.WickAlgebra(fermionicProj a) statSubmodule fermionic All goals completed! 🐙@[simp] lemma fermionicProj_bosonicProj_eq_zero (a : 𝓕.WickAlgebra) : fermionicProj (bosonicProj a).1 = 0 := 𝓕:FieldSpecificationa:𝓕.WickAlgebrafermionicProj (bosonicProj a) = 0 𝓕:FieldSpecificationa:𝓕.WickAlgebra(bosonicProj a) statSubmodule bosonic All goals completed! 🐙@[simp] lemma bosonicProj_bosonicProj_eq_bosonicProj (a : 𝓕.WickAlgebra) : bosonicProj (bosonicProj a).1 = bosonicProj a := 𝓕:FieldSpecificationa:𝓕.WickAlgebrabosonicProj (bosonicProj a) = bosonicProj a All goals completed! 🐙@[simp] lemma fermionicProj_fermionicProj_eq_fermionicProj (a : 𝓕.WickAlgebra) : fermionicProj (fermionicProj a).1 = fermionicProj a := 𝓕:FieldSpecificationa:𝓕.WickAlgebrafermionicProj (fermionicProj a) = fermionicProj a All goals completed! 🐙@[simp] lemma bosonicProj_of_bosonic_part (a : DirectSum FieldStatistic (fun i => (statSubmodule (𝓕 := 𝓕) i))) : bosonicProj (a bosonic).1 = (a bosonic) := 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)bosonicProj (a bosonic) = a bosonic All goals completed! 🐙@[simp] lemma bosonicProj_of_fermionic_part (a : DirectSum FieldStatistic (fun i => (statSubmodule (𝓕 := 𝓕) i))) : bosonicProj (a fermionic).1 = 0 := 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)bosonicProj (a fermionic) = 0 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)(a fermionic) statSubmodule fermionic All goals completed! 🐙@[simp] lemma fermionicProj_of_bosonic_part (a : DirectSum FieldStatistic (fun i => (statSubmodule (𝓕 := 𝓕) i))) : fermionicProj (a bosonic).1 = 0 := 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)fermionicProj (a bosonic) = 0 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)(a bosonic) statSubmodule bosonic All goals completed! 🐙@[simp] lemma fermionicProj_of_fermionic_part (a : DirectSum FieldStatistic (fun i => (statSubmodule (𝓕 := 𝓕) i))) : fermionicProj (a fermionic).1 = (a fermionic) := 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)fermionicProj (a fermionic) = a fermionic All goals completed! 🐙

The grading

𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic)i:FieldStatisticx:(statSubmodule i)x = (if h : i = bosonic then Eq.recOn h x else 0) + (if h : i = fermionic then Eq.recOn h x else 0) match i with 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic)i:FieldStatisticx:(statSubmodule bosonic)x = (if h : bosonic = bosonic then Eq.recOn h x else 0) + (if h : bosonic = fermionic then Eq.recOn h x else 0) All goals completed! 🐙 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic)i:FieldStatisticx:(statSubmodule fermionic)x = (if h : fermionic = bosonic then Eq.recOn h x else 0) + (if h : fermionic = fermionic then Eq.recOn h x else 0) All goals completed! 🐙 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic) (x y : DirectSum FieldStatistic fun i => (statSubmodule i)), C x C y C (x + y) 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic)x:DirectSum FieldStatistic fun i => (statSubmodule i)y:DirectSum FieldStatistic fun i => (statSubmodule i)hx:C xhy:C yC (x + y) 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => (DirectSum.coeAddMonoidHom statSubmodule) a = (a.toFun bosonic) + (a.toFun fermionic)x:DirectSum FieldStatistic fun i => (statSubmodule i)y:DirectSum FieldStatistic fun i => (statSubmodule i)hx:(DirectSum.coeAddMonoidHom statSubmodule) x = (x bosonic) + (x fermionic)hy:(DirectSum.coeAddMonoidHom statSubmodule) y = (y bosonic) + (y fermionic)(x bosonic) + (x fermionic) + ((y bosonic) + (y fermionic)) = (x bosonic) + (y bosonic) + ((x fermionic) + (y fermionic)) All goals completed! 🐙𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)i:FieldStatisticx:(statSubmodule fermionic)(DirectSum.of (fun i => (statSubmodule i)) fermionic) x = (DirectSum.of (fun i => (statSubmodule i)) bosonic) 0 + (DirectSum.of (fun i => (statSubmodule i)) fermionic) x𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)i:FieldStatisticx:(statSubmodule fermionic)bosonic fermionic 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)i:FieldStatisticx:(statSubmodule fermionic)bosonic fermionic All goals completed! 🐙 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic) (x y : DirectSum FieldStatistic fun i => (statSubmodule i)), C x C y C (x + y) 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)x:DirectSum FieldStatistic fun i => (statSubmodule i)y:DirectSum FieldStatistic fun i => (statSubmodule i)hx:C xhy:C yC (x + y) 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)x:DirectSum FieldStatistic fun i => (statSubmodule i)y:DirectSum FieldStatistic fun i => (statSubmodule i)hx:x = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (x bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (x fermionic)hy:y = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (y bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (y fermionic)x + y = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (x bosonic) + (DirectSum.of (fun i => (statSubmodule i)) bosonic) (y bosonic) + ((DirectSum.of (fun i => (statSubmodule i)) fermionic) (x fermionic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (y fermionic)) conv_lhs => 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)C:(DirectSum FieldStatistic fun i => (statSubmodule i)) Prop := fun a => a = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)x:DirectSum FieldStatistic fun i => (statSubmodule i)y:DirectSum FieldStatistic fun i => (statSubmodule i)hx:x = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (x bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (x fermionic)hy:y = (DirectSum.of (fun i => (statSubmodule i)) bosonic) (y bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (y fermionic)| (DirectSum.of (fun i => (statSubmodule i)) bosonic) (x bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (x fermionic) + ((DirectSum.of (fun i => (statSubmodule i)) bosonic) (y bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (y fermionic)) All goals completed! 🐙

For a field statistic 𝓕, the algebra 𝓕.WickAlgebra is graded by FieldStatistic. Those ofCrAnList φs for which φs has an overall bosonic statistic (i.e. 𝓕 |>ₛ φs = bosonic) span bosonic submodule, whilst those ofCrAnList φs for which φs has an overall fermionic statistic (i.e. 𝓕 |>ₛ φs = fermionic) span the fermionic submodule.

𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)(fun a => (DirectSum.of (fun i => (statSubmodule i)) bosonic) (bosonicProj a) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (fermionicProj a)) ((a.toFun bosonic) + (a.toFun fermionic)) = a 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)(DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic) = a conv_rhs => 𝓕:FieldSpecificationa:DirectSum FieldStatistic fun i => (statSubmodule i)| (DirectSum.of (fun i => (statSubmodule i)) bosonic) (a bosonic) + (DirectSum.of (fun i => (statSubmodule i)) fermionic) (a fermionic)