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.TimeContraction
public import Physlib.QFT.PerturbationTheory.WickContraction.InsertAndContractTime contractions
@[expose] public section
For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of
𝓕.FieldOp, and a i ≤ φs.length the following relation holds
(φsΛ ↩Λ φ i none).timeContract = φsΛ.timeContract
The proof of this result ultimately is a consequence of definitions.
𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succ⊢ ∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift ⋯ (insertLift i none a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift ⋯ (insertLift i none a)))),
⋯⟩ =
φsΛ.timeContract
congr e_f 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succ⊢ (fun a =>
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift ⋯ (insertLift i none a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift ⋯ (insertLift i none a)))),
⋯⟩) =
fun a => ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
ext a e_f 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succa:↥↑φsΛ⊢ ↑⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift ⋯ (insertLift i none a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift ⋯ (insertLift i none a)))),
⋯⟩ =
↑⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
simp 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)).timeContract is equal to the product of
timeContract φ φs[k] if i ≤ k or timeContract φs[k] φ if k < i
φsΛ.timeContract.
The proof of this result ultimately is a consequence of definitions.
lemma timeContract_insertAndContract_some
(φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
(φsΛ : WickContraction φs.length) (i : Fin φs.length.succ) (j : φsΛ.uncontracted) :
(φsΛ ↩Λ φ i (some j)).timeContract =
(if i < i.succAbove j then
⟨WickAlgebra.timeContract φ φs[j.1], timeContract_mem_center _ _⟩
else ⟨WickAlgebra.timeContract φs[j.1] φ, timeContract_mem_center _ _⟩) *
φsΛ.timeContract := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ (φsΛ↩Λφ i some j).timeContract =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract
rw [timeContract, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ∏ a,
⟨WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract a))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract a)),
⋯⟩ =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ *
∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract insertAndContract_some_prod_contractions 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ *
∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ *
∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ *
∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
(if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩) *
φsΛ.timeContract
congr 1 e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ =
if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
φsΛ.timeContract
· e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩)))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ ⟨{i, i.succAbove ↑j}, ⋯⟩))),
⋯⟩ =
if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑j] φ, ⋯⟩ simp only [Nat.succ_eq_add_one, insertAndContract_fstFieldOfContract_some_incl, finCongr_apply,
List.get_eq_getElem, insertAndContract_sndFieldOfContract_some_incl, Fin.getElem_fin] e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ⟨WickAlgebra.timeContract
(φs.insertIdx (↑i) φ)[↑(if i < i.succAbove ↑j then Fin.cast ⋯ i else Fin.cast ⋯ (i.succAbove ↑j))]
(φs.insertIdx (↑i) φ)[↑(if i < i.succAbove ↑j then Fin.cast ⋯ (i.succAbove ↑j) else Fin.cast ⋯ i)],
⋯⟩ =
if i < i.succAbove ↑j then ⟨WickAlgebra.timeContract φ φs[↑↑j], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑↑j] φ, ⋯⟩
split e_a.isTrue 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontractedh✝:i < i.succAbove ↑j⊢ ⟨WickAlgebra.timeContract (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ i)] (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ (i.succAbove ↑j))],
⋯⟩ =
⟨WickAlgebra.timeContract φ φs[↑↑j], ⋯⟩e_a.isFalse 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontractedh✝:¬i < i.succAbove ↑j⊢ ⟨WickAlgebra.timeContract (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ (i.succAbove ↑j))] (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ i)],
⋯⟩ =
⟨WickAlgebra.timeContract φs[↑↑j] φ, ⋯⟩
· e_a.isTrue 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontractedh✝:i < i.succAbove ↑j⊢ ⟨WickAlgebra.timeContract (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ i)] (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ (i.succAbove ↑j))],
⋯⟩ =
⟨WickAlgebra.timeContract φ φs[↑↑j], ⋯⟩ simp All goals completed! 🐙
· e_a.isFalse 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontractedh✝:¬i < i.succAbove ↑j⊢ ⟨WickAlgebra.timeContract (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ (i.succAbove ↑j))] (φs.insertIdx (↑i) φ)[↑(Fin.cast ⋯ i)],
⋯⟩ =
⟨WickAlgebra.timeContract φs[↑↑j] φ, ⋯⟩ simp All goals completed! 🐙
· e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ ∏ a,
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
φsΛ.timeContract congr e_a.e_f 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracted⊢ (fun a =>
⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩) =
fun a => ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
ext a e_a.e_f 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:↥φsΛ.uncontracteda:↥↑φsΛ⊢ ↑⟨WickAlgebra.timeContract
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift ⋯ (insertLift i (some j) a))))
((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift ⋯ (insertLift i (some j) a)))),
⋯⟩ =
↑⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
simp All goals completed! 🐙
@[simp]
lemma timeContract_empty (φs : List 𝓕.FieldOp) :
(@empty φs.length).timeContract = 1 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ empty.timeContract = 1
rw [timeContract, 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (empty.fstFieldOfContract a)) (φs.get (empty.sndFieldOfContract a)), ⋯⟩ = 1 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (fstFieldOfContract ⟨∅, ⋯⟩ a)) (φs.get (sndFieldOfContract ⟨∅, ⋯⟩ a)), ⋯⟩ = 1 empty 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (fstFieldOfContract ⟨∅, ⋯⟩ a)) (φs.get (sndFieldOfContract ⟨∅, ⋯⟩ a)), ⋯⟩ = 1 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (fstFieldOfContract ⟨∅, ⋯⟩ a)) (φs.get (sndFieldOfContract ⟨∅, ⋯⟩ a)), ⋯⟩ = 1] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (fstFieldOfContract ⟨∅, ⋯⟩ a)) (φs.get (sndFieldOfContract ⟨∅, ⋯⟩ a)), ⋯⟩ = 1
simp 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 such that i ≤ k, with the
condition that φ has greater or equal time to φs[k], then
(φsΛ ↩Λ φ i (some k)).timeContract is equal to the product of
[anPart φ, φs[k]]ₛ
φsΛ.timeContract
two copies of the exchange sign of φ with the uncontracted fields in φ₀…φₖ₋₁.
These two exchange signs cancel each other out but are included for convenience.
The proof of this result ultimately is a consequence of definitions and
timeContract_of_timeOrderRel.
set_option backward.isDefEq.respectTransparency false in
lemma timeContract_insert_some_of_lt
(φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
(φsΛ : WickContraction φs.length) (i : Fin φs.length.succ) (k : φsΛ.uncontracted)
(ht : 𝓕.timeOrderRel φ φs[k.1]) (hik : i < i.succAbove k) :
(φsΛ ↩Λ φ i (some k)).timeContract =
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ ⟨φs.get, (φsΛ.uncontracted.filter (fun x => x < k))⟩)
• (contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) *
φsΛ.timeContract) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑(φsΛ↩Λφ i some k).timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)
rw [timeContract_insertAndContract_some 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)
simp only [Nat.succ_eq_add_one, Fin.getElem_fin, ite_mul,
contractStateAtIndex, uncontractedFieldOpEquiv, Equiv.optionCongr_apply,
Equiv.coe_trans, Option.map_some, Function.comp_apply, finCongr_apply, Fin.val_cast,
List.getElem_map, uncontractedList_getElem_uncontractedIndexEquiv_symm, List.get_eq_getElem,
Algebra.smul_mul_assoc, uncontractedListGet] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑(if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑↑k], ⋯⟩ * φsΛ.timeContract
else ⟨WickAlgebra.timeContract φs[↑↑k] φ, ⋯⟩ * φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)
· 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑(if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑↑k], ⋯⟩ * φsΛ.timeContract
else ⟨WickAlgebra.timeContract φs[↑↑k] φ, ⋯⟩ * φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract) simp only [hik, ↓reduceIte, MulMemClass.coe_mul] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ WickAlgebra.timeContract φ φs[↑↑k] * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)
rw [timeContract_of_timeOrderRel 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
trans (1 : ℂ) • ((superCommute (anPart φ)) (ofFieldOp φs[k.1]) * ↑φsΛ.timeContract) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
1 • ((superCommute (anPart φ)) (ofFieldOp φs[↑k]) * ↑φsΛ.timeContract)𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ 1 • ((superCommute (anPart φ)) (ofFieldOp φs[↑k]) * ↑φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
· 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
1 • ((superCommute (anPart φ)) (ofFieldOp φs[↑k]) * ↑φsΛ.timeContract) simp All goals completed! 🐙
simp only [smul_smul] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ 1 • ((superCommute (anPart φ)) (ofFieldOp φs[↑k]) * ↑φsΛ.timeContract) =
((exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
congr 1 e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
have h1 : ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k))
(List.map φs.get φsΛ.uncontractedList))
= (𝓕 |>ₛ ⟨φs.get, (Finset.filter (fun x => x < k) φsΛ.uncontracted)⟩) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ↑(φsΛ↩Λφ i some k).timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract) e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
simp only [ofFinset] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofList 𝓕.fieldOpStatistic (List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2))e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
congr e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
rw [← List.map_take e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2) e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]]e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
congr e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList =
{x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
rw [take_uncontractedIndexEquiv_symm e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.filter (fun i => decide (i < ↑k)) φsΛ.uncontractedList = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2 e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.filter (fun i => decide (i < ↑k)) φsΛ.uncontractedList = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]]e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ List.filter (fun i => decide (i < ↑k)) φsΛ.uncontractedList = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
rw [filter_uncontractedList e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ ({i ∈ φsΛ.uncontracted | i < ↑k}.sort fun x1 x2 => x1 ≤ x2) = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]]e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
rw [h1 e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k] e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]]e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ 1 =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
simp only [exchangeSign_mul_self] h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]
· h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:timeOrderRel φ φs[↑k]hik:i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k] exact ht 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 such that k < i, with the
condition that φs[k] does not have time greater or equal to φ, then
(φsΛ ↩Λ φ i (some k)).timeContract is equal to the product of
[anPart φ, φs[k]]ₛ
φsΛ.timeContract
the exchange sign of φ with the uncontracted fields in φ₀…φₖ₋₁.
the exchange sign of φ with the uncontracted fields in φ₀…φₖ.
The proof of this result ultimately is a consequence of definitions and
timeContract_of_not_timeOrderRel_expand.
set_option backward.isDefEq.respectTransparency false in
lemma timeContract_insert_some_of_not_lt
(φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
(φsΛ : WickContraction φs.length) (i : Fin φs.length.succ) (k : φsΛ.uncontracted)
(ht : ¬ 𝓕.timeOrderRel φs[k.1] φ) (hik : ¬ i < i.succAbove k) :
(φsΛ ↩Λ φ i (some k)).timeContract =
𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ ⟨φs.get, (φsΛ.uncontracted.filter (fun x => x ≤ k))⟩)
• (contractStateAtIndex φ [φsΛ]ᵘᶜ
((uncontractedFieldOpEquiv φs φsΛ) (some k)) * φsΛ.timeContract) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑(φsΛ↩Λφ i some k).timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)
rw [timeContract_insertAndContract_some 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑((if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑k], ⋯⟩ else ⟨WickAlgebra.timeContract φs[↑k] φ, ⋯⟩) *
φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract)
simp only [Nat.succ_eq_add_one, Fin.getElem_fin, ite_mul,
contractStateAtIndex, uncontractedFieldOpEquiv, Equiv.optionCongr_apply,
Equiv.coe_trans, Option.map_some, Function.comp_apply, finCongr_apply, Fin.val_cast,
List.getElem_map, uncontractedList_getElem_uncontractedIndexEquiv_symm, List.get_eq_getElem,
Algebra.smul_mul_assoc, uncontractedListGet] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑(if i < i.succAbove ↑k then ⟨WickAlgebra.timeContract φ φs[↑↑k], ⋯⟩ * φsΛ.timeContract
else ⟨WickAlgebra.timeContract φs[↑↑k] φ, ⋯⟩ * φsΛ.timeContract) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)
simp only [hik, ↓reduceIte, MulMemClass.coe_mul] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ WickAlgebra.timeContract φs[↑↑k] φ * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)
rw [timeContract_of_not_timeOrderRel, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • WickAlgebra.timeContract φ φs[↑↑k] * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ timeContract_of_timeOrderRel 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • (superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
simp only [Algebra.smul_mul_assoc, smul_smul] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) • ((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract) =
((exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))) •
((superCommute (anPart φ)) (ofFieldOp φs[↑↑k]) * ↑φsΛ.timeContract)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
congr e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
have h1 : ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k))
(List.map φs.get φsΛ.uncontractedList))
= (𝓕 |>ₛ ⟨φs.get, (Finset.filter (fun x => x < k) φsΛ.uncontracted)⟩) := by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ↑(φsΛ↩Λφ i some k).timeContract =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) •
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) * ↑φsΛ.timeContract) e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
simp only [ofFinset] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofList 𝓕.fieldOpStatistic (List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2))e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
congr e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
rw [← List.map_take e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2) e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ]e_φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.map φs.get (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList) =
List.map φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2)e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
congr e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) φsΛ.uncontractedList =
{x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
rw [take_uncontractedIndexEquiv_symm, e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ List.filter (fun i => decide (i < ↑k)) φsΛ.uncontractedList = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ filter_uncontractedList e_φs.e_l 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ({i ∈ φsΛ.uncontracted | i < ↑k}.sort fun x1 x2 => x1 ≤ x2) = {x ∈ φsΛ.uncontracted | x < ↑k}.sort fun x1 x2 => x1 ≤ x2e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ]e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φe_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ))
(ofList 𝓕.fieldOpStatistic
(List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
rw [h1 e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ]e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
trans 𝓢(𝓕 |>ₛ φ, 𝓕 |>ₛ ⟨φs.get, {k.1}⟩) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) = (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k})𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) =
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k})) *
(exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
· 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφs[↑↑k])) (𝓕|>ₛφ) = (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) rw [exchangeSign_symm, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs[↑↑k]) = (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs[↑↑k]) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs.get ↑k) ofFinset_singleton 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs[↑↑k]) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs.get ↑k) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs[↑↑k]) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs.get ↑k)] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs[↑↑k]) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφs.get ↑k)
simp All goals completed! 🐙
rw [← map_mul 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) =
(exchangeSign (𝓕|>ₛφ))
(ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k}) *
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) =
(exchangeSign (𝓕|>ₛφ))
(ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k}) *
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get {↑k}) =
(exchangeSign (𝓕|>ₛφ))
(ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k}) *
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
congr e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ ofFinset 𝓕.fieldOpStatistic φs.get {↑k} =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x ≤ ↑k}) *
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
rw [ofFinset_union e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ ofFinset 𝓕.fieldOpStatistic φs.get {↑k} =
ofFinset 𝓕.fieldOpStatistic φs.get
(({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∪ {x ∈ φsΛ.uncontracted | x < ↑k}) \
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∩ {x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ ofFinset 𝓕.fieldOpStatistic φs.get {↑k} =
ofFinset 𝓕.fieldOpStatistic φs.get
(({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∪ {x ∈ φsΛ.uncontracted | x < ↑k}) \
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∩ {x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ]e_6 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ ofFinset 𝓕.fieldOpStatistic φs.get {↑k} =
ofFinset 𝓕.fieldOpStatistic φs.get
(({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∪ {x ∈ φsΛ.uncontracted | x < ↑k}) \
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∩ {x ∈ φsΛ.uncontracted | x < ↑k}))h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
congr e_6.e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ {↑k} =
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∪ {x ∈ φsΛ.uncontracted | x < ↑k}) \
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∩ {x ∈ φsΛ.uncontracted | x < ↑k})h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
ext a e_6.e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ a ∈ {↑k} ↔
a ∈
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∪ {x ∈ φsΛ.uncontracted | x < ↑k}) \
({x ∈ φsΛ.uncontracted | x ≤ ↑k} ∩ {x ∈ φsΛ.uncontracted | x < ↑k})h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
simp only [Finset.mem_singleton, Finset.mem_sdiff, Finset.mem_union, Finset.mem_filter,
Finset.mem_inter, not_and, not_lt, and_imp] e_6.e_a 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ a = ↑k ↔
(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
apply Iff.intro e_6.e_a.mp 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ a = ↑k →
(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)e_6.e_a.mpr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ (a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a) →
a = ↑kh 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
· e_6.e_a.mp 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ a = ↑k →
(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a) intro h e_6.e_a.mp 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:a = ↑k⊢ (a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)
subst h e_6.e_a.mp 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})⊢ (↑k ∈ φsΛ.uncontracted ∧ ↑k ≤ ↑k ∨ ↑k ∈ φsΛ.uncontracted ∧ ↑k < ↑k) ∧
(↑k ∈ φsΛ.uncontracted → ↑k ≤ ↑k → ↑k ∈ φsΛ.uncontracted → ↑k ≤ ↑k)
simp All goals completed! 🐙
· e_6.e_a.mpr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.length⊢ (a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a) →
a = ↑k intro h e_6.e_a.mpr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)⊢ a = ↑k
have h1 := h.1 e_6.e_a.mpr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k⊢ a = ↑k
rcases h1 with h1 | h1 e_6.e_a.mpr.inl 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a ≤ ↑k⊢ a = ↑ke_6.e_a.mpr.inr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑k⊢ a = ↑k
· e_6.e_a.mpr.inl 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a ≤ ↑k⊢ a = ↑k have h2' := h.2 h1.1 h1.2 h1.1 e_6.e_a.mpr.inl 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a ≤ ↑kh2':↑k ≤ a⊢ a = ↑k
omega All goals completed! 🐙
· e_6.e_a.mpr.inr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑k⊢ a = ↑k have h2' := h.2 h1.1 (by 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑k⊢ a ≤ ↑k e_6.e_a.mpr.inr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑kh2':↑k ≤ a⊢ a = ↑k omega All goals completed! 🐙e_6.e_a.mpr.inr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑kh2':↑k ≤ a⊢ a = ↑k) h1.1e_6.e_a.mpr.inr 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) =
ofFinset 𝓕.fieldOpStatistic φs.get ({x ∈ φsΛ.uncontracted | x < ↑k})a:Fin φs.lengthh:(a ∈ φsΛ.uncontracted ∧ a ≤ ↑k ∨ a ∈ φsΛ.uncontracted ∧ a < ↑k) ∧
(a ∈ φsΛ.uncontracted → a ≤ ↑k → a ∈ φsΛ.uncontracted → ↑k ≤ a)h1:a ∈ φsΛ.uncontracted ∧ a < ↑kh2':↑k ≤ a⊢ a = ↑k
omega All goals completed! 🐙
have ht := Std.Total.total (r := timeOrderRel) φs[k.1] φ h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht✝:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑kht:timeOrderRel φs[↑k] φ ∨ timeOrderRel φ φs[↑k]⊢ timeOrderRel φ φs[↑↑k]h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
simp_all only [Fin.getElem_fin, Nat.succ_eq_add_one, not_lt, false_or] h 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:↥φsΛ.uncontractedht:¬timeOrderRel φs[↑k] φhik:¬i < i.succAbove ↑k⊢ ¬timeOrderRel φs[↑↑k] φ
exact ht All goals completed! 🐙
lemma timeContract_of_not_gradingCompliant (φs : List 𝓕.FieldOp)
(φsΛ : WickContraction φs.length) (h : ¬ GradingCompliant φs φsΛ) :
φsΛ.timeContract = 0 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬GradingCompliant φs φsΛ⊢ φsΛ.timeContract = 0
rw [timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬GradingCompliant φs φsΛ⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬GradingCompliant φs φsΛ⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬GradingCompliant φs φsΛ⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0
simp only [GradingCompliant, Subtype.forall, not_forall] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∃ x, ∃ (x_1 : x ∈ ↑φsΛ), ¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨x, x_1⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨x, x_1⟩)]⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0
obtain ⟨a, ha⟩ := h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:∃ (x : a ∈ ↑φsΛ), ¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, x⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, x⟩)]⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0
obtain ⟨ha, ha2⟩ := ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ ∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩ = 0
apply Finset.prod_eq_zero (i := ⟨a, ha⟩) hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ ⟨a, ha⟩ ∈ Finset.univh 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract ⟨a, ha⟩)) (φs.get (φsΛ.sndFieldOfContract ⟨a, ha⟩)), ⋯⟩ = 0
simp only [Finset.univ_eq_attach, Finset.mem_attach] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract ⟨a, ha⟩)) (φs.get (φsΛ.sndFieldOfContract ⟨a, ha⟩)), ⋯⟩ = 0
apply Subtype.ext h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ ↑⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract ⟨a, ha⟩)) (φs.get (φsΛ.sndFieldOfContract ⟨a, ha⟩)), ⋯⟩ = ↑0
simp only [List.get_eq_getElem, ZeroMemClass.coe_zero] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ WickAlgebra.timeContract φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] = 0
rw [timeContract_zero_of_diff_grade h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ 0 = 0h.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ (𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ≠ 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] h.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ (𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ≠ 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]]h.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛha2:¬(𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) = 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]⊢ (𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ≠ 𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)]
simp [ha2] All goals completed! 🐙