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.Mathematics.Fin.Involutions public import Physlib.QFT.PerturbationTheory.WickContraction.ExtractEquiv public import Physlib.QFT.PerturbationTheory.WickContraction.Involutions

Full contraction

We say that a contraction is full if it has no uncontracted fields.

@[expose] public section

A contraction is full if there are no uncontracted fields, i.e. the finite set of uncontracted fields is empty.

def IsFull : Prop := c.uncontracted = ∅

The condition on whether or not a contraction is full is decidable.

instance : Decidable (IsFull c) := decEq c.uncontracted ∅
n:ℕc:WickContraction n⊢ (∀ (x : Fin n), x ∉ c.uncontracted) ↔ ∀ (i : Fin n), ¬↑(equivInvolution c) i = i All goals completed! 🐙

The equivalence between full contractions and fixed-point free involutions.

𝓕:FieldSpecificationn:ℕc:WickContraction nf:{ f // Function.Involutive f ∧ ∀ (i : Fin n), f i ≠ i }⊢ ∀ (i : Fin n), ↑(equivInvolution (equivInvolution.symm ⟨↑f, ⋯⟩)) i ≠ i All goals completed! 🐙⟩ left_inv c := 𝓕:FieldSpecificationn:ℕc✝:WickContraction nc:{ c // c.IsFull }⊢ (fun f => ⟨equivInvolution.symm ⟨↑f, ⋯⟩, ⋯⟩) ((fun c => ⟨↑(equivInvolution ↑c), ⋯⟩) c) = c All goals completed! 🐙 right_inv f := 𝓕:FieldSpecificationn:ℕc:WickContraction nf:{ f // Function.Involutive f ∧ ∀ (i : Fin n), f i ≠ i }⊢ (fun c => ⟨↑(equivInvolution ↑c), ⋯⟩) ((fun f => ⟨equivInvolution.symm ⟨↑f, ⋯⟩, ⋯⟩) f) = f All goals completed! 🐙

If n is even then the number of full contractions is (n-1)!!.

n:ℕhe:Even n⊢ Fintype.card { f // Function.Involutive f ∧ ∀ (i : Fin n), f i ≠ i } = (n - 1)‼ All goals completed! 🐙

If n is odd then there are no full contractions. This is because there will always be at least one element unpaired.

n:ℕho:Odd n⊢ Fintype.card { f // Function.Involutive f ∧ ∀ (i : Fin n), f i ≠ i } = 0 All goals completed! 🐙