2025-02-05 10:01:48 +00:00
|
|
|
|
/-
|
|
|
|
|
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
|
|
|
|
|
-/
|
|
|
|
|
import HepLean.PerturbationTheory.FieldOpAlgebra.NormalOrder.WickContractions
|
|
|
|
|
import HepLean.PerturbationTheory.WickContraction.Sign.InsertNone
|
|
|
|
|
import HepLean.PerturbationTheory.WickContraction.Sign.InsertSome
|
|
|
|
|
import HepLean.PerturbationTheory.WickContraction.StaticContract
|
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
# Static Wick's terms
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
open FieldSpecification
|
|
|
|
|
variable {𝓕 : FieldSpecification}
|
|
|
|
|
|
|
|
|
|
namespace WickContraction
|
|
|
|
|
variable {n : ℕ} (c : WickContraction n)
|
|
|
|
|
open HepLean.List
|
|
|
|
|
open FieldOpAlgebra
|
|
|
|
|
open FieldStatistic
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
2025-02-07 09:56:37 +00:00
|
|
|
|
/-- For a list `φs` of `𝓕.FieldOp`, and a Wick contraction `φsΛ` of `φs`, the element
|
|
|
|
|
of `𝓕.FieldOpAlgebra`, `φsΛ.staticWickTerm` is defined as
|
|
|
|
|
|
|
|
|
|
`φsΛ.sign • φsΛ.staticContract * 𝓝([φsΛ]ᵘᶜ)`.
|
|
|
|
|
|
|
|
|
|
This is term which appears in the static version Wick's theorem. -/
|
2025-02-05 10:01:48 +00:00
|
|
|
|
def staticWickTerm {φs : List 𝓕.FieldOp} (φsΛ : WickContraction φs.length) : 𝓕.FieldOpAlgebra :=
|
|
|
|
|
φsΛ.sign • φsΛ.staticContract * 𝓝(ofFieldOpList [φsΛ]ᵘᶜ)
|
|
|
|
|
|
2025-02-10 10:40:07 +00:00
|
|
|
|
/-- For the empty list `[]` of `𝓕.FieldOp`, the `staticWickTerm` of the Wick contraction
|
|
|
|
|
corresponding to the empty set `∅` (the only Wick contraction of `[]`) is `1`. -/
|
2025-02-05 10:01:48 +00:00
|
|
|
|
@[simp]
|
2025-02-06 13:31:59 +00:00
|
|
|
|
lemma staticWickTerm_empty_nil :
|
2025-02-05 10:01:48 +00:00
|
|
|
|
staticWickTerm (empty (n := ([] : List 𝓕.FieldOp).length)) = 1 := by
|
|
|
|
|
rw [staticWickTerm, uncontractedListGet, nil_zero_uncontractedList]
|
|
|
|
|
simp [sign, empty, staticContract]
|
|
|
|
|
|
2025-02-05 11:52:55 +00:00
|
|
|
|
/--
|
2025-02-07 09:56:37 +00:00
|
|
|
|
For a list `φs = φ₀…φₙ` of `𝓕.FieldOp`, a Wick contraction `φsΛ` of `φs`, and an element `φ` of
|
2025-02-12 06:14:11 +00:00
|
|
|
|
`𝓕.FieldOp`, then `(φsΛ ↩Λ φ 0 none).staticWickTerm` is equal to
|
2025-02-07 09:56:37 +00:00
|
|
|
|
|
2025-02-12 06:14:11 +00:00
|
|
|
|
`φsΛ.sign • φsΛ.staticWickTerm * 𝓝(φ :: [φsΛ]ᵘᶜ)`
|
2025-02-05 11:52:55 +00:00
|
|
|
|
|
|
|
|
|
The proof of this result relies on
|
|
|
|
|
- `staticContract_insert_none` to rewrite the static contract.
|
|
|
|
|
- `sign_insert_none_zero` to rewrite the sign.
|
|
|
|
|
-/
|
2025-02-05 10:01:48 +00:00
|
|
|
|
lemma staticWickTerm_insert_zero_none (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
|
|
|
|
|
(φsΛ : WickContraction φs.length) :
|
|
|
|
|
(φsΛ ↩Λ φ 0 none).staticWickTerm =
|
|
|
|
|
φsΛ.sign • φsΛ.staticContract * 𝓝(ofFieldOpList (φ :: [φsΛ]ᵘᶜ)) := by
|
|
|
|
|
symm
|
|
|
|
|
erw [staticWickTerm, sign_insert_none_zero]
|
2025-02-05 11:52:55 +00:00
|
|
|
|
simp only [staticContract_insert_none, insertAndContract_uncontractedList_none_zero,
|
2025-02-05 10:01:48 +00:00
|
|
|
|
Algebra.smul_mul_assoc]
|
|
|
|
|
|
2025-02-07 09:56:37 +00:00
|
|
|
|
/-- For a list `φs = φ₀…φₙ` of `𝓕.FieldOp`, a Wick contraction `φsΛ` of `φs`, an element `φ` of
|
|
|
|
|
`𝓕.FieldOp`, and a `k` in `φsΛ.uncontracted`, `(φsΛ ↩Λ φ 0 (some k)).wickTerm` is equal
|
|
|
|
|
to the product of
|
2025-02-05 11:52:55 +00:00
|
|
|
|
- the sign `𝓢(φ, φ₀…φᵢ₋₁) `
|
|
|
|
|
- the sign `φsΛ.sign`
|
|
|
|
|
- `φsΛ.staticContract`
|
|
|
|
|
- `s • [anPart φ, ofFieldOp φs[k]]ₛ` where `s` is the sign associated with moving `φ` through
|
|
|
|
|
uncontracted fields in `φ₀…φₖ₋₁`
|
|
|
|
|
- the normal ordering `𝓝([φsΛ]ᵘᶜ.erase (uncontractedFieldOpEquiv φs φsΛ k))`.
|
|
|
|
|
|
2025-02-10 10:21:57 +00:00
|
|
|
|
The proof of this result ultimately relies on
|
2025-02-07 09:56:37 +00:00
|
|
|
|
- `staticContract_insert_some` to rewrite static contractions.
|
2025-02-05 11:52:55 +00:00
|
|
|
|
- `normalOrder_uncontracted_some` to rewrite normal orderings.
|
|
|
|
|
- `sign_insert_some_zero` to rewrite signs.
|
|
|
|
|
-/
|
2025-02-05 10:01:48 +00:00
|
|
|
|
lemma staticWickTerm_insert_zero_some (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
|
|
|
|
|
(φsΛ : WickContraction φs.length) (k : { x // x ∈ φsΛ.uncontracted }) :
|
|
|
|
|
(φsΛ ↩Λ φ 0 k).staticWickTerm =
|
|
|
|
|
sign φs φsΛ • (↑φsΛ.staticContract *
|
|
|
|
|
(contractStateAtIndex φ [φsΛ]ᵘᶜ ((uncontractedFieldOpEquiv φs φsΛ) (some k)) *
|
|
|
|
|
𝓝(ofFieldOpList (optionEraseZ [φsΛ]ᵘᶜ φ (uncontractedFieldOpEquiv φs φsΛ k))))) := by
|
|
|
|
|
symm
|
|
|
|
|
rw [staticWickTerm, normalOrder_uncontracted_some]
|
|
|
|
|
simp only [← mul_assoc]
|
|
|
|
|
rw [← smul_mul_assoc]
|
|
|
|
|
congr 1
|
2025-02-05 11:52:55 +00:00
|
|
|
|
rw [staticContract_insert_some_of_lt]
|
2025-02-05 10:01:48 +00:00
|
|
|
|
swap
|
|
|
|
|
· simp
|
|
|
|
|
rw [smul_smul]
|
|
|
|
|
by_cases hn : GradingCompliant φs φsΛ ∧ (𝓕|>ₛφ) = (𝓕|>ₛ φs[k.1])
|
|
|
|
|
· congr 1
|
|
|
|
|
swap
|
2025-02-05 11:52:55 +00:00
|
|
|
|
· rw [Subalgebra.mem_center_iff.mp φsΛ.staticContract.2]
|
|
|
|
|
· rw [sign_insert_some_zero _ _ _ _ hn, mul_comm, ← mul_assoc]
|
|
|
|
|
simp
|
2025-02-05 10:01:48 +00:00
|
|
|
|
· simp only [Fin.getElem_fin, not_and] at hn
|
|
|
|
|
by_cases h0 : ¬ GradingCompliant φs φsΛ
|
|
|
|
|
· rw [staticContract_of_not_gradingCompliant]
|
|
|
|
|
simp only [ZeroMemClass.coe_zero, zero_mul, smul_zero, instCommGroup.eq_1, mul_zero]
|
|
|
|
|
exact h0
|
|
|
|
|
· simp_all only [Finset.mem_univ, not_not, instCommGroup.eq_1, forall_const]
|
|
|
|
|
have h1 : contractStateAtIndex φ [φsΛ]ᵘᶜ (uncontractedFieldOpEquiv φs φsΛ k) = 0 := by
|
|
|
|
|
simp only [contractStateAtIndex, uncontractedFieldOpEquiv, Equiv.optionCongr_apply,
|
|
|
|
|
Equiv.coe_trans, Option.map_some', Function.comp_apply, finCongr_apply,
|
|
|
|
|
instCommGroup.eq_1, Fin.coe_cast, Fin.getElem_fin, smul_eq_zero]
|
|
|
|
|
right
|
|
|
|
|
simp only [uncontractedListGet, List.getElem_map,
|
|
|
|
|
uncontractedList_getElem_uncontractedIndexEquiv_symm, List.get_eq_getElem]
|
|
|
|
|
rw [superCommute_anPart_ofFieldOpF_diff_grade_zero]
|
|
|
|
|
exact hn
|
|
|
|
|
rw [h1]
|
|
|
|
|
simp
|
|
|
|
|
|
2025-02-05 11:52:55 +00:00
|
|
|
|
/--
|
2025-02-07 09:56:37 +00:00
|
|
|
|
For a list `φs = φ₀…φₙ` of `𝓕.FieldOp`, a Wick contraction `φsΛ` of `φs`, the following relation
|
|
|
|
|
holds
|
|
|
|
|
|
2025-02-10 10:40:07 +00:00
|
|
|
|
`φ * φsΛ.staticWickTerm = ∑ k, (φsΛ ↩Λ φ 0 k).staticWickTerm`
|
2025-02-07 09:56:37 +00:00
|
|
|
|
|
2025-02-10 10:40:07 +00:00
|
|
|
|
where the sum is over all `k` in `Option φsΛ.uncontracted`, so `k` is either `none` or `some k`.
|
2025-02-05 11:52:55 +00:00
|
|
|
|
|
|
|
|
|
The proof of proceeds as follows:
|
2025-02-06 13:31:59 +00:00
|
|
|
|
- `ofFieldOp_mul_normalOrder_ofFieldOpList_eq_sum` is used to expand `φ 𝓝([φsΛ]ᵘᶜ)` as
|
2025-02-07 09:56:37 +00:00
|
|
|
|
a sum over `k` in `Option φsΛ.uncontracted` of terms involving `[anPart φ, φs[k]]ₛ`.
|
2025-02-05 11:52:55 +00:00
|
|
|
|
- Then `staticWickTerm_insert_zero_none` and `staticWickTerm_insert_zero_some` are
|
|
|
|
|
used to equate terms.
|
|
|
|
|
-/
|
2025-02-05 10:01:48 +00:00
|
|
|
|
lemma mul_staticWickTerm_eq_sum (φ : 𝓕.FieldOp) (φs : List 𝓕.FieldOp)
|
|
|
|
|
(φsΛ : WickContraction φs.length) :
|
|
|
|
|
ofFieldOp φ * φsΛ.staticWickTerm =
|
|
|
|
|
∑ (k : Option φsΛ.uncontracted), (φsΛ ↩Λ φ 0 k).staticWickTerm := by
|
|
|
|
|
trans (φsΛ.sign • φsΛ.staticContract * (ofFieldOp φ * normalOrder (ofFieldOpList [φsΛ]ᵘᶜ)))
|
|
|
|
|
· have ht := Subalgebra.mem_center_iff.mp (Subalgebra.smul_mem (Subalgebra.center ℂ _)
|
|
|
|
|
(φsΛ.staticContract).2 φsΛ.sign)
|
|
|
|
|
conv_rhs => rw [← mul_assoc, ← ht]
|
|
|
|
|
simp [mul_assoc, staticWickTerm]
|
|
|
|
|
rw [ofFieldOp_mul_normalOrder_ofFieldOpList_eq_sum]
|
|
|
|
|
rw [Finset.mul_sum]
|
|
|
|
|
rw [uncontractedFieldOpEquiv_list_sum]
|
|
|
|
|
refine Finset.sum_congr rfl (fun n _ => ?_)
|
|
|
|
|
match n with
|
|
|
|
|
| none =>
|
|
|
|
|
simp only [contractStateAtIndex, uncontractedFieldOpEquiv, Equiv.optionCongr_apply,
|
|
|
|
|
Equiv.coe_trans, Option.map_none', one_mul, Algebra.smul_mul_assoc, Nat.succ_eq_add_one,
|
2025-02-05 11:52:55 +00:00
|
|
|
|
Fin.zero_eta, Fin.val_zero, List.insertIdx_zero, staticContract_insert_none,
|
2025-02-05 10:01:48 +00:00
|
|
|
|
insertAndContract_uncontractedList_none_zero]
|
|
|
|
|
rw [staticWickTerm_insert_zero_none]
|
|
|
|
|
simp only [Algebra.smul_mul_assoc]
|
|
|
|
|
rfl
|
|
|
|
|
| some n =>
|
|
|
|
|
simp only [Algebra.smul_mul_assoc, Nat.succ_eq_add_one, Fin.zero_eta, Fin.val_zero,
|
|
|
|
|
List.insertIdx_zero]
|
|
|
|
|
rw [staticWickTerm_insert_zero_some]
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
end WickContraction
|