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.NormalOrder.Basic public import Physlib.QFT.PerturbationTheory.WickAlgebra.SuperCommute

Basic properties of normal ordering

@[expose] public section

Properties of normal ordering.

lemma normalOrder_eq_ι_normalOrderF (a : 𝓕.FieldOpFreeAlgebra) : 𝓝(ι a) = ι 𝓝ᶠ(a) := rfl𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpι (normalOrderSign φs ofCrAnListF (normalOrderList φs)) = normalOrderSign φs ofCrAnList (normalOrderList φs) All goals completed! 🐙𝓕:FieldSpecificationh1:1 = ofCrAnList []normalOrderSign [] ofCrAnList (normalOrderList []) = ofCrAnList [] All goals completed! 🐙𝓕:FieldSpecificationι (normalOrderF (ofFieldOpListF [])) = 1 𝓕:FieldSpecificationι (normalOrderF 1) = 1 𝓕:FieldSpecificationnormalOrder 1 = 1 All goals completed! 🐙𝓕:FieldSpecificationnormalOrderSign [] ofCrAnList (normalOrderList []) = 1 𝓕:FieldSpecification1 1 = 1 All goals completed! 🐙lemma ofCrAnList_eq_normalOrder (φs : List 𝓕.CrAnFieldOp) : ofCrAnList (normalOrderList φs) = normalOrderSign φs 𝓝(ofCrAnList φs) := 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = normalOrderSign φs normalOrder (ofCrAnList φs) erw [𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = normalOrderSign φs normalOrderSign φs ofCrAnList (normalOrderList φs) 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = (normalOrderSign φs * normalOrderSign φs) ofCrAnList (normalOrderList φs) 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = (Wick.koszulSign 𝓕.crAnStatistics normalOrderRel φs * Wick.koszulSign 𝓕.crAnStatistics normalOrderRel φs) ofCrAnList (normalOrderList φs) 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = 1 ofCrAnList (normalOrderList φs) 𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpofCrAnList (normalOrderList φs) = ofCrAnList (normalOrderList φs)All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebraι (normalOrderF (a * normalOrderF b * c)) = normalOrder (ι (a * normalOrderF b * c)) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebraι (normalOrderF (normalOrderF a * b)) = normalOrder (ι (normalOrderF a * b)) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebraι (normalOrderF (a * normalOrderF b)) = normalOrder (ι (a * normalOrderF b)) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.WickAlgebranormalOrder (a * 1) = normalOrder a All goals completed! 🐙

mul anpart and crpart

𝓕:FieldSpecificationφ:𝓕.FieldOpa:𝓕.FieldOpFreeAlgebraι (normalOrderF a * anPartF φ) = normalOrder (ι a) * ι (anPartF φ) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpa:𝓕.FieldOpFreeAlgebraι (crPartF φ * normalOrderF a) = ι (crPartF φ) * normalOrder (ι a) All goals completed! 🐙

Normal order and super commutes

For a field specification 𝓕, and a and b in 𝓕.WickAlgebra the normal ordering of the super commutator of a and b vanishes, i.e. 𝓝([a,b]ₛ) = 0.

𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebraι (normalOrderF ((superCommuteF a) b)) = 0 All goals completed! 🐙
𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebraι (normalOrderF ((superCommuteF a) b * c)) = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebraι (normalOrderF (c * (superCommuteF a) b)) = 0 All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrad:𝓕.FieldOpFreeAlgebraι (normalOrderF (a * (superCommuteF c) d * b)) = 0 All goals completed! 🐙

Swapping terms in a normal order.

𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOpnormalOrder ((exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') ofFieldOp φ' * ofFieldOp φ + (superCommute (ofFieldOp φ)) (ofFieldOp φ')) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') normalOrder (ofFieldOp φ' * ofFieldOp φ) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpnormalOrder ((exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.crAnStatistics φs) ofCrAnList φs * ofCrAnList [φ] + (superCommute (ofCrAnList [φ])) (ofCrAnList φs)) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics φs) normalOrder (ofCrAnList φs * ofCrAnList [φ]) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφ':List 𝓕.FieldOpnormalOrder ((exchangeSign (ofList 𝓕.crAnStatistics [φ])) (ofList 𝓕.fieldOpStatistic φ') ofFieldOpList φ' * ofCrAnList [φ] + (superCommute (ofCrAnList [φ])) (ofFieldOpList φ')) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.fieldOpStatistic φ') normalOrder (ofFieldOpList φ' * ofCrAnList [φ]) All goals completed! 🐙𝓕:FieldSpecificationφ✝:𝓕.FieldOpφ':List 𝓕.FieldOpφ:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum(exchangeSign (𝓕.crAnStatistics FieldOp.outAsymp φ, ())) (ofList 𝓕.fieldOpStatistic φ') normalOrder (ofFieldOpList φ' * ofCrAnOp FieldOp.outAsymp φ, ()) = (exchangeSign (𝓕|>ₛFieldOp.outAsymp φ)) (ofList 𝓕.fieldOpStatistic φ') normalOrder (ofFieldOpList φ' * ofCrAnOp FieldOp.outAsymp φ, ()) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpφ':List 𝓕.FieldOpnormalOrder (ofFieldOpList φ' * anPart φ) = (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ') (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ') normalOrder (ofFieldOpList φ' * anPart φ) erw [𝓕:FieldSpecificationφ:𝓕.FieldOpφ':List 𝓕.FieldOpnormalOrder (ofFieldOpList φ' * anPart φ) = ((exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ') * (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ')) normalOrder (ofFieldOpList φ' * anPart φ)𝓕:FieldSpecificationφ:𝓕.FieldOpφ':List 𝓕.FieldOpnormalOrder (ofFieldOpList φ' * anPart φ) = ((exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ') * (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φ')) normalOrder (ofFieldOpList φ' * anPart φ) All goals completed! 🐙All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpφs':List 𝓕.FieldOpι ((exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φs') normalOrderF (ofFieldOpListF φs' * anPartF φ) + (superCommuteF (anPartF φ)) (normalOrderF (ofFieldOpListF φs'))) = (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φs') normalOrder (ι (ofFieldOpListF φs') * ι (anPartF φ)) + (superCommute (ι (anPartF φ))) (ι (normalOrderF (ofFieldOpListF φs'))) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs':List 𝓕.FieldOp(exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φs') ι (normalOrderF (ofFieldOpListF φs' * anPartF φ)) + ι ((superCommuteF (anPartF φ)) (normalOrderF (ofFieldOpListF φs'))) = (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic φs') normalOrder (ι (ofFieldOpListF φs') * ι (anPartF φ)) + (superCommute (ι (anPartF φ))) (ι (normalOrderF (ofFieldOpListF φs'))) All goals completed! 🐙

Super commutators with a normal ordered term as sums

For a field specification 𝓕, an element φ of 𝓕.CrAnFieldOp, a list φs of 𝓕.CrAnFieldOp, the following relation holds

[φ, 𝓝(φ₀…φₙ)]ₛ = ∑ i, 𝓢(φ, φ₀…φᵢ₋₁) • [φ, φᵢ]ₛ * 𝓝(φ₀…φᵢ₋₁φᵢ₊₁…φₙ).

The proof of this result ultimately goes as follows

    The definition of normalOrder is used to rewrite 𝓝(φ₀…φₙ) as a scalar multiple of a ofCrAnList φsn where φsn is the normal ordering of φ₀…φₙ.

    superCommuteF_ofCrAnListF_ofCrAnListF_eq_sum is used to rewrite the super commutator of φ (considered as a list with one element) with ofCrAnList φsn as a sum of super commutators, one for each element of φsn.

    The fact that super-commutators are in the center of 𝓕.WickAlgebra is used to rearrange terms.

    Properties of ordered lists, and normalOrderSign_eraseIdx are then used to complete the proof.

𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpn:Fin φs.lengthhs:𝓕.crAnStatistics φ = 𝓕.crAnStatistics φs[n]normalOrderSign φs ^ 2 * (exchangeSign (𝓕.crAnStatistics φs[n])) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) ^ 2 * (exchangeSign (𝓕.crAnStatistics φs[n])) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) = normalOrderSign φs ^ 2 * (exchangeSign (𝓕.crAnStatistics (φs.get n))) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) ^ 2 * (exchangeSign (𝓕.crAnStatistics (φs.get n))) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpn:Fin φs.lengthhs:𝓕.crAnStatistics φ = 𝓕.crAnStatistics φs[n]normalOrderSign φs * normalOrderSign φs * ((exchangeSign (𝓕.crAnStatistics (φs.get n))) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) * (exchangeSign (𝓕.crAnStatistics (φs.get n))) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs)))) * (exchangeSign (𝓕.crAnStatistics (φs.get n))) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpn:Fin φs.lengthhs:¬𝓕.crAnStatistics φ = 𝓕.crAnStatistics φs[n](normalOrderSign φs * (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) * normalOrderSign (φs.eraseIdx n)) ((superCommute (ofCrAnOp φ)) (ofCrAnOp φs[n]) * normalOrder (ofCrAnList (φs.eraseIdx n))) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) ((superCommute (ofCrAnOp φ)) (ofCrAnOp φs[n]) * normalOrder (ofCrAnList (φs.eraseIdx n))) erw [𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpn:Fin φs.lengthhs:¬𝓕.crAnStatistics φ = 𝓕.crAnStatistics φs[n](normalOrderSign φs * (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) * normalOrderSign (φs.eraseIdx n)) (0 * normalOrder (ofCrAnList (φs.eraseIdx n))) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) (0 * normalOrder (ofCrAnList (φs.eraseIdx n)))𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpφs:List 𝓕.CrAnFieldOpn:Fin φs.lengthhs:¬𝓕.crAnStatistics φ = 𝓕.crAnStatistics φs[n](normalOrderSign φs * (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑(normalOrderEquiv n)) (normalOrderList φs))) * normalOrderSign (φs.eraseIdx n)) (0 * normalOrder (ofCrAnList (φs.eraseIdx n))) = (exchangeSign (𝓕.crAnStatistics φ)) (ofList 𝓕.crAnStatistics (List.take (↑n) φs)) (0 * normalOrder (ofCrAnList (φs.eraseIdx n))) All goals completed! 🐙
All goals completed! 🐙

The commutator of the annihilation part of a field operator with a normal ordered list of field operators can be decomposed into the sum of the commutators of the annihilation part with each element of the list of field operators, i.e. [anPart φ, 𝓝(φ₀…φₙ)]ₛ= ∑ i, 𝓢(φ, φ₀…φᵢ₋₁) • [anPart φ, φᵢ]ₛ * 𝓝(φ₀…φᵢ₋₁φᵢ₊₁…φₙ).

𝓕:FieldSpecificationφ✝:𝓕.FieldOpφs:List 𝓕.FieldOpφ:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum n, (exchangeSign (𝓕.crAnStatistics FieldOp.outAsymp φ, ())) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs)) (superCommute (ofCrAnOp FieldOp.outAsymp φ, ())) (ofFieldOp φs[n]) * normalOrder (ofFieldOpList (φs.eraseIdx n)) = x, (exchangeSign (𝓕|>ₛFieldOp.outAsymp φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs)) ((superCommute (ofCrAnOp FieldOp.outAsymp φ, ())) (ofFieldOpF φs[x]) * normalOrder (ofFieldOpList (φs.eraseIdx x))) 𝓕:FieldSpecificationφ✝:𝓕.FieldOpφs:List 𝓕.FieldOpφ:((f : 𝓕.Field) × 𝓕.AsymptoticLabel f) × Momentum x, (exchangeSign (𝓕|>ₛFieldOp.outAsymp φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs)) ((superCommute (ofCrAnOp FieldOp.outAsymp φ, ())) (ofFieldOp φs[x]) * normalOrder (ofFieldOpList (φs.eraseIdx x))) = x, (exchangeSign (𝓕|>ₛFieldOp.outAsymp φ)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs)) ((superCommute (ofCrAnOp FieldOp.outAsymp φ, ())) (ofFieldOpF φs[x]) * normalOrder (ofFieldOpList (φs.eraseIdx x))) All goals completed! 🐙

Multiplying with normal ordered terms

Within a proto-operator algebra we have that anPartF φ * 𝓝(φ₀φ₁…φₙ) = 𝓝((anPart φ)φ₀φ₁…φₙ) + [anpart φ, 𝓝(φ₀φ₁…φₙ)]ₛ.

All goals completed! 🐙

Within a proto-operator algebra we have that φ * 𝓝ᶠ(φ₀φ₁…φₙ) = 𝓝ᶠ(φφ₀φ₁…φₙ) + [anpart φ, 𝓝ᶠ(φ₀φ₁…φₙ)]ₛF.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpnormalOrder (crPart φ * ofFieldOpList φs + anPart φ * ofFieldOpList φs) + (superCommute (anPart φ)) (normalOrder (ofFieldOpList φs)) = normalOrder (ofFieldOp φ * ofFieldOpList φs) + (superCommute (anPart φ)) (normalOrder (ofFieldOpList φs)) conv_lhs => 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp| normalOrder (crPart φ * ofFieldOpList φs + anPart φ * ofFieldOpList φs) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp| normalOrder (ofFieldOp φ * ofFieldOpList φs)

For a field specification 𝓕, a φ in 𝓕.FieldOp and a list φs of 𝓕.FieldOp then φ * 𝓝(φ₀φ₁…φₙ) is equal to

𝓝(φφ₀φ₁…φₙ) + ∑ i, (𝓢(φ,φ₀φ₁…φᵢ₋₁) • [anPart φ, φᵢ]ₛ) * 𝓝(φ₀…φᵢ₋₁φᵢ₊₁…φₙ).

The proof ultimately goes as follows:

    ofFieldOp_eq_crPart_add_anPart is used to split φ into its creation and annihilation parts.

    The following relation is then used

    crPart φ * 𝓝(φ₀φ₁…φₙ) = 𝓝(crPart φ * φ₀φ₁…φₙ).

    It used that anPart φ * 𝓝(φ₀φ₁…φₙ) is equal to

    𝓢(φ, φ₀φ₁…φₙ) 𝓝(φ₀φ₁…φₙ) * anPart φ + [anPart φ, 𝓝(φ₀φ₁…φₙ)]

    Then it is used that

    𝓢(φ, φ₀φ₁…φₙ) 𝓝(φ₀φ₁…φₙ) * anPart φ = 𝓝(anPart φ * φ₀φ₁…φₙ)

    The result ofCrAnOp_superCommute_normalOrder_ofCrAnList_sum is used to expand [anPart φ, 𝓝(φ₀φ₁…φₙ)] as a sum.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpnormalOrder (ofFieldOp φ * ofFieldOpList φs) + n, (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic (List.take (↑n) φs)) (superCommute (anPart φ)) (ofFieldOpF φs[n]) * normalOrder (ofFieldOpList (φs.eraseIdx n)) = n, contractStateAtIndex φ φs n * normalOrder (ofFieldOpList (optionEraseZ φs φ n)) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpnormalOrder (ofFieldOp φ * ofFieldOpList φs) + x, (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs)) ((superCommute (anPart φ)) (ofFieldOpF φs[x]) * normalOrder (ofFieldOpList (φs.eraseIdx x))) = normalOrder (ofFieldOpList (optionEraseZ φs φ none)) + x, (exchangeSign (𝓕|>ₛφ)) (ofList 𝓕.fieldOpStatistic (List.take (↑x) φs)) ((superCommute (anPart φ)) (ofFieldOp φs[x]) * normalOrder (ofFieldOpList (optionEraseZ φs φ (some x)))) All goals completed! 🐙

Cons vs insertIdx for a normal ordered term.

Within a proto-operator algebra, N(φφ₀φ₁…φₙ) = s • N(φ₀…φₖ₋₁φφₖ…φₙ), where s is the exchange sign for φ and φ₀…φₖ₋₁.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpk:Fin φs.length.succhl:φs.insertIdx (↑k) φ = List.take (↑k) φs ++ [φ] ++ List.drop (↑k) φsnormalOrder (ofFieldOpList (φ :: φs)) = normalOrder (ofFieldOpList ([φ] ++ List.take (↑k) φs ++ List.drop (↑k) φs)) All goals completed! 🐙

The normal ordering of a product of two states

All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOpι ((exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') (crPartF φ' * anPartF φ)) = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') ι (crPartF φ') * ι (anPartF φ) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpφ':𝓕.FieldOpι (crPartF φ * crPartF φ' + (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') (crPartF φ' * anPartF φ) + crPartF φ * anPartF φ' + anPartF φ * anPartF φ') = crPart φ * crPart φ' + (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛφ') (crPart φ' * anPart φ) + crPart φ * anPart φ' + anPart φ * anPart φ' All goals completed! 🐙