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.InsertAndContractNormal ordering with relation to Wick contractions
@[expose] public sectionNormal 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.
lemma normalOrder_uncontracted_some (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
(i : Fin φs.length.succ) (φsΛ : WickContraction φs.length) (k : φsΛ.uncontracted) :
𝓝(ofFieldOpList [φsΛ ↩Λ φ i (some k)]ᵘᶜ)
= 𝓝(ofFieldOpList (optionEraseZ [φsΛ]ᵘᶜ φ ((uncontractedFieldOpEquiv φs φsΛ) k))) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ normalOrder (ofFieldOpList [φsΛ↩Λφ i some k]ᵘᶜ) =
normalOrder (ofFieldOpList (optionEraseZ [φsΛ]ᵘᶜ φ ((uncontractedFieldOpEquiv φs φsΛ) (some k))))
simp only [Nat.succ_eq_add_one, insertAndContract, optionEraseZ, uncontractedFieldOpEquiv,
uncontractedListGet] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ normalOrder
(ofFieldOpList
(List.map (φs.insertIdx (↑i) φ).get
((WickContraction.congr ⋯) (φsΛ.insertAndContractNat i (some k))).uncontractedList)) =
normalOrder
(ofFieldOpList
(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))
congr e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.map (φs.insertIdx (↑i) φ).get ((WickContraction.congr ⋯) (φ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
rw [congr_uncontractedList e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.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 e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.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] e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.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 [uncontractedList_extractEquiv_symm_some e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.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] e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin φs.length.succφsΛ:WickContraction φs.lengthk:↥φsΛ.uncontracted⊢ List.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
simp only [Fin.coe_succAboveEmb, List.map_eraseIdx, List.map_map] e_6 𝓕: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
congr 1 e_6.e_l 𝓕: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 =
List.map φs.get φsΛ.uncontractedList
conv_rhs => rw [get_eq_insertIdx_succAbove φ φs 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