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.UncontractedList

Sub 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 Si.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 Si = 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 = ba = 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 = ba = 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 = ba = 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 = ba = 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 = bDisjoint 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! 🐙𝓕: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) 𝓕: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) 𝓕: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) 𝓕: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} SFinset.map uncontractedListEmd {i, j} = {uncontractedListEmd i, uncontractedListEmd j} {i, j} (quotContraction S hs) 𝓕: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Λ 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] := 𝓕: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 [𝓕: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] 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:= 𝓕: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, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.fstFieldOfContract a, a𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.sndFieldOfContract a, a𝓕: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, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.fstFieldOfContract a, a 𝓕: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 𝓕: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 => 𝓕: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, } All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.sndFieldOfContract a, a 𝓕: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 𝓕: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 => 𝓕: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, } All goals completed! 🐙 𝓕: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, 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:= 𝓕: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, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.fstFieldOfContract a, a𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.sndFieldOfContract a, a𝓕: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, 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.fstFieldOfContract a, a 𝓕: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 𝓕: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 => 𝓕: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, } All goals completed! 🐙 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthS:Finset (Finset (Fin φs.length))hs:S φsΛa:(subContraction S hs)φsΛ.sndFieldOfContract a, a 𝓕: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 𝓕: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 => 𝓕: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, } All goals completed! 🐙 𝓕: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, 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) := 𝓕: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, 𝓕: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) 𝓕: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, 𝓕: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, 𝓕: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) 𝓕: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, All goals completed! 🐙 𝓕: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, All goals completed! 🐙 𝓕: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) 𝓕: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 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) := 𝓕: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, 𝓕: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) 𝓕: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, 𝓕: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, 𝓕: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) 𝓕: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, All goals completed! 🐙 𝓕: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, All goals completed! 🐙 𝓕: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) 𝓕: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 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) := 𝓕: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) 𝓕: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)] 𝓕: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 [𝓕: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 [𝓕: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)] 𝓕: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, )] 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 := 𝓕: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) 𝓕: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)𝓕: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) 𝓕: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) 𝓕: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) 𝓕: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Λ𝓕: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) 𝓕: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Λ All goals completed! 🐙 𝓕: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) All goals completed! 🐙 𝓕: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) 𝓕: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) 𝓕: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) All goals completed! 🐙