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 nFintype.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 nFintype.card { f // Function.Involutive f (i : Fin n), f i i } = 0 All goals completed! 🐙