Zeroth-Order Moments

At zeroth order no interaction vertices contribute — the result is purely the Wick contraction of the observable under the free action \(S_0\).

Scalar Two-Point Function

The simplest non-trivial example: \(\langle\phi(x)\,\phi(y)\rangle_{S_0}\).

from sft_wick import Field, Action, compute_moment, reset_uid_counter

reset_uid_counter()
phi = Field('phi', 'physical')

obs = [phi('x'), phi('y')]
result = compute_moment(obs, Action(vertices=[]), order=0)
print(result.order(0).to_latex())
C(x, y)

Only one pairing exists, and it produces the correlation propagator.

Mixed-Field Four-Point Function

\(\langle\psi(x)\,\phi(x)\,\phi(x)\,\phi(x)\rangle_{S_0}\):

reset_uid_counter()
phi = Field('phi', 'physical')
psi = Field('psi', 'response')

obs = [psi('x'), phi('x'), phi('x'), phi('x')]
result = compute_moment(obs, Action(vertices=[]), order=0)
print(result.order(0).to_latex())
3 R(x, x) C(x, x)

Why the factor of 3? The single \(\psi\) must pair with one of the three \(\phi\)’s (3 choices, each giving \(R(x,x)\)), and the remaining two \(\phi\)’s pair together (\((2-1)!! = 1\) way, giving \(C(x,x)\)).

Pure Physical Four-Point Function

\(\langle\phi(x)\,\phi(y)\,\phi(z)\,\phi(w)\rangle_{S_0}\):

reset_uid_counter()
phi = Field('phi', 'physical')

obs = [phi('x'), phi('y'), phi('z'), phi('w')]
result = compute_moment(obs, Action(vertices=[]), order=0)
print(result.order(0).to_latex())
C(x, y) C(z, w) + C(x, z) C(y, w) + C(x, w) C(y, z)

The three pairings correspond to the three ways of pairing four items: \((2 \times 4 - 1)!! = 3\).

Vanishing Cases

An odd number of operators always gives zero:

obs = [phi('x'), phi('y'), phi('z')]
result = compute_moment(obs, Action(vertices=[]), order=0)
print(result.order(0).to_latex())
# 0

More \(\psi\)’s than \(\phi\)’s also gives zero (not enough physical fields to absorb all response fields):

obs = [psi('x'), psi('y'), phi('z')]
result = compute_moment(obs, Action(vertices=[]), order=0)
print(result.order(0).to_latex())
# 0