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 < j⊢ i ≠ 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 < j⊢ i ∈ ↑⟨{i, j}, ⋯⟩n:ℕi:Fin nj:Fin nhij:i < j⊢ j ∈ ↑⟨{i, j}, ⋯⟩n:ℕi:Fin nj:Fin nhij:i < j⊢ i < j n:ℕi:Fin nj:Fin nhij:i < j⊢ i ∈ ↑⟨{i, j}, ⋯⟩ All goals completed! 🐙 n:ℕi:Fin nj:Fin nhij:i < j⊢ j ∈ ↑⟨{i, j}, ⋯⟩ All goals completed! 🐙 n:ℕi:Fin nj:Fin nhij:i < j⊢ i < 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 < j⊢ i ∈ ↑⟨{i, j}, ⋯⟩n:ℕi:Fin nj:Fin nhij:i < j⊢ j ∈ ↑⟨{i, j}, ⋯⟩n:ℕi:Fin nj:Fin nhij:i < j⊢ i < j n:ℕi:Fin nj:Fin nhij:i < j⊢ i ∈ ↑⟨{i, j}, ⋯⟩ All goals completed! 🐙 n:ℕi:Fin nj:Fin nhij:i < j⊢ j ∈ ↑⟨{i, j}, ⋯⟩ All goals completed! 🐙 n:ℕi:Fin nj:Fin nhij:i < j⊢ i < 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).uncontracted⊢ False 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).uncontracted⊢ False All goals completed! 🐙n:ℕi:Fin nj:Fin nhij:i < ja:Fin nh1:i < ah2:a < j⊢ i ≠ 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 < j⊢ i ≠ 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 < j⊢ ⟨WickAlgebra.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! 🐙