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.UncontractedListSub contractions
@[expose] public section
Given a Wick contraction φsΛ, and a subset of φsΛ.1, the Wick contraction
consisting of contracted pairs within that subset.
def subContraction (S : Finset (Finset (Fin φs.length))) (ha : S ⊆ φsΛ.1) :
WickContraction φs.length :=
⟨S, 𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ a ∈ S, a.card = 2
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛi:Finset (Fin φs.length)hi:i ∈ S⊢ i.card = 2
All goals completed! 🐙,
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ a ∈ S, ∀ b ∈ S, a = b ∨ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛi:Finset (Fin φs.length)hi:i ∈ Sj:Finset (Fin φs.length)hj:j ∈ S⊢ i = j ∨ Disjoint i j
All goals completed! 🐙⟩lemma mem_of_mem_subContraction {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
{a : Finset (Fin φs.length)} (ha : a ∈ (φsΛ.subContraction S hs).1) : a ∈ φsΛ.1 := 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin φs.length)ha:a ∈ ↑(subContraction S hs)⊢ a ∈ ↑φsΛ
All goals completed! 🐙
Given a Wick contraction φsΛ, and a subset S of φsΛ.1, the Wick contraction
on the uncontracted list [φsΛ.subContraction S ha]ᵘᶜ
consisting of the remaining contracted pairs of φsΛ not in S.
def quotContraction (S : Finset (Finset (Fin φs.length))) (ha : S ⊆ φsΛ.1) :
WickContraction [φsΛ.subContraction S ha]ᵘᶜ.length :=
⟨Finset.filter (fun a => Finset.map uncontractedListEmd a ∈ φsΛ.1) Finset.univ,
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ a ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ}, a.card = 2
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha':a ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ}⊢ a.card = 2
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha':Finset.map uncontractedListEmd a ∈ ↑φsΛ⊢ a.card = 2
All goals completed! 🐙, 𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha:S ⊆ ↑φsΛ⊢ ∀ a ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ},
∀ b ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ}, a = b ∨ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:a ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ}b:Finset (Fin [subContraction S ha]ᵘᶜ.length)hb:b ∈ {a | Finset.map uncontractedListEmd a ∈ ↑φsΛ}⊢ a = b ∨ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛ⊢ a = b ∨ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:a = b⊢ a = b ∨ Disjoint a b𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:¬a = b⊢ a = b ∨ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:a = b⊢ a = b ∨ Disjoint a b All goals completed! 🐙
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:¬a = b⊢ a = b ∨ Disjoint a b 𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:¬a = b⊢ Disjoint a b
𝓕:FieldSpecificationn:ℕφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))ha✝:S ⊆ ↑φsΛa:Finset (Fin [subContraction S ha]ᵘᶜ.length)b:Finset (Fin [subContraction S ha]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛhb:Finset.map uncontractedListEmd b ∈ ↑φsΛhab:¬a = bhx:Finset.map uncontractedListEmd a = Finset.map uncontractedListEmd b ∨
Disjoint (Finset.map uncontractedListEmd a) (Finset.map uncontractedListEmd b)⊢ Disjoint a b
All goals completed! 🐙⟩lemma mem_of_mem_quotContraction {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
{a : Finset (Fin [φsΛ.subContraction S hs]ᵘᶜ.length)}
(ha : a ∈ (quotContraction S hs).1) : Finset.map uncontractedListEmd a ∈ φsΛ.1 := 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ
𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:Finset.map uncontractedListEmd a ∈ ↑φsΛ⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ
All goals completed! 🐙neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛi:Fin φs.lengthj:Fin φs.lengthhij:i ≠ jha:{i, j} ∈ ↑φsΛh1:{i, j} ∉ Shi:i ∈ (subContraction S hs).uncontractedhj:j ∈ (subContraction S hs).uncontracted⊢ ∃ a', Finset.map uncontractedListEmd a' = {i, j} ∧ a' ∈ ↑(quotContraction S hs)
obtain ⟨i, rfl⟩ := uncontractedListEmd_surjective_mem_uncontracted i hi neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛj:Fin φs.lengthhj:j ∈ (subContraction S hs).uncontractedi:Fin [subContraction S hs]ᵘᶜ.lengthhij:uncontractedListEmd i ≠ jha:{uncontractedListEmd i, j} ∈ ↑φsΛh1:{uncontractedListEmd i, j} ∉ Shi:uncontractedListEmd i ∈ (subContraction S hs).uncontracted⊢ ∃ a', Finset.map uncontractedListEmd a' = {uncontractedListEmd i, j} ∧ a' ∈ ↑(quotContraction S hs)
obtain ⟨j, rfl⟩ := uncontractedListEmd_surjective_mem_uncontracted j hj neg 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛi:Fin [subContraction S hs]ᵘᶜ.lengthhi:uncontractedListEmd i ∈ (subContraction S hs).uncontractedj:Fin [subContraction S hs]ᵘᶜ.lengthhj:uncontractedListEmd j ∈ (subContraction S hs).uncontractedhij:uncontractedListEmd i ≠ uncontractedListEmd jha:{uncontractedListEmd i, uncontractedListEmd j} ∈ ↑φsΛh1:{uncontractedListEmd i, uncontractedListEmd j} ∉ S⊢ ∃ a', Finset.map uncontractedListEmd a' = {uncontractedListEmd i, uncontractedListEmd j} ∧ a' ∈ ↑(quotContraction S hs)
use {i, j} h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛi:Fin [subContraction S hs]ᵘᶜ.lengthhi:uncontractedListEmd i ∈ (subContraction S hs).uncontractedj:Fin [subContraction S hs]ᵘᶜ.lengthhj:uncontractedListEmd j ∈ (subContraction S hs).uncontractedhij:uncontractedListEmd i ≠ uncontractedListEmd jha:{uncontractedListEmd i, uncontractedListEmd j} ∈ ↑φsΛh1:{uncontractedListEmd i, uncontractedListEmd j} ∉ S⊢ Finset.map uncontractedListEmd {i, j} = {uncontractedListEmd i, uncontractedListEmd j} ∧
{i, j} ∈ ↑(quotContraction S hs)
simp only [Finset.map_insert, Finset.map_singleton, quotContraction, Finset.mem_filter,
Finset.mem_univ, true_and] h 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛi:Fin [subContraction S hs]ᵘᶜ.lengthhi:uncontractedListEmd i ∈ (subContraction S hs).uncontractedj:Fin [subContraction S hs]ᵘᶜ.lengthhj:uncontractedListEmd j ∈ (subContraction S hs).uncontractedhij:uncontractedListEmd i ≠ uncontractedListEmd jha:{uncontractedListEmd i, uncontractedListEmd j} ∈ ↑φsΛh1:{uncontractedListEmd i, uncontractedListEmd j} ∉ S⊢ {uncontractedListEmd i, uncontractedListEmd j} ∈ ↑φsΛ
exact ha All goals completed! 🐙@[simp]
lemma subContraction_uncontractedList_get {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
{a : Fin [subContraction S hs]ᵘᶜ.length} :
[subContraction S hs]ᵘᶜ[a] = φs[uncontractedListEmd a] := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Fin [subContraction S hs]ᵘᶜ.length⊢ [subContraction S hs]ᵘᶜ[a] = φs[uncontractedListEmd a]
erw [← getElem_uncontractedListEmd 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Fin [subContraction S hs]ᵘᶜ.length⊢ φs[↑(uncontractedListEmd a)] = φs[uncontractedListEmd a]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Fin [subContraction S hs]ᵘᶜ.length⊢ φs[↑(uncontractedListEmd a)] = φs[uncontractedListEmd a]
rfl All goals completed! 🐙@[simp]
lemma subContraction_fstFieldOfContract {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
(a : (subContraction S hs).1) :
(subContraction S hs).fstFieldOfContract a =
φsΛ.fstFieldOfContract ⟨a.1, mem_of_mem_subContraction a.2⟩:= by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ (subContraction S hs).fstFieldOfContract a = φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩
apply eq_fstFieldOfContract_of_mem _ _ _
(φsΛ.sndFieldOfContract ⟨a.1, mem_of_mem_subContraction a.2⟩) hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑ahj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑ahij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ < φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩
· hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a have ha := finset_eq_fstFieldOfContract_sndFieldOfContract _
⟨a.1, mem_of_mem_subContraction a.2⟩ hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑⟨↑a, ⋯⟩ = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
simp only at ha hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
conv_lhs =>
rw [ha] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}| {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}
simp All goals completed! 🐙
· hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a have ha := finset_eq_fstFieldOfContract_sndFieldOfContract _
⟨a.1, mem_of_mem_subContraction a.2⟩ hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑⟨↑a, ⋯⟩ = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
simp only at ha hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
conv_lhs =>
rw [ha] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}| {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}
simp All goals completed! 🐙
· hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ < φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ exact fstFieldOfContract_lt_sndFieldOfContract φsΛ ⟨↑a, mem_of_mem_subContraction a.property⟩ All goals completed! 🐙@[simp]
lemma subContraction_sndFieldOfContract {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
(a : (subContraction S hs).1) :
(subContraction S hs).sndFieldOfContract a =
φsΛ.sndFieldOfContract ⟨a.1, mem_of_mem_subContraction a.2⟩:= by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ (subContraction S hs).sndFieldOfContract a = φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩
apply eq_sndFieldOfContract_of_mem _ _
(φsΛ.fstFieldOfContract ⟨a.1, mem_of_mem_subContraction a.2⟩) hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑ahj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑ahij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ < φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩
· hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a have ha := finset_eq_fstFieldOfContract_sndFieldOfContract _
⟨a.1, mem_of_mem_subContraction a.2⟩ hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑⟨↑a, ⋯⟩ = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
simp only at ha hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
conv_lhs =>
rw [ha] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}| {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}
simp All goals completed! 🐙
· hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a have ha := finset_eq_fstFieldOfContract_sndFieldOfContract _
⟨a.1, mem_of_mem_subContraction a.2⟩ hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑⟨↑a, ⋯⟩ = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
simp only at ha hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}⊢ φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ ∈ ↑a
conv_lhs =>
rw [ha] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)ha:↑a = {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}| {φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩, φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩}
simp All goals completed! 🐙
· hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(subContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨↑a, ⋯⟩ < φsΛ.sndFieldOfContract ⟨↑a, ⋯⟩ exact fstFieldOfContract_lt_sndFieldOfContract φsΛ ⟨↑a, mem_of_mem_subContraction a.property⟩ All goals completed! 🐙@[simp]
lemma quotContraction_fstFieldOfContract_uncontractedListEmd {S : Finset (Finset (Fin φs.length))}
{hs : S ⊆ φsΛ.1} (a : (quotContraction S hs).1) :
uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) =
(φsΛ.fstFieldOfContract
⟨Finset.map uncontractedListEmd a.1, mem_of_mem_quotContraction a.2⟩) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) =
φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩
symm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ =
uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a)
apply eq_fstFieldOfContract_of_mem _ _ _
(uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a)) hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) <
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a)
· hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ simp only [Finset.mem_map', fstFieldOfContract_mem] All goals completed! 🐙
· hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ simp All goals completed! 🐙
· hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) <
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) apply uncontractedListEmd_strictMono hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ (quotContraction S hs).fstFieldOfContract a < (quotContraction S hs).sndFieldOfContract a
exact fstFieldOfContract_lt_sndFieldOfContract (quotContraction S hs) a All goals completed! 🐙@[simp]
lemma quotContraction_sndFieldOfContract_uncontractedListEmd {S : Finset (Finset (Fin φs.length))}
{hs : S ⊆ φsΛ.1} (a : (quotContraction S hs).1) :
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) =
(φsΛ.sndFieldOfContract
⟨Finset.map uncontractedListEmd a.1, mem_of_mem_quotContraction a.2⟩) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) =
φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩
symm 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ =
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a)
apply eq_sndFieldOfContract_of_mem _ _
(uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a)) hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) <
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a)
· hi 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ simp only [Finset.mem_map', fstFieldOfContract_mem] All goals completed! 🐙
· hj 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) ∈ ↑⟨Finset.map uncontractedListEmd ↑a, ⋯⟩ simp All goals completed! 🐙
· hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ uncontractedListEmd ((quotContraction S hs).fstFieldOfContract a) <
uncontractedListEmd ((quotContraction S hs).sndFieldOfContract a) apply uncontractedListEmd_strictMono hij 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:↥↑(quotContraction S hs)⊢ (quotContraction S hs).fstFieldOfContract a < (quotContraction S hs).sndFieldOfContract a
exact fstFieldOfContract_lt_sndFieldOfContract (quotContraction S hs) a All goals completed! 🐙lemma quotContraction_gradingCompliant {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
(hsΛ : φsΛ.GradingCompliant) :
GradingCompliant [φsΛ.subContraction S hs]ᵘᶜ (quotContraction S hs) := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛ⊢ GradingCompliant [subContraction S hs]ᵘᶜ (quotContraction S hs)
simp only [GradingCompliant, Subtype.forall] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛ⊢ ∀ (a : Finset (Fin [subContraction S hs]ᵘᶜ.length)) (b : a ∈ ↑(quotContraction S hs)),
(𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).fstFieldOfContract ⟨a, b⟩)]) =
𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).sndFieldOfContract ⟨a, b⟩)]
intro a ha 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).fstFieldOfContract ⟨a, ha⟩)]) =
𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).sndFieldOfContract ⟨a, ha⟩)]
erw [subContraction_uncontractedList_get 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).fstFieldOfContract ⟨a, ha⟩)]) =
𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).sndFieldOfContract ⟨a, ha⟩)]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).fstFieldOfContract ⟨a, ha⟩)]) =
𝓕|>ₛ[subContraction S hs]ᵘᶜ[↑((quotContraction S hs).sndFieldOfContract ⟨a, ha⟩)]
erw [subContraction_uncontractedList_get 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).fstFieldOfContract ⟨a, ha⟩)]) =
𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).sndFieldOfContract ⟨a, ha⟩)]] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).fstFieldOfContract ⟨a, ha⟩)]) =
𝓕|>ₛφs[uncontractedListEmd ((quotContraction S hs).sndFieldOfContract ⟨a, ha⟩)]
simp only [quotContraction_fstFieldOfContract_uncontractedListEmd, Fin.getElem_fin,
quotContraction_sndFieldOfContract_uncontractedListEmd] 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛhsΛ:GradingCompliant φs φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)ha:a ∈ ↑(quotContraction S hs)⊢ (𝓕|>ₛφs[↑(φsΛ.fstFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]) =
𝓕|>ₛφs[↑(φsΛ.sndFieldOfContract ⟨Finset.map uncontractedListEmd a, ⋯⟩)]
apply hsΛ All goals completed! 🐙lemma mem_quotContraction_iff {S : Finset (Finset (Fin φs.length))} {hs : S ⊆ φsΛ.1}
{a : Finset (Fin [φsΛ.subContraction S hs]ᵘᶜ.length)} :
a ∈ (quotContraction S hs).1 ↔ a.map uncontractedListEmd ∈ φsΛ.1
∧ a.map uncontractedListEmd ∉ (subContraction S hs).1 := by 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)⊢ a ∈ ↑(quotContraction S hs) ↔
Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)
apply Iff.intro mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)⊢ a ∈ ↑(quotContraction S hs) →
Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs) →
a ∈ ↑(quotContraction S hs)
· mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)⊢ a ∈ ↑(quotContraction S hs) →
Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs) intro h mp 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)
apply And.intro mp.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛmp.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)
· mp.left 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ exact mem_of_mem_quotContraction h All goals completed! 🐙
· mp.right 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:a ∈ ↑(quotContraction S hs)⊢ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs) exact uncontractedListEmd_finset_not_mem _ All goals completed! 🐙
· mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)⊢ Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs) →
a ∈ ↑(quotContraction S hs) intro h mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)⊢ a ∈ ↑(quotContraction S hs)
have h2 := mem_subContraction_or_quotContraction (S := S) (hs := hs) h.1 mpr 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S ⊆ ↑φsΛa:Finset (Fin [subContraction S hs]ᵘᶜ.length)h:Finset.map uncontractedListEmd a ∈ ↑φsΛ ∧ Finset.map uncontractedListEmd a ∉ ↑(subContraction S hs)h2:Finset.map uncontractedListEmd a ∈ ↑(subContraction S hs) ∨
∃ a', Finset.map uncontractedListEmd a' = Finset.map uncontractedListEmd a ∧ a' ∈ ↑(quotContraction S hs)⊢ a ∈ ↑(quotContraction S hs)
simp_all All goals completed! 🐙