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.NormalOrder.Lemmas public import Physlib.QFT.PerturbationTheory.WickContraction.InsertAndContract

Normal ordering with relation to Wick contractions

@[expose] public section

Normal order of uncontracted terms within proto-algebra.

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, and a i ≤ φs.length, then the following relation holds:

𝓝([φsΛ ↩Λ φ i none]ᵘᶜ) = s • 𝓝(φ :: [φsΛ]ᵘᶜ)

where s is the exchange sign for φ and the uncontracted fields in φ₀…φᵢ₋₁.

The proof of this result ultimately is a consequence of normalOrder_superCommute_eq_zero.

All goals completed! 🐙

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, a i ≤ φs.length and a k in φsΛ.uncontracted, then 𝓝([φsΛ ↩Λ φ i (some k)]ᵘᶜ) is equal to the normal ordering of [φsΛ]ᵘᶜ with the 𝓕.FieldOp corresponding to k removed.

The proof of this result ultimately is a consequence of definitions.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontractedList.map (φs.insertIdx (↑i) φ).get (List.map (⇑(finCongr )) (φsΛ.insertAndContractNat i (some k)).uncontractedList) = match (φsΛ.uncontractedIndexEquiv.symm.trans (finCongr )).optionCongr (some k) with | none => φ :: List.map φs.get φsΛ.uncontractedList | some i => (List.map φs.get φsΛ.uncontractedList).eraseIdx i erw [𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontractedList.map (φs.insertIdx (↑i) φ).get (List.map (⇑(finCongr )) ((List.map (⇑i.succAboveEmb) φsΛ.uncontractedList).eraseIdx (φsΛ.uncontractedIndexEquiv.symm k))) = match (φsΛ.uncontractedIndexEquiv.symm.trans (finCongr )).optionCongr (some k) with | none => φ :: List.map φs.get φsΛ.uncontractedList | some i => (List.map φs.get φsΛ.uncontractedList).eraseIdx i𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontractedList.map (φs.insertIdx (↑i) φ).get (List.map (⇑(finCongr )) ((List.map (⇑i.succAboveEmb) φsΛ.uncontractedList).eraseIdx (φsΛ.uncontractedIndexEquiv.symm k))) = match (φsΛ.uncontractedIndexEquiv.symm.trans (finCongr )).optionCongr (some k) with | none => φ :: List.map φs.get φsΛ.uncontractedList | some i => (List.map φs.get φsΛ.uncontractedList).eraseIdx i 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontracted(List.map ((φs.insertIdx (↑i) φ).get (finCongr ) i.succAbove) φsΛ.uncontractedList).eraseIdx (φsΛ.uncontractedIndexEquiv.symm k) = match (φsΛ.uncontractedIndexEquiv.symm.trans (finCongr )).optionCongr (some k) with | none => φ :: List.map φs.get φsΛ.uncontractedList | some i => (List.map φs.get φsΛ.uncontractedList).eraseIdx i 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontractedList.map ((φs.insertIdx (↑i) φ).get (finCongr ) i.succAbove) φsΛ.uncontractedList = List.map φs.get φsΛ.uncontractedList conv_rhs => 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:φsΛ.uncontracted| List.map ((φs.insertIdx (↑i) φ).get (finCongr ) i.succAbove) φsΛ.uncontractedList