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.WickContraction.JoinTime contractions
@[expose] public sectionThe condition on a Wick contraction which is true iff and only if every contraction is between two fields of equal time.
def EqTimeOnly {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) : Prop :=
∀ (i j), {i, j} ∈ φsΛ.1 → timeOrderRel φs[i] φs[j]instance {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) :
Decidable (EqTimeOnly φsΛ) :=
inferInstanceAs (Decidable (∀ (i j), {i, j} ∈ φsΛ.1 → timeOrderRel φs[i] φs[j]))lemma timeOrderRel_of_eqTimeOnly_pair {i j : Fin φs.length} (h : {i, j} ∈ φsΛ.1)
(hc : EqTimeOnly φsΛ) :
timeOrderRel φs[i] φs[j] := hc i j hlemma timeOrderRel_both_of_eqTimeOnly {i j : Fin φs.length} (h : {i, j} ∈ φsΛ.1)
(hc : EqTimeOnly φsΛ) :
timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i] :=
⟨timeOrderRel_of_eqTimeOnly_pair φsΛ h hc,
timeOrderRel_of_eqTimeOnly_pair φsΛ (𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthh:{i, j} ∈ ↑φsΛhc:φsΛ.EqTimeOnly⊢ {j, i} ∈ ↑φsΛ All goals completed! 🐙) hc⟩neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]i:Fin φs.lengthj:Fin φs.lengthh1:{i, j} ∈ ↑φsΛh':timeOrderRel φs[φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩] φs[φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩] φs[φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩]hij✝:¬i < jhij:i ≠ jhj:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jhi:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑i] φs[↑j]
simp_all All goals completed! 🐙
@[simp]
lemma empty_mem {φs : List 𝓕.FieldOp} : empty (n := φs.length).EqTimeOnly := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ empty.EqTimeOnly
rw [eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∀ (a : ↥↑empty),
timeOrderRel φs[empty.fstFieldOfContract a] φs[empty.sndFieldOfContract a] ∧
timeOrderRel φs[empty.sndFieldOfContract a] φs[empty.fstFieldOfContract a] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∀ (a : ↥↑empty),
timeOrderRel φs[empty.fstFieldOfContract a] φs[empty.sndFieldOfContract a] ∧
timeOrderRel φs[empty.sndFieldOfContract a] φs[empty.fstFieldOfContract a]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∀ (a : ↥↑empty),
timeOrderRel φs[empty.fstFieldOfContract a] φs[empty.sndFieldOfContract a] ∧
timeOrderRel φs[empty.sndFieldOfContract a] φs[empty.fstFieldOfContract a]
simp [empty] All goals completed! 🐙
Let φs be a list of 𝓕.FieldOp and φsΛ a WickContraction of φs within
which every contraction involves two 𝓕.FieldOps that have the same time, then
φsΛ.staticContract = φsΛ.timeContract.
lemma staticContract_eq_timeContract_of_eqTimeOnly (h : φsΛ.EqTimeOnly) :
φsΛ.staticContract = φsΛ.timeContract := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnly⊢ φsΛ.staticContract = φsΛ.timeContract
simp only [staticContract, timeContract] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnly⊢ ∏ a, ⟨(superCommute (anPart (φs.get (φsΛ.fstFieldOfContract a)))) (ofFieldOp (φs.get (φsΛ.sndFieldOfContract a))), ⋯⟩ =
∏ a, ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
apply congrArg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnly⊢ (fun a =>
⟨(superCommute (anPart (φs.get (φsΛ.fstFieldOfContract a)))) (ofFieldOp (φs.get (φsΛ.sndFieldOfContract a))), ⋯⟩) =
fun a => ⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
funext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ ⟨(superCommute (anPart (φs.get (φsΛ.fstFieldOfContract a)))) (ofFieldOp (φs.get (φsΛ.sndFieldOfContract a))), ⋯⟩ =
⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
ext 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ ↑⟨(superCommute (anPart (φs.get (φsΛ.fstFieldOfContract a)))) (ofFieldOp (φs.get (φsΛ.sndFieldOfContract a))), ⋯⟩ =
↑⟨WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), ⋯⟩
simp only [List.get_eq_getElem] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ (superCommute (anPart φs[↑(φsΛ.fstFieldOfContract a)])) (ofFieldOp φs[↑(φsΛ.sndFieldOfContract a)]) =
WickAlgebra.timeContract φs[↑(φsΛ.fstFieldOfContract a)] φs[↑(φsΛ.sndFieldOfContract a)]
rw [timeContract_of_timeOrderRel 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ (superCommute (anPart φs[↑(φsΛ.fstFieldOfContract a)])) (ofFieldOp φs[↑(φsΛ.sndFieldOfContract a)]) =
(superCommute (anPart φs[↑(φsΛ.fstFieldOfContract a)])) (ofFieldOp φs[↑(φsΛ.sndFieldOfContract a)])h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract a)] φs[↑(φsΛ.sndFieldOfContract a)] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract a)] φs[↑(φsΛ.sndFieldOfContract a)]] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract a)] φs[↑(φsΛ.sndFieldOfContract a)]
refine timeOrderRel_of_eqTimeOnly_pair φsΛ ?_ h h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:↥↑φsΛ⊢ {φsΛ.fstFieldOfContract a, φsΛ.sndFieldOfContract a} ∈ ↑φsΛ
simp [← finset_eq_fstFieldOfContract_sndFieldOfContract, a.2] All goals completed! 🐙lemma eqTimeOnly_congr {φs φs' : List 𝓕.FieldOp} (h : φs = φs') (φsΛ : WickContraction φs.length) :
(congr (by 𝓕:FieldSpecificationn:ℕc:WickContraction nφs✝:List 𝓕.FieldOpφsΛ✝:WickContraction φs✝.lengthφs:List 𝓕.FieldOpφs':List 𝓕.FieldOph:φs = φs'φsΛ:WickContraction φs.length⊢ φs.length = φs'.length simp [h] All goals completed! 🐙) φsΛ).EqTimeOnly (φs := φs') ↔ φsΛ.EqTimeOnly := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφs':List 𝓕.FieldOph:φs = φs'φsΛ:WickContraction φs.length⊢ ((congr ⋯) φsΛ).EqTimeOnly ↔ φsΛ.EqTimeOnly
subst h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ((congr ⋯) φsΛ).EqTimeOnly ↔ φsΛ.EqTimeOnly
simp All goals completed! 🐙
lemma quotContraction_eqTimeOnly {φs : List 𝓕.FieldOp} {φsΛ : WickContraction φs.length}
(h : φsΛ.EqTimeOnly) (S : Finset (Finset (Fin φs.length))) (ha : S ⊆ φsΛ.1) :
(φsΛ.quotContraction S ha).EqTimeOnly := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ (quotContraction S ha).EqTimeOnly
rw [eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ (a : ↥↑(quotContraction S ha)),
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ (a : ↥↑(quotContraction S ha)),
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ (a : ↥↑(quotContraction S ha)),
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
intro a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[(quotContraction S ha).sndFieldOfContract a]
[subContraction S ha]ᵘᶜ[(quotContraction S ha).fstFieldOfContract a]
simp only [Fin.getElem_fin] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel [subContraction S ha]ᵘᶜ[↑((quotContraction S ha).fstFieldOfContract a)]
[subContraction S ha]ᵘᶜ[↑((quotContraction S ha).sndFieldOfContract a)] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[↑((quotContraction S ha).sndFieldOfContract a)]
[subContraction S ha]ᵘᶜ[↑((quotContraction S ha).fstFieldOfContract a)]
erw [subContraction_uncontractedList_get, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)]
[subContraction S ha]ᵘᶜ[↑((quotContraction S ha).sndFieldOfContract a)] ∧
timeOrderRel [subContraction S ha]ᵘᶜ[↑((quotContraction S ha).sndFieldOfContract a)]
φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)] subContraction_uncontractedList_get 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)]
φs[uncontractedListEmd ((quotContraction S ha).sndFieldOfContract a)] ∧
timeOrderRel φs[uncontractedListEmd ((quotContraction S ha).sndFieldOfContract a)]
φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)]
φs[uncontractedListEmd ((quotContraction S ha).sndFieldOfContract a)] ∧
timeOrderRel φs[uncontractedListEmd ((quotContraction S ha).sndFieldOfContract a)]
φs[uncontractedListEmd ((quotContraction S ha).fstFieldOfContract a)]
simp only [quotContraction_fstFieldOfContract_uncontractedListEmd, Fin.getElem_fin,
quotContraction_sndFieldOfContract_uncontractedListEmd] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlyS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
rw [eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]S:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]S:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]S:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:↥↑(quotContraction S ha)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩)]
apply h All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma exists_join_singleton_of_card_ge_zero {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(h : 0 < φsΛ.1.card) (h1 : φsΛ.EqTimeOnly) :
∃ (i j : Fin φs.length) (h : i < j) (φsucΛ : WickContraction [singleton h]ᵘᶜ.length),
φsΛ = join (singleton h) φsucΛ ∧ (timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i])
∧ φsucΛ.EqTimeOnly ∧ φsucΛ.1.card + 1 = φsΛ.1.card := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnly⊢ ∃ i j,
∃ (h : i < j),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]) ∧ φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
obtain ⟨a, ha⟩ := exists_contraction_pair_of_card_ge_zero φsΛ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ ∃ i j,
∃ (h : i < j),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]) ∧ φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
use φsΛ.fstFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ ∃ j,
∃ (h : φsΛ.fstFieldOfContract ⟨a, ha⟩ < j),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[j] ∧
timeOrderRel φs[j] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
use φsΛ.sndFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ ∃ (h : φsΛ.fstFieldOfContract ⟨a, ha⟩ < φsΛ.sndFieldOfContract ⟨a, ha⟩),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
use φsΛ.fstFieldOfContract_lt_sndFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
let φsucΛ :
WickContraction [singleton (φsΛ.fstFieldOfContract_lt_sndFieldOfContract ⟨a, ha⟩)]ᵘᶜ.length :=
congr (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ [subContraction {a} ?m.175]ᵘᶜ.length = [singleton ⋯]ᵘᶜ.length h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card simp [← subContraction_singleton_eq_singleton] All goals completed! 🐙 h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card)
(φsΛ.quotContraction {a} (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛ⊢ {a} ⊆ ↑φsΛh 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card simpa using ha All goals completed! 🐙h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card))h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
use φsucΛ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
simp only [Fin.getElem_fin] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ ∧
(timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
apply And.intro h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛh.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card
· h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ have h1 := join_congr (subContraction_singleton_eq_singleton _ ⟨a, ha⟩).symm (φsucΛ := φsucΛ) h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = (singleton ⋯).join φsucΛ
simp only [h1, congr_trans_apply, congr_refl, φsucΛ] h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = (subContraction {a} ⋯).join (quotContraction {a} ⋯)
rw [join_sub_quot h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = φsΛ All goals completed! 🐙] All goals completed! 🐙
· h.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]) ∧
φsucΛ.EqTimeOnly ∧ (↑φsucΛ).card + 1 = (↑φsΛ).card refine ⟨?_, ?_, ?_⟩ h.right.refine_1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsucΛ.EqTimeOnlyh.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (↑φsucΛ).card + 1 = (↑φsΛ).card
· h.right.refine_1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] apply timeOrderRel_both_of_eqTimeOnly φsΛ _ h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ {φsΛ.fstFieldOfContract ⟨a, ha⟩, φsΛ.sndFieldOfContract ⟨a, ha⟩} ∈ ↑φsΛ
simp [← finset_eq_fstFieldOfContract_sndFieldOfContract, ha] All goals completed! 🐙
· h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsucΛ.EqTimeOnly simp only [φsucΛ] h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ((congr ⋯) (quotContraction {a} ⋯)).EqTimeOnly
rw [eqTimeOnly_congr (φs := [(φsΛ.subContraction {a} (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ {a} ⊆ ↑φsΛ h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (quotContraction {a} ⋯).EqTimeOnlyh.right.refine_2.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ [subContraction {a} ⋯]ᵘᶜ = [singleton ⋯]ᵘᶜ simpa using ha All goals completed! 🐙h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (quotContraction {a} ⋯).EqTimeOnlyh.right.refine_2.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ [subContraction {a} ⋯]ᵘᶜ = [singleton ⋯]ᵘᶜ))]ᵘᶜ)]h.right.refine_2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (quotContraction {a} ⋯).EqTimeOnlyh.right.refine_2.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ [subContraction {a} ⋯]ᵘᶜ = [singleton ⋯]ᵘᶜ
exact quotContraction_eqTimeOnly h1 _ _ h.right.refine_2.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ [subContraction {a} ⋯]ᵘᶜ = [singleton ⋯]ᵘᶜ
rw [← subContraction_singleton_eq_singleton h.right.refine_2.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ [subContraction {a} ⋯]ᵘᶜ = [subContraction {↑⟨a, ha⟩} ⋯]ᵘᶜ All goals completed! 🐙] All goals completed! 🐙
· h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (↑φsucΛ).card + 1 = (↑φsΛ).card simp only [card_congr, φsucΛ] h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ (↑(quotContraction {a} ⋯)).card + 1 = (↑φsΛ).card
have h1 := subContraction_card_plus_quotContraction_card_eq _ {a} (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ {a} ⊆ ↑?m.263 h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(↑(subContraction {a} ⋯)).card + (↑(quotContraction {a} ⋯)).card = (↑φsΛ).card⊢ (↑(quotContraction {a} ⋯)).card + 1 = (↑φsΛ).card simpa using ha All goals completed! 🐙h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(↑(subContraction {a} ⋯)).card + (↑(quotContraction {a} ⋯)).card = (↑φsΛ).card⊢ (↑(quotContraction {a} ⋯)).card + 1 = (↑φsΛ).card)h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(↑(subContraction {a} ⋯)).card + (↑(quotContraction {a} ⋯)).card = (↑φsΛ).card⊢ (↑(quotContraction {a} ⋯)).card + 1 = (↑φsΛ).card
simp only [subContraction, Finset.card_singleton] at h1 h.right.refine_3 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:0 < (↑φsΛ).cardh1✝:φsΛ.EqTimeOnlya:Finset (Fin φs.length)ha:a ∈ ↑φsΛφsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:1 + (↑(quotContraction {a} ⋯)).card = (↑φsΛ).card⊢ (↑(quotContraction {a} ⋯)).card + 1 = (↑φsΛ).card
omega All goals completed! 🐙
lemma timeOrder_timeContract_mul_of_eqTimeOnly_mid_induction {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length)
(hl : φsΛ.EqTimeOnly) (a b: 𝓕.WickAlgebra) : (n : ℕ) → (hn : φsΛ.1.card = n) →
𝓣(a * φsΛ.timeContract.1 * b) = φsΛ.timeContract.1 * 𝓣(a * b)
| 0, hn => 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebrahn:(↑φsΛ).card = 0⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b) by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebrahn:(↑φsΛ).card = 0⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b)
rw [@card_zero_iff_empty 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebrahn:φsΛ = empty⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebrahn:φsΛ = empty⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b)] at hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebrahn:φsΛ = empty⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b)
subst hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebrahl:empty.EqTimeOnly⊢ timeOrder (a * ↑empty.timeContract * b) = ↑empty.timeContract * timeOrder (a * b)
simp All goals completed! 🐙
| Nat.succ n, hn => 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕhn:(↑φsΛ).card = n.succ⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b) by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕhn:(↑φsΛ).card = n.succ⊢ timeOrder (a * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder (a * b)
obtain ⟨i, j, hij, φsucΛ, rfl, h2, h3, h4⟩ :=
exists_join_singleton_of_card_ge_zero φsΛ (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlya:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕhn:(↑φsΛ).card = n.succ⊢ 0 < (↑φsΛ).card 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).join φsucΛ).timeContract * b) =
↑((singleton hij).join φsucΛ).timeContract * timeOrder (a * b) simp [hn] All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).join φsucΛ).timeContract * b) =
↑((singleton hij).join φsucΛ).timeContract * timeOrder (a * b)) hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).join φsucΛ).timeContract * b) =
↑((singleton hij).join φsucΛ).timeContract * timeOrder (a * b)
rw [join_timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).timeContract * φsucΛ.timeContract) * b) =
↑((singleton hij).timeContract * φsucΛ.timeContract) * timeOrder (a * b) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).timeContract * φsucΛ.timeContract) * b) =
↑((singleton hij).timeContract * φsucΛ.timeContract) * timeOrder (a * b)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑((singleton hij).timeContract * φsucΛ.timeContract) * b) =
↑((singleton hij).timeContract * φsucΛ.timeContract) * timeOrder (a * b)
rw [singleton_timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * b) =
↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * timeOrder (a * b) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * b) =
↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * timeOrder (a * b)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * b) =
↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) * timeOrder (a * b)
simp only [Fin.getElem_fin, MulMemClass.coe_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * (WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract) * b) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)
trans timeOrder (a * WickAlgebra.timeContract φs[↑i] φs[↑j] * (φsucΛ.timeContract.1 * b)) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * (WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract) * b) =
timeOrder (a * WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * b))𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)
simp only [mul_assoc, Fin.getElem_fin] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrder (a * WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)
rw [timeOrder_timeContract_eq_time_mid 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]
have ih := timeOrder_timeContract_mul_of_eqTimeOnly_mid_induction φsucΛ h3 a b n (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ (↑φsucΛ).card = n 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i] omega All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * (↑φsucΛ.timeContract * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]
rw [← mul_assoc, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * timeOrder (a * ↑φsucΛ.timeContract * b) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * timeOrder (a * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i] ih 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * timeOrder (a * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * timeOrder (a * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).cardih:timeOrder (a * ↑φsucΛ.timeContract * b) = ↑φsucΛ.timeContract * timeOrder (a * b)⊢ WickAlgebra.timeContract φs[i] φs[j] * (↑φsucΛ.timeContract * timeOrder (a * b)) =
WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract * timeOrder (a * b)h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]
simp only [Fin.getElem_fin, mul_assoc] h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[i] φs[j]h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa:𝓕.WickAlgebrab:𝓕.WickAlgebran:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhl:((singleton hij).join φsucΛ).EqTimeOnlyhn:(↑((singleton hij).join φsucΛ)).card = n.succh2:timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]h3:φsucΛ.EqTimeOnlyh4:(↑φsucΛ).card + 1 = (↑((singleton hij).join φsucΛ)).card⊢ timeOrderRel φs[j] φs[i]
all_goals simp_all All goals completed! 🐙lemma timeOrder_timeContract_mul_of_eqTimeOnly_mid {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length)
(hl : φsΛ.EqTimeOnly) (a b : 𝓕.WickAlgebra) :
𝓣(a * φsΛ.timeContract.1 * b) = φsΛ.timeContract.1 * 𝓣(a * b) :=
timeOrder_timeContract_mul_of_eqTimeOnly_mid_induction φsΛ hl a b φsΛ.1.card rfl
Let φs be a list of 𝓕.FieldOp, φsΛ a WickContraction of φs within
which every contraction involves two 𝓕.FieldOps that have the same time and
b a general element in 𝓕.WickAlgebra. Then
𝓣(φsΛ.timeContract.1 * b) = φsΛ.timeContract.1 * 𝓣(b).
This follows from properties of orderings and the ideal defining 𝓕.WickAlgebra.
lemma timeOrder_timeContract_mul_of_eqTimeOnly_left {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length)
(hl : φsΛ.EqTimeOnly) (b : 𝓕.WickAlgebra) :
𝓣(φsΛ.timeContract.1 * b) = φsΛ.timeContract.1 * 𝓣(b) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ timeOrder (↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder b
trans 𝓣(1 * φsΛ.timeContract.1 * b) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ timeOrder (↑φsΛ.timeContract * b) = timeOrder (1 * ↑φsΛ.timeContract * b)𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ timeOrder (1 * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder b
simp only [one_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ timeOrder (1 * ↑φsΛ.timeContract * b) = ↑φsΛ.timeContract * timeOrder b
rw [timeOrder_timeContract_mul_of_eqTimeOnly_mid φsΛ hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ ↑φsΛ.timeContract * timeOrder (1 * b) = ↑φsΛ.timeContract * timeOrder b 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ ↑φsΛ.timeContract * timeOrder (1 * b) = ↑φsΛ.timeContract * timeOrder b] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:φsΛ.EqTimeOnlyb:𝓕.WickAlgebra⊢ ↑φsΛ.timeContract * timeOrder (1 * b) = ↑φsΛ.timeContract * timeOrder b
simp All goals completed! 🐙
set_option maxHeartbeats 400000 in
lemma exists_join_singleton_of_not_eqTimeOnly {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length) (h1 : ¬ φsΛ.EqTimeOnly) :
∃ (i j : Fin φs.length) (h : i < j) (φsucΛ : WickContraction [singleton h]ᵘᶜ.length),
φsΛ = join (singleton h) φsucΛ ∧ (¬ timeOrderRel φs[i] φs[j] ∨ ¬ timeOrderRel φs[j] φs[i]) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:¬φsΛ.EqTimeOnly⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i])
rw [eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:¬∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:¬∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i])] at h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:¬∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i])
simp only [Fin.getElem_fin, Subtype.forall, not_forall, not_and] at h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∃ x,
∃ (h : x ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)]⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i])
obtain ⟨a, ha, hr⟩ := h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ i j, ∃ (h : i < j), ∃ φsucΛ, φsΛ = (singleton h).join φsucΛ ∧ (¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i])
use φsΛ.fstFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ j,
∃ (h : φsΛ.fstFieldOfContract ⟨a, ha⟩ < j),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[j] ∨
¬timeOrderRel φs[j] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])
use φsΛ.sndFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ (h : φsΛ.fstFieldOfContract ⟨a, ha⟩ < φsΛ.sndFieldOfContract ⟨a, ha⟩),
∃ φsucΛ,
φsΛ = (singleton h).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])
use φsΛ.fstFieldOfContract_lt_sndFieldOfContract ⟨a, ha⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])
let φsucΛ :
WickContraction [singleton (φsΛ.fstFieldOfContract_lt_sndFieldOfContract ⟨a, ha⟩)]ᵘᶜ.length :=
congr (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ [subContraction {a} ?m.167]ᵘᶜ.length = [singleton ⋯]ᵘᶜ.length h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) simp [← subContraction_singleton_eq_singleton] All goals completed! 🐙h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]))
(φsΛ.quotContraction {a} (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ {a} ⊆ ↑φsΛh 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩]) simpa using ha All goals completed! 🐙h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])))h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ∃ φsucΛ,
φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])
use φsucΛ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, ha⟩] φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] ∨
¬timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, ha⟩] φs[φsΛ.fstFieldOfContract ⟨a, ha⟩])
simp only [Fin.getElem_fin] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ ∧
(¬timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∨
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)])
apply And.intro h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛh.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ¬timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∨
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)]
· h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ φsΛ = (singleton ⋯).join φsucΛ have h1 := join_congr (subContraction_singleton_eq_singleton _ ⟨a, ha⟩).symm (φsucΛ := φsucΛ) h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = (singleton ⋯).join φsucΛ
simp only [h1, congr_trans_apply, congr_refl, φsucΛ] h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = (subContraction {a} ⋯).join (quotContraction {a} ⋯)
rw [join_sub_quot h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)h1:(singleton ⋯).join φsucΛ = (subContraction {↑⟨a, ha⟩} ⋯).join ((congr ⋯) φsucΛ)⊢ φsΛ = φsΛ All goals completed! 🐙] All goals completed! 🐙
· h.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛhr:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]φsucΛ:WickContraction [singleton ⋯]ᵘᶜ.length := (congr ⋯) (quotContraction {a} ⋯)⊢ ¬timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] ∨
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ha⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ha⟩)] tauto All goals completed! 🐙
lemma timeOrder_timeContract_of_not_eqTimeOnly {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length)
(hl : ¬ φsΛ.EqTimeOnly) : 𝓣(φsΛ.timeContract.1) = 0 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:¬φsΛ.EqTimeOnly⊢ timeOrder ↑φsΛ.timeContract = 0
obtain ⟨i, j, hij, φsucΛ, rfl, hr⟩ := exists_join_singleton_of_not_eqTimeOnly φsΛ hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).join φsucΛ).timeContract = 0
rw [join_timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).timeContract * φsucΛ.timeContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).timeContract * φsucΛ.timeContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).timeContract * φsucΛ.timeContract) = 0
rw [singleton_timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑(⟨WickAlgebra.timeContract φs[i] φs[j], ⋯⟩ * φsucΛ.timeContract) = 0
simp only [Fin.getElem_fin, MulMemClass.coe_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (WickAlgebra.timeContract φs[↑i] φs[↑j] * ↑φsucΛ.timeContract) = 0
rw [timeOrder_timeOrder_left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder (WickAlgebra.timeContract φs[↑i] φs[↑j]) * ↑φsucΛ.timeContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder (WickAlgebra.timeContract φs[↑i] φs[↑j]) * ↑φsucΛ.timeContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder (WickAlgebra.timeContract φs[↑i] φs[↑j]) * ↑φsucΛ.timeContract) = 0
rw [timeOrder_timeContract_ne_time 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.timeContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.timeContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i])] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.timeContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i])
simp only [zero_mul, map_zero] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i])
tauto All goals completed! 🐙
Let φs be a list of 𝓕.FieldOp and φsΛ a WickContraction with
at least one contraction between 𝓕.FieldOp that do not have the same time. Then
𝓣(φsΛ.staticContract.1) = 0.
lemma timeOrder_staticContract_of_not_mem {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(hl : ¬ φsΛ.EqTimeOnly) : 𝓣(φsΛ.staticContract.1) = 0 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthhl:¬φsΛ.EqTimeOnly⊢ timeOrder ↑φsΛ.staticContract = 0
obtain ⟨i, j, hij, φsucΛ, rfl, hr⟩ := exists_join_singleton_of_not_eqTimeOnly φsΛ hl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).join φsucΛ).staticContract = 0
rw [join_staticContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).staticContract * φsucΛ.staticContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).staticContract * φsucΛ.staticContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ↑((singleton hij).staticContract * φsucΛ.staticContract) = 0
simp only [MulMemClass.coe_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (↑(singleton hij).staticContract * ↑φsucΛ.staticContract) = 0
rw [singleton_staticContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j]) * ↑φsucΛ.staticContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j]) * ↑φsucΛ.staticContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j]) * ↑φsucΛ.staticContract) = 0
rw [timeOrder_timeOrder_left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j])) * ↑φsucΛ.staticContract) = 0 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j])) * ↑φsucΛ.staticContract) = 0] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (timeOrder ((superCommute (anPart φs[i])) (ofFieldOp φs[j])) * ↑φsucΛ.staticContract) = 0
rw [timeOrder_superCommute_anPart_ofFieldOp_ne_time 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.staticContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.staticContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i])] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ timeOrder (0 * ↑φsucΛ.staticContract) = 0𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i])
simp only [zero_mul, map_zero] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ:WickContraction [singleton hij]ᵘᶜ.lengthhr:¬timeOrderRel φs[i] φs[j] ∨ ¬timeOrderRel φs[j] φs[i]hl:¬((singleton hij).join φsucΛ).EqTimeOnly⊢ ¬(timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i])
tauto All goals completed! 🐙The condition on a Wick contraction which is true if it has at least one contraction which is between two equal time fields.
def HaveEqTime {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) : Prop :=
∃ (i j : Fin φs.length) (h : {i, j} ∈ φsΛ.1),
timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]
lemma haveEqTime_iff_finset {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) :
HaveEqTime φsΛ ↔ ∃ (a : Finset (Fin φs.length)) (h : a ∈ φsΛ.1),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩]
∧ timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩] := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ φsΛ.HaveEqTime ↔
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩]
simp only [HaveEqTime, Fin.getElem_fin, exists_and_left, exists_prop] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]) ↔
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]
apply Iff.intro mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]) →
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]) →
∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]
· mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]) →
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] intro h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]⊢ ∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]
obtain ⟨i, j, hij, h1, h2⟩ := h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ ∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]
use {i, j}, h1 h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
by_cases hij : i < j pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] have h1n := eq_fstFieldOfContract_of_mem φsΛ ⟨{i,j}, h1⟩ i j (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < j⊢ i ∈ ↑⟨{i, j}, h1⟩ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < j⊢ j ∈ ↑⟨{i, j}, h1⟩pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) hijpos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
have h2n := eq_sndFieldOfContract_of_mem φsΛ ⟨{i,j}, h1⟩ i j (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ i ∈ ↑⟨{i, j}, h1⟩ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = ih2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = ih2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = i⊢ j ∈ ↑⟨{i, j}, h1⟩pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = ih2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = ih2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) hijpos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:i < jh1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = ih2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
simp_all only [true_and] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] have hineqj : i ≠ j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ φsΛ.HaveEqTime ↔
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
by_contra hineqj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i = j⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
subst hineqj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑i]h1:{i, i} ∈ ↑φsΛh2:timeOrderRel φs[↑i] φs[↑i]hij:¬i < i⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
have h2 := φsΛ.2.1 {i, i} h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑i]h1:{i, i} ∈ ↑φsΛh2✝:timeOrderRel φs[↑i] φs[↑i]hij:¬i < ih2:{i, i}.card = 2⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
simp_allneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
have hji : j < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ φsΛ.HaveEqTime ↔
∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
have h1n := eq_fstFieldOfContract_of_mem φsΛ ⟨{i,j}, h1⟩ j i (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < i⊢ j ∈ ↑⟨{i, j}, h1⟩ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < i⊢ i ∈ ↑⟨{i, j}, h1⟩neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) hjineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
have h2n := eq_sndFieldOfContract_of_mem φsΛ ⟨{i,j}, h1⟩ j i (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ j ∈ ↑⟨{i, j}, h1⟩ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jh2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jh2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = j⊢ i ∈ ↑⟨{i, j}, h1⟩neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jh2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jh2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]) hjineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij✝:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]hij:¬i < jhineqj:i ≠ jhji:j < ih1n:φsΛ.fstFieldOfContract ⟨{i, j}, h1⟩ = jh2n:φsΛ.sndFieldOfContract ⟨{i, j}, h1⟩ = i⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, ⋯⟩)]
simp_all All goals completed! 🐙
· mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]) →
∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i] intro h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]
obtain ⟨a, h1, h2, h3⟩ := h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]
use φsΛ.fstFieldOfContract ⟨a, h1⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ∃ j,
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h1⟩)] φs[↑j] ∧
{φsΛ.fstFieldOfContract ⟨a, h1⟩, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑(φsΛ.fstFieldOfContract ⟨a, h1⟩)]
use φsΛ.sndFieldOfContract ⟨a, h1⟩ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h1⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h1⟩)] ∧
{φsΛ.fstFieldOfContract ⟨a, h1⟩, φsΛ.sndFieldOfContract ⟨a, h1⟩} ∈ ↑φsΛ ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h1⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h1⟩)]
simp_all only [and_true, true_and] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ {φsΛ.fstFieldOfContract ⟨a, h1⟩, φsΛ.sndFieldOfContract ⟨a, h1⟩} ∈ ↑φsΛ
rw [← finset_eq_fstFieldOfContract_sndFieldOfContract h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ↑⟨a, h1⟩ ∈ ↑φsΛ h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ↑⟨a, h1⟩ ∈ ↑φsΛ]h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h1:a ∈ ↑φsΛh2:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)]h3:timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, ⋯⟩)]⊢ ↑⟨a, h1⟩ ∈ ↑φsΛ
exact h1 All goals completed! 🐙
@[simp]
lemma empty_not_haveEqTime {φs : List 𝓕.FieldOp} :
¬ HaveEqTime (empty : WickContraction φs.length) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ¬empty.HaveEqTime
rw [haveEqTime_iff_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ¬∃ a,
∃ (h : a ∈ ↑empty),
timeOrderRel φs[empty.fstFieldOfContract ⟨a, h⟩] φs[empty.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[empty.sndFieldOfContract ⟨a, h⟩] φs[empty.fstFieldOfContract ⟨a, h⟩] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ¬∃ a,
∃ (h : a ∈ ↑empty),
timeOrderRel φs[empty.fstFieldOfContract ⟨a, h⟩] φs[empty.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[empty.sndFieldOfContract ⟨a, h⟩] φs[empty.fstFieldOfContract ⟨a, h⟩]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ¬∃ a,
∃ (h : a ∈ ↑empty),
timeOrderRel φs[empty.fstFieldOfContract ⟨a, h⟩] φs[empty.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[empty.sndFieldOfContract ⟨a, h⟩] φs[empty.fstFieldOfContract ⟨a, h⟩]
simp [empty] All goals completed! 🐙Given a Wick contraction the subset of contracted pairs between equal time fields.
def eqTimeContractSet {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) :
Finset (Finset (Fin φs.length)) :=
Finset.univ.filter (fun a =>
a ∈ φsΛ.1 ∧ ∀ (h : a ∈ φsΛ.1),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩]
∧ timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩])lemma eqTimeContractSet_subset {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) :
eqTimeContractSet φsΛ ⊆ φsΛ.1 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ φsΛ.eqTimeContractSet ⊆ ↑φsΛ
intro a ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ φsΛ.eqTimeContractSet⊢ a ∈ ↑φsΛ
simp only [eqTimeContractSet, Finset.mem_filter, Finset.mem_univ, true_and] at ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a ∈ ↑φsΛ ∧
∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩]⊢ a ∈ ↑φsΛ
exact ha.1 All goals completed! 🐙lemma mem_of_mem_eqTimeContractSet{φs : List 𝓕.FieldOp} {φsΛ : WickContraction φs.length}
{a : Finset (Fin φs.length)} (h : a ∈ eqTimeContractSet φsΛ) : a ∈ φsΛ.1 :=
eqTimeContractSet_subset φsΛ h
lemma join_eqTimeContractSet {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) :
eqTimeContractSet (join φsΛ φsucΛ) = φsΛ.eqTimeContractSet ∪
φsucΛ.eqTimeContractSet.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ (φsΛ.join φsucΛ).eqTimeContractSet =
φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet
ext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet ↔
a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet
apply Iff.intro mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet →
a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSetmpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet →
a ∈ (φsΛ.join φsucΛ).eqTimeContractSet
· mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet →
a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet intro h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSet⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet
have hmem := mem_of_mem_eqTimeContractSet h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet
have ht := joinLiftLeft_or_joinLiftRight_of_mem_join (φsucΛ := φsucΛ) _ hmem mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:(∃ b, a = ↑(joinLiftLeft b)) ∨ ∃ b, a = ↑(joinLiftRight b)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet
simp only [Finset.mem_union, Finset.mem_map, RelEmbedding.coe_toEmbedding] mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:(∃ b, a = ↑(joinLiftLeft b)) ∨ ∃ b, a = ↑(joinLiftRight b)⊢ a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a
rcases ht with ht | ht mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:∃ b, a = ↑(joinLiftLeft b)⊢ a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = amp.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:∃ b, a = ↑(joinLiftRight b)⊢ a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a
· mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:∃ b, a = ↑(joinLiftLeft b)⊢ a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a obtain ⟨b, rfl⟩ := ht mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛh:↑(joinLiftLeft b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑(joinLiftLeft b) ∈ φsΛ.eqTimeContractSet ∨
∃ a ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a = ↑(joinLiftLeft b)
left mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛh:↑(joinLiftLeft b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑(joinLiftLeft b) ∈ φsΛ.eqTimeContractSet
simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ, true_and] mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛh:↑(joinLiftLeft b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑(joinLiftLeft b) ∈ ↑φsΛ ∧
∀ (h : ↑(joinLiftLeft b) ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h⟩)]
apply And.intro (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛh:↑(joinLiftLeft b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑(joinLiftLeft b) ∈ ↑φsΛ simp [joinLiftLeft] All goals completed! 🐙)
intro h' mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛh:↑(joinLiftLeft b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)h':↑(joinLiftLeft b) ∈ ↑φsΛ⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ,
Finset.coe_mem, Subtype.coe_eta, join_fstFieldOfContract_joinLiftLeft,
join_sndFieldOfContract_joinLift, forall_true_left, true_and] at h mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsΛhmem:↑(joinLiftLeft b) ∈ ↑(φsΛ.join φsucΛ)h':↑(joinLiftLeft b) ∈ ↑φsΛh:timeOrderRel φs[↑(φsΛ.fstFieldOfContract b)] φs[↑(φsΛ.sndFieldOfContract b)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract b)] φs[↑(φsΛ.fstFieldOfContract b)]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨↑(joinLiftLeft b), h'⟩)]
exact h All goals completed! 🐙
· mp.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:a ∈ ↑(φsΛ.join φsucΛ)ht:∃ b, a = ↑(joinLiftRight b)⊢ a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a obtain ⟨b, rfl⟩ := ht mp.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑(joinLiftRight b) ∈ φsΛ.eqTimeContractSet ∨
∃ a ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a = ↑(joinLiftRight b)
right mp.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ∃ a ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a = ↑(joinLiftRight b)
use b h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑b ∈ φsucΛ.eqTimeContractSet ∧ (Finset.mapEmbedding uncontractedListEmd) ↑b = ↑(joinLiftRight b)
rw [Finset.mapEmbedding_apply h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑b ∈ φsucΛ.eqTimeContractSet ∧ Finset.map uncontractedListEmd ↑b = ↑(joinLiftRight b) h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑b ∈ φsucΛ.eqTimeContractSet ∧ Finset.map uncontractedListEmd ↑b = ↑(joinLiftRight b)] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑b ∈ φsucΛ.eqTimeContractSet ∧ Finset.map uncontractedListEmd ↑b = ↑(joinLiftRight b)
simp only [joinLiftRight, and_true] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:↥↑φsucΛh:↑(joinLiftRight b) ∈ (φsΛ.join φsucΛ).eqTimeContractSethmem:↑(joinLiftRight b) ∈ ↑(φsΛ.join φsucΛ)⊢ ↑b ∈ φsucΛ.eqTimeContractSet
simpa [eqTimeContractSet] using h All goals completed! 🐙
· mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet →
a ∈ (φsΛ.join φsucΛ).eqTimeContractSet intro h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet
simp only [Finset.mem_union, Finset.mem_map,
RelEmbedding.coe_toEmbedding] at h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ φsΛ.eqTimeContractSet ∨ ∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet
rcases h with h | h mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ φsΛ.eqTimeContractSet⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSetmpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet
· mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ φsΛ.eqTimeContractSet⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ,
true_and] at h ⊢ mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ ↑φsΛ ∧
∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]⊢ a ∈ ↑(φsΛ.join φsucΛ) ∧
∀ (h : a ∈ ↑(φsΛ.join φsucΛ)),
timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨a, h⟩)] φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨a, h⟩)] φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨a, h⟩)]
exact ⟨by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:a ∈ ↑φsΛ ∧
∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]⊢ a ∈ ↑(φsΛ.join φsucΛ) simp [join, h.1] All goals completed! 🐙, fun _ => h.2 h.1⟩
· mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:∃ a_1 ∈ φsucΛ.eqTimeContractSet, (Finset.mapEmbedding uncontractedListEmd) a_1 = a⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ,
true_and] at h ⊢ mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:Finset (Fin φs.length)h:∃ a_1,
(a_1 ∈ ↑φsucΛ ∧
∀ (h : a_1 ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨a_1, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨a_1, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨a_1, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨a_1, h⟩)]) ∧
(Finset.mapEmbedding uncontractedListEmd) a_1 = a⊢ a ∈ ↑(φsΛ.join φsucΛ) ∧
∀ (h : a ∈ ↑(φsΛ.join φsucΛ)),
timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨a, h⟩)] φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨a, h⟩)] φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨a, h⟩)]
obtain ⟨b, h1, h2, rfl⟩ := h mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]⊢ (Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ) ∧
∀ (h : (Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)),
timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h⟩)]
φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h⟩)]
φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h⟩)]
refine ⟨by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]⊢ (Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ) simp [join, h1] All goals completed! 🐙, fun h' => ?_⟩
have h2 := h1.2 h1.1 mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]h':(Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)h2:timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]⊢ timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
have hj : ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩
= joinLiftRight ⟨b, h1.1⟩ := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ (φsΛ.join φsucΛ).eqTimeContractSet =
φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]h':(Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)h2:timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]hj:⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩ = joinLiftRight ⟨b, ⋯⟩⊢ timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)] rflmpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]h':(Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)h2:timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]hj:⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩ = joinLiftRight ⟨b, ⋯⟩⊢ timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]h':(Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)h2:timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]hj:⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩ = joinLiftRight ⟨b, ⋯⟩⊢ timeOrderRel φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)] ∧
timeOrderRel φs[↑((φsΛ.join φsucΛ).sndFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
φs[↑((φsΛ.join φsucΛ).fstFieldOfContract ⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩)]
simp only [hj, join_fstFieldOfContract_joinLiftRight, getElem_uncontractedListEmd,
join_sndFieldOfContract_joinLiftRight] mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthb:Finset (Fin [φsΛ]ᵘᶜ.length)h1:b ∈ ↑φsucΛ ∧
∀ (h : b ∈ ↑φsucΛ),
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, h⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, h⟩)]h':(Finset.mapEmbedding uncontractedListEmd) b ∈ ↑(φsΛ.join φsucΛ)h2:timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]hj:⟨(Finset.mapEmbedding uncontractedListEmd) b, h'⟩ = joinLiftRight ⟨b, ⋯⟩⊢ timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] ∧
timeOrderRel [φsΛ]ᵘᶜ[↑(φsucΛ.sndFieldOfContract ⟨b, ⋯⟩)] [φsΛ]ᵘᶜ[↑(φsucΛ.fstFieldOfContract ⟨b, ⋯⟩)]
simpa using h2 All goals completed! 🐙
lemma eqTimeContractSet_of_not_haveEqTime {φs : List 𝓕.FieldOp} {φsΛ : WickContraction φs.length}
(h : ¬ HaveEqTime φsΛ) : eqTimeContractSet φsΛ = ∅ := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬φsΛ.HaveEqTime⊢ φsΛ.eqTimeContractSet = ∅
ext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬φsΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ↔ a ∈ ∅
simp only [Finset.notMem_empty, iff_false] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬φsΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∉ φsΛ.eqTimeContractSet
by_contra hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬φsΛ.HaveEqTimea:Finset (Fin φs.length)hn:a ∈ φsΛ.eqTimeContractSet⊢ False
rw [haveEqTime_iff_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩]a:Finset (Fin φs.length)hn:a ∈ φsΛ.eqTimeContractSet⊢ False 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩]a:Finset (Fin φs.length)hn:a ∈ φsΛ.eqTimeContractSet⊢ False] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:¬∃ a,
∃ (h : a ∈ ↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract ⟨a, h⟩] φs[φsΛ.sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract ⟨a, h⟩] φs[φsΛ.fstFieldOfContract ⟨a, h⟩]a:Finset (Fin φs.length)hn:a ∈ φsΛ.eqTimeContractSet⊢ False
simp only [Fin.getElem_fin, not_exists, not_and] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)hn:a ∈ φsΛ.eqTimeContractSeth:∀ (x : Finset (Fin φs.length)) (x_1 : x ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)]⊢ False
simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ, true_and] at hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)h:∀ (x : Finset (Fin φs.length)) (x_1 : x ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨x, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨x, ⋯⟩)]hn:a ∈ ↑φsΛ ∧
∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]⊢ False
exact h a hn.1 (hn.2 hn.1).1 (hn.2 hn.1).2 All goals completed! 🐙
lemma eqTimeContractSet_of_mem_eqTimeOnly {φs : List 𝓕.FieldOp} {φsΛ : WickContraction φs.length}
(h : φsΛ.EqTimeOnly) : eqTimeContractSet φsΛ = φsΛ.1 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnly⊢ φsΛ.eqTimeContractSet = ↑φsΛ
ext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ↔ a ∈ ↑φsΛ
simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ, true_and,
and_iff_left_iff_imp, imp_forall_iff_forall] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.EqTimeOnlya:Finset (Fin φs.length)⊢ ∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]
rw [EqTimeOnly.eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]a:Finset (Fin φs.length)⊢ ∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]a:Finset (Fin φs.length)⊢ ∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∀ (a : ↥↑φsΛ),
timeOrderRel φs[φsΛ.fstFieldOfContract a] φs[φsΛ.sndFieldOfContract a] ∧
timeOrderRel φs[φsΛ.sndFieldOfContract a] φs[φsΛ.fstFieldOfContract a]a:Finset (Fin φs.length)⊢ ∀ (h : a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨a, h⟩)]
exact fun h_1 => h ⟨a, h_1⟩ All goals completed! 🐙
lemma subContraction_eqTimeContractSet_eqTimeOnly {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length) :
(φsΛ.subContraction (eqTimeContractSet φsΛ) (eqTimeContractSet_subset φsΛ)).EqTimeOnly := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ (subContraction φsΛ.eqTimeContractSet ⋯).EqTimeOnly
rw [EqTimeOnly.eqTimeOnly_iff_forall_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ∀ (a : ↥↑(subContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ∀ (a : ↥↑(subContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ∀ (a : ↥↑(subContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
intro a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:↥↑(subContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
have ha2 := a.2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:↥↑(subContraction φsΛ.eqTimeContractSet ⋯)ha2:↑a ∈ ↑(subContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
simp only [subContraction, eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ,
true_and] at ha2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:↥↑(subContraction φsΛ.eqTimeContractSet ⋯)ha2:↑a ∈ ↑φsΛ ∧
∀ (h : ↑a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨↑a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨↑a, h⟩)]⊢ timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a] ∧
timeOrderRel φs[(subContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract a]
φs[(subContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract a]
simp only [subContraction_fstFieldOfContract, Fin.getElem_fin, subContraction_sndFieldOfContract] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:↥↑(subContraction φsΛ.eqTimeContractSet ⋯)ha2:↑a ∈ ↑φsΛ ∧
∀ (h : ↑a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑a, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨↑a, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑a, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨↑a, h⟩)]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩)]
exact ha2.2 ha2.1 All goals completed! 🐙
lemma pair_mem_eqTimeContractSet_iff {φs : List 𝓕.FieldOp} {i j : Fin φs.length}
(φsΛ : WickContraction φs.length) (h : {i, j} ∈ φsΛ.1) :
{i, j} ∈ φsΛ.eqTimeContractSet ↔ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i] := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛ⊢ {i, j} ∈ φsΛ.eqTimeContractSet ↔ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]
simp only [eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ, true_and] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛ⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
by_cases hij : i < j pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] have h1 := eq_fstFieldOfContract_of_mem φsΛ ⟨{i,j}, h⟩ i j (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < j⊢ i ∈ ↑⟨{i, j}, h⟩ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < j⊢ j ∈ ↑⟨{i, j}, h⟩pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) hijpos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
have h2 := eq_sndFieldOfContract_of_mem φsΛ ⟨{i,j}, h⟩ i j (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ i ∈ ↑⟨{i, j}, h⟩ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = ih2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = ih2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = i⊢ j ∈ ↑⟨{i, j}, h⟩pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = ih2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = ih2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) hijpos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:i < jh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = ih2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
simp_all only [forall_true_left, true_and] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] have hineqj : i ≠ j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛ⊢ {i, j} ∈ φsΛ.eqTimeContractSet ↔ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
by_contra hineqj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i = j⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
subst hineqj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, i} ∈ ↑φsΛhij:¬i < i⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
have h2 := φsΛ.2.1 {i, i} h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, i} ∈ ↑φsΛhij:¬i < ih2:{i, i}.card = 2⊢ Falseneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
simp_allneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
have hji : j < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛ⊢ {i, j} ∈ φsΛ.eqTimeContractSet ↔ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
have h1 := eq_fstFieldOfContract_of_mem φsΛ ⟨{i,j}, h⟩ j i (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < i⊢ j ∈ ↑⟨{i, j}, h⟩ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < i⊢ i ∈ ↑⟨{i, j}, h⟩neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) hjineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
have h2 := eq_sndFieldOfContract_of_mem φsΛ ⟨{i,j}, h⟩ j i (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ j ∈ ↑⟨{i, j}, h⟩ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = j⊢ i ∈ ↑⟨{i, j}, h⟩neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i] simp All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]) hjineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧
∀ (h : {i, j} ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] ∧
timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨{i, j}, h⟩)] φs[↑(φsΛ.fstFieldOfContract ⟨{i, j}, h⟩)]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
simp only [h1, h2] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛhij:¬i < jhineqj:i ≠ jhji:j < ih1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = i⊢ ({i, j} ∈ ↑φsΛ ∧ ∀ (h : {i, j} ∈ ↑φsΛ), timeOrderRel φs[↑j] φs[↑i] ∧ timeOrderRel φs[↑i] φs[↑j]) ↔
timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
simp_all only [not_lt, ne_eq, forall_true_left, true_and] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthφsΛ:WickContraction φs.lengthh:{i, j} ∈ ↑φsΛh1:φsΛ.fstFieldOfContract ⟨{i, j}, h⟩ = jh2:φsΛ.sndFieldOfContract ⟨{i, j}, h⟩ = ihij:j ≤ ihineqj:¬i = jhji:j < i⊢ timeOrderRel φs[↑j] φs[↑i] ∧ timeOrderRel φs[↑i] φs[↑j] ↔ timeOrderRel φs[↑i] φs[↑j] ∧ timeOrderRel φs[↑j] φs[↑i]
exact and_comm All goals completed! 🐙
lemma subContraction_eqTimeContractSet_not_empty_of_haveEqTime
{φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) (h : HaveEqTime φsΛ) :
φsΛ.subContraction (eqTimeContractSet φsΛ) (eqTimeContractSet_subset φsΛ) ≠ empty := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ subContraction φsΛ.eqTimeContractSet ⋯ ≠ empty
simp only [ne_eq] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬subContraction φsΛ.eqTimeContractSet ⋯ = empty
erw [Subtype.ext_iff 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬↑(subContraction φsΛ.eqTimeContractSet ⋯) = ↑empty] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬↑(subContraction φsΛ.eqTimeContractSet ⋯) = ↑empty
simp only [subContraction, empty] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬φsΛ.eqTimeContractSet = ∅
rw [Finset.eq_empty_iff_forall_notMem 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬∀ (x : Finset (Fin φs.length)), x ∉ φsΛ.eqTimeContractSet 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬∀ (x : Finset (Fin φs.length)), x ∉ φsΛ.eqTimeContractSet] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:φsΛ.HaveEqTime⊢ ¬∀ (x : Finset (Fin φs.length)), x ∉ φsΛ.eqTimeContractSet
simp only [HaveEqTime, Fin.getElem_fin, exists_and_left, exists_prop] at h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh:∃ i j, timeOrderRel φs[↑i] φs[↑j] ∧ {i, j} ∈ ↑φsΛ ∧ timeOrderRel φs[↑j] φs[↑i]⊢ ¬∀ (x : Finset (Fin φs.length)), x ∉ φsΛ.eqTimeContractSet
obtain ⟨i, j, hij, h1, h2⟩ := h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ ¬∀ (x : Finset (Fin φs.length)), x ∉ φsΛ.eqTimeContractSet
simp only [not_forall, Decidable.not_not] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ ∃ x, x ∈ φsΛ.eqTimeContractSet
use {i, j} h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ {i, j} ∈ φsΛ.eqTimeContractSet
rw [pair_mem_eqTimeContractSet_iff φsΛ h1 h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]]h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.lengthj:Fin φs.lengthhij:timeOrderRel φs[↑i] φs[↑j]h1:{i, j} ∈ ↑φsΛh2:timeOrderRel φs[↑j] φs[↑i]⊢ timeOrderRel φs[i] φs[j] ∧ timeOrderRel φs[j] φs[i]
simp_all only [Fin.getElem_fin, and_self] All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma quotContraction_eqTimeContractSet_not_haveEqTime {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length) :
¬ HaveEqTime (φsΛ.quotContraction (eqTimeContractSet φsΛ) (eqTimeContractSet_subset φsΛ)) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ¬(quotContraction φsΛ.eqTimeContractSet ⋯).HaveEqTime
rw [haveEqTime_iff_finset 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ¬∃ a,
∃ (h : a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ¬∃ a,
∃ (h : a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ¬∃ a,
∃ (h : a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩] ∧
timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, h⟩]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[(quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, h⟩]
simp only [Fin.getElem_fin, not_exists, not_and] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.length⊢ ∀ (x : Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length))
(x_1 : x ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)),
timeOrderRel
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨x, ⋯⟩)]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨x, ⋯⟩)] →
¬timeOrderRel
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨x, ⋯⟩)]
[subContraction φsΛ.eqTimeContractSet
⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨x, ⋯⟩)]
intro a ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)]
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
erw [subContraction_uncontractedList_get, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel
[subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ[↑((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)]
φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)] subContraction_uncontractedList_get 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)]
φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)] →
¬timeOrderRel φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).sndFieldOfContract ⟨a, ⋯⟩)]
φs[uncontractedListEmd ((quotContraction φsΛ.eqTimeContractSet ⋯).fstFieldOfContract ⟨a, ⋯⟩)]
simp only [quotContraction_fstFieldOfContract_uncontractedListEmd, Fin.getElem_fin,
quotContraction_sndFieldOfContract_uncontractedListEmd] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
simp only [quotContraction, Finset.mem_filter, Finset.mem_univ, true_and] at ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha✝:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛ⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
have hn' : Finset.map uncontractedListEmd a ∉
(φsΛ.subContraction (eqTimeContractSet φsΛ) (eqTimeContractSet_subset φsΛ)).1 :=
uncontractedListEmd_finset_not_mem a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha✝:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhn':Finset.map uncontractedListEmd a ∉ ↑(subContraction φsΛ.eqTimeContractSet ⋯)⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
simp only [subContraction, eqTimeContractSet, Fin.getElem_fin, Finset.mem_filter, Finset.mem_univ,
true_and, not_and, not_forall] at hn' 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha✝:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhn':Finset.map uncontractedListEmd a ∈ ↑φsΛ →
∃ (h : Finset.map uncontractedListEmd a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
obtain ⟨h, h1⟩ := hn' ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin [subContraction φsΛ.eqTimeContractSet ⋯]ᵘᶜ.length)ha✝:a ∈ ↑(quotContraction φsΛ.eqTimeContractSet ⋯)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhn':Finset.map uncontractedListEmd a ∈ ↑φsΛ →
∃ (h : Finset.map uncontractedListEmd a ∈ ↑φsΛ),
timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]h:Finset.map uncontractedListEmd a ∈ ↑φsΛh1:timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]⊢ timeOrderRel φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)] →
¬timeOrderRel φs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
φs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
simp_all All goals completed! 🐙lemma join_haveEqTime_of_eqTimeOnly_nonEmpty {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(h1 : φsΛ.EqTimeOnly) (h2 : φsΛ ≠ empty)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) :
HaveEqTime (join φsΛ φsucΛ) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnlyh2:φsΛ ≠ emptyφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ (φsΛ.join φsucΛ).HaveEqTime
simp only [HaveEqTime, Fin.getElem_fin, join, Finset.mem_union,
Finset.mem_map, RelEmbedding.coe_toEmbedding, exists_and_left, exists_prop] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnlyh2:φsΛ ≠ emptyφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∃ i j,
timeOrderRel φs[↑i] φs[↑j] ∧
({i, j} ∈ ↑φsΛ ∨ ∃ a ∈ ↑φsucΛ, (Finset.mapEmbedding uncontractedListEmd) a = {i, j}) ∧ timeOrderRel φs[↑j] φs[↑i]
simp only [EqTimeOnly, Fin.getElem_fin] at h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∀ (i j : Fin φs.length), {i, j} ∈ ↑φsΛ → timeOrderRel φs[↑i] φs[↑j]h2:φsΛ ≠ emptyφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∃ i j,
timeOrderRel φs[↑i] φs[↑j] ∧
({i, j} ∈ ↑φsΛ ∨ ∃ a ∈ ↑φsucΛ, (Finset.mapEmbedding uncontractedListEmd) a = {i, j}) ∧ timeOrderRel φs[↑j] φs[↑i]
obtain ⟨i, j, h⟩ := exists_pair_of_not_eq_empty _ h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∀ (i j : Fin φs.length), {i, j} ∈ ↑φsΛ → timeOrderRel φs[↑i] φs[↑j]h2:φsΛ ≠ emptyφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin φs.lengthj:Fin φs.lengthh:{i, j} ∈ ↑φsΛ⊢ ∃ i j,
timeOrderRel φs[↑i] φs[↑j] ∧
({i, j} ∈ ↑φsΛ ∨ ∃ a ∈ ↑φsucΛ, (Finset.mapEmbedding uncontractedListEmd) a = {i, j}) ∧ timeOrderRel φs[↑j] φs[↑i]
use i, j h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∀ (i j : Fin φs.length), {i, j} ∈ ↑φsΛ → timeOrderRel φs[↑i] φs[↑j]h2:φsΛ ≠ emptyφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin φs.lengthj:Fin φs.lengthh:{i, j} ∈ ↑φsΛ⊢ timeOrderRel φs[↑i] φs[↑j] ∧
({i, j} ∈ ↑φsΛ ∨ ∃ a ∈ ↑φsucΛ, (Finset.mapEmbedding uncontractedListEmd) a = {i, j}) ∧ timeOrderRel φs[↑j] φs[↑i]
simp_all only [ne_eq, true_or, true_and] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∀ (i j : Fin φs.length), {i, j} ∈ ↑φsΛ → timeOrderRel φs[↑i] φs[↑j]φsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin φs.lengthj:Fin φs.lengthh2:¬φsΛ = emptyh:{i, j} ∈ ↑φsΛ⊢ timeOrderRel φs[↑j] φs[↑i]
exact h1 j i (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthh1:∀ (i j : Fin φs.length), {i, j} ∈ ↑φsΛ → timeOrderRel φs[↑i] φs[↑j]φsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin φs.lengthj:Fin φs.lengthh2:¬φsΛ = emptyh:{i, j} ∈ ↑φsΛ⊢ {j, i} ∈ ↑φsΛ simpa [Finset.pair_comm] using h All goals completed! 🐙)lemma hasEqTimeEquiv_ext_sigma {φs : List 𝓕.FieldOp} {x1 x2 :
Σ (φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty}),
{φssucΛ : WickContraction [φsΛ.1]ᵘᶜ.length // ¬ HaveEqTime φssucΛ}}
(h1 : x1.1.1 = x2.1.1) (h2 : x1.2.1 = congr (by 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpx1:(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }x2:(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }h1:↑x1.fst = ↑x2.fst⊢ [↑x2.fst]ᵘᶜ.length = [↑x1.fst]ᵘᶜ.length simp [h1] All goals completed! 🐙) x2.2.1) : x1 = x2 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpx1:(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }x2:(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }h1:↑x1.fst = ↑x2.fsth2:↑x1.snd = (congr ⋯) ↑x2.snd⊢ x1 = x2
rcases x1 with ⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpx2:(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }a1:WickContraction φs.lengthb1:a1.EqTimeOnly ∧ a1 ≠ emptyc1:WickContraction [↑⟨a1, b1⟩]ᵘᶜ.lengthd1:¬c1.HaveEqTimeh1:↑⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩.fst = ↑x2.fsth2:↑⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩.snd = (congr ⋯) ↑x2.snd⊢ ⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩ = x2
rcases x2 with ⟨b2, h2⟩ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa1:WickContraction φs.lengthb1:a1.EqTimeOnly ∧ a1 ≠ emptyc1:WickContraction [↑⟨a1, b1⟩]ᵘᶜ.lengthd1:¬c1.HaveEqTimeb2:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }h2✝:{ φssucΛ // ¬φssucΛ.HaveEqTime }h1:↑⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩.fst = ↑⟨b2, h2✝⟩.fsth2:↑⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩.snd = (congr ⋯) ↑⟨b2, h2✝⟩.snd⊢ ⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩ = ⟨b2, h2✝⟩
simp only at h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpa1:WickContraction φs.lengthb1:a1.EqTimeOnly ∧ a1 ≠ emptyc1:WickContraction [↑⟨a1, b1⟩]ᵘᶜ.lengthd1:¬c1.HaveEqTimeb2:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }h2✝:{ φssucΛ // ¬φssucΛ.HaveEqTime }h1:a1 = ↑b2h2:↑⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩.snd = (congr ⋯) ↑⟨b2, h2✝⟩.snd⊢ ⟨⟨a1, b1⟩, ⟨c1, d1⟩⟩ = ⟨b2, h2✝⟩
subst h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpb2:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }h2✝:{ φssucΛ // ¬φssucΛ.HaveEqTime }b1:(↑b2).EqTimeOnly ∧ ↑b2 ≠ emptyc1:WickContraction [↑⟨↑b2, b1⟩]ᵘᶜ.lengthd1:¬c1.HaveEqTimeh2:↑⟨⟨↑b2, b1⟩, ⟨c1, d1⟩⟩.snd = (congr ⋯) ↑⟨b2, h2✝⟩.snd⊢ ⟨⟨↑b2, b1⟩, ⟨c1, d1⟩⟩ = ⟨b2, h2✝⟩
simp only [ne_eq, congr_refl] at h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpb2:{ φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }h2✝:{ φssucΛ // ¬φssucΛ.HaveEqTime }b1:(↑b2).EqTimeOnly ∧ ↑b2 ≠ emptyc1:WickContraction [↑⟨↑b2, b1⟩]ᵘᶜ.lengthd1:¬c1.HaveEqTimeh2:c1 = ↑h2✝⊢ ⟨⟨↑b2, b1⟩, ⟨c1, d1⟩⟩ = ⟨b2, h2✝⟩
simp [h2] All goals completed! 🐙The equivalence which separates a Wick contraction which has an equal time contraction into a non-empty contraction only between equal-time fields and a Wick contraction which does not have equal time contractions.
def hasEqTimeEquiv (φs : List 𝓕.FieldOp) :
{φsΛ : WickContraction φs.length // HaveEqTime φsΛ} ≃
Σ (φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty}),
{φssucΛ : WickContraction [φsΛ.1]ᵘᶜ.length // ¬ HaveEqTime φssucΛ} where
toFun φsΛ := ⟨⟨φsΛ.1.subContraction (eqTimeContractSet φsΛ.1) (eqTimeContractSet_subset φsΛ.1),
subContraction_eqTimeContractSet_eqTimeOnly φsΛ.1,
subContraction_eqTimeContractSet_not_empty_of_haveEqTime φsΛ.1 φsΛ.2⟩,
⟨φsΛ.1.quotContraction (eqTimeContractSet φsΛ.1) (eqTimeContractSet_subset φsΛ.1),
quotContraction_eqTimeContractSet_not_haveEqTime φsΛ.1⟩⟩
invFun φsΛ := ⟨join φsΛ.1.1 φsΛ.2.1,
join_haveEqTime_of_eqTimeOnly_nonEmpty φsΛ.1.1 φsΛ.1.2.1 φsΛ.1.2.2 φsΛ.2⟩
left_inv φsΛ := by 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ:{ φsΛ // φsΛ.HaveEqTime }⊢ (fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩)
((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
φsΛ) =
φsΛ
match φsΛ with
| ⟨φsΛ, h1, h2⟩ => 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ✝:{ φsΛ // φsΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:Fin φs.lengthh2:∃ j, ∃ (_ : {h1, j} ∈ ↑φsΛ), timeOrderRel φs[h1] φs[j] ∧ timeOrderRel φs[j] φs[h1]⊢ (fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩)
((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
⟨φsΛ, ⋯⟩) =
⟨φsΛ, ⋯⟩
simp only [ne_eq, Subtype.mk.injEq] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ✝:{ φsΛ // φsΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:Fin φs.lengthh2:∃ j, ∃ (_ : {h1, j} ∈ ↑φsΛ), timeOrderRel φs[h1] φs[j] ∧ timeOrderRel φs[j] φs[h1]⊢ (subContraction φsΛ.eqTimeContractSet ⋯).join (quotContraction φsΛ.eqTimeContractSet ⋯) = φsΛ
exact join_sub_quot φsΛ φsΛ.eqTimeContractSet (eqTimeContractSet_subset φsΛ) All goals completed! 🐙
right_inv φsΛ' := by 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) φsΛ') =
φsΛ'
match φsΛ' with
| ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩ => 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTime⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
have hs : subContraction (φsΛ.join φsucΛ).eqTimeContractSet
(eqTimeContractSet_subset (φsΛ.join φsucΛ)) = φsΛ := by 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) φsΛ') =
φsΛ' 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
apply Subtype.ext 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTime⊢ ↑(subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯) = ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
ext a 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ ↑(subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯) ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
simp only [subContraction] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ (φsΛ.join φsucΛ).eqTimeContractSet ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
rw [join_eqTimeContractSet 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet ↔
a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet ↔
a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding φsucΛ.eqTimeContractSet ↔
a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
rw [eqTimeContractSet_of_not_haveEqTime h2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding ∅ ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding ∅ ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ∪ Finset.map (Finset.mapEmbedding uncontractedListEmd).toEmbedding ∅ ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
simp only [ne_eq, Finset.map_empty, Finset.union_empty] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ φsΛ.eqTimeContractSet ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
rw [eqTimeContractSet_of_mem_eqTimeOnly h1.1 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimea:Finset (Fin φs.length)⊢ a ∈ ↑φsΛ ↔ a ∈ ↑φsΛ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩] 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩ 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ (fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩) =
⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩
refine hasEqTimeEquiv_ext_sigma ?_ ?_ refine_1 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ ↑((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩)).fst =
↑⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩.fstrefine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ ↑((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩)).snd =
(congr ⋯) ↑⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩.snd
· refine_1 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ ↑((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩)).fst =
↑⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩.fst simp only [ne_eq] refine_1 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ
exact hs All goals completed! 🐙
· refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ ↑((fun φsΛ => ⟨⟨subContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩, ⟨quotContraction (↑φsΛ).eqTimeContractSet ⋯, ⋯⟩⟩)
((fun φsΛ => ⟨(↑φsΛ.fst).join ↑φsΛ.snd, ⋯⟩) ⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩)).snd =
(congr ⋯) ↑⟨⟨φsΛ, h1⟩, ⟨φsucΛ, h2⟩⟩.snd simp only [ne_eq] refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ quotContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = (congr ⋯) φsucΛ
apply Subtype.ext refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛ⊢ ↑(quotContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯) = ↑((congr ⋯) φsucΛ)
ext a refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ a ∈ ↑(quotContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯) ↔ a ∈ ↑((congr ⋯) φsucΛ)
simp only [quotContraction, Finset.mem_filter, Finset.mem_univ, true_and] refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔ a ∈ ↑((congr ⋯) φsucΛ)
rw [mem_congr_iff refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔ Finset.map (finCongr ⋯).toEmbedding a ∈ ↑φsucΛ refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔ Finset.map (finCongr ⋯).toEmbedding a ∈ ↑φsucΛ]refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔ Finset.map (finCongr ⋯).toEmbedding a ∈ ↑φsucΛ
rw [mem_join_right_iff refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑((↑⟨φsΛ, h1⟩).join φsucΛ) refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑((↑⟨φsΛ, h1⟩).join φsucΛ)]refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑((↑⟨φsΛ, h1⟩).join φsucΛ)
simp only [ne_eq] refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑(φsΛ.join φsucΛ)
rw [uncontractedListEmd_congr hs refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map ((finCongr ⋯).toEmbedding.trans uncontractedListEmd) a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑(φsΛ.join φsucΛ) refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map ((finCongr ⋯).toEmbedding.trans uncontractedListEmd) a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑(φsΛ.join φsucΛ)]refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map ((finCongr ⋯).toEmbedding.trans uncontractedListEmd) a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map uncontractedListEmd (Finset.map (finCongr ⋯).toEmbedding a) ∈ ↑(φsΛ.join φsucΛ)
rw [Finset.map_map refine_2 𝓕:FieldSpecificationn:ℕc:WickContraction nφs:List 𝓕.FieldOpφsΛ':(φsΛ : { φsΛ // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty }) × { φssucΛ // ¬φssucΛ.HaveEqTime }φsΛ:WickContraction φs.lengthh1:φsΛ.EqTimeOnly ∧ φsΛ ≠ emptyφsucΛ:WickContraction [↑⟨φsΛ, h1⟩]ᵘᶜ.lengthh2:¬φsucΛ.HaveEqTimehs:subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯ = φsΛa:Finset (Fin [subContraction (φsΛ.join φsucΛ).eqTimeContractSet ⋯]ᵘᶜ.length)⊢ Finset.map ((finCongr ⋯).toEmbedding.trans uncontractedListEmd) a ∈ ↑(φsΛ.join φsucΛ) ↔
Finset.map ((finCongr ⋯).toEmbedding.trans uncontractedListEmd) a ∈ ↑(φsΛ.join φsucΛ) All goals completed! 🐙] All goals completed! 🐙
lemma sum_haveEqTime (φs : List 𝓕.FieldOp)
(f : WickContraction φs.length → M) [AddCommMonoid M]:
∑ (φsΛ : {φsΛ : WickContraction φs.length // HaveEqTime φsΛ}), f φsΛ =
∑ (φsΛ : {φsΛ : WickContraction φs.length // φsΛ.EqTimeOnly ∧ φsΛ ≠ empty}),
∑ (φssucΛ : {φssucΛ : WickContraction [φsΛ.1]ᵘᶜ.length // ¬ HaveEqTime φssucΛ}),
f (join φsΛ.1 φssucΛ.1) := by 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ φsΛ, f ↑φsΛ = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)
rw [← (hasEqTimeEquiv φs).symm.sum_comp 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ i, f ↑((hasEqTimeEquiv φs).symm i) = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ) 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ i, f ↑((hasEqTimeEquiv φs).symm i) = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)] 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ i, f ↑((hasEqTimeEquiv φs).symm i) = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)
erw [Finset.sum_sigma 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ a, ∑ s, f ↑((hasEqTimeEquiv φs).symm ⟨a, s⟩) = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)] 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpf:WickContraction φs.length → Minst✝:AddCommMonoid M⊢ ∑ a, ∑ s, f ↑((hasEqTimeEquiv φs).symm ⟨a, s⟩) = ∑ φsΛ, ∑ φssucΛ, f ((↑φsΛ).join ↑φssucΛ)
rfl All goals completed! 🐙