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

Static Wick's theorem

@[expose] public section

For a list φs of š“•.FieldOp, the static version of Wick's theorem states that

φs = āˆ‘ φsĪ›, φsĪ›.staticWickTerm

where the sum is over all Wick contraction φsĪ›.

The proof is via induction on φs.

    The base case φs = [] is handled by staticWickTerm_empty_nil.

The inductive step works as follows:

For the LHS:

    The proof considers φ₀…φₙ as φ₀(φ₁…φₙ) and uses the induction hypothesis on φ₁…φₙ.

    This gives terms of the form φ * φsĪ›.staticWickTerm on which mul_staticWickTerm_eq_sum is used where φsĪ› is a Wick contraction of φ₁…φₙ, to rewrite terms as a sum over optional uncontracted elements of φsĪ›

On the LHS we now have a sum over Wick contractions φsĪ› of φ₁…φₙ (from 1) and optional uncontracted elements of φsĪ› (from 2)

For the RHS:

    The sum over Wick contractions of φ₀…φₙ on the RHS is split via insertLift_sum into a sum over Wick contractions φsĪ› of φ₁…φₙ and sum over optional uncontracted elements of φsĪ›.

Both sides are now sums over the same thing and their terms equate by the nature of the lemmas used.

š“•:FieldSpecificationφ:š“•.FieldOpφs:List š“•.FieldOpc:WickContraction φs.lengthaāœ:c ∈ Finset.univ⊢ āˆ‘ k, (c↩Λφ 0k).staticWickTerm = āˆ‘ k, (cā†©Ī›Ļ†āŸØ0, ā‹ÆāŸ©k).staticWickTerm All goals completed! šŸ™