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.StaticWickTheorem
public import Physlib.QFT.PerturbationTheory.WickAlgebra.WicksTheorem
public import Physlib.QFT.PerturbationTheory.WickContraction.Sign.Join
public import Physlib.QFT.PerturbationTheory.WickContraction.TimeCondWick's theorem for normal ordered lists
@[expose] public section
For a list φs of 𝓕.FieldOp, then
𝓣(φs) = ∑ φsΛ, φsΛ.sign • φsΛ.timeContract * 𝓣(𝓝([φsΛ]ᵘᶜ))
where the sum is over all Wick contraction φsΛ which only have equal time contractions.
This result follows from
static_wick_theorem to rewrite 𝓣(φs) on the left hand side as a sum of
𝓣(φsΛ.staticWickTerm).
EqTimeOnly.timeOrder_staticContract_of_not_mem and timeOrder_timeOrder_mid to set to
those 𝓣(φsΛ.staticWickTerm) for which φsΛ has a contracted pair which are not
equal time to zero.
staticContract_eq_timeContract_of_eqTimeOnly to rewrite the static contract
in the remaining 𝓣(φsΛ.staticWickTerm) as a time contract.
timeOrder_timeContract_mul_of_eqTimeOnly_left to move the time contracts out of the time
ordering.
e_f.hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe2:WickContraction φs.length ≃ { φsΛ // φsΛ.EqTimeOnly } ⊕ { φsΛ // ¬φsΛ.EqTimeOnly } := (Equiv.sumCompl EqTimeOnly).symmx:{ φsΛ // φsΛ.EqTimeOnly }⊢ (↑x).EqTimeOnlye_f.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe2:WickContraction φs.length ≃ { φsΛ // φsΛ.EqTimeOnly } ⊕ { φsΛ // ¬φsΛ.EqTimeOnly } := (Equiv.sumCompl EqTimeOnly).symmx:{ φsΛ // φsΛ.EqTimeOnly }⊢ (↑x).EqTimeOnly <;> e_f.hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe2:WickContraction φs.length ≃ { φsΛ // φsΛ.EqTimeOnly } ⊕ { φsΛ // ¬φsΛ.EqTimeOnly } := (Equiv.sumCompl EqTimeOnly).symmx:{ φsΛ // φsΛ.EqTimeOnly }⊢ (↑x).EqTimeOnlye_f.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe2:WickContraction φs.length ≃ { φsΛ // φsΛ.EqTimeOnly } ⊕ { φsΛ // ¬φsΛ.EqTimeOnly } := (Equiv.sumCompl EqTimeOnly).symmx:{ φsΛ // φsΛ.EqTimeOnly }⊢ (↑x).EqTimeOnly
exact x.2 All goals completed! 🐙
lemma timeOrder_ofFieldOpList_eq_eqTimeOnly_empty (φs : List 𝓕.FieldOp) :
𝓣(ofFieldOpList φs) = 𝓣(𝓝(ofFieldOpList φs)) +
∑ (φsΛ : {φsΛ // φsΛ.EqTimeOnly (φs := φs) ∧ φsΛ ≠ empty}),
φsΛ.1.sign • φsΛ.1.timeContract.1 * 𝓣(𝓝(ofFieldOpList [φsΛ.1]ᵘᶜ)) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ timeOrder (ofFieldOpList φs) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))
let e1 : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly} ≃
{φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly} // φsΛ.1 = empty} ⊕
{φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly} // ¬ φsΛ.1 = empty} :=
(Equiv.sumCompl _).symm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ timeOrder (ofFieldOpList φs) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))
rw [timeOrder_ofFieldOpList_eqTimeOnly, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i, sign φs ↑(e1.symm i) • ↑(↑(e1.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑(e1.symm i)]ᵘᶜ)) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) ← e1.symm.sum_comp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i, sign φs ↑(e1.symm i) • ↑(↑(e1.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑(e1.symm i)]ᵘᶜ)) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i, sign φs ↑(e1.symm i) • ↑(↑(e1.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑(e1.symm i)]ᵘᶜ)) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i, sign φs ↑(e1.symm i) • ↑(↑(e1.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑(e1.symm i)]ᵘᶜ)) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))
simp only [Equiv.symm_symm, Algebra.smul_mul_assoc, Fintype.sum_sum_type,
Equiv.sumCompl_apply_inl, Equiv.sumCompl_apply_inr, ne_eq, e1] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) +
∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)) +
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))
congr 1 e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))
· e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)) let e2 : {φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly} // φsΛ.1 = empty } ≃
Unit := {
toFun := fun x => (), invFun := fun x => ⟨⟨empty, by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symmx:Unit⊢ empty.EqTimeOnly e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)) simp All goals completed! 🐙e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))⟩, rfl⟩,
left_inv a := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symma:{ φsΛ // ↑φsΛ = empty }⊢ (fun x => ⟨⟨empty, ⋯⟩, ⋯⟩) ((fun x => ()) a) = ae_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))
ext 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symma:{ φsΛ // ↑φsΛ = empty }⊢ ↑↑((fun x => ⟨⟨empty, ⋯⟩, ⋯⟩) ((fun x => ()) a)) = ↑↑ae_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))
simp [a.2] All goals completed! 🐙e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)), right_inv a := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symma:Unit⊢ (fun x => ()) ((fun x => ⟨⟨empty, ⋯⟩, ⋯⟩) a) = ae_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)) simp All goals completed! 🐙e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))}e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))
rw [← e2.symm.sum_comp e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ i,
sign φs ↑↑(e2.symm i) •
(↑(↑↑(e2.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑(e2.symm i)]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs)) e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ i,
sign φs ↑↑(e2.symm i) •
(↑(↑↑(e2.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑(e2.symm i)]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))]e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symme2:{ φsΛ // ↑φsΛ = empty } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨⟨empty, ⋯⟩, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ ∑ i,
sign φs ↑↑(e2.symm i) •
(↑(↑↑(e2.symm i)).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑(e2.symm i)]ᵘᶜ))) =
timeOrder (normalOrder (ofFieldOpList φs))
simp [e2, sign_empty] All goals completed! 🐙
· e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ x, sign φs ↑↑x • (↑(↑↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑↑x]ᵘᶜ))) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ))) rw [← (Equiv.subtypeSubtypeEquivSubtypeInter
(fun φsΛ : WickContraction φs.length => φsΛ.EqTimeOnly) (· ≠ empty)).symm.sum_comp e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i,
sign φs ↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i) •
(↑(↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm
i)).timeContract *
timeOrder
(normalOrder
(ofFieldOpList
[↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i)]ᵘᶜ))) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ))) e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i,
sign φs ↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i) •
(↑(↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm
i)).timeContract *
timeOrder
(normalOrder
(ofFieldOpList
[↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i)]ᵘᶜ))) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))]e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:{ φsΛ // φsΛ.EqTimeOnly } ≃ { φsΛ // ↑φsΛ = empty } ⊕ { φsΛ // ¬↑φsΛ = empty } := (Equiv.sumCompl fun φsΛ => ↑φsΛ = empty).symm⊢ ∑ i,
sign φs ↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i) •
(↑(↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm
i)).timeContract *
timeOrder
(normalOrder
(ofFieldOpList
[↑↑((Equiv.subtypeSubtypeEquivSubtypeInter (fun φsΛ => φsΛ.EqTimeOnly) fun x => x ≠ empty).symm i)]ᵘᶜ))) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))
rfl All goals completed! 🐙
For a list φs of 𝓕.FieldOp, then
𝓣(𝓝(φs)) = 𝓣(φs) - ∑ φsΛ, φsΛ.sign • φsΛ.timeContract.1 * 𝓣(𝓝([φsΛ]ᵘᶜ))
where the sum is over all non-empty Wick contraction φsΛ which only
have equal time contractions.
This result follows directly from
timeOrder_ofFieldOpList_eqTimeOnly
lemma normalOrder_timeOrder_ofFieldOpList_eq_eqTimeOnly_empty (φs : List 𝓕.FieldOp) :
𝓣(𝓝(ofFieldOpList φs)) = 𝓣(ofFieldOpList φs) -
∑ (φsΛ : {φsΛ // φsΛ.EqTimeOnly (φs := φs) ∧ φsΛ ≠ empty}),
φsΛ.1.sign • φsΛ.1.timeContract.1 * 𝓣(𝓝(ofFieldOpList [φsΛ.1]ᵘᶜ)) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ timeOrder (normalOrder (ofFieldOpList φs)) =
timeOrder (ofFieldOpList φs) -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))
simp [timeOrder_ofFieldOpList_eq_eqTimeOnly_empty] All goals completed! 🐙
For a list φs of 𝓕.FieldOp, then 𝓣(φs) is equal to the sum of
∑ φsΛ, φsΛ.wickTerm where the sum is over all Wick contraction φsΛ which have
no contractions of equal time.
∑ φsΛ, φsΛ.sign • φsΛ.timeContract * (∑ φssucΛ, φssucΛ.wickTerm), where
the first sum is over all Wick contraction φsΛ which only have equal time contractions
and the second sum is over all Wick contraction φssucΛ of the uncontracted elements of φsΛ
which do not have any equal time contractions.
The proof proceeds as follows
wicks_theorem is used to rewrite 𝓣(φs) as a sum over all Wick contractions.
The sum over all Wick contractions is then split additively into two parts based on having or not having an equal time contractions.
Using join, the sum ∑ φsΛ, _ over Wick contractions which do have equal time contractions
is split into two sums ∑ φsΛ, ∑ φsucΛ, _, the first over non-zero elements
which only have equal time contractions and the second over Wick contractions φsucΛ of
[φsΛ]ᵘᶜ which do not have equal time contractions.
join_sign_timeContract is then used to equate terms.
lemma timeOrder_haveEqTime_split (φs : List 𝓕.FieldOp) :
𝓣(ofFieldOpList φs) = (∑ (φsΛ : {φsΛ : WickContraction φs.length // ¬ HaveEqTime φsΛ}),
φsΛ.1.sign • φsΛ.1.timeContract.1 * 𝓝(ofFieldOpList [φsΛ.1]ᵘᶜ))
+ ∑ (φsΛ : {φsΛ // φsΛ.EqTimeOnly (φs := φs) ∧ φsΛ ≠ empty}), φsΛ.1.sign • φsΛ.1.timeContract *
(∑ φssucΛ : { φssucΛ : WickContraction [φsΛ.1]ᵘᶜ.length // ¬ φssucΛ.HaveEqTime },
φssucΛ.1.wickTerm) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ timeOrder (ofFieldOpList φs) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm
rw [wicks_theorem 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, φsΛ.wickTerm =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, φsΛ.wickTerm =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, φsΛ.wickTerm =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm
simp only [wickTerm] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ x, sign φs x • ↑x.timeContract * normalOrder (ofFieldOpList [x]ᵘᶜ) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ x,
sign φs ↑x • ↑(↑x).timeContract *
∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • ↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)
let e1 : WickContraction φs.length ≃ {φsΛ // HaveEqTime φsΛ} ⊕ {φsΛ // ¬ HaveEqTime φsΛ} :=
(Equiv.sumCompl HaveEqTime).symm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs x • ↑x.timeContract * normalOrder (ofFieldOpList [x]ᵘᶜ) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ x,
sign φs ↑x • ↑(↑x).timeContract *
∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • ↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)
rw [← e1.symm.sum_comp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ i, sign φs (e1.symm i) • ↑(e1.symm i).timeContract * normalOrder (ofFieldOpList [e1.symm i]ᵘᶜ) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ x,
sign φs ↑x • ↑(↑x).timeContract *
∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • ↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ i, sign φs (e1.symm i) • ↑(e1.symm i).timeContract * normalOrder (ofFieldOpList [e1.symm i]ᵘᶜ) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ x,
sign φs ↑x • ↑(↑x).timeContract *
∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • ↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ i, sign φs (e1.symm i) • ↑(e1.symm i).timeContract * normalOrder (ofFieldOpList [e1.symm i]ᵘᶜ) =
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ x,
sign φs ↑x • ↑(↑x).timeContract *
∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • ↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)
simp only [Equiv.symm_symm, Algebra.smul_mul_assoc, Fintype.sum_sum_type,
Equiv.sumCompl_apply_inl, Equiv.sumCompl_apply_inr, ne_eq, e1] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
rw [add_comm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) +
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
congr 1 e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symm⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
let f : WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ =>
φsΛ.sign • (φsΛ.timeContract.1 * 𝓝(ofFieldOpList [φsΛ]ᵘᶜ)) e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ ∑ x, sign φs ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
change ∑ (φsΛ : {φsΛ : WickContraction φs.length // HaveEqTime φsΛ}), f φsΛ.1 = _ e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ ∑ φsΛ, f ↑φsΛ =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
rw [sum_haveEqTime e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ) =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ))) e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ) =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))]e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ) =
∑ x,
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
congr e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))⊢ (fun φsΛ => ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)) = fun x =>
sign φs ↑x •
(↑(↑x).timeContract * ∑ x_1, sign [↑x]ᵘᶜ ↑x_1 • (↑(↑x_1).timeContract * normalOrder (ofFieldOpList [↑x_1]ᵘᶜ)))
funext φsΛ e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ) =
sign φs ↑φsΛ •
(↑(↑φsΛ).timeContract * ∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)))
simp only [f] e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ ∑ x, sign φs ((↑φsΛ).join ↑x) • (↑((↑φsΛ).join ↑x).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑x]ᵘᶜ)) =
sign φs ↑φsΛ •
(↑(↑φsΛ).timeContract * ∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)))
conv_lhs =>
enter [2, φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsucΛ:{ φssucΛ // ¬φssucΛ.HaveEqTime }| sign φs ((↑φsΛ).join ↑φsucΛ) • (↑((↑φsΛ).join ↑φsucΛ).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑φsucΛ]ᵘᶜ))
rw [← Algebra.smul_mul_assoc, join_sign_timeContract φsΛ.1 φsucΛ.1, mul_assoc] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsucΛ:{ φssucΛ // ¬φssucΛ.HaveEqTime }| sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(sign [↑φsΛ]ᵘᶜ ↑φsucΛ • ↑(↑φsucΛ).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑φsucΛ]ᵘᶜ))
rw [← Finset.mul_sum, e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ i, sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ) =
sign φs ↑φsΛ •
(↑(↑φsΛ).timeContract * ∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ))) e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ i, sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ) =
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)) ← Algebra.smul_mul_assoc e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ i, sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ) =
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ))e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ i, sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ) =
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ))]e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ i, sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ) =
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
∑ x, sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ))
congr e_a.e_f.e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }⊢ (fun i => sign [↑φsΛ]ᵘᶜ ↑i • ↑(↑i).timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑i]ᵘᶜ)) = fun x =>
sign [↑φsΛ]ᵘᶜ ↑x • (↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ))
funext φsΛ' e_a.e_f.e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsΛ':{ φssucΛ // ¬φssucΛ.HaveEqTime }⊢ sign [↑φsΛ]ᵘᶜ ↑φsΛ' • ↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑φsΛ']ᵘᶜ) =
sign [↑φsΛ]ᵘᶜ ↑φsΛ' • (↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [↑φsΛ']ᵘᶜ))
simp only [ne_eq, Algebra.smul_mul_assoc] e_a.e_f.e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsΛ':{ φssucΛ // ¬φssucΛ.HaveEqTime }⊢ sign [↑φsΛ]ᵘᶜ ↑φsΛ' • (↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑φsΛ']ᵘᶜ)) =
sign [↑φsΛ]ᵘᶜ ↑φsΛ' • (↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [↑φsΛ']ᵘᶜ))
congr 1 e_a.e_f.e_a.e_f.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsΛ':{ φssucΛ // ¬φssucΛ.HaveEqTime }⊢ ↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [(↑φsΛ).join ↑φsΛ']ᵘᶜ) =
↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [↑φsΛ']ᵘᶜ)
rw [@join_uncontractedListGet e_a.e_f.e_a.e_f.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpe1:WickContraction φs.length ≃ { φsΛ // φsΛ.HaveEqTime } ⊕ { φsΛ // ¬φsΛ.HaveEqTime } := (Equiv.sumCompl HaveEqTime).symmf:WickContraction φs.length → 𝓕.WickAlgebra := fun φsΛ => sign φs φsΛ • (↑φsΛ.timeContract * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ))φsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }φsΛ':{ φssucΛ // ¬φssucΛ.HaveEqTime }⊢ ↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [↑φsΛ']ᵘᶜ) =
↑(↑φsΛ').timeContract * normalOrder (ofFieldOpList [↑φsΛ']ᵘᶜ) All goals completed! 🐙] All goals completed! 🐙
lemma normalOrder_timeOrder_ofFieldOpList_eq_not_haveEqTime_sub_inductive (φs : List 𝓕.FieldOp) :
𝓣(𝓝(ofFieldOpList φs)) =
(∑ (φsΛ : {φsΛ : WickContraction φs.length // ¬ HaveEqTime φsΛ}), φsΛ.1.wickTerm)
+ ∑ (φsΛ : {φsΛ // φsΛ.EqTimeOnly (φs := φs) ∧ φsΛ ≠ empty}),
sign φs ↑φsΛ • (φsΛ.1).timeContract *
(∑ φssucΛ : { φssucΛ : WickContraction [φsΛ.1]ᵘᶜ.length // ¬ φssucΛ.HaveEqTime },
φssucΛ.1.wickTerm - 𝓣(𝓝(ofFieldOpList [φsΛ.1]ᵘᶜ))) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ timeOrder (normalOrder (ofFieldOpList φs)) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))
rw [normalOrder_timeOrder_ofFieldOpList_eq_eqTimeOnly_empty, 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ timeOrder (ofFieldOpList φs) -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
(∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))
timeOrder_haveEqTime_split, 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
(∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) add_sub_assoc 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
(∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
(∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ) +
(∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))
congr 1 e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * ∑ φssucΛ, (↑φssucΛ).wickTerm -
∑ φsΛ, sign φs ↑φsΛ • ↑(↑φsΛ).timeContract * timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)) =
∑ φsΛ,
sign φs ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))
simp only [ne_eq, Algebra.smul_mul_assoc, ← Finset.sum_sub_distrib, ← smul_sub, ← mul_sub] All goals completed! 🐙
lemma wicks_theorem_normal_order_empty : 𝓣(𝓝(ofFieldOpList [])) =
∑ (φsΛ : {φsΛ : WickContraction ([] : List 𝓕.FieldOp).length // ¬ HaveEqTime φsΛ}),
φsΛ.1.wickTerm := by 𝓕:FieldSpecification⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ φsΛ, (↑φsΛ).wickTerm
simp only [wickTerm] 𝓕:FieldSpecification⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
let e2 : {φsΛ : WickContraction ([] : List 𝓕.FieldOp).length // ¬ HaveEqTime φsΛ} ≃ Unit :=
{
toFun := fun x => (),
invFun := fun x => ⟨empty, by 𝓕:FieldSpecificationx:Unit⊢ ¬empty.HaveEqTime 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ) simp All goals completed! 🐙 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)⟩,
left_inv := by 𝓕:FieldSpecification⊢ Function.LeftInverse (fun x => ⟨empty, ⋯⟩) fun x => () 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
intro a 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }⊢ (fun x => ⟨empty, ⋯⟩) ((fun x => ()) a) = a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
simp only [List.length_nil] 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }⊢ ⟨empty, ⋯⟩ = a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
refine Subtype.ext (Subtype.ext ?_) 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }⊢ ↑↑⟨empty, ⋯⟩ = ↑↑a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
ext i 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }i:Finset (Fin 0)⊢ i ∈ ↑↑⟨empty, ⋯⟩ ↔ i ∈ ↑↑a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
simp only [empty, Finset.notMem_empty, false_iff] 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }i:Finset (Fin 0)⊢ i ∉ ↑↑a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
exact fun hn => absurd (a.1.2.1 i hn) (by 𝓕:FieldSpecificationa:{ φsΛ // ¬φsΛ.HaveEqTime }i:Finset (Fin 0)hn:i ∈ ↑↑a⊢ ¬i.card = 2 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ) simp [Finset.eq_empty_of_isEmpty i] All goals completed! 🐙 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)),
right_inv := by 𝓕:FieldSpecification⊢ Function.RightInverse (fun x => ⟨empty, ⋯⟩) fun x => () 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ) intro a 𝓕:FieldSpecificationa:Unit⊢ (fun x => ()) ((fun x => ⟨empty, ⋯⟩) a) = a 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ); simp All goals completed! 🐙 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)} 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ x, sign [] ↑x • ↑(↑x).timeContract * normalOrder (ofFieldOpList [↑x]ᵘᶜ)
rw [← e2.symm.sum_comp 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) =
∑ i, sign [] ↑(e2.symm i) • ↑(↑(e2.symm i)).timeContract * normalOrder (ofFieldOpList [↑(e2.symm i)]ᵘᶜ) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) =
∑ i, sign [] ↑(e2.symm i) • ↑(↑(e2.symm i)).timeContract * normalOrder (ofFieldOpList [↑(e2.symm i)]ᵘᶜ)] 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) =
∑ i, sign [] ↑(e2.symm i) • ↑(↑(e2.symm i)).timeContract * normalOrder (ofFieldOpList [↑(e2.symm i)]ᵘᶜ)
simp only [Finset.univ_unique, PUnit.default_eq_unit, List.length_nil, Equiv.coe_fn_symm_mk,
sign_empty, timeContract_empty, OneMemClass.coe_one, one_smul, uncontractedListGet_empty,
one_mul, Finset.sum_const, Finset.card_singleton, e2] 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }⊢ timeOrder (normalOrder (ofFieldOpList [])) = normalOrder (ofFieldOpList [])
have h1' : ofFieldOpList (𝓕 := 𝓕) [] = ofCrAnList [] := by 𝓕:FieldSpecification⊢ timeOrder (normalOrder (ofFieldOpList [])) = ∑ φsΛ, (↑φsΛ).wickTerm 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrder (ofFieldOpList [])) = normalOrder (ofFieldOpList []) rfl 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrder (ofFieldOpList [])) = normalOrder (ofFieldOpList []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrder (ofFieldOpList [])) = normalOrder (ofFieldOpList [])
rw [h1', 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrder (ofCrAnList [])) = normalOrder (ofCrAnList []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrderSign [] • ofCrAnList (normalOrderList [])) = normalOrderSign [] • ofCrAnList (normalOrderList []) normalOrder_ofCrAnList 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrderSign [] • ofCrAnList (normalOrderList [])) = normalOrderSign [] • ofCrAnList (normalOrderList []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrderSign [] • ofCrAnList (normalOrderList [])) = normalOrderSign [] • ofCrAnList (normalOrderList [])] 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (normalOrderSign [] • ofCrAnList (normalOrderList [])) = normalOrderSign [] • ofCrAnList (normalOrderList [])
simp only [normalOrderSign_nil, normalOrderList_nil, one_smul] 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (ofCrAnList []) = ofCrAnList []
rw [ofCrAnList, 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ timeOrder (ι (ofCrAnListF [])) = ι (ofCrAnListF []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (crAnTimeOrderSign [] • ofCrAnListF (crAnTimeOrderList [])) = ι (ofCrAnListF []) timeOrder_eq_ι_timeOrderF, 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (timeOrderF (ofCrAnListF [])) = ι (ofCrAnListF []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (crAnTimeOrderSign [] • ofCrAnListF (crAnTimeOrderList [])) = ι (ofCrAnListF []) timeOrderF_ofCrAnListF 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (crAnTimeOrderSign [] • ofCrAnListF (crAnTimeOrderList [])) = ι (ofCrAnListF []) 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (crAnTimeOrderSign [] • ofCrAnListF (crAnTimeOrderList [])) = ι (ofCrAnListF [])] 𝓕:FieldSpecificatione2:{ φsΛ // ¬φsΛ.HaveEqTime } ≃ Unit := { toFun := fun x => (), invFun := fun x => ⟨empty, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }h1':ofFieldOpList [] = ofCrAnList []⊢ ι (crAnTimeOrderSign [] • ofCrAnListF (crAnTimeOrderList [])) = ι (ofCrAnListF [])
simp All goals completed! 🐙
For a list φs of 𝓕.FieldOp, the normal-ordered version of Wick's theorem states that
𝓣(𝓝(φs)) = ∑ φsΛ, φsΛ.wickTerm
where the sum is over all Wick contraction φsΛ in which no two contracted elements
have the same time.
The proof proceeds by induction on φs, with the base case [] holding by following
through definitions. and the inductive case holding as a result of
timeOrder_haveEqTime_split
normalOrder_timeOrder_ofFieldOpList_eq_eqTimeOnly_empty
and the induction hypothesis on 𝓣(𝓝([φsΛ.1]ᵘᶜ)) for contractions φsΛ of φs which only
have equal time contractions and are non-empty.
theorem wicks_theorem_normal_order : (φs : List 𝓕.FieldOp) →
𝓣(𝓝(ofFieldOpList φs)) =
∑ (φsΛ : {φsΛ : WickContraction φs.length // ¬ HaveEqTime φsΛ}), φsΛ.1.wickTerm
| [] => wicks_theorem_normal_order_empty
| φ :: φs => 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ timeOrder (normalOrder (ofFieldOpList (φ :: φs))) = ∑ φsΛ, (↑φsΛ).wickTerm by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ timeOrder (normalOrder (ofFieldOpList (φ :: φs))) = ∑ φsΛ, (↑φsΛ).wickTerm
rw [normalOrder_timeOrder_ofFieldOpList_eq_not_haveEqTime_sub_inductive 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign (φ :: φs) ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign (φ :: φs) ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ∑ φsΛ, (↑φsΛ).wickTerm +
∑ φsΛ,
sign (φ :: φs) ↑φsΛ • ↑(↑φsΛ).timeContract *
(∑ φssucΛ, (↑φssucΛ).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ))) =
∑ φsΛ, (↑φsΛ).wickTerm
simp only [Algebra.smul_mul_assoc, ne_eq, add_eq_left] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ∑ x,
sign (φ :: φs) ↑x •
(↑(↑x).timeContract * (∑ x_1, (↑x_1).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))) =
0
apply Finset.sum_eq_zero 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ∀ x ∈ Finset.univ,
sign (φ :: φs) ↑x • (↑(↑x).timeContract * (∑ x_1, (↑x_1).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑x]ᵘᶜ)))) =
0
intro φsΛ hφsΛ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ sign (φ :: φs) ↑φsΛ • (↑(↑φsΛ).timeContract * (∑ x, (↑x).wickTerm - timeOrder (normalOrder (ofFieldOpList [↑φsΛ]ᵘᶜ)))) =
0
rw [wicks_theorem_normal_order [φsΛ.1]ᵘᶜ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ sign (φ :: φs) ↑φsΛ • (↑(↑φsΛ).timeContract * (∑ x, (↑x).wickTerm - ∑ φsΛ_1, (↑φsΛ_1).wickTerm)) = 0 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ sign (φ :: φs) ↑φsΛ • (↑(↑φsΛ).timeContract * (∑ x, (↑x).wickTerm - ∑ φsΛ_1, (↑φsΛ_1).wickTerm)) = 0] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ sign (φ :: φs) ↑φsΛ • (↑(↑φsΛ).timeContract * (∑ x, (↑x).wickTerm - ∑ φsΛ_1, (↑φsΛ_1).wickTerm)) = 0
simp [wickTerm] All goals completed! 🐙
termination_by φs => φs.length
decreasing_by
simp only [uncontractedListGet, List.length_cons, List.length_map] 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ (↑φsΛ).uncontractedList.length < φs.length + 1
rw [uncontractedList_length_eq_card 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ (↑φsΛ).uncontracted.card < φs.length + 1 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ (↑φsΛ).uncontracted.card < φs.length + 1] 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univ⊢ (↑φsΛ).uncontracted.card < φs.length + 1
have hc := uncontracted_card_eq_iff φsΛ.1 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univhc:(↑φsΛ).uncontracted.card = (φ :: φs).length ↔ ↑φsΛ = empty⊢ (↑φsΛ).uncontracted.card < φs.length + 1
simp only [List.length_cons, φsΛ.2.2, iff_false] at hc 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univhc:¬(↑φsΛ).uncontracted.card = φs.length + 1⊢ (↑φsΛ).uncontracted.card < φs.length + 1
have hc' := uncontracted_card_le φsΛ.1 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hφsΛ:φsΛ ∈ Finset.univhc:¬(↑φsΛ).uncontracted.card = φs.length + 1hc':(↑φsΛ).uncontracted.card ≤ (φ :: φs).length⊢ (↑φsΛ).uncontracted.card < φs.length + 1
simp_all only [List.length_cons, Finset.mem_univ, gt_iff_lt] 𝓕:FieldSpecificationφs✝:List 𝓕.FieldOpa✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y φs✝ →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφ:𝓕.FieldOpφs:List 𝓕.FieldOpx✝:∀ (y : List 𝓕.FieldOp),
InvImage (fun x1 x2 => x1 < x2) (fun x => x.length) y (φ :: φs) →
timeOrder (normalOrder (ofFieldOpList y)) = ∑ φsΛ, (↑φsΛ).wickTermφsΛ:{ φsΛ // φsΛ.EqTimeOnly ∧ ¬φsΛ = empty }hc:¬(↑φsΛ).uncontracted.card = φs.length + 1hc':(↑φsΛ).uncontracted.card ≤ φs.length + 1⊢ (↑φsΛ).uncontracted.card < φs.length + 1
omega All goals completed! 🐙