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.JoinSign associated with joining two Wick contractions
@[expose] public sectione_φs 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.length⊢ List.map [φsΛ]ᵘᶜ.get ((φsucΛ.signFinset i j).sort fun x1 x2 => x1 ≤ x2) =
List.map φs.get (List.map (⇑uncontractedListEmd) ((φsucΛ.signFinset i j).sort fun x1 x2 => x1 ≤ x2))e_φs.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.length⊢ StrictMono ⇑uncontractedListEmd
simp only [List.map_map, List.map_inj_left, Finset.mem_sort, List.get_eq_getElem,
Function.comp_apply, getElem_uncontractedListEmd, implies_true] e_φs.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.length⊢ StrictMono ⇑uncontractedListEmd
intro i j h e_φs.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi✝:Fin [φsΛ]ᵘᶜ.lengthj✝:Fin [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengthh:i < j⊢ uncontractedListEmd i < uncontractedListEmd j
exact uncontractedListEmd_strictMono h All goals completed! 🐙
lemma signFinset_right_map_uncontractedListEmd_eq_filter {φs : List 𝓕.FieldOp}
(φsΛ : WickContraction φs.length) (φsucΛ : WickContraction [φsΛ]ᵘᶜ.length)
(i j : Fin [φsΛ]ᵘᶜ.length) : (φsucΛ.signFinset i j).map uncontractedListEmd =
((join φsΛ φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j)).filter
(fun c => c ∈ φsΛ.uncontracted) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.length⊢ Finset.map uncontractedListEmd (φsucΛ.signFinset i j) =
{c ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) | c ∈ φsΛ.uncontracted}
ext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ a ∈ Finset.map uncontractedListEmd (φsucΛ.signFinset i j) ↔
a ∈ {c ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) | c ∈ φsΛ.uncontracted}
simp only [Finset.mem_map, Finset.mem_filter] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ (∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a) ↔
a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted
apply Iff.intro mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ (∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a) →
a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontractedmpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted →
∃ a_2 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_2 = a
· mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ (∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a) →
a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted intro h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.lengthh:∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a⊢ a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted
obtain ⟨a, ha, rfl⟩ := h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:a ∈ φsucΛ.signFinset i j⊢ uncontractedListEmd a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧
uncontractedListEmd a ∈ φsΛ.uncontracted
apply And.intro mp.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:a ∈ φsucΛ.signFinset i j⊢ uncontractedListEmd a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j)mp.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:a ∈ φsucΛ.signFinset i j⊢ uncontractedListEmd a ∈ φsΛ.uncontracted
· mp.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:a ∈ φsucΛ.signFinset i j⊢ uncontractedListEmd a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) simp_all only [signFinset, Finset.mem_filter, Finset.mem_univ, true_and,
join_getDual?_apply_uncontractedListEmb, Option.map_eq_none_iff, Option.isSome_map] mp.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)
apply And.intro mp.left.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd i < uncontractedListEmd amp.left.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)
· mp.left.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd i < uncontractedListEmd a exact uncontractedListEmd_strictMono ha.1 All goals completed! 🐙
· mp.left.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯) apply And.intro mp.left.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd a < uncontractedListEmd jmp.left.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
· mp.left.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ uncontractedListEmd a < uncontractedListEmd j exact uncontractedListEmd_strictMono ha.2.1 All goals completed! 🐙
· mp.left.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯ have ha2 := ha.2.2 mp.left.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)ha2:φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
simp_all only [and_true] mp.left.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
rcases ha2 with ha2 | ha2 mp.left.right.right.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:φsucΛ.getDual? a = none⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
· mp.left.right.right.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:φsucΛ.getDual? a = none⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯ simp [ha2] All goals completed! 🐙
· mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h⊢ φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯ right mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h⊢ ∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
intro h mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get hh:(φsucΛ.getDual? a).isSome = true⊢ uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
apply lt_of_lt_of_eq (uncontractedListEmd_strictMono (ha2 h)) mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get hh:(φsucΛ.getDual? a).isSome = true⊢ uncontractedListEmd ((φsucΛ.getDual? a).get h) = (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯
rw [Option.get_map mp.left.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:i < a ∧ a < jha2:∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get hh:(φsucΛ.getDual? a).isSome = true⊢ uncontractedListEmd ((φsucΛ.getDual? a).get h) = uncontractedListEmd ((φsucΛ.getDual? a).get ⋯) All goals completed! 🐙] All goals completed! 🐙
· mp.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthha:a ∈ φsucΛ.signFinset i j⊢ uncontractedListEmd a ∈ φsΛ.uncontracted exact uncontractedListEmd_mem_uncontracted a All goals completed! 🐙
· mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.length⊢ a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted →
∃ a_2 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_2 = a intro h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.lengthh:a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontracted⊢ ∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a
have h2 := h.2 mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.lengthh:a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontractedh2:a ∈ φsΛ.uncontracted⊢ ∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a
have h2' := uncontractedListEmd_surjective_mem_uncontracted a h.2 mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin φs.lengthh:a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧ a ∈ φsΛ.uncontractedh2:a ∈ φsΛ.uncontractedh2':∃ j, uncontractedListEmd j = a⊢ ∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = a
obtain ⟨a, rfl⟩ := h2' mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧
uncontractedListEmd a ∈ φsΛ.uncontractedh2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ ∃ a_1 ∈ φsucΛ.signFinset i j, uncontractedListEmd a_1 = uncontractedListEmd a
use a h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd a ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) ∧
uncontractedListEmd a ∈ φsΛ.uncontractedh2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ a ∈ φsucΛ.signFinset i j ∧ uncontractedListEmd a = uncontractedListEmd a
simp_all only [signFinset, Finset.mem_filter, Finset.mem_univ,
join_getDual?_apply_uncontractedListEmb, Option.map_eq_none_iff, Option.isSome_map, true_and,
and_true] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ i < a ∧ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)
apply And.intro h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ i < ah.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h)
· h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ i < a have h1 := h.1 h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd i < uncontractedListEmd a⊢ i < a
rw [StrictMono.lt_iff_lt h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:i < a⊢ i < ah.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd i < uncontractedListEmd a⊢ StrictMono ⇑uncontractedListEmd h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:i < a⊢ i < ah.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd i < uncontractedListEmd a⊢ StrictMono ⇑uncontractedListEmd] at h1h.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:i < a⊢ i < ah.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd i < uncontractedListEmd a⊢ StrictMono ⇑uncontractedListEmd
exact h1 h.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd i < uncontractedListEmd a⊢ StrictMono ⇑uncontractedListEmd
exact fun _ _ h => uncontractedListEmd_strictMono h All goals completed! 🐙
· h.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ a < j ∧ (φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h) apply And.intro h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ a < jh.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h
· h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ a < j have h1 := h.2.1 h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd a < uncontractedListEmd j⊢ a < j
rw [StrictMono.lt_iff_lt h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:a < j⊢ a < jh.right.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd a < uncontractedListEmd j⊢ StrictMono ⇑uncontractedListEmd h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:a < j⊢ a < jh.right.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd a < uncontractedListEmd j⊢ StrictMono ⇑uncontractedListEmd] at h1h.right.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:a < j⊢ a < jh.right.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd a < uncontractedListEmd j⊢ StrictMono ⇑uncontractedListEmd
exact h1 h.right.left.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:uncontractedListEmd a < uncontractedListEmd j⊢ StrictMono ⇑uncontractedListEmd
exact fun _ _ h => uncontractedListEmd_strictMono h All goals completed! 🐙
· h.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontracted⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h have h1 := h.2.2 h.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧
uncontractedListEmd a < uncontractedListEmd j ∧
(φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯)h2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h
simp_all only [and_true] h.right.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:φsucΛ.getDual? a = none ∨
∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h
rcases h1 with h1 | h1 h.right.right.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:φsucΛ.getDual? a = none⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get hh.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h
· h.right.right.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:φsucΛ.getDual? a = none⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h simp [h1] All goals completed! 🐙
· h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ φsucΛ.getDual? a = none ∨ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h right h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ ∀ (h : (φsucΛ.getDual? a).isSome = true), i < (φsucΛ.getDual? a).get h
intro h h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = true⊢ i < (φsucΛ.getDual? a).get h
have h1' := h1 h h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ i < (φsucΛ.getDual? a).get h
have hl : uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.length⊢ Finset.map uncontractedListEmd (φsucΛ.signFinset i j) =
{c ∈ (φsΛ.join φsucΛ).signFinset (uncontractedListEmd i) (uncontractedListEmd j) | c ∈ φsΛ.uncontracted} h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ i < (φsucΛ.getDual? a).get h
apply lt_of_lt_of_eq h1' 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯⊢ (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯ = uncontractedListEmd ((φsucΛ.getDual? a).get h)h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ i < (φsucΛ.getDual? a).get h
simp [Option.get_map]h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ i < (φsucΛ.getDual? a).get hh.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ i < (φsucΛ.getDual? a).get h
rw [StrictMono.lt_iff_lt h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:i < (φsucΛ.getDual? a).get h⊢ i < (φsucΛ.getDual? a).get hh.right.right.inr.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ StrictMono ⇑uncontractedListEmd h.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:i < (φsucΛ.getDual? a).get h⊢ i < (φsucΛ.getDual? a).get hh.right.right.inr.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ StrictMono ⇑uncontractedListEmd] at hlh.right.right.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:i < (φsucΛ.getDual? a).get h⊢ i < (φsucΛ.getDual? a).get hh.right.right.inr.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ StrictMono ⇑uncontractedListEmd
exact hl h.right.right.inr.hf 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthi:Fin [φsΛ]ᵘᶜ.lengthj:Fin [φsΛ]ᵘᶜ.lengtha:Fin [φsΛ]ᵘᶜ.lengthh✝:uncontractedListEmd i < uncontractedListEmd a ∧ uncontractedListEmd a < uncontractedListEmd jh2:uncontractedListEmd a ∈ φsΛ.uncontractedh1:∀ (h : (φsucΛ.getDual? a).isSome = true),
uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯h:(φsucΛ.getDual? a).isSome = trueh1':uncontractedListEmd i < (Option.map (⇑uncontractedListEmd) (φsucΛ.getDual? a)).get ⋯hl:uncontractedListEmd i < uncontractedListEmd ((φsucΛ.getDual? a).get h)⊢ StrictMono ⇑uncontractedListEmd
exact fun _ _ h => uncontractedListEmd_strictMono h All goals completed! 🐙
lemma sign_right_eq_prod_mul_prod {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) :
φsucΛ.sign = (∏ a, 𝓢(𝓕|>ₛ [φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a], 𝓕|>ₛ ⟨φs.get,
((join φsΛ φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))).filter
(fun c => ¬ c ∈ φsΛ.uncontracted)⟩)) *
(∏ a, 𝓢(𝓕|>ₛ [φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a], 𝓕|>ₛ ⟨φs.get,
((join φsΛ φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))⟩)) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign [φsΛ]ᵘᶜ φsucΛ =
(∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}))) *
∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
rw [← Finset.prod_mul_distrib, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign [φsΛ]ᵘᶜ φsucΛ =
∏ x,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
∏ x,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) sign 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
∏ x,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
∏ x,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
∏ x,
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))
congr e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ (fun a =>
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a)))) =
fun x =>
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract x]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))
funext a e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted})) *
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
rw [← map_mul e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))]e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get
(φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
(exchangeSign (𝓕|>ₛ[φsΛ]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
congr e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic [φsΛ]ᵘᶜ.get (φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a)) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))
rw [stat_signFinset_right, e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
(Finset.map uncontractedListEmd (φsucΛ.signFinset (φsucΛ.fstFieldOfContract a) (φsucΛ.sndFieldOfContract a))) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))) e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∈ φsΛ.uncontracted}) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))) signFinset_right_map_uncontractedListEmd_eq_filter e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∈ φsΛ.uncontracted}) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∈ φsΛ.uncontracted}) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))]e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∈ φsΛ.uncontracted}) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))
rw [ofFinset_filter e_f.e_6 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengtha:↥↑φsucΛ⊢ ofFinset 𝓕.fieldOpStatistic φs.get
({i ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
i ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
(φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ φsΛ.uncontracted}) *
ofFinset 𝓕.fieldOpStatistic φs.get
((φsΛ.join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))) All goals completed! 🐙] All goals completed! 🐙
lemma join_singleton_signFinset_eq_filter {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
(join (singleton h) φsucΛ).signFinset i j =
((singleton h).signFinset i j).filter (fun c => ¬
(((join (singleton h) φsucΛ).getDual? c).isSome ∧
((h1 : ((join (singleton h) φsucΛ).getDual? c).isSome) →
(((join (singleton h) φsucΛ).getDual? c).get h1) < i))) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ((singleton h).join φsucΛ).signFinset i j =
{c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)}
ext a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.length⊢ a ∈ ((singleton h).join φsucΛ).signFinset i j ↔
a ∈
{c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)}
simp only [signFinset, Finset.mem_filter, Finset.mem_univ, true_and, not_and, not_forall, not_lt,
and_assoc, and_congr_right_iff] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.length⊢ i < a →
a < j →
((((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯))
intro h1 h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1:i < ah2:a < j⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯)
have h1 : (singleton h).getDual? a = none := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ((singleton h).join φsucΛ).signFinset i j =
{c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)} 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯)
rw [singleton_getDual?_eq_none_iff_neq 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1:i < ah2:a < j⊢ i ≠ a ∧ j ≠ a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1:i < ah2:a < j⊢ i ≠ a ∧ j ≠ a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1:i < ah2:a < j⊢ i ≠ a ∧ j ≠ a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯)
omega 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
((singleton h).getDual? a = none ∨
∀ (h_1 : ((singleton h).getDual? a).isSome = true), i < ((singleton h).getDual? a).get h_1) ∧
((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯)
simp only [h1, Option.isSome_none, Bool.false_eq_true, IsEmpty.forall_iff, or_self, true_and] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) ↔
(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯
apply Iff.intro mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) →
(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ ((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯) →
((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
· mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ (((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i < (((singleton h).join φsucΛ).getDual? a).get h_1) →
(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯ intro h1 h2 mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh1:((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1h2:(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ ∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯
rcases h1 with h1 | h1 mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = none⊢ ∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯mp.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1⊢ ∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯
· mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = none⊢ ∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯ simp only [h1, Option.isSome_none, Bool.false_eq_true, IsEmpty.exists_iff] mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = none⊢ False
have h2' : ¬ (((singleton h).join φsucΛ).getDual? a).isSome := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ((singleton h).join φsucΛ).signFinset i j =
{c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)} mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = noneh2':¬(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ False
exact Option.not_isSome_iff_eq_none.mpr h1mp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = noneh2':¬(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ Falsemp.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:((singleton h).join φsucΛ).getDual? a = noneh2':¬(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ False
exact h2' h2 All goals completed! 🐙
use h2 h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝¹:i < ah2✝:a < jh1✝:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1:∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1⊢ i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯
have h1 := h1 h2 h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝²:i < ah2✝:a < jh1✝¹:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = trueh1✝:∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1h1:i < (((singleton h).join φsucΛ).getDual? a).get h2⊢ i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯
omega All goals completed! 🐙
· mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2:a < jh1:(singleton h).getDual? a = none⊢ ((((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯) →
((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1 intro h2 mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
by_cases h2' : (((singleton h).join φsucΛ).getDual? a).isSome = true pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':¬(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1 have h2 := h2 h2' pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
obtain ⟨hb, h2⟩ := h2 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
right pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ ∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
intro hl pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ i < (((singleton h).join φsucΛ).getDual? a).get hl
apply lt_of_le_of_ne h2 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ i ≠ (((singleton h).join φsucΛ).getDual? a).get ⋯
by_contra hn pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ False
have hij : ((singleton h).join φsucΛ).getDual? i = j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ((singleton h).join φsucΛ).signFinset i j =
{c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)} pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:((singleton h).join φsucΛ).getDual? i = some j⊢ False
rw [@getDual?_eq_some_iff_mem 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ {i, j} ∈ ↑((singleton h).join φsucΛ) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ {i, j} ∈ ↑((singleton h).join φsucΛ)pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:((singleton h).join φsucΛ).getDual? i = some j⊢ False] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯⊢ {i, j} ∈ ↑((singleton h).join φsucΛ)pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:((singleton h).join φsucΛ).getDual? i = some j⊢ False
simp [join, singleton]pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:((singleton h).join φsucΛ).getDual? i = some j⊢ Falsepos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:((singleton h).join φsucΛ).getDual? i = some j⊢ False
simp only [hn, getDual?_getDual?_get_get, Option.some.injEq] at hij pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝¹:a < jh1:(singleton h).getDual? a = noneh2✝:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = truehb:(((singleton h).join φsucΛ).getDual? a).isSome = trueh2:i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯hl:(((singleton h).join φsucΛ).getDual? a).isSome = truehn:i = (((singleton h).join φsucΛ).getDual? a).get ⋯hij:a = j⊢ False
omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':¬(((singleton h).join φsucΛ).getDual? a).isSome = true⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1 simp only [Bool.not_eq_true] at h2' neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:Fin φs.lengthh1✝:i < ah2✝:a < jh1:(singleton h).getDual? a = noneh2:(((singleton h).join φsucΛ).getDual? a).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? a).get ⋯h2':(((singleton h).join φsucΛ).getDual? a).isSome = false⊢ ((singleton h).join φsucΛ).getDual? a = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? a).isSome = true), i < (((singleton h).join φsucΛ).getDual? a).get h_1
simp [h2'] All goals completed! 🐙
lemma join_singleton_left_signFinset_eq_filter {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
(𝓕 |>ₛ ⟨φs.get, (singleton h).signFinset i j⟩)
= (𝓕 |>ₛ ⟨φs.get, (join (singleton h) φsucΛ).signFinset i j⟩) *
(𝓕 |>ₛ ⟨φs.get, ((singleton h).signFinset i j).filter (fun c =>
(((join (singleton h) φsucΛ).getDual? c).isSome ∧
((h1 : ((join (singleton h) φsucΛ).getDual? c).isSome) →
(((join (singleton h) φsucΛ).getDual? c).get h1) < i)))⟩) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j) =
ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})
conv_rhs =>
left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length| ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)
rw [join_singleton_signFinset_eq_filter] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length| ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)})
rw [mul_comm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i}) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)}) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i}) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)})] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j) =
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i}) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
¬((((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i)})
exact (ofFinset_filter_mul_neg 𝓕.fieldOpStatistic _ _ _).symm All goals completed! 🐙
The difference in sign between φsucΛ.sign and the direct contribution of φsucΛ to
(join (singleton h) φsucΛ).
def joinSignRightExtra {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) : ℂ :=
∏ a, 𝓢(𝓕|>ₛ [singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a], 𝓕|>ₛ ⟨φs.get,
((join (singleton h) φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))).filter
(fun c => ¬ c ∈ (singleton h).uncontracted)⟩)
The difference in sign between (singleton h).sign and the direct contribution of
(singleton h) to (join (singleton h) φsucΛ).
def joinSignLeftExtra {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) : ℂ :=
𝓢(𝓕 |>ₛ φs[j], (𝓕 |>ₛ ⟨φs.get, ((singleton h).signFinset i j).filter (fun c =>
(((join (singleton h) φsucΛ).getDual? c).isSome ∧
((h1 : ((join (singleton h) φsucΛ).getDual? c).isSome) →
(((join (singleton h) φsucΛ).getDual? c).get h1) < i)))⟩))
lemma join_singleton_sign_left {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
(singleton h).sign = 𝓢(𝓕 |>ₛ φs[j],
(𝓕 |>ₛ ⟨φs.get, (join (singleton h) φsucΛ).signFinset i j⟩)) * (joinSignLeftExtra h φsucΛ) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs (singleton h) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ
rw [singleton_sign_expand 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j)) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j)) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get ((singleton h).signFinset i j)) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ
rw [join_singleton_left_signFinset_eq_filter h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j) *
ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ
rw [map_mul 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ
rfl All goals completed! 🐙
lemma join_singleton_sign_right {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j)
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
φsucΛ.sign =
(joinSignRightExtra h φsucΛ) *
(∏ a, 𝓢(𝓕|>ₛ [singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a], 𝓕|>ₛ ⟨φs.get,
((join (singleton h) φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))⟩)) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign [singleton h]ᵘᶜ φsucΛ =
joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
rw [sign_right_eq_prod_mul_prod 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted}))) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) =
joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted}))) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) =
joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted}))) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) =
joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
rfl All goals completed! 🐙
lemma joinSignRightExtra_eq_i_j_finset_eq_if {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j) (φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
joinSignRightExtra h φsucΛ = ∏ a,
𝓢((𝓕|>ₛ [singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]),
𝓕 |>ₛ ⟨φs.get, (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅)
∪ (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {i} else ∅)⟩) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
rw [joinSignRightExtra 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted})) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted})) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ ∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted})) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
congr e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ (fun a =>
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted}))) =
fun a =>
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
funext a e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted})) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
congr e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {c ∈
((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)) |
c ∉ (singleton h).uncontracted} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
rw [signFinset e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {c ∈
{i_1 |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} |
c ∉ (singleton h).uncontracted} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {c ∈
{i_1 |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} |
c ∉ (singleton h).uncontracted} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅]e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {c ∈
{i_1 |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} |
c ∉ (singleton h).uncontracted} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
rw [Finset.filter_comm e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅]e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛ⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have h11 : (Finset.filter (fun c => c ∉ (singleton h).uncontracted) Finset.univ) = {i, j} := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
ext x 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ x ∈ {c | c ∉ (singleton h).uncontracted} ↔ x ∈ {i, j}e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
simp only [Finset.mem_filter, Finset.mem_univ, true_and, Finset.mem_insert,
Finset.mem_singleton] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ x ∉ (singleton h).uncontracted ↔ x = i ∨ x = je_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
rw [@mem_uncontracted_iff_not_contracted 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ (¬∀ p ∈ ↑(singleton h), x ∉ p) ↔ x = i ∨ x = j 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ (¬∀ p ∈ ↑(singleton h), x ∉ p) ↔ x = i ∨ x = je_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ (¬∀ p ∈ ↑(singleton h), x ∉ p) ↔ x = i ∨ x = je_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
simp only [singleton, Finset.mem_singleton, forall_eq, Finset.mem_insert, not_or, not_and,
Decidable.not_not] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛx:Fin φs.length⊢ ¬x = i → x = j ↔ x = i ∨ x = je_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
omegae_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {c | c ∉ (singleton h).uncontracted} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
rw [h11 e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {i, j} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {i, j} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅]e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}⊢ {i_1 ∈ {i, j} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} =
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
ext x e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.length⊢ x ∈
{i_1 ∈ {i, j} |
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i_1 ∧
i_1 < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? i_1 = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? i_1).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? i_1).get h_1)} ↔
x ∈
(if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
simp only [Finset.mem_filter, Finset.mem_insert, Finset.mem_singleton, Finset.mem_union] e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.length⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have hjneqfst := singleton_uncontractedEmd_ne_right h (φsucΛ.fstFieldOfContract a) e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have hjneqsnd := singleton_uncontractedEmd_ne_right h (φsucΛ.sndFieldOfContract a) e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have hineqfst := singleton_uncontractedEmd_ne_left h (φsucΛ.fstFieldOfContract a) e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have hineqsnd := singleton_uncontractedEmd_ne_left h (φsucΛ.sndFieldOfContract a) e_f.e_6.e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
by_cases hj1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ simp only [hj1, false_and, ↓reduceIte, Finset.notMem_empty, false_or] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
have hi1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
simp only [hi1, false_and, ↓reduceIte, Finset.notMem_empty, iff_false, not_and, not_or,
not_forall, not_lt] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
intro hxij h1 h2 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihxij:x = i ∨ x = jh1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xh2:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ ¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ have hj1 : uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
by_cases hi1 : ¬ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ simp only [hi1, and_false, ↓reduceIte, Finset.notMem_empty, or_false] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅
have hj2 : ¬ j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅ omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅
simp only [hj2, false_and, and_false, ↓reduceIte, Finset.notMem_empty, iff_false, not_and,
not_or, not_forall, not_lt] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
intro hxij h1 h2 pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hxij:x = i ∨ x = jh1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xh2:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ ¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅ have hi1 : i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅
simp only [hj1, true_and, hi1, and_true] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅
by_cases hi2 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅ simp only [hi2, and_false, ↓reduceIte, Finset.notMem_empty, or_self, iff_false, not_and,
not_or, not_forall, not_lt] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
by_cases hj3 : ¬ j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a) omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a) have hj4 : j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i ∨ x = j →
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
intro h neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = i ∨ x = j⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h✝).join φsucΛ).getDual? x = none ∧
∃ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
(((singleton h✝).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
rcases h with h | h neg.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = i⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h✝).join φsucΛ).getDual? x = none ∧
∃ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
(((singleton h✝).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)neg.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = j⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h✝).join φsucΛ).getDual? x = none ∧
∃ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
(((singleton h✝).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
· neg.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = i⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h✝).join φsucΛ).getDual? x = none ∧
∃ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
(((singleton h✝).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a) subst h neg.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpj:Fin φs.lengthx:Fin φs.lengthh:x < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {x, j}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
omega All goals completed! 🐙
· neg.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = j⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h✝).join φsucΛ).getDual? x = none ∧
∃ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
(((singleton h✝).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a) subst h neg.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthx:Fin φs.lengthh:i < xφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, x}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) →
¬((singleton h).join φsucΛ).getDual? x = none ∧
∃ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
(((singleton h).join φsucΛ).getDual? x).get ⋯ ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
simp only [join_singleton_getDual?_right, reduceCtorEq, not_false_eq_true,
Option.get_some, Option.isSome_some, exists_const, true_and] neg.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthx:Fin φs.lengthh:i < xφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, x}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj4:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x →
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) → i ≤ uncontractedListEmd (φsucΛ.fstFieldOfContract a)
omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅ have hi2 : uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅ omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈
if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∨
x ∈ if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅
simp only [hi2, and_true, ↓reduceIte, Finset.mem_singleton] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i
by_cases hj3 : ¬ j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = ineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i simp only [hj3, ↓reduceIte, Finset.notMem_empty, false_or] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x = i
apply Iff.intro pos.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) →
x = ipos.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i →
(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1)
· pos.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) →
x = i intro h pos.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)⊢ x = i
omega All goals completed! 🐙
· pos.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = i →
(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) intro h pos.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)
subst h pos.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpj:Fin φs.lengthx:Fin φs.lengthh:x < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {x, j}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = x ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1)
simp only [true_or, join_singleton_getDual?_left, reduceCtorEq, Option.isSome_some,
Option.get_some, forall_const, false_or, true_and] pos.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpj:Fin φs.lengthx:Fin φs.lengthh:x < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {x, j}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj3:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j
omega All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i have hj3 : j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignRightExtra h φsucΛ =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = ineg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
(x ∈ if j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then {j} else ∅) ∨ x = i
simp only [hj3, ↓reduceIte, Finset.mem_singleton] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) ↔
x = j ∨ x = i
apply Iff.intro neg.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) →
x = j ∨ x = ineg.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = j ∨ x = i →
(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1)
· neg.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) →
x = j ∨ x = i intro h neg.mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)⊢ x = j ∨ x = i
omega All goals completed! 🐙
· neg.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ x = j ∨ x = i →
(x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1) intro h neg.mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh✝:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h:x = j ∨ x = i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)
rcases h with h1 | h1 neg.mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h1:x = j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)neg.mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h1:x = i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h)
· neg.mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h1:x = j⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h) subst h1 neg.mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthx:Fin φs.lengthh:i < xφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, x}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = i ∨ x = x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1)
simp only [or_true, join_singleton_getDual?_right, reduceCtorEq, Option.isSome_some,
Option.get_some, forall_const, false_or, true_and] neg.mpr.inl 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthx:Fin φs.lengthh:i < xφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, x}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i
omega All goals completed! 🐙
· neg.mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {i, j}x:Fin φs.lengthhjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ ihineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ ihj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)h1:x = i⊢ (x = i ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h✝).join φsucΛ).getDual? x = none ∨
∀ (h : (((singleton h✝).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h✝).join φsucΛ).getDual? x).get h) subst h1 neg.mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpj:Fin φs.lengthx:Fin φs.lengthh:x < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {x, j}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (x = x ∨ x = j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
(((singleton h).join φsucΛ).getDual? x = none ∨
∀ (h_1 : (((singleton h).join φsucΛ).getDual? x).isSome = true),
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < (((singleton h).join φsucΛ).getDual? x).get h_1)
simp only [true_or, join_singleton_getDual?_left, reduceCtorEq, Option.isSome_some,
Option.get_some, forall_const, false_or, true_and] neg.mpr.inr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpj:Fin φs.lengthx:Fin φs.lengthh:x < jφsucΛ:WickContraction [singleton h]ᵘᶜ.lengtha:↥↑φsucΛh11:{c | c ∉ (singleton h).uncontracted} = {x, j}hjneqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ jhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhineqfst:uncontractedListEmd (φsucΛ.fstFieldOfContract a) ≠ xhineqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ xhj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1✝:¬¬x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:x < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhi2:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < xhj3✝:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj3:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < x ∧
x < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j
omega All goals completed! 🐙
lemma joinSignLeftExtra_eq_joinSignRightExtra {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j) (hs : (𝓕 |>ₛ φs[i]) = (𝓕 |>ₛ φs[j]))
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ
/- Simplifying joinSignLeftExtra. -/
let e2 : Fin φs.length ≃ {x // (((singleton h).join φsucΛ).getDual? x).isSome} ⊕
{x // ¬ (((singleton h).join φsucΛ).getDual? x).isSome} := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ
exact (Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ
rw [joinSignLeftExtra, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[j]))
(ofFinset 𝓕.fieldOpStatistic φs.get
({c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i})) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ ofFinset_eq_prod, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[j]))
(∏ i_1,
if
i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[i_1]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ map_prod, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[j]))
(if
x ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[x]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ ← e2.symm.prod_comp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[j]))
(if
e2.symm i_1 ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[e2.symm i_1]
else 1) =
joinSignRightExtra h φsucΛ
simp only [Fin.getElem_fin, Fintype.prod_sum_type] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (∏ a₁,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
e2.symm (Sum.inl a₁) ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[↑(e2.symm (Sum.inl a₁))]
else 1)) *
∏ a₂,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
e2.symm (Sum.inr a₂) ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[↑(e2.symm (Sum.inr a₂))]
else 1) =
joinSignRightExtra h φsucΛ
conv_lhs =>
enter [2, 2, x] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }| (exchangeSign (𝓕|>ₛφs[↑j]))
(if
e2.symm (Sum.inr x) ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[↑(e2.symm (Sum.inr x))]
else 1)
simp only [Equiv.symm_symm, Equiv.sumCompl_apply_inl, Equiv.sumCompl_apply_inr, e2] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }| (exchangeSign (𝓕|>ₛφs[↑j]))
(if
↑x ∈
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i} then
𝓕|>ₛφs[↑↑x]
else 1)
rw [if_neg (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }⊢ ↑x ∉
{c ∈ (singleton h).signFinset i j |
(((singleton h).join φsucΛ).getDual? c).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? c).isSome = true),
(((singleton h).join φsucΛ).getDual? c).get h1 < i}
simp only [Finset.mem_filter, mem_signFinset, not_and, not_forall, not_lt, and_imp] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }⊢ i < ↑x →
↑x < j →
(((singleton h).join φsucΛ).getDual? ↑x).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? ↑x).isSome = true),
i ≤ (((singleton h).join φsucΛ).getDual? ↑x).get ⋯
intro h1 h2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }h1:i < ↑xh2:↑x < j⊢ (((singleton h).join φsucΛ).getDual? ↑x).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? ↑x).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? ↑x).get ⋯
have hx := x.2 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symmx:{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true }h1:i < ↑xh2:↑x < jhx:¬(((singleton h).join φsucΛ).getDual? ↑x).isSome = true⊢ (((singleton h).join φsucΛ).getDual? ↑x).isSome = true →
∃ (h_1 : (((singleton h).join φsucΛ).getDual? ↑x).isSome = true), i ≤ (((singleton h).join φsucΛ).getDual? ↑x).get ⋯
simp_all All goals completed! 🐙)]
simp only [Finset.mem_filter, mem_signFinset, map_one, Finset.prod_const_one, mul_one] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl x) ∧ e2.symm (Sum.inl x) < j) ∧
(((singleton h).join φsucΛ).getDual? (e2.symm (Sum.inl x))).isSome = true ∧
∀ (h1 : (((singleton h).join φsucΛ).getDual? (e2.symm (Sum.inl x))).isSome = true),
(((singleton h).join φsucΛ).getDual? (e2.symm (Sum.inl x))).get h1 < i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl x))]
else 1) =
joinSignRightExtra h φsucΛ
rw [← ((singleton h).join φsucΛ).sigmaContractedEquiv.prod_comp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))]
else 1) =
joinSignRightExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ i_1,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv i_1)))]
else 1) =
joinSignRightExtra h φsucΛ
rw [Fintype.prod_sigma 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
∏ y,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
∏ y,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))]
else 1) =
joinSignRightExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
∏ y,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨x, y⟩)))]
else 1) =
joinSignRightExtra h φsucΛ
conv_lhs =>
enter [2, a] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑((singleton h).join φsucΛ)| ∏ y,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)) ∧
e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)) < j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm (Sum.inl (((singleton h).join φsucΛ).sigmaContractedEquiv ⟨a, y⟩)))]
else 1)
rw [prod_finset_eq_mul_fst_snd] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑((singleton h).join φsucΛ)| (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i <
e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)) ∧
e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)) <
j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).fstFieldOfContract a, ⋯⟩⟩)))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i <
e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)) ∧
e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)) <
j) ∧
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)))).isSome =
true ∧
∀
(h1 :
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)))).isSome =
true),
(((singleton h).join φsucΛ).getDual?
(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)))).get
h1 <
i then
𝓕|>ₛφs[↑(e2.symm
(Sum.inl
(((singleton h).join φsucΛ).sigmaContractedEquiv
⟨a, ⟨((singleton h).join φsucΛ).sndFieldOfContract a, ⋯⟩⟩)))]
else 1)
simp [e2, sigmaContractedEquiv] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑((singleton h).join φsucΛ)| (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract a ∧ ((singleton h).join φsucΛ).fstFieldOfContract a < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract a < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract a ∧ ((singleton h).join φsucΛ).sndFieldOfContract a < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract a < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract a)]
else 1)
rw [prod_join, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a))]
else 1)) *
∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))]
else 1) =
joinSignRightExtra h φsucΛ singleton_prod 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))]
else 1) =
joinSignRightExtra h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))]
else 1) =
joinSignRightExtra h φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))]
else 1) *
∏ a,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < ((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) ∧
((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a) < j) ∧
((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a) < i then
𝓕|>ₛφs[↑(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))]
else 1) =
joinSignRightExtra h φsucΛ
simp only [join_fstFieldOfContract_joinLiftLeft, singleton_fstFieldOfContract,
join_sndFieldOfContract_joinLift, singleton_sndFieldOfContract, lt_self_iff_false, and_false,
↓reduceIte, map_one, mul_one, join_fstFieldOfContract_joinLiftRight,
join_sndFieldOfContract_joinLiftRight, getElem_uncontractedListEmd] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j])) (if (False ∧ i < j) ∧ j < i then 𝓕|>ₛφs[↑i] else 1) *
∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
joinSignRightExtra h φsucΛ
rw [if_neg (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ¬((False ∧ i < j) ∧ j < i) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j])) 1 *
∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
joinSignRightExtra h φsucΛ omega All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j])) 1 *
∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
joinSignRightExtra h φsucΛ)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (exchangeSign (𝓕|>ₛφs[↑j])) 1 *
∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
joinSignRightExtra h φsucΛ
simp only [map_one, one_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
joinSignRightExtra h φsucΛ
/- Introducing joinSignRightExtra. -/
rw [joinSignRightExtra_eq_i_j_finset_eq_if 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ ∏ x,
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1) =
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
congr e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symm⊢ (fun x =>
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract x)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract x) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract x) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract x) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]
else 1)) =
fun a =>
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
funext a e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
have hjneqsnd := singleton_uncontractedEmd_ne_right h (φsucΛ.sndFieldOfContract a) e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
have hl : uncontractedListEmd (φsucΛ.fstFieldOfContract a) <
uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
apply uncontractedListEmd_strictMono 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ j⊢ φsucΛ.fstFieldOfContract a < φsucΛ.sndFieldOfContract ae_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
exact fstFieldOfContract_lt_sndFieldOfContract φsucΛ ae_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
by_cases hj1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) have hi1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
simp [hj1, hi1] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) have hj1 : uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j ∧
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
simp only [hj1, and_true, Fin.getElem_fin, true_and] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
by_cases hi2 : ¬ i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) have hi1 : ¬ i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
have hj2 : ¬ j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬i < uncontractedListEmd (φsucΛ.fstFieldOfContract a)hj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
simp [hi2, hj2, hi1] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) have hi2 : i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
have hi2n : ¬ uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅)) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if
i < uncontractedListEmd (φsucΛ.fstFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.fstFieldOfContract a)]
else 1) *
(exchangeSign (𝓕|>ₛφs[↑j]))
(if
(i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i ∧
i < uncontractedListEmd (φsucΛ.sndFieldOfContract a) then
{i}
else ∅))
simp only [hi2n, and_false, ↓reduceIte, map_one, hi2, true_and, one_mul, and_true] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
by_cases hj2 : ¬ j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) simp only [hj2, false_and, ↓reduceIte, Finset.empty_union] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
have hj2 : uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j:= by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) omegapos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
simp only [hj2, true_and] pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
by_cases hi1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) simp [hi1] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) have hi1 : uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get (if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
simp only [hi1, ↓reduceIte, ofFinset_singleton, List.get_eq_getElem] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j])) (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (𝓕|>ₛφs[↑i])
erw [hs neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j])) (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (𝓕|>ₛφs[j])] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj2:uncontractedListEmd (φsucΛ.sndFieldOfContract a) < jhi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j])) (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (𝓕|>ₛφs[j])
exact exchangeSign_symm (𝓕|>ₛφs[↑j]) (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]) All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:¬¬j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) simp only [not_lt, not_le] at hj2 neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if
j < uncontractedListEmd (φsucΛ.sndFieldOfContract a) ∧
uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
{j}
else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
simp only [hj2, true_and] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
by_cases hi1 : ¬ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) simp [hi1] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) have hi1 : uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅)) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j ∧ uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then
𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
((if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {j} else ∅) ∪
if uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i then {i} else ∅))
simp only [hi1, and_true, ↓reduceIte] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < i⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (ofFinset 𝓕.fieldOpStatistic φs.get ({j} ∪ {i}))
have hj2 : ¬ uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ = joinSignRightExtra h φsucΛ neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (ofFinset 𝓕.fieldOpStatistic φs.get ({j} ∪ {i})) omeganeg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (ofFinset 𝓕.fieldOpStatistic φs.get ({j} ∪ {i}))neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ (exchangeSign (𝓕|>ₛφs[↑j]))
(if uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j then 𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]
else 1) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (ofFinset 𝓕.fieldOpStatistic φs.get ({j} ∪ {i}))
simp only [hj2, ↓reduceIte, map_one] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 = (exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) (ofFinset 𝓕.fieldOpStatistic φs.get ({j} ∪ {i}))
rw [← ofFinset_union_disjoint neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get {j} * ofFinset 𝓕.fieldOpStatistic φs.get {i})neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i} neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get {j} * ofFinset 𝓕.fieldOpStatistic φs.get {i})neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get {j} * ofFinset 𝓕.fieldOpStatistic φs.get {i})neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}
simp only [ofFinset_singleton, List.get_eq_getElem] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 = (exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) ((𝓕|>ₛφs[↑j]) * 𝓕|>ₛφs[↑i])neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}
erw [hs neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 = (exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) ((𝓕|>ₛφs[↑j]) * 𝓕|>ₛφs[j])neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}] neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ 1 = (exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)])) ((𝓕|>ₛφs[↑j]) * 𝓕|>ₛφs[j])neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}
simp only [Fin.getElem_fin, mul_self, map_one] neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ Disjoint {j} {i}
simp only [Finset.disjoint_singleton_right, Finset.mem_singleton] neg.h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthe2:Fin φs.length ≃
{ x // (((singleton h).join φsucΛ).getDual? x).isSome = true } ⊕
{ x // ¬(((singleton h).join φsucΛ).getDual? x).isSome = true } :=
(Equiv.sumCompl fun a => (((singleton h).join φsucΛ).getDual? a).isSome = true).symma:↥↑φsucΛhjneqsnd:uncontractedListEmd (φsucΛ.sndFieldOfContract a) ≠ jhl:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hj1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhj1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < jhi2✝:¬¬i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2:i < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi2n:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < ihj2✝:j < uncontractedListEmd (φsucΛ.sndFieldOfContract a)hi1✝:¬¬uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihi1:uncontractedListEmd (φsucΛ.fstFieldOfContract a) < ihj2:¬uncontractedListEmd (φsucΛ.sndFieldOfContract a) < j⊢ ¬i = j
exact Fin.ne_of_lt h All goals completed! 🐙
lemma join_sign_singleton {φs : List 𝓕.FieldOp}
{i j : Fin φs.length} (h : i < j) (hs : (𝓕 |>ₛ φs[i]) = (𝓕 |>ₛ φs[j]))
(φsucΛ : WickContraction [singleton h]ᵘᶜ.length) :
(join (singleton h) φsucΛ).sign = (singleton h).sign * φsucΛ.sign := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) = sign φs (singleton h) * sign [singleton h]ᵘᶜ φsucΛ
rw [join_singleton_sign_right, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
sign φs (singleton h) *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))) join_singleton_sign_left h φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignLeftExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))))
rw [joinSignLeftExtra_eq_joinSignRightExtra h hs φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignRightExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignRightExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignRightExtra h φsucΛ *
(joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))))
rw [← mul_assoc, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
joinSignRightExtra h φsucΛ *
joinSignRightExtra h φsucΛ *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) mul_assoc _ _ (joinSignRightExtra h φsucΛ) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
have h1 : (joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) = 1 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ sign φs ((singleton h).join φsucΛ) = sign φs (singleton h) * sign [singleton h]ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
rw [← joinSignLeftExtra_eq_joinSignRightExtra h hs φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ * joinSignLeftExtra h φsucΛ = 1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ * joinSignLeftExtra h φsucΛ = 1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.length⊢ joinSignLeftExtra h φsucΛ * joinSignLeftExtra h φsucΛ = 1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
simp [joinSignLeftExtra] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
(joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ) *
∏ a,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[φsucΛ.sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
simp only [Fin.getElem_fin, h1, mul_one] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ sign φs ((singleton h).join φsucΛ) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))
rw [sign, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ ∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract a]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract a)
(((singleton h).join φsucΛ).sndFieldOfContract a))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a))))) *
∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) prod_join 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a))))) *
∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a))))) *
∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a))))) *
∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) *
∏ x,
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))
congr e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ ∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j))e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (fun a =>
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))))) =
fun x =>
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x))))
· e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ ∏ a,
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft a)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) rw [singleton_prod e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j)) e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j))]e_a 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftLeft ⟨{i, j}, ⋯⟩)))) =
(exchangeSign (𝓕|>ₛφs[↑j])) (ofFinset 𝓕.fieldOpStatistic φs.get (((singleton h).join φsucΛ).signFinset i j))
simp All goals completed! 🐙
· e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1⊢ (fun a =>
(exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a))))) =
fun x =>
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract x)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract x))
(uncontractedListEmd (φsucΛ.sndFieldOfContract x)))) funext a e_a.e_f 𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthh:i < jhs:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]φsucΛ:WickContraction [singleton h]ᵘᶜ.lengthh1:joinSignRightExtra h φsucΛ * joinSignRightExtra h φsucΛ = 1a:↥↑φsucΛ⊢ (exchangeSign (𝓕|>ₛφs[((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (((singleton h).join φsucΛ).fstFieldOfContract (joinLiftRight a))
(((singleton h).join φsucΛ).sndFieldOfContract (joinLiftRight a)))) =
(exchangeSign (𝓕|>ₛ[singleton h]ᵘᶜ[↑(φsucΛ.sndFieldOfContract a)]))
(ofFinset 𝓕.fieldOpStatistic φs.get
(((singleton h).join φsucΛ).signFinset (uncontractedListEmd (φsucΛ.fstFieldOfContract a))
(uncontractedListEmd (φsucΛ.sndFieldOfContract a))))
simp All goals completed! 🐙
lemma join_sign_induction {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) (hc : φsΛ.GradingCompliant) :
(n : ℕ) → (hn : φsΛ.1.card = n) →
(join φsΛ φsucΛ).sign = φsΛ.sign * φsucΛ.sign
| 0, hn => 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛhn:(↑φsΛ).card = 0⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛhn:(↑φsΛ).card = 0⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ
rw [@card_zero_iff_empty 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛhn:φsΛ = empty⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛhn:φsΛ = empty⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ] at hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛhn:φsΛ = empty⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ
subst hn 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsucΛ:WickContraction [empty]ᵘᶜ.lengthhc:GradingCompliant φs empty⊢ sign φs (empty.join φsucΛ) = sign φs empty * sign [empty]ᵘᶜ φsucΛ
simp only [empty_join, sign_empty, one_mul] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsucΛ:WickContraction [empty]ᵘᶜ.lengthhc:GradingCompliant φs empty⊢ sign φs ((congr ⋯) φsucΛ) = sign [empty]ᵘᶜ φsucΛ
apply sign_congr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsucΛ:WickContraction [empty]ᵘᶜ.lengthhc:GradingCompliant φs empty⊢ [empty]ᵘᶜ = φs
simp All goals completed! 🐙
| Nat.succ n, hn => 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛn:ℕhn:(↑φsΛ).card = n.succ⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛn:ℕhn:(↑φsΛ).card = n.succ⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ
obtain ⟨i, j, hij, φsucΛ', rfl, h1, h2, h3⟩ :=
exists_join_singleton_of_card_ge_zero φsΛ (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛn:ℕhn:(↑φsΛ).card = n.succ⊢ 0 < (↑φsΛ).card 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (((singleton hij).join φsucΛ').join φsucΛ) =
sign φs ((singleton hij).join φsucΛ') * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ simp [hn] All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (((singleton hij).join φsucΛ').join φsucΛ) =
sign φs ((singleton hij).join φsucΛ') * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ) hc 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (((singleton hij).join φsucΛ').join φsucΛ) =
sign φs ((singleton hij).join φsucΛ') * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
rw [join_assoc, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs ((singleton hij).join (φsucΛ'.join ((congr ⋯) φsucΛ))) =
sign φs ((singleton hij).join φsucΛ') * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ join_sign_singleton hij h1, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs ((singleton hij).join φsucΛ') * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ join_sign_singleton hij h1 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).card⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
have hn : φsucΛ'.1.card = n := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthhc:GradingCompliant φs φsΛn:ℕhn:(↑φsΛ).card = n.succ⊢ sign φs (φsΛ.join φsucΛ) = sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
omega 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * sign [singleton hij]ᵘᶜ (φsucΛ'.join ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
rw [join_sign_induction φsucΛ' (congr (by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ [(singleton hij).join φsucΛ']ᵘᶜ.length = [φsucΛ']ᵘᶜ.length 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ simp [join_uncontractedListGet] All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ) φsucΛ) h2
n hn] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
rw [mul_assoc 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ)] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ)) =
sign φs (singleton hij) * (sign [singleton hij]ᵘᶜ φsucΛ' * sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ)
simp only [mul_eq_mul_left_iff] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ (sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ) = sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ ∨ sign [singleton hij]ᵘᶜ φsucΛ' = 0) ∨
sign φs (singleton hij) = 0
left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ) = sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ ∨ sign [singleton hij]ᵘᶜ φsucΛ' = 0
left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ sign [φsucΛ']ᵘᶜ ((congr ⋯) φsucΛ) = sign [(singleton hij).join φsucΛ']ᵘᶜ φsucΛ
apply sign_congr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpn:ℕi:Fin φs.lengthj:Fin φs.lengthhij:i < jφsucΛ':WickContraction [singleton hij]ᵘᶜ.lengthφsucΛ:WickContraction [(singleton hij).join φsucΛ']ᵘᶜ.lengthhc:GradingCompliant φs ((singleton hij).join φsucΛ')hn✝:(↑((singleton hij).join φsucΛ')).card = n.succh1:(𝓕|>ₛφs[i]) = 𝓕|>ₛφs[j]h2:GradingCompliant [singleton hij]ᵘᶜ φsucΛ'h3:(↑φsucΛ').card + 1 = (↑((singleton hij).join φsucΛ')).cardhn:(↑φsucΛ').card = n⊢ [(singleton hij).join φsucΛ']ᵘᶜ = [φsucΛ']ᵘᶜ
exact join_uncontractedListGet (singleton hij) φsucΛ' All goals completed! 🐙
For a list φs of 𝓕.FieldOp, a grading compliant Wick contraction φsΛ of φs,
and a Wick contraction φsucΛ of [φsΛ]ᵘᶜ, the following relation holds
(join φsΛ φsucΛ).sign = φsΛ.sign * φsucΛ.sign.
In φsΛ.sign the sign is determined by starting with the contracted pair
whose first element occurs at the left-most position. This lemma manifests that this
choice does not matter, and that contracted pairs can be brought together in any order.
lemma join_sign {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) (hc : φsΛ.GradingCompliant) :
(join φsΛ φsucΛ).sign = φsΛ.sign * φsucΛ.sign :=
join_sign_induction φsΛ φsucΛ hc (φsΛ).1.card rfl
For a list φs of 𝓕.FieldOp, a Wick contraction φsΛ of φs,
and a Wick contraction φsucΛ of [φsΛ]ᵘᶜ,
(join φsΛ φsucΛ).sign • (join φsΛ φsucΛ).timeContract is equal to the product of
φsΛ.sign • φsΛ.timeContract and
φsucΛ.sign • φsucΛ.timeContract.
lemma join_sign_timeContract {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length)
(φsucΛ : WickContraction [φsΛ]ᵘᶜ.length) :
(join φsΛ φsucΛ).sign • (join φsΛ φsucΛ).timeContract.1 =
(φsΛ.sign • φsΛ.timeContract.1) * (φsucΛ.sign • φsucΛ.timeContract.1) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.join φsucΛ).timeContract =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract
rw [join_timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.length⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract
by_cases h : φsΛ.GradingCompliant pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContractneg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:¬GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract
· pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract rw [join_sign _ _ h pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:GradingCompliant φs φsΛ⊢ (sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:GradingCompliant φs φsΛ⊢ (sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract]pos 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:GradingCompliant φs φsΛ⊢ (sign φs φsΛ * sign [φsΛ]ᵘᶜ φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract
simp [smul_smul, mul_comm] All goals completed! 🐙
· neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:¬GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(φsΛ.timeContract * φsucΛ.timeContract) =
sign φs φsΛ • ↑φsΛ.timeContract * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract rw [timeContract_of_not_gradingCompliant _ _ h neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:¬GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(0 * φsucΛ.timeContract) = sign φs φsΛ • ↑0 * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:¬GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(0 * φsucΛ.timeContract) = sign φs φsΛ • ↑0 * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract]neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthφsucΛ:WickContraction [φsΛ]ᵘᶜ.lengthh:¬GradingCompliant φs φsΛ⊢ sign φs (φsΛ.join φsucΛ) • ↑(0 * φsucΛ.timeContract) = sign φs φsΛ • ↑0 * sign [φsΛ]ᵘᶜ φsucΛ • ↑φsucΛ.timeContract
simp All goals completed! 🐙