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.WickAlgebra.TimeContraction public import Physlib.QFT.PerturbationTheory.WickContraction.InsertAndContract

Time contractions

@[expose] public section

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, and a i ≤ φs.length the following relation holds

(φsΛ ↩Λ φ i none).timeContract = φsΛ.timeContract

The proof of this result ultimately is a consequence of definitions.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succ a, WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift (insertLift i none a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift (insertLift i none a)))), = φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succ(fun a => WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift (insertLift i none a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift (insertLift i none a)))), ) = fun a => WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succa:φsΛWickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).fstFieldOfContract (congrLift (insertLift i none a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i none).sndFieldOfContract (congrLift (insertLift i none a)))), = WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), All goals completed! 🐙

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, a i ≤ φs.length and a k in φsΛ.uncontracted, then (φsΛ ↩Λ φ i (some k)).timeContract is equal to the product of

    timeContract φ φs[k] if i ≤ k or timeContract φs[k] φ if k < i

    φsΛ.timeContract.

The proof of this result ultimately is a consequence of definitions.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedWickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift {i, i.succAbove j}, ))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift {i, i.succAbove j}, ))), * a, WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift (insertLift i (some j) a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift (insertLift i (some j) a)))), = (if i < i.succAbove j then WickAlgebra.timeContract φ φs[j], else WickAlgebra.timeContract φs[j] φ, ) * φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedWickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift {i, i.succAbove j}, ))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift {i, i.succAbove j}, ))), = if i < i.succAbove j then WickAlgebra.timeContract φ φs[j], else WickAlgebra.timeContract φs[j] φ, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontracted a, WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift (insertLift i (some j) a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift (insertLift i (some j) a)))), = φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedWickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift {i, i.succAbove j}, ))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift {i, i.succAbove j}, ))), = if i < i.succAbove j then WickAlgebra.timeContract φ φs[j], else WickAlgebra.timeContract φs[j] φ, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedWickAlgebra.timeContract (φs.insertIdx (↑i) φ)[(if i < i.succAbove j then Fin.cast i else Fin.cast (i.succAbove j))] (φs.insertIdx (↑i) φ)[(if i < i.succAbove j then Fin.cast (i.succAbove j) else Fin.cast i)], = if i < i.succAbove j then WickAlgebra.timeContract φ φs[j], else WickAlgebra.timeContract φs[j] φ, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedh✝:i < i.succAbove jWickAlgebra.timeContract (φs.insertIdx (↑i) φ)[(Fin.cast i)] (φs.insertIdx (↑i) φ)[(Fin.cast (i.succAbove j))], = WickAlgebra.timeContract φ φs[j], 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedh✝:¬i < i.succAbove jWickAlgebra.timeContract (φs.insertIdx (↑i) φ)[(Fin.cast (i.succAbove j))] (φs.insertIdx (↑i) φ)[(Fin.cast i)], = WickAlgebra.timeContract φs[j] φ, 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedh✝:i < i.succAbove jWickAlgebra.timeContract (φs.insertIdx (↑i) φ)[(Fin.cast i)] (φs.insertIdx (↑i) φ)[(Fin.cast (i.succAbove j))], = WickAlgebra.timeContract φ φs[j], All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontractedh✝:¬i < i.succAbove jWickAlgebra.timeContract (φs.insertIdx (↑i) φ)[(Fin.cast (i.succAbove j))] (φs.insertIdx (↑i) φ)[(Fin.cast i)], = WickAlgebra.timeContract φs[j] φ, All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontracted a, WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift (insertLift i (some j) a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift (insertLift i (some j) a)))), = φsΛ.timeContract 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontracted(fun a => WickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift (insertLift i (some j) a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift (insertLift i (some j) a)))), ) = fun a => WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succj:φsΛ.uncontracteda:φsΛWickAlgebra.timeContract ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).fstFieldOfContract (congrLift (insertLift i (some j) a)))) ((φs.insertIdx (↑i) φ).get ((φsΛ↩Λφ i some j).sndFieldOfContract (congrLift (insertLift i (some j) a)))), = WickAlgebra.timeContract (φs.get (φsΛ.fstFieldOfContract a)) (φs.get (φsΛ.sndFieldOfContract a)), All goals completed! 🐙
𝓕:FieldSpecificationφs:List 𝓕.FieldOp a, WickAlgebra.timeContract (φs.get (fstFieldOfContract , a)) (φs.get (sndFieldOfContract , a)), = 1 All goals completed! 🐙

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, a i ≤ φs.length and a k in φsΛ.uncontracted such that i ≤ k, with the condition that φ has greater or equal time to φs[k], then (φsΛ ↩Λ φ i (some k)).timeContract is equal to the product of

    [anPart φ, φs[k]]ₛ

    φsΛ.timeContract

    two copies of the exchange sign of φ with the uncontracted fields in φ₀…φₖ₋₁. These two exchange signs cancel each other out but are included for convenience.

The proof of this result ultimately is a consequence of definitions and timeContract_of_timeOrderRel.

set_option backward.isDefEq.respectTransparency false in𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:timeOrderRel φ φs[k]hik:i < i.succAbove kh1:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) = ofFinset 𝓕.fieldOpStatistic φs.get ({x φsΛ.uncontracted | x < k})1 = (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x φsΛ.uncontracted | x < k})) * (exchangeSign (𝓕|>ₛφ)) (ofFinset 𝓕.fieldOpStatistic φs.get ({x φsΛ.uncontracted | x < k}))𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:timeOrderRel φ φs[k]hik:i < i.succAbove ktimeOrderRel φ φs[k] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:timeOrderRel φ φs[k]hik:i < i.succAbove ktimeOrderRel φ φs[k] 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:timeOrderRel φ φs[k]hik:i < i.succAbove ktimeOrderRel φ φs[k] All goals completed! 🐙

For a list φs = φ₀…φₙ of 𝓕.FieldOp, a Wick contraction φsΛ of φs, an element φ of 𝓕.FieldOp, a i ≤ φs.length and a k in φsΛ.uncontracted such that k < i, with the condition that φs[k] does not have time greater or equal to φ, then (φsΛ ↩Λ φ i (some k)).timeContract is equal to the product of

    [anPart φ, φs[k]]ₛ

    φsΛ.timeContract

    the exchange sign of φ with the uncontracted fields in φ₀…φₖ₋₁.

    the exchange sign of φ with the uncontracted fields in φ₀…φₖ.

The proof of this result ultimately is a consequence of definitions and timeContract_of_not_timeOrderRel_expand.

set_option backward.isDefEq.respectTransparency false in𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:¬timeOrderRel φs[k] φhik:¬i < i.succAbove kh1✝:ofList 𝓕.fieldOpStatistic (List.take (↑(φsΛ.uncontractedIndexEquiv.symm k)) (List.map φs.get φsΛ.uncontractedList)) = ofFinset 𝓕.fieldOpStatistic φs.get ({x φsΛ.uncontracted | x < k})a:Fin φs.lengthh:(a φsΛ.uncontracted a k a φsΛ.uncontracted a < k) (a φsΛ.uncontracted a k a φsΛ.uncontracted k a)h1:a φsΛ.uncontracted a < kh2':k aa = k All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht✝:¬timeOrderRel φs[k] φhik:¬i < i.succAbove kht:timeOrderRel φs[k] φ timeOrderRel φ φs[k]timeOrderRel φ φs[k]𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:¬timeOrderRel φs[k] φhik:¬i < i.succAbove k¬timeOrderRel φs[k] φ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengthi:Fin φs.length.succk:φsΛ.uncontractedht:¬timeOrderRel φs[k] φhik:¬i < i.succAbove k¬timeOrderRel φs[k] φ All goals completed! 🐙
𝓕:FieldSpecificationφs:List 𝓕.FieldOpφsΛ:WickContraction φs.lengtha:Finset (Fin φs.length)ha:a φsΛha2:¬(𝓕|>ₛφs[(φsΛ.fstFieldOfContract a, ha)]) = 𝓕|>ₛφs[(φsΛ.sndFieldOfContract a, ha)](𝓕|>ₛφs[(φsΛ.fstFieldOfContract a, ha)]) 𝓕|>ₛφs[(φsΛ.sndFieldOfContract a, ha)] All goals completed! 🐙