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.SubContraction public import Physlib.QFT.PerturbationTheory.WickContraction.StaticContract public import Physlib.QFT.PerturbationTheory.WickContraction.TimeContract public import Physlib.QFT.PerturbationTheory.WickContraction.Sign.Basic

Singleton of contractions

@[expose] public section

The Wick contraction formed from a single ordered pair.

𝓕:FieldSpecificationn:c:WickContraction ni:Fin nj:Fin nhij:i < j x y, x y {i, j} = {x, y} 𝓕:FieldSpecificationn:c:WickContraction ni:Fin nj:Fin nhij:i < ji j {i, j} = {i, j} 𝓕:FieldSpecificationn:c:WickContraction ni:Fin nj:Fin nhij:i < j¬i = j All goals completed! 🐙, 𝓕:FieldSpecificationn:c:WickContraction ni:Fin nj:Fin nhij:i < j a {{i, j}}, b {{i, j}}, a = b Disjoint a b 𝓕:FieldSpecificationn:c:WickContraction ni✝:Fin nj✝:Fin nhij:i < ji:Finset (Fin n)hi:i {{i✝, j✝}}j:Finset (Fin n)hj:j {{i✝, j✝}}i = j Disjoint i j All goals completed! 🐙
lemma mem_singleton {i j : Fin n} (hij : i < j) : {i, j} (singleton hij).1 := n:i:Fin nj:Fin nhij:i < j{i, j} (singleton hij) All goals completed! 🐙lemma mem_singleton_iff {i j : Fin n} (hij : i < j) {a : Finset (Fin n)} : a (singleton hij).1 a = {i, j} := n:i:Fin nj:Fin nhij:i < ja:Finset (Fin n)a (singleton hij) a = {i, j} All goals completed! 🐙n:i:Fin nj:Fin nhij:i < ja:(singleton hij)ha2:a = {i, j}a = {i, j}, All goals completed! 🐙lemma singleton_prod {φs : List 𝓕.FieldOp} {i j : Fin φs.length} (hij : i < j) (f : (singleton hij).1 M) [CommMonoid M] : a, f a = f {i,j}, mem_singleton hij:= 𝓕:FieldSpecificationM:Type u_1φs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jf:(singleton hij) Minst✝:CommMonoid M a, f a = f {i, j}, All goals completed! 🐙@[simp] lemma singleton_fstFieldOfContract {i j : Fin n} (hij : i < j) : (singleton hij).fstFieldOfContract {i, j}, mem_singleton hij = i := n:i:Fin nj:Fin nhij:i < j(singleton hij).fstFieldOfContract {i, j}, = i n:i:Fin nj:Fin nhij:i < ji {i, j}, n:i:Fin nj:Fin nhij:i < jj {i, j}, n:i:Fin nj:Fin nhij:i < ji < j n:i:Fin nj:Fin nhij:i < ji {i, j}, All goals completed! 🐙 n:i:Fin nj:Fin nhij:i < jj {i, j}, All goals completed! 🐙 n:i:Fin nj:Fin nhij:i < ji < j All goals completed! 🐙@[simp] lemma singleton_sndFieldOfContract {i j : Fin n} (hij : i < j) : (singleton hij).sndFieldOfContract {i, j}, mem_singleton hij = j := n:i:Fin nj:Fin nhij:i < j(singleton hij).sndFieldOfContract {i, j}, = j n:i:Fin nj:Fin nhij:i < ji {i, j}, n:i:Fin nj:Fin nhij:i < jj {i, j}, n:i:Fin nj:Fin nhij:i < ji < j n:i:Fin nj:Fin nhij:i < ji {i, j}, All goals completed! 🐙 n:i:Fin nj:Fin nhij:i < jj {i, j}, All goals completed! 🐙 n:i:Fin nj:Fin nhij:i < ji < j All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < j(exchangeSign (𝓕|>ₛφs[(singleton hij).sndFieldOfContract {i, j}, ])) (ofFinset 𝓕.fieldOpStatistic φs.get ((singleton hij).signFinset ((singleton hij).fstFieldOfContract {i, j}, ) ((singleton hij).sndFieldOfContract {i, j}, ))) = (exchangeSign (𝓕|>ₛφs[j])) (ofFinset 𝓕.fieldOpStatistic φs.get ((singleton hij).signFinset i j)) All goals completed! 🐙n:i:Fin nj:Fin nhij:i < ja:Fin n(∀ p (singleton hij), a p) i a j a n:i:Fin nj:Fin nhij:i < ja:Fin n¬a = i ¬a = j ¬i = a ¬j = a All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < ja:Fin [singleton hij]ᵘᶜ.lengthhn:uncontractedListEmd a = ih1:uncontractedListEmd a (singleton hij).uncontractedh2:i (singleton hij).uncontractedFalse All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < ja:Fin [singleton hij]ᵘᶜ.lengthhn:uncontractedListEmd a = jh1:uncontractedListEmd a (singleton hij).uncontractedh2:j (singleton hij).uncontractedFalse All goals completed! 🐙n:i:Fin nj:Fin nhij:i < ja:Fin nh1:i < ah2:a < ji a j a (h : ((singleton hij).getDual? a).isSome = true), i < ((singleton hij).getDual? a).get h n:i:Fin nj:Fin nhij:i < ja:Fin nh1:i < ah2:a < ji a j a All goals completed! 🐙lemma subContraction_singleton_eq_singleton {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) (a : φsΛ.1) : φsΛ.subContraction {a.1} (𝓕:FieldSpecificationn:c:WickContraction nφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:φsΛ{a} φsΛ All goals completed! 🐙) = singleton (φsΛ.fstFieldOfContract_lt_sndFieldOfContract a) := 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:φsΛsubContraction {a} = singleton 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:φsΛ(subContraction {a} ) = (singleton ) 𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:φsΛa = {φsΛ.fstFieldOfContract a, φsΛ.sndFieldOfContract a} All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < jWickAlgebra.timeContract (φs.get ((singleton hij).fstFieldOfContract {i, j}, )) (φs.get ((singleton hij).sndFieldOfContract {i, j}, )), = WickAlgebra.timeContract φs[i] φs[j], All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOpi:Fin φs.lengthj:Fin φs.lengthhij:i < j(superCommute (anPart (φs.get ((singleton hij).fstFieldOfContract {i, j}, )))) (ofFieldOp (φs.get ((singleton hij).sndFieldOfContract {i, j}, ))), = (superCommute (anPart φs[i])) (ofFieldOp φs[j]) All goals completed! 🐙