#!/usr/bin/env python3 """ SCOPE NOTE, 2026-10-13. "sec:open-structural item 2 carries M7" describes the register as it stood in 2026-09; the structural list has been empty since v32.132. M7's row is in Appendix C.6, closed by comps 196 and 199 (the magnitude is the state's, the conformal part reaches exactly the traceless tensors obeying the null energy condition). PROVENANCE: PROOF Computation 179, M7 restated: the density is supplied, and it diverges ====================================================================== WHAT THIS DOES. sec:open-structural item 2 carries M7, the absolute scale of Pi_mn within comp 164's cone. comp 167 established that the magnitude rides on the realisation-point density, that every standing result in the sector is a ratio, a shape or a count and so survives a density rescaling, and that there is no vacuum-energy catastrophe here because no absolute scale is produced at all. All of that stands and none of it is disturbed below. Its remaining sentence is the one this file is about: "AND THE THEORY DOES NOT SUPPLY THAT DENSITY. PST owns two lengths and neither is a realisation-point spacing: d_0 ... l_* ..." That search was over LENGTHS, and it missed that A1 names a SPACING outright. A1 (sec:mosco-conditional): "Let D_n be a sequence of substrate sites with |D_n| -> infinity and matched scaling parameter a_n (THE SUBSTRATE SITE SPACING, distinct from the fixed coherence length d_0)... such that |D_n| a_n^4 -> V_M and a_n -> 0", with, in as many words, "the local node density is |D_n ^ K| / vol(K) = lambda_n = 1/a_n^4 -> infinity". And it is the same substrate. eq:Pimunu sums over pairs a != b of D using rho(a), rho(b); sec:mosco-conditional writes rho_n: D_n -> M. CORRECTED BY COMPUTATION 182, 2026-09-30. This file originally continued "the body defines rho: D -> M once. There is one substrate and one realisation map." The second clause is too strong: sec:phi-construction defines rho as a SURJECTIVE quotient onto a DERIVED M = D/~, while sec:mosco-conditional's rho_n maps a finite D_n into a GIVEN M = R x S^3 and cannot be surjective. comp 182 part 1 sets the two definitions side by side. No number below changes, and the fork this file opens is real; comp 182 then DECIDES it, in favour of (A), because a finite set has no uncountable quotient while sec:einstein needs a covariant derivative on a smooth M. Part 4's reading of what the forced normalisation buys is also corrected there: the bare sum is dimensionless, so restoring dimensions puts back one power of the node density and the object still diverges. SO THE DENSITY IS SUPPLIED, AND IT IS INFINITE. That changes M7 from "a free number awaiting a new ingredient" into something sharper and less comfortable. THE MEASUREMENT. The book's own pair cutoff is |s| <~ d_0^2 (comp 159(iv)), tied to the FIXED coherence length and not to a_n. A fixed cutoff against a density going to infinity gives, at fixed box, rho ~ N^2 ~ a_n^-8 -> infinity, measured in part 2, reproducing comp 167's N^2 and carrying it to the exponent in a_n that comp 167 did not take. WHICH LEAVES A FORK, AND THE BOOK HAS NOT SAID WHICH SIDE IT IS ON. (A) D is the A1 SEQUENCE. Then the magnitude is not free, it is DIVERGENT, and eq:Pimunu as written has no continuum limit. What M7 needs is then a NORMALISATION, not a density, and part 4 measures which one works: dividing by the pair count converges, dividing by the site count does not. (B) D is ONE FIXED substrate with some finite spacing. Then comp 167 is right as it stands and the magnitude is free, and M7 needs a density after all. comp 167 assumed (B) without naming it. That is not an error in its arithmetic, which part 3 reproduces exactly; it is a premise it did not state, and under (A) its conclusion does not hold. THIS IS THE SAME AMBIGUITY comp 177 FOUND IN P3, in a second place. There, eq:boolean-dirichlet was a bare sum over D and eq:mosco-limit divided by |D|, so a constant coefficient diverged under A1, which is why c carries a 1/|D|. Here eq:Pimunu is a bare sum over PAIRS of D with no normalisation at all. Two constructions, one unstated choice, and the second is found only because the first was fixed. THE PATTERN IS THE FINDING: the book uses D both as an A1 sequence and as a fixed physical set, and every bare sum over D is sensitive to which. WHAT THIS DOES NOT DO. It does not supply an absolute scale, and nobody should read it as closing M7. Under (A) it replaces "find a density" with "state a normalisation", which is a smaller question of a kind the book has now answered once; it still leaves the physical meaning of the normalised object open, because a stress tensor is a density and a per-pair average is not one. Under (B) it changes nothing at all. And comp 167's negative result, that there is no vacuum-energy catastrophe in this sector, survives BOTH readings, since neither produces a computed scale to disagree with measurement. """ import numpy as np ETA = np.diag([1.0, -1.0, -1.0, -1.0]) RNG = np.random.default_rng(20260930) def rule(): print("=" * 100) def pi_tensor(pts, cut): """eq:Pimunu with W(s) = -|s|, bare, cut at |s| <= cut. As comp 167.""" P = np.zeros((4, 4)) npairs = 0 for i in range(len(pts)): Dv = pts[i] - pts[i + 1:] if len(Dv) == 0: continue s = np.einsum("pi,ij,pj->p", Dv, ETA, Dv) k = np.abs(s) <= cut Dv, s = Dv[k], s[k] if len(s) == 0: continue npairs += int(k.sum()) Dl = Dv @ ETA P += np.einsum("p,pm,pn->mn", np.abs(s), Dl, Dl) return P, npairs BOX = 4.0 COUNTS = (150, 300, 600, 1200) def sample(N): return RNG.uniform(-BOX / 2, BOX / 2, size=(N, 4)) # --------------------------------------------------------------------------- def part1(): rule() print(" 1. A1 NAMES A REALISATION-POINT SPACING, AND comp 167's SEARCH MISSED IT") rule() print(" comp 167 searched among the theory's LENGTHS and found neither to be a") print(" spacing: d_0 is a coherence length, which sec:grain-vs-coherence says is") print(" not the grain, and l_* enters as a momentum cutoff on field modes.") print() print(" A1 names one outright. sec:mosco-conditional, quoted:") print(" 'a sequence of substrate sites ... matched scaling parameter a_n (THE") print(" SUBSTRATE SITE SPACING, distinct from the fixed coherence length d_0)") print(" ... |D_n| a_n^4 -> V_M and a_n -> 0'") print(" 'the local node density is |D_n ^ K|/vol(K) = lambda_n = 1/a_n^4 -> inf'") print() print(" And it is the same substrate: eq:Pimunu sums over pairs of D through") print(" rho, and A1 scales the same D. So the density is not missing.") print() print(" CORRECTED BY comp 182. This part originally added 'the body defines") print(" rho: D -> M once ... one substrate, one realisation map'. The book") print(" defines TWO maps of incompatible type under that one name, a surjective") print(" quotient onto a derived M and a non-surjective sampling of a given one.") print(" Nothing measured below depends on it, and comp 182 uses the distinction") print(" to decide the fork this file opens.") print() return True def part2(): rule() print(" 2. WITH THE BOOK'S OWN CUTOFF, THE MAGNITUDE DIVERGES") rule() print(" comp 159(iv) puts the pair cutoff at |s| <~ d_0^2, tied to the FIXED") print(" coherence length and not to a_n. Hold the box and that cutoff fixed and") print(" raise the point count, which under A1 is exactly a_n -> 0:") print() print(f" {'N':>7}{'a_n / a_0':>12}{'pairs':>10}{'rho':>13}{'rho/N^2':>11}") vals = [] for N in COUNTS: P, npairs = pi_tensor(sample(N), cut=4.0) vals.append(P[0, 0] / N ** 2) print(f" {N:>7}{(COUNTS[0]/N)**0.25:>12.4f}{npairs:>10d}{P[0,0]:>13.4g}" f"{P[0,0]/N**2/vals[0]:>11.4f}") flat = max(vals) / min(vals) < 1.15 print() print(" rho/N^2 is flat, so rho ~ N^2, which is comp 167's measurement. Its") print(" exponent in a_n is the step comp 167 did not take: N = V/a_n^4, so") print() print(" rho ~ N^2 ~ a_n^-8 -> infinity under A1's own scaling.") print() print(f" -> rho ~ N^2, reproducing comp 167 : {flat}") print() return flat def part3(): rule() print(" 3. comp 167 IS RIGHT UNDER ITS OWN READING, AND THE READING IS UNSTATED") rule() print(" Its arithmetic is reproduced above, not disputed. Its scale-free checks") print(" hold too: rescale the ensemble and w does not move while rho moves by") print(" orders. Measured again here, because a claim that survives a rescaling") print(" is exactly what is at stake:") print() print(f" {'N':>7}{'rho':>13}{'w = p/rho':>12}{'metric trace/rho':>19}") ws = [] for N in COUNTS: P, _ = pi_tensor(sample(N), cut=4.0) rho = P[0, 0] p = (P[1, 1] + P[2, 2] + P[3, 3]) / 3.0 mt = P[0, 0] - P[1, 1] - P[2, 2] - P[3, 3] ws.append(p / rho) print(f" {N:>7}{rho:>13.4g}{p/rho:>12.5f}{mt/rho:>19.2e}") steady = (max(ws) - min(ws)) < 0.02 print() print(" So the two readings of D are not distinguished by anything measured in") print(" that file. (A) D is A1's sequence: the magnitude DIVERGES and what is") print(" wanted is a normalisation. (B) D is one fixed substrate: the magnitude") print(" is FREE and what is wanted is a density, which is comp 167's conclusion.") print(" comp 167 assumed (B) and did not say so.") print() print(f" -> w steady across the range while rho is not : {steady}") print() return steady def part4(): rule() print(" 4. UNDER READING (A), WHICH NORMALISATION CONVERGES") rule() print(" If D is A1's sequence the sum needs normalising. Two candidates, and") print(" only one of them has a limit. Measured at fixed box and fixed cutoff:") print() print(f" {'N':>7}{'rho':>13}{'rho / N':>13}{'rho / N^2':>13}") perN, perN2 = [], [] for N in COUNTS: P, _ = pi_tensor(sample(N), cut=4.0) perN.append(P[0, 0] / N) perN2.append(P[0, 0] / N ** 2) print(f" {N:>7}{P[0,0]:>13.4g}{P[0,0]/N:>13.4g}{P[0,0]/N**2:>13.5f}") grows = perN[-1] / perN[0] > 4 conv = max(perN2) / min(perN2) < 1.15 print() print(" Per SITE still diverges, because the pair count is quadratic in the site") print(" count. Per PAIR converges. So under (A) the normalisation is 1/|D|^2,") print(" and it is fixed rather than free: nothing is left to choose.") print() print(" THE CATCH, and it is why this does not close M7. A per-pair average is") print(" not a density, and a stress tensor is one. So (A) buys a finite object") print(" whose physical reading is open, in place of an infinite one. That is") print(" progress and it is not a closure.") print() print(f" -> per-site diverges, per-pair converges : {grows and conv}") print() return grows and conv def part5(): rule() print(" 5. M7 RESTATED, AND THE PATTERN THAT FOUND IT") rule() print(" M7 was: supply a realisation-point density, 'a new ingredient, not a") print(" calculation'. It is now: SAY WHICH READING OF D THE PAIR SUM USES.") print() print(" under (A), A1's sequence : the density is supplied and infinite, the") print(" magnitude diverges as a_n^-8, and what is") print(" owed is a normalisation, measured in part 4") print(" to be 1/|D|^2 and therefore not free") print(" under (B), a fixed set : comp 167 stands unchanged and a density is") print(" owed, which is a new ingredient") print() print(" THE SAME AMBIGUITY, IN A SECOND PLACE. comp 177 found it in P3:") print(" eq:boolean-dirichlet is a bare sum over D while eq:mosco-limit divides by") print(" |D|, so a constant kinetic coefficient diverged under A1, and") print(" so a constant c diverged under A1 and c must carry a 1/|D|.") print(" eq:Pimunu is a bare sum over PAIRS of D with no normalisation at all.") print() print(" Two constructions, one unstated choice, and the second was visible only") print(" because the first had just been fixed. The book uses D both as an A1") print(" sequence and as a fixed physical set, and EVERY BARE SUM OVER D is") print(" sensitive to which. That is the finding worth carrying forward, and it") print(" is a thing to check in any future construction that sums over D.") print() print(" WHAT SURVIVES BOTH READINGS: comp 167's negative result. There is no") print(" vacuum-energy catastrophe in this sector either way, because neither") print(" reading produces a computed scale to disagree with measurement.") print() return True def part6(): rule() print(" 6. TAMPER TEST") rule() print(" The claim is that the divergence comes from a FIXED cutoff meeting a") print(" density that grows, not from the pair sum as such. Tie the cutoff to the") print(" spacing instead, |s| ~ a_n^2, and the exponent must change.") print() print(f" {'N':>7}{'cut':>10}{'rho (fixed cut)':>18}{'rho (cut ~ a_n^2)':>20}") fixed, scaled = [], [] for N in COUNTS: Pf, _ = pi_tensor(sample(N), cut=4.0) cut = 4.0 * (COUNTS[0] / N) ** 0.5 Ps, _ = pi_tensor(sample(N), cut=cut) fixed.append(Pf[0, 0]); scaled.append(Ps[0, 0]) print(f" {N:>7}{cut:>10.4f}{Pf[0,0]:>18.4g}{Ps[0,0]:>20.4g}") import math ef = math.log(fixed[-1] / fixed[0]) / math.log(COUNTS[-1] / COUNTS[0]) es = math.log(scaled[-1] / scaled[0]) / math.log(COUNTS[-1] / COUNTS[0]) print() print(f" measured exponent in N, fixed cutoff : {ef:.3f} (expect 2)") print(f" measured exponent in N, cutoff ~ a_n^2 : {es:.3f} (expect 1)") print() print(" The exponent moves by exactly one, so the divergence is carried by the") print(" cutoff's relation to the spacing and not by the construction. It also") print(" shows the fork is real: the book fixes that cutoff at d_0^2, a length") print(" that does not scale, so reading (A) gives the steeper exponent.") print() ok = abs(ef - 2) < 0.15 and abs(es - 1) < 0.2 print(f" -> exponents 2 and 1 as predicted : {ok}") print() return ok def main(): print() rule() print(" COMPUTATION 179. M7 restated: the density is supplied, and it diverges") rule() print(""" comp 167 concluded that PST does not supply a realisation-point density, having searched among its two lengths. A1 names one outright, as the substrate site spacing, with local node density 1/a_n^4 -> infinity, under the same realisation map eq:Pimunu uses. What follows is not a closure of M7 but a change of shape, and a second instance of the ambiguity comp 177 found in P3. """) r1, r2, r3, r4, r5, r6 = part1(), part2(), part3(), part4(), part5(), part6() rule() print(" ASSESSMENT") rule() print(f" 1. A1 names the spacing comp 167 searched for and missed : {r1}") print(f" 2. with the book's fixed cutoff, rho ~ N^2 ~ a_n^-8 : {r2}") print(f" 3. comp 167's arithmetic reproduced; its reading unstated : {r3}") print(f" 4. under A1 the normalisation is 1/|D|^2, and is forced : {r4}") print(f" 5. M7 restated; the pattern named : {r5}") print(f" 6. tamper test: the exponent tracks the cutoff's scaling : {r6}") print() print(""" RESULT. M7 does not close, and its shape changes. comp 167 ruled that the theory supplies no realisation-point density, on a search over d_0 and l_*. A1 names a spacing directly, a_n, "the substrate site spacing", with local node density 1/a_n^4 -> infinity, and eq:Pimunu sums over pairs through the same realisation map. So the density is not missing. It is infinite, and with the book's own pair cutoff at the fixed d_0^2 the magnitude goes as N^2 ~ a_n^-8. That leaves a fork. If D is A1's sequence the magnitude is divergent rather than free, and what is owed is a normalisation, measured here to be 1/|D|^2 and therefore fixed, not free. If D is one fixed substrate then comp 167 stands entire and a density is owed. comp 167 assumed the second and did not say so; its arithmetic is reproduced here exactly and is not in question. DECIDED BY comp 182: the first. A finite set has no uncountable quotient and D is finite at every stage, while sec:einstein needs a covariant derivative on a smooth M, so the second branch is unavailable rather than merely unstated. comp 182 also corrects what the first branch buys: the per-pair normalisation is forced and converges, but the bare sum is dimensionless, so restoring dimensions returns one power of the node density and the object still diverges. What is left over is one truncation scale a_*. Neither branch hands over an absolute scale, so this is not a closure, and the per-pair normalisation buys a finite object whose reading as a density is itself open. comp 167's negative result survives both branches: no vacuum-energy catastrophe, because no computed scale is produced either way. The pattern is worth more than the item. comp 177 found the same unstated choice in P3, where a bare sum over D met a limit that divides by |D|, and and c was found to carry a 1/|D|. eq:Pimunu is a bare sum over pairs of D with no normalisation at all, and it was visible only because the first was fixed. The book uses D both as an A1 sequence and as a fixed physical set. Every bare sum over D is sensitive to which, and that is what to check next time.""") print() return all([r1, r2, r3, r4, r5, r6]) if __name__ == "__main__": import sys # 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)