#!/usr/bin/env python3 """ PROVENANCE: PROOF Computation 185 -- W4 is not independent of the slice-wise CAR limit; it follows from it ======================================================================================== WHAT THIS DOES. sec:open-structural carries ONE item holding TWO residuals: the Wightman microcausality axiom W4, and the CAR continuum limit's need for a Cauchy slice. comp 181 closed the route the book had named for W4 (the substrate two-point structure cannot have cone support, being equal-time) and moved the target to the emergent dynamics: "whether the projected Dirac propagator carries the Pauli-Jordan support property". THAT TARGET IS NOT AN INDEPENDENT GAP. It is a corollary of the other residual in the same item, and the two should be counted once. The chain is short and every link but one is already in this book. W4 asks that {psi_alpha(x), psibar_beta(y)} = iS(x-y) vanish at spacelike separation. S is the CAUSAL PROPAGATOR of the Dirac operator, S = G+ - G-. On a globally hyperbolic spacetime the Dirac operator has UNIQUE advanced and retarded Green's operators with supp G±(x, .) contained in J±(x), so S is supported in the closed causal cone and W4 holds, PROVIDED the field is quantised with CAR on a Cauchy slice. That is the standard construction (Dimock 1982; Baer-Ginoux-Pfaeffle 2007), the same kind of imported result as Mosco and Connes elsewhere in this book. Every hypothesis but one is already asserted here. M = R x S^3 is globally hyperbolic with compact Cauchy surfaces {t} x S^3, which comp 4's entry states outright while fixing the spin structure; the Cauchy problem on it is well posed (sec:lorentzian-derivation-explicit); and the projected field satisfies eq:Dirac-eq-projected. THE ONE HYPOTHESIS NOT SUPPLIED IS THE CAUCHY-SLICE CAR LIMIT, which is the item's other residual, named there in as many words: "needs to be posed on a Cauchy slice, which the pre-causal substrate does not hand over for free". SO THE ITEM HAS ONE RESIDUE, NOT TWO, and it is the slice. This is the same shape as the coupling the register already records between item 1's second disjunct and the Born condition: two entries, one thing. WHAT IS MEASURED HERE, because the reduction is only worth having if the step it leans on is real. The book says the Pauli-Jordan function "vanishes outside the cone because of the mass shell". Part 3 tests exactly that sentence. The 1+1 scalar Pauli-Jordan function is computed from its mode integral and comes out equal to the exact closed form -(1/2) sgn(t) theta(t^2-x^2) J_0(m sqrt(t^2-x^2)) to five decimals inside the cone, and to 1e-8 outside it. Then the dispersion is changed and nothing else: dispersion Delta at t = 3, x = 5 (outside the c = 1 cone) on shell, omega^2 = k^2+m^2 2.0e-08 vanishes superluminal, c = 2 -1.1e-01 does NOT vanish Schroedinger, omega = k^2/2m+m 2.7e-02 does NOT vanish So the support property is carried by the mass shell and by nothing else, and the test discriminates rather than confirming: it detects a cone of the WRONG OPENING ANGLE, not merely the absence of one. AND THE DIRAC CASE NEEDS NO SEPARATE ARGUMENT. S = (i gamma^mu d_mu + m) Delta, and differentiating a distribution cannot enlarge its support, so cone support for the scalar gives it for the spinor. Part 4 measures the derivatives outside the cone as a check that nothing is being smuggled through the regulator. WHAT THIS DOES NOT DO, and it is two things. It does not supply the Cauchy slice, which is the residue that remains and is now the item's only one. And it leans on the limit spacetime being LORENTZIAN, which in this book is derived by comp 2 from hyperbolic well-posedness of the Goldstone wave equation and NOT by the Mosco theorem, whose statement delivers E^Riem and the Laplace-Beltrami operator. That premise is named here rather than assumed, because the whole reduction rests on it: a Dirichlet-form limit is an elliptic object, and ellipticity carries no cone. """ import math import sys import numpy as np from scipy.special import j0 # numpy renamed trapz -> trapezoid at 2.0, and the browser runtime this book # publishes to (Pyodide 0.26.4) still ships numpy 1.26, where only the old name # exists. Bind whichever is present so the script runs in both. _trapezoid = getattr(np, "trapezoid", None) or np.trapz def rule(): print("=" * 100) # --- the 1+1 scalar Pauli-Jordan function from its mode integral ---------------- def pauli_jordan(t, x, m=1.0, c=1.0, disp="onshell", K=400.0, nk=400001, deriv=None): """Delta(t,x) = -(1/2pi) int dk sin(omega t)/omega cos(k x), with a smooth UV regulator. `disp` selects the dispersion; `deriv` takes d/dt or d/dx.""" k = np.linspace(-K, K, nk) if disp == "onshell": w = np.sqrt((c * k) ** 2 + m ** 2) elif disp == "schro": w = k ** 2 / (2 * m) + m else: raise ValueError(disp) reg = np.exp(-(k / (0.35 * K)) ** 2) if deriv == "t": f = np.cos(w * t) * np.cos(k * x) * reg elif deriv == "x": f = np.sin(w * t) / w * (-k * np.sin(k * x)) * reg else: f = np.sin(w * t) / w * np.cos(k * x) * reg return -float(_trapezoid(f, k)) / (2 * np.pi) def exact_pj(t, x, m=1.0): """-(1/2) sgn(t) theta(t^2-x^2) J_0(m sqrt(t^2-x^2)), the closed form in 1+1.""" s = t * t - x * x if s <= 0: return 0.0 return -0.5 * math.copysign(1.0, t) * float(j0(m * math.sqrt(s))) # --------------------------------------------------------------------------- def part1(): rule() print(" 1. WHAT W4 ASKS, AND WHAT DELIVERS IT") rule() print(" W4 asks that {psi_alpha(x), psibar_beta(y)} = iS(x-y) vanish for") print(" spacelike (x-y). S is not an extra object: it is the CAUSAL PROPAGATOR") print(" of the Dirac operator, S = G+ - G-, the difference of the retarded and") print(" advanced Green's operators.") print() print(" THE IMPORTED THEOREM, of the same kind as Mosco and Connes elsewhere") print(" in this book (Dimock 1982, Trans.") print(" Amer. Math. Soc. 269, 133-147; Baer-Ginoux-Pfaeffle 2007, EMS):") print() print(" On a globally hyperbolic spacetime a normally hyperbolic") print(" operator has UNIQUE advanced and retarded Green's operators. A") print(" Dirac-type operator is first order, but its SQUARE is normally") print(" hyperbolic and the result carries over, so the Dirac operator has") print(" unique G± with supp G±(x, .) contained in J±(x).") print(" Hence supp S(x, .) is contained in the closed causal cone J(x), and") print(" CAR quantisation on a Cauchy slice gives microcausality.") print() print(" So W4 is a COROLLARY of posing the field on a Cauchy slice of a globally") print(" hyperbolic spacetime. It is not a separate property to be established") print(" about the substrate, and after comp 181 closed the substrate route that") print(" is the only place left for it to come from.") print() print(" -> the target is a corollary, not an independent property: True") print() return True def part2(): rule() print(" 2. THE HYPOTHESES, CHECKED AGAINST THE BOOK RATHER THAN ASSUMED") rule() print(" Four are needed. Three this book already asserts; one it does not, and") print(" the one it does not is the item's OTHER residual.") print() print(" (a) M = R x S^3 IS GLOBALLY HYPERBOLIC with compact Cauchy surfaces.") print(" comp 4's entry states it outright while fixing the spin structure:") print(" 'globally hyperbolic M = R x Sigma is spin iff Sigma is spin, so") print(" R x S^3 carries a canonical Dirac operator'. The Cauchy surfaces") print(" are the slices {t} x S^3, and S^3 is compact. SUPPLIED") print() print(" (b) THE CAUCHY PROBLEM ON IT IS WELL POSED. sec:lorentzian-derivation-explicit") print(" derives the Lorentzian signature from exactly that, strict") print(" hyperbolicity of the Goldstone wave equation (comp 2). SUPPLIED") print() print(" (c) THE PROJECTED FIELD SATISFIES THE DIRAC EQUATION. Closure (3),") print(" eq:Dirac-eq-projected, as the matched-scaling limit of the") print(" substrate spectral-triple equation. SUPPLIED") print() print(" (d) THE CAR RELATIONS ARE POSED ON A CAUCHY SLICE. *NOT* SUPPLIED") print(" sec:open-structural says so in as many words: the CAR continuum") print(" limit 'needs to be posed on a Cauchy slice, which the pre-causal") print(" substrate does not hand over for free'. That is the item's second") print(" residual, and it is the ONLY hypothesis of the theorem that this") print(" book does not already supply.") print() print(" -> exactly one hypothesis is missing, and it is the slice: True") print() return True def part3(): rule() print(" 3. IT IS THE MASS SHELL THAT CARRIES THE SUPPORT, MEASURED") rule() print(" The book's sentence is that the Pauli-Jordan function 'vanishes outside") print(" the cone because of the mass shell'. A reduction that leans on a") print(" sentence should test the sentence. The 1+1 scalar case has an exact") print(" closed form, so the mode integral can be checked against it rather than") print(" against itself.") print() print(f" {'t':>6}{'x':>7}{'mode integral':>17}{'exact closed form':>20}" f"{'difference':>14}") ok = True for t, x in ((3.0, 0.5), (3.0, 1.5), (3.0, 2.5), (5.0, 1.0), (5.0, 4.0)): got, want = pauli_jordan(t, x), exact_pj(t, x) ok &= abs(got - want) < 2e-4 print(f" {t:>6.1f}{x:>7.1f}{got:>17.5f}{want:>20.5f}{abs(got-want):>14.2e}") print() print(" Inside the cone the mode integral reproduces") print(" -(1/2) sgn(t) J_0(m sqrt(t^2-x^2)) to five decimals. Outside it:") print() print(f" {'t':>6}{'x':>7}{'Delta':>14}") for t, x in ((3.0, 3.5), (3.0, 4.0), (3.0, 6.0), (3.0, 10.0)): v = pauli_jordan(t, x) ok &= abs(v) < 1e-6 print(f" {t:>6.1f}{x:>7.1f}{v:>14.2e}") print() print(" TAMPER TEST, AND IT IS THE POINT OF THIS PART. Change the dispersion") print(" and nothing else. If the test merely confirmed, every row would vanish.") print() print(f" {'dispersion':>34}{'Delta at t=3, x=5':>21}{'outside c=1 cone':>19}") on = pauli_jordan(3.0, 5.0) sup = pauli_jordan(3.0, 5.0, c=2.0) sch = pauli_jordan(3.0, 5.0, disp="schro") print(f" {'on shell, omega^2 = k^2 + m^2':>34}{on:>21.2e}{'vanishes':>19}") print(f" {'superluminal, c = 2':>34}{sup:>21.2e}{'does NOT vanish':>19}") print(f" {'Schroedinger, omega = k^2/2m + m':>34}{sch:>21.2e}" f"{'does NOT vanish':>19}") discriminates = abs(on) < 1e-6 and abs(sup) > 1e-2 and abs(sch) > 1e-3 print() print(" The superluminal control matters more than the Schroedinger one: it has") print(" a cone, just the wrong one, and the test detects THAT. So what is being") print(" measured is the opening angle and not merely the presence of support.") print() print(f" -> the mass shell carries the cone, and the test discriminates: " f"{ok and discriminates}") print() return ok and discriminates def part4(): rule() print(" 4. THE DIRAC CASE NEEDS NO SEPARATE ARGUMENT") rule() print(" S = (i gamma^mu d_mu + m) Delta, and differentiating a distribution") print(" cannot enlarge its support, so cone support for the scalar gives it for") print(" the spinor. That is a one-line fact, but the regulator used above is") print(" not a distribution, so the derivatives are measured rather than assumed:") print(" a smooth regulator could in principle leak more into a derivative than") print(" into the function.") print() print(" A METHOD NOTE, because the first attempt at this part gave the wrong") print(" answer and the reason is worth keeping. Differentiating under the") print(" integral replaces sin(omega t)/omega by cos(omega t), removing the 1/omega") print(" damping, and the result outside the cone then sits at 1e-4 and does NOT") print(" improve as the cutoff is raised from K = 100 to K = 1600. That is a") print(" QUADRATURE CANCELLATION FLOOR on an oscillatory integrand of amplitude") print(" one over a range of 2K, not a statement about support: the function") print(" itself converges to 1e-8 over the same range of cutoffs. So the") print(" derivatives are taken as central differences OF THE CONVERGED FUNCTION,") print(" which is also the honest reading of the claim being tested, namely that") print(" a function vanishing on an open set has vanishing derivatives there.") print() h = 0.05 def dt(t, x): return (pauli_jordan(t + h, x) - pauli_jordan(t - h, x)) / (2 * h) def dx(t, x): return (pauli_jordan(t, x + h) - pauli_jordan(t, x - h)) / (2 * h) print(f" {'t':>6}{'x':>7}{'Delta':>13}{'dDelta/dt':>13}{'dDelta/dx':>13}" f"{'region':>11}") ok = True outside = 0.0 for t, x in ((3.0, 3.5), (3.0, 5.0), (3.0, 8.0), (5.0, 9.0)): d, a, b = pauli_jordan(t, x), dt(t, x), dx(t, x) outside = max(outside, abs(d), abs(a), abs(b)) print(f" {t:>6.1f}{x:>7.1f}{d:>13.2e}{a:>13.2e}{b:>13.2e}{'outside':>11}") inside = 0.0 for t, x in ((3.0, 0.5), (3.0, 2.0)): d, a, b = pauli_jordan(t, x), dt(t, x), dx(t, x) inside = min(inside, -abs(a)) if inside else -abs(a) inside = max(abs(a), abs(b), -inside) print(f" {t:>6.1f}{x:>7.1f}{d:>13.2e}{a:>13.2e}{b:>13.2e}{'inside':>11}") ok = outside < 1e-4 and inside > 0.05 print() print(f" Outside the cone nothing exceeds {outside:.1e}; inside, the derivatives") print(f" reach {inside:.2f}. Five orders separate them, so the outside column is") print(" not small merely because the object is small everywhere.") print() print(f" -> the spinor case follows from the scalar one : {ok}") print() return ok def part5(): rule() print(" 5. WHAT THIS DOES TO THE REGISTER: ONE RESIDUE, NOT TWO") rule() print(" sec:open-structural's item currently reads as two residuals: W4 is not") print(" verified, AND the CAR limit needs a Cauchy slice. Parts 1 and 2 show") print(" they are not independent. Supply the slice and W4 follows from the") print(" imported theorem; withhold it and W4 has nothing to be established") print(" about, the substrate route being closed by comp 181.") print() print(" BEFORE : W4 not verified, route closed, target moved to the projected") print(" propagator; and separately, the CAR limit needs a slice.") print(" AFTER : ONE residue, the Cauchy slice. W4 is a corollary of it.") print() print(" This is the same shape as the coupling the register already records") print(" between item 1's second disjunct and the Born condition: two entries,") print(" one thing, and the list should not be read as though they were two.") print(" That makes it the second such coupling in the structural register, and") print(" worth naming as a pattern rather than as a coincidence.") print() print(" -> the item's two residuals reduce to one : True") print() return True def part6(): rule() print(" 6. WHAT IS NOT ESTABLISHED, AND ONE PREMISE NAMED RATHER THAN USED QUIETLY") rule() print(" (a) THE CAUCHY SLICE IS NOT SUPPLIED. Nothing here supplies it. The") print(" reduction moves the item's weight onto it entirely, which is a smaller") print(" and better-posed target than 'verify W4', but it is not progress on the") print(" target itself.") print() print(" (b) THE LIMIT MUST BE LORENTZIAN, AND THAT COMES FROM comp 2 RATHER THAN") print(" FROM THE MOSCO THEOREM. This is the premise the whole reduction rests") print(" on and it should be stated, not left for a reader to notice.") print() print(" thm:mosco delivers convergence to E^Riem on L^2(M, dvol_g), 'generating") print(" the Laplace-Beltrami operator Delta_g'. A Dirichlet form is a") print(" non-negative symmetric form and its generator is elliptic. AN ELLIPTIC") print(" OPERATOR CARRIES NO CONE: its Green's function is supported everywhere.") print(" The cone in this computation comes from hyperbolicity, which is what the") print(" signature supplies, and the signature is derived in this book from") print(" strict hyperbolicity of the Goldstone wave equation (comp 2,") print(" sec:lorentzian-derivation-explicit) and from KO-dimension two licensing a") print(" Euclidean-to-Lorentzian continuation.") print() print(" So the chain is: Mosco fixes the manifold and the metric; comp 2 fixes") print(" the signature; the signature makes the Dirac operator hyperbolic; the") print(" imported theorem then gives the cone. Each link is in the book, and") print(" the second is a derivation this file USES rather than re-checks.") print(" Writing the chain down is worth as much as the reduction, because the") print(" tempting shortcut, reading cone support out of the Mosco limit directly,") print(" is exactly the elliptic-for-hyperbolic confusion comp 181 found one") print(" level down in the substrate correlator.") print() print(" -> both are named rather than assumed : True") print() return True def main(): rule() print(" COMPUTATION 185 -- W4 FOLLOWS FROM THE SLICE-WISE CAR LIMIT") rule() print() r = [part1(), part2(), part3(), part4(), part5(), part6()] rule() print(" SUMMARY") rule() print(f" 1. W4 is a corollary of Cauchy-slice CAR, not a separate property : {r[0]}") print(f" 2. three hypotheses supplied by the book, one missing: the slice : {r[1]}") print(f" 3. the mass shell carries the cone, and the test discriminates : {r[2]}") print(f" 4. the spinor case follows from the scalar one, no leak measured : {r[3]}") print(f" 5. the register item has ONE residue, not two : {r[4]}") print(f" 6. the Lorentzian premise is named, not used quietly : {r[5]}") print() print(""" RESULT. comp 181 closed the route the book had named for the microcausality axiom W4 and moved the target to the projected Dirac propagator. That target is not an independent gap: it is a corollary of the other residual listed in the same register item, and the two should be counted once. W4 asks that {psi, psibar} vanish at spacelike separation, and the object in that anticommutator is the causal propagator S = G+ - G-. On a globally hyperbolic spacetime the Dirac operator has unique advanced and retarded Green's operators supported in J-, J+, so S is supported in the closed causal cone and CAR quantisation on a Cauchy slice gives microcausality outright. Of that theorem's hypotheses this book already supplies three: M = R x S^3 is globally hyperbolic with compact Cauchy surfaces, which comp 4's entry states while fixing the spin structure; the Cauchy problem on it is well posed; and the projected field satisfies eq:Dirac-eq-projected. The one it does not supply is the Cauchy-slice CAR limit, which is the item's other residual. The step the reduction leans on is measured rather than quoted. The 1+1 scalar Pauli-Jordan function computed from its mode integral matches the exact closed form to five decimals inside the cone and sits at 1e-8 outside it; change the dispersion and nothing else, and a superluminal c = 2 leaves -1.1e-01 outside the c = 1 cone while a Schroedinger dispersion leaves 2.7e-02. The superluminal control is the informative one: it HAS a cone, the wrong one, so what is being measured is the opening angle rather than the presence of support. The spinor case needs no separate argument, S being (i gamma d + m) Delta and differentiation not enlarging support, and the derivatives are measured outside the cone to check the regulator is not leaking. Two things are named rather than used quietly. The Cauchy slice is not supplied here and remains the item's only residue. And the reduction needs the limit spacetime to be LORENTZIAN, which in this book comes from comp 2's strict hyperbolicity and from KO-dimension two, NOT from thm:mosco, whose statement delivers E^Riem and the Laplace-Beltrami operator. A Dirichlet-form limit is an elliptic object and an elliptic operator carries no cone; reading cone support out of the Mosco limit directly would be the same elliptic-for-hyperbolic confusion comp 181 found one level down, in the substrate correlator.""") print() return all(r) if __name__ == "__main__": # Exit only on FAILURE. The website runs these in the browser under Pyodide, # where SystemExit is fatal even at status 0: it tears the runtime down, and the # page prints ERROR after output that was in fact correct. Falling off the end # hands the build gates the same status 0, and a failure still exits 1. if not main(): sys.exit(1)