diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index f6868c5c..ccf7dc88 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -13,32 +13,30 @@ Delivered, not to be reassigned: #613/#670 supplied the full-law sufficient condition; #718/#735 removed aspect restrictions for the balance root; #736 now supplies the missing axial full-law necessity. #276 remains completed. -First consolidate and independently audit #735's arbitrary-period root proof, -including oblique entry counts, support injectivity and disjoint bands. Return -one theorem manuscript and a closest-prior-theorem comparison to #735. Use -#736's axial iff as the precise full-law boundary chapter, with its own RSW -input and independent seam/quantifier check. This is one probability paper, -not two new dispatches. - -A possible strengthening INSIDE this programme, not a second active task, is -the **uniform oblique-corridor lemma**: -for every eta>0, find a fixed p_eta=exp(-eta|u|), -uniformly in its orientation and ambient primitivity. Pack disjoint corridors -in an arbitrary integer-period torus, or exhibit the geometric obstruction. -The physical NN interaction must not be rotated by a change of period basis. - -As part of that same acceptance package, independently examine #736's -seam construction and quantifier order once, then compare its exact statement -with strip-percolation, RSW finite-size criteria and homological-percolation -prior art. A negative search is not an originality certificate. - -**Deliverable:** one consolidated theorem manuscript, independent lemma-level -audit and precise novelty comparison. Treat a proved oblique-corridor extension -as a strengthening, or record its exact missing lemma; do not make it a new -prerequisite for the already supplied narrower results. **Not useful:** another enormous -thin-torus simulation, another proof that a fixed-width root is not p_c, -or re-enumeration of the tiny checks already delivered. +The working consolidation is now +[**When the matching root locates criticality but the threshold law does not**](manuscripts/geometric-consistency/README.md). +It contains the earlier root proof, the full-law sufficient argument, and a +new author proof of the arbitrary-period necessity direction. The resulting +criterion is `log(N)/ell -> 0` for the entire law; roots require only `ell -> infinity` +as a sufficient condition. No new numerical critical point or exponent is claimed. + +The previously missing oblique corridor is constructed with axis-aligned +circuits and connectors, including a closed periodic seam. Integer translations +pack disjoint supports even when the shortest period is nonprimitive in Z^2. +This replaces the missing-lemma placeholder as a research result, not as an +assertion of independent referee acceptance or literature novelty. + +Keep further edits within this one probability manuscript and return the +consolidation to #735, with #613/#736 as its source thread. The focused code +controls support geometry and seam closure; they do not substitute for the +proof. The literature comparison now includes Damron--Lam's tall-thin rectangle +crossing estimates and their "sponge dimensions" antecedents. Do not commission +another general survey or thin-torus census merely to restate those inputs. + +**Next useful work:** resolve any concrete objection to the argument and make +the hypothesis/conclusion comparison precise enough for a stand-alone paper. +Do not add the Jordan controls, local-source hierarchy, or sampling variants as +new prerequisites or chapters. Preserve the older narrower proofs in history. ## Representation reserve: #636 — source-visible topology and structural closure diff --git a/docs/manuscripts/geometric-balance/README.md b/docs/manuscripts/geometric-balance/README.md new file mode 100644 index 00000000..96a3ccd8 --- /dev/null +++ b/docs/manuscripts/geometric-balance/README.md @@ -0,0 +1,29 @@ +# Geometric balance: one manuscript, one new lemma + +Read [manuscript.md](manuscript.md). It combines the root theorem of #735 with +#736's full-law question, and supplies the missing arbitrary-direction +staircase corridor. The resulting all-period full-law criterion is +`log N / ell -> 0`; balance-root consistency only needs `ell -> infinity`. + +The new proof uses axis-aligned NN rectangles and disjoint translates in the +finite quotient group. It does not rotate the physical interaction, need an +ambient-primitive shortest vector, or import a fixed-width continuum limit. +No unrelated source/Jordan calculation is a dependency. + +From the repository root: + +```sh +python -m unittest discover -s tests -p 'test_oblique_winding_corridor.py' -v +python scripts/oblique_winding_corridor.py --output /tmp/oblique-corridor-new.json +``` + +The script refuses to overwrite an existing result. The committed result is +`results/research-control-20260913/oblique-corridor-controls.json`. +Python standard library only. Five local tests and 135,168 tiny configurations +were executed; full repository CI was not run. No Monte Carlo was performed. + +The manuscript states the external RSW, site-sharpness and matching inputs, +contains the entire root and concentration arguments, and gives a bounded +closest-source comparison. It is an author-supplied proof; no independent +publication acceptance or originality certification is claimed. Existing +proofs, data, frozen designs and research branches are retained unchanged. diff --git a/docs/manuscripts/geometric-balance/dilute-winding-crossover.md b/docs/manuscripts/geometric-balance/dilute-winding-crossover.md new file mode 100644 index 00000000..c2c2bf19 --- /dev/null +++ b/docs/manuscripts/geometric-balance/dilute-winding-crossover.md @@ -0,0 +1,513 @@ +# A dilute winding crossover, before the fixed-p sewing theorem + +2026-09-13. Continuation of the same geometric-balance paper (#739). +This note does not redo #740's literature investigation or #741's six stationary +computations. It gives a different, directly proved limit of the **actual NN +site model**, and a separate finite-state renewal lemma useful for interpreting +the pending sewing calculation. No fixed-p site Ornstein--Zernike prefactor, +critical exponent, new threshold value or novelty certification is asserted. + +## 1. The actual-site result + +On the infinite cylinder C_w x Z, independently occupy each vertex with +probability p. Count each complete component having nonzero horizontal +homology once, and let nu_w(p) be its mean count per vertical row. It is the +same density as in `winding-intensity-and-prefactor.md`, not a no-winding +survival exponent or a number of paths. In the range used below, 3p<1 already +ensures finite clusters by elementary path counting. Anchoring components at +their lowest row is one possible definition of the stationary density. + +**Theorem 1 (uniform dilute crossover).** For w>=6 and 0=0) x^(2r)/(r!)^2 + = (1/2pi) integral_(-pi)^pi exp(2x cos t) dt. (2) + +The constants in (1) are deliberately conservative. In particular, if +w->infinity, p=p_w>0 and w*p_w^2->0, then + + nu_w(p_w) = p_w^w I_0(2w p_w) (1+o(1)). (3) + +This includes three regimes, rather than presupposing a fixed Gaussian +amplitude: + +- wp->0: nu_w/p^w -> 1, almost straight winding; +- wp->lambda in (0,infinity): nu_w/p^w -> I_0(2lambda); +- wp->infinity while wp^2->0: + + nu_w(p) = p^w exp(2wp)/sqrt(4pi wp) + * [1+O(wp^2 + 1/(wp) + w(3p)^(w-1))]. (4) + +Equation (4) describes a genuine NN-site overlap regime, for example +p=w^(-3/4). It does **not** say that the fixed-p mass equals -log p-2p: +terms of size wp^2 are precisely what stop being negligible at fixed p. +No interchange of those limits is made. + +Only the standard Bessel identity and its large-real-argument expansion are +imported [B1,B2]. The component-versus-cycle bounds proving (1) are below; +there is no percolation OZ input and no surrogate renewal law in Theorem 1. + +## 2. An upper bound from unrooted positive-winding walks + +Every finite essential NN component in an annulus contains a simple essential +cycle. Such a cycle has winding +1 or -1, not a higher primitive winding; +orient it positively. A simple cycle with n vertices is occupied with +probability p^n. Summing over simple cycles therefore upper-bounds the +component count. Replacing simple cycles by all walks with lift displacement +(w,0), still assigning weight p^n, is a further positive upper bound. +Repeated walks are **not** assigned their actual occupancy probability here. +They are merely extra positive terms in a generating series bounding the +simple-cycle sum. + +The density of rooted walks is w times the count rooted at one prescribed +site per row. Dividing by n removes the n choices of root for every simple +cycle. Counting only displacement +w removes the orientation factor two. +Thus, absolutely convergently for p<1/4, + + nu_w(p) <= U_w(p) + := w [z^w y^0] sum_(n>=1) p^n/n + (z+z^(-1)+y+y^(-1))^n. (5) + +The longitudinal density statement can equivalently be obtained by counting +in a finite-height cylinder, dividing by height, then sending the height to +infinity. Subcritical finite moments dispose of the end effects. This is +mass transport for marked cycle vertices, not a percolation independence +assumption. + +Put b(t)=1-2p cos t and + + t_p(t) = 2p / [b(t)+sqrt(b(t)^2-4p^2)]. (6) + +Factoring + + 1-2p cos t-p(z+z^(-1)) + = (p/t_p)(1-t_p z)(1-t_p z^(-1)) + +gives the exact walk-series evaluation + + U_w(p)=(1/2pi) integral_(-pi)^pi t_p(t)^w dt. (7) + +For 0=3k, k>=1, + S(w,k)=0, w<3k. (9) + +This is the usual cyclic-gap count: distinguish a chosen column, subtract +two mandatory vacant gaps per chosen column, and then remove the k choices +of distinguished column. Consequently the number of cycles with 2r vertical +steps per unit height is + + N_r(w)=S(w,2r) * binom(2r,r). (10) + +A form more convenient for a uniform bound follows without any factorial +approximation. Draw k labelled independent uniform columns. A given pair +is at cyclic distance 0,1 or 2 with probability 5/w (w>=6). The union bound +shows + + S(w,k) k! / w^k >= 1 - 5k(k-1)/(2w). + +For k=2r this yields, for all r including those for which N_r=0, + + N_r(w) >= w^(2r)/(r!)^2 * (1-10r^2/w). (11) + +A negative right side causes no difficulty. + +### 3.2 Decorations are allowed; extra essential cycles are not + +Requiring the entire outside boundary of each cycle to be closed would +insert an artificial factor approximately exp(-2wp), losing the crossover. +Instead, condition only on its n=w+2r sites being occupied, allow decorations, +and subtract an upper bound on the probability that another essential cycle +lies in the same complete component. + +Call C good when it is the unique essential simple cycle of its component. +Then good cycles in a configuration are counted at most once per component. +Sufficient conditions for goodness are: + +(i) no off-C component has two or more attachment edges to C; and +(ii) no off-C component attached to C itself has essential winding. + +Condition (i) includes different attachment edges landing at the SAME cycle +vertex. Omitting that possibility would miss a second cycle attached at one +vertex. It does not forbid a tree or contractible loop attached by a single +edge. + +Here is a union bound conditional on C being occupied; outside sites remain +independent Bernoulli(p). + +**One-site return.** An off-C vertex adjacent to two C vertices is a missing +corner at a turn. A straight triple cannot cause one; and a return of the +height within two columns is excluded by the separation condition. There +are 4r turns, so at most 4r such sites. We use the looser bound 16r p. +The same classification follows by inspecting the isolated up-step and +down-step three-column patterns, not from numerical extrapolation. + +**Longer exterior return.** Start at a C-to-outside edge (at most 4n choices) +and follow a self-avoiding off-C path with k>=2 vertices that has a further +attachment to C. Ignoring the final attachment restriction only increases +the count. There are at most 4n*3^(k-1) candidate paths, hence total +conditional probability at most + + sum_(k>=2) 4n*3^(k-1)*p^k = 12n p^2/(1-3p). + +This also covers two attachments at the same C vertex when their exterior +endpoints differ. Every multiply attached off-C component has a shortest +path between two of its attachment vertices and is detected this way. + +**An attached off-C winding component.** Such a component contains an +essential simple cycle of at least w vertices. From an off-C neighbour of +C, a shortest path to that cycle followed almost once around it gives a +self-avoiding off-C path with at least w vertices. Summing these paths and +using the 4n possible initial attachments is bounded by + + 16n (3p)^(w-1). + +This covers an essential cycle hanging from C through a stem, even though +there is only one attachment edge. These are distinct reasons for failure; +none is assumed independent of the others. + +We have proved the finite lower bound + + Pr(C good | C occupied) >= 1-e_r, + e_r=16r p + 12(w+2r)p^2/(1-3p) + +16(w+2r)(3p)^(w-1). (12) + +Replacing 1-e_r by its positive part is valid. Summing good-cycle intensities +therefore gives the computable bound + + nu_w(p)/p^w >= + sum_(0<=r<=floor(w/6)) N_r(w) p^(2r) (1-e_r)_+. (13) + +The sum in (13) is a rigorous finite lower bound, not an estimate from +independent cycle occurrences. The uniqueness condition is precisely what +makes the sum safe in the presence of overlaps. + +### 3.3 Summing without assuming a bounded number of vertical steps + +Write lambda=wp, A_r=lambda^(2r)/(r!)^2. Equation (2) gives + + sum A_r=I_0(2lambda), + sum r^2 A_r=lambda^2 I_0(2lambda), + sum r A_r<=lambda I_0(2lambda). (14) + +The last inequality is Cauchy--Schwarz. Since N_r p^(2r)<=A_r, (11) loses at +most 10lambda^2/w times I_0. For the actual separated cycles, r<=w/6 and +w+2r<=4w/3. Equations (12)--(14) then show that the decoration subtraction +costs at most + + [16wp^2 + 16wp^2/(1-3p) + +(64/3)w(3p)^(w-1)] I_0(2lambda). + +For p<=1/8 the sum of these losses is less than the conservative error +128wp^2+64w(3p)^(w-1) in (1). This proves the lower bound for all stated +w,p, not merely for fixed lambda. In particular the error tends to zero when +wp^2->0, even when wp grows without bound. This completes Theorem 1. + +## 4. An exact finite-width series and its interpretation + +For every fixed integer w>=3, + + nu_w(p)=p^w [1+w(w-3)p^2+O_w(p^3)], p downarrow 0. (15) + +The coefficient of p^(w+1) is zero, rather than a negative perimeter term. +One proof counts the difference between complete winding components and +fully occupied rows. Fully occupied rows have mean density exactly p^w. +Components containing only one such row make zero contribution to the +difference regardless of tree decorations. Merging two full rows needs at +least 2w occupied vertices. A winding component without a full row needs at +least w+2 vertices: an essential simple NN cycle has w net horizontal steps +and must make at least two vertical steps if it leaves a row. + +At size w+2 the cycle has exactly two vertical steps, on two adjacent rows, +and no negative horizontal step. Its two horizontal arc lengths are r and +w-r. Avoiding a full row requires 2<=r<=w-2, giving w(w-3) sets per unit +height. Each is an induced cycle. For w=3 the family is empty and the stated +coefficient is zero. For w=2, 2w=w+2 and full-row mergers intervene: its +separate retained rational control gives nu_2=p^2-p^4+... . It is not covered +by (15). + +For fixed w the expansion is legitimate from the absolutely convergent +small-p cluster sum: the number of connected k-vertex sets rooted at a +specified site is at most exponential in k, and their external boundaries +have size at most 4k. No infinite-volume analytic continuation at pc is used. + +The older exact rational functions at w=3,4 reproduce (15). An independent +physical BFS over two-row fixed-occupation sets at w=3,...,8 verifies the +minimal no-full-row counts 0,4,10,18,28,40. These checks are finite controls +of the classification, not the reason (15) holds at every fixed width. + +For the mass-cancelling contrast in #741, + + R_w(p)=nu_w(p) nu_(3w)(p)/nu_(2w)(p)^2, + beta_eff=log R_w/log(4/3), + +(15) gives, at each fixed w>=3, + + log R_w(p)=2w^2p^2+O_w(p^3), + beta_eff ->0 as p downarrow 0. (16) + +Thus even the actual site model does not have beta_eff=1/2 uniformly in p +at a fixed finite set of widths. + +A sharper result follows from Theorem 1. If w->infinity and wp_w->lambda, +using the SAME p_w at w,2w,3w, + + beta_eff(w,p_w) -> B(lambda) + := log[I_0(2lambda) I_0(6lambda)/I_0(4lambda)^2] + /log(4/3). (17) + +B(lambda)=2lambda^2/log(4/3)+O(lambda^4) near zero. At infinity, + + B(lambda)=1/2+1/[48lambda log(4/3)]+O(lambda^(-2)). (18) + +Consequently B can overshoot 1/2; it is not a monotone interpolation from +zero to one half. Direct high-precision evaluations include + +| lambda | B(lambda) | +|---:|---:| +| 0.1 | 0.0653971727463187978 | +| 0.25 | 0.307660359689515652 | +| 0.5 | 0.602174810123850554 | +| 1 | 0.633453012816985342 | +| 4 | 0.520636654466422068 | + +These are limiting crossover values in (17), NOT computed stationary +intensities at widths 4,8,12. In particular NN p=1/4 in #741 is outside the +explicit small-p estimate (1); no numerical prediction for that task is +manufactured from this table. The task should still return its original six +values and achieved errors. + +### 4.1 Why the matching graph already differs in its leading small-p term + +For each fixed width, the previously classified minimal matching cycles give + + nu_w^8(p)=c_w p^w+O_w(p^(w+1)), + c_w=[y^0](1+y+y^(-1))^w. + +At minimal size w there is one vertex in each column, each forward step has +vertical displacement -1,0,+1, and the displacements sum to zero. Addressing +the cycle by its column-zero height counts it once per vertical row. This +reuses the existing central-trinomial minimal-pattern classification; it is +not the NN dilute theorem (1) applied to diagonal edges. + +At the exact fixed-width limit p downarrow 0, + + R_4^8 -> (19*73789)/1107^2 = 1401991/1225449, + beta_eff^8(4,p) -> 0.4678291580386769565... . + +The NN limit at the same three widths is instead zero. Neither is the +finite-p value assigned in #741, and no missing nu_12 was computed here. +The p and width limits must be distinguished on both graphs. + +## 5. Internal-state renewals: the variance entering a sewn loop + +This section is a SEPARATE explicit renewal theorem, not a claimed finite-state +representation of actual percolation irreducible clusters. It strengthens the +scalar coefficient calculation already supplied to #740. + +Let A(z,y) be a finite matrix with nonnegative finite-support coefficients +a_ij(x,y), positive integer forward lengths x, and integer transverse increments +y. Suppose its spectral radius reaches one at (R,1), R>1, with a simple +Perron eigenvalue. Write right and left eigenvectors r,l, normalized l^T r=1. +The tilted edge kernel + + q_ij(x,y)=a_ij(x,y) R^x r_j/r_i + +is stochastic after summing x,j. Let P be its state transition matrix and +pi_i=l_i r_i its invariant law. Assume P primitive; zero stationary transverse +drift; reflection symmetry, possibly involving a permutation of states; and +that det(I-A(R exp(it), exp(i theta))) has no zero on the unit two-torus +except (t,theta)=(0,0). These are explicit lattice-span/spectral assumptions. +A nonzero local second moment alone is not a diffusion hypothesis. + +Define Q_k(i,j)=sum_(x,y) q_ij(x,y)y^k and mu=E_pi X. Solve + + (I-P)h=Q_1 1, pi h=0. + +Then the asymptotic transverse variance per renewal and per forward length are + + sigma_eff^2=pi Q_2 1+2pi Q_1 h, + D=sigma_eff^2/mu. (19) + +The second term retains serial correlation carried by the internal state. +Equivalently sigma_eff^2 is the stationary mean of +(y+h_j-h_i)^2. This follows by decomposing the transverse additive functional +into a martingale plus the telescoping h boundary term. In particular it is +nonnegative; it vanishes precisely when every allowed increment is the +coboundary y=h_i-h_j. Require D>0 below. + +For the explicitly defined loop object + + L_w = w[z^w y^0]{-log det(I-A(z,y))}, + +one obtains + + L_w=R^(-w)/sqrt(2pi D w) * (1+O(1/w)). (20) + +**Proof.** Apply z d/dz to the logarithm. The singularity of +tr[(I-A)^(-1) z A_z] at its unique simple Perron root R(theta) has principal +part z/(R(theta)-z); the left/right eigenvector derivative cancels. The pole +coefficient is exactly one, not the number of internal states. Differentiating +the Perron equation gives + + log R(theta)=log R+(D/2)theta^2+O(theta^4). + +Here the second derivative of the Perron log eigenvalue is the asymptotic +variance (19), not just E Y^2. The spectral unit-torus condition controls all +other phases exponentially. Fourier inversion and Laplace integration yield +(20), including the stated O(1/w) for finite support and reflection symmetry. + +An open resolvent has a different normalization. For fixed vectors c,b, + + [z^w y^0] c^T(I-A)^(-1)b + ~ (c^T r)(l^T b)/mu + * R^(-w)/sqrt(2pi D w), (21) + +when its displayed amplitude is nonzero. This is why a two-point endpoint +amplitude cannot simply be declared the cyclic component amplitude. An actual +site sewing theorem must first identify the correct object, boundary weights +and cut multiplicity. A nontrivial cyclic weight can change even the leading +amplitude. None is removed by naming the Perron root. + +### 5.1 An exact two-state correlated control + +Take P=[[3/4,1/4],[1/4,3/4]]. Independently choose X=1 or 2 with probability +one half each. Conditional on arrival in state + or -, choose Y=0 with +probability one half, otherwise Y=+1 or -1 respectively. Tilt back with R=2. +Thus + + A(z,y)=(z/4+z^2/8) P diag((1+y)/2,(1+y^(-1))/2). + +The stationary one-step variance is 1/2. The lag-k covariance is +(1/4)(1/2)^k, so sigma_eff^2=1, mu=3/2 and D=2/3. Ignoring state correlations +would instead give D=1/3 and the wrong leading amplitude by a factor sqrt(2). + +The determinant simplifies exactly: + + det(I-A(2z,y)) + =1+(2+y+y^(-1))(-6z-5z^2+2z^3+z^4)/32. (22) + +Coefficient recursion from (22) gives the whole exact loop sequence. An +independent direct matrix trace sum agrees through width ten. Near zero, + + log R(theta)=log2+theta^2/3+7theta^4/54+O(theta^6), + +so in this specified model + + L_w=2^(-w)/sqrt((4pi/3)w) * [1-7/(8w)+O(w^(-2))]. (23) + +Its beta_eff at width 4 has no obligation to be near one half. The exact +control approaches from below, whereas the actual dilute-site crossover +(17) can lie above one half. These are reasons to distinguish finite-width +corrections, not excuses to disregard a contradictory returned computation. + +For clarity, memory can also kill diffusion altogether: with the same P, +X=1 and Y=g(i)-g(j) for two different g values, the single-step variance is +positive but every closed state cycle has transverse sum zero. Then D=0 and +L_w=R^(-w)tr(P^w), with no w^(-1/2) factor. That control violates the explicit +nondegeneracy assumptions of (20), not the theorem. + +## 6. What changes in #740 and #741, without expanding either task + +The fixed-p site sewing remains open in this delivery. Theorem 1 does not +supply the prefactor at NN p=1/4 or matching p=1/8; it identifies a directly +proved nonuniform dilute regime of the same NN-site model. Equation (20) +does not identify the actual site renewal state with a finite matrix. + +The additions useful to the pending work are concrete: + +1. A site prefactor claimed uniformly toward p=0 must reproduce (1)--(4), + or explicitly exclude that regime. A fixed-p theorem need not be uniform. +2. A multistate sewing uses the long-run transverse variance (19), the actual + lattice span and a specified closure, not an iid step variance and a + borrowed endpoint amplitude. +3. Finite R_4 is always meaningful, but one triple cannot separate beta from + corrections. If log nu=log A-kappa*w-beta log w+c1/w+O(w^(-2)), then + + beta_eff=beta+c1/[3w log(4/3)]+O(w^(-2)). (24) + + Numerical errors in log nu at w,2w,3w bounded by e1,e2,e3 give beta error + at most (e1+2e2+e3)/log(4/3). This is numerical error, not the correction + in (24). With each error 1e-8 the former is about 1.3904e-7. + +Do not enlarge the external width plan on the basis of this note. First obtain +its already requested values and the site-sewing result/obstruction. + +## 7. Executed scope + +The companion script independently traverses physical NN cylinders for: + +- 43,743 fixed-occupation two-row sets at widths 3,...,8, checking the + no-full-row minimum and first counts in (15); +- 2,443 separated cycles and 27 cyclic-gap families, checking inducedness, + nonzero winding and short exterior contacts; +- an exact matrix-logdet coefficient recurrence against independent matrix + trace expansion through ten forward lengths; +- retained NN rational density inputs at widths 2,3,4, and exact Taylor + coefficients. Those rational inputs are reused from the preceding delivery, + not presented as new stationary calculations. + +The displayed integrals, Bessel ratios and Gaussian amplitude controls use +mpmath, with a higher-precision rerun. They are not interval quadrature. +The finite-sum lower bound (13) itself is computed as a Fraction; comparisons +to its Bessel normalization are displayed numerically. The proof, not the +finite checks, supplies Theorem 1. Thirteen local tests pass; full repository CI +has not run. No Monte Carlo, no new stationary width-eight/twelve run and no +new external issue are required by this continuation. + +Commands: + + python -m unittest discover -s tests -p 'test_winding_dilute_crossover.py' -v + python scripts/winding_dilute_crossover.py --output /tmp/dilute-new.json + +The report refuses an existing output path. The script has no dependency on +an unmerged state table; mpmath is needed for numerical report generation. + +## Sources and originality boundary + +[B1] NIST Digital Library of Mathematical Functions, 10.32.1: +https://dlmf.nist.gov/10.32.E1 . The I_0 integral, not a percolation theorem. +[B2] NIST DLMF 10.40.1: +https://dlmf.nist.gov/10.40.E1 . Large positive argument expansion of I_nu. +Both primary reference pages were read this delivery. + +[CIV] Campanino--Ioffe--Velenik, *Fluctuation theory of connectivities for +subcritical random cluster models*, Ann. Probab. 36 (2008), 1287--1321; +https://www.unige.ch/math/folks/velenik/papers/abs_CIV08.html . Author abstract +read this delivery, not a re-audit of the theorem body. It establishes the +context of irreducible chains/effective walks, not the SITE cylinder sewing +requested in #740. Matrix-additive variance and Gaussian coefficient methods +are standard; the explicit calculations here are not a claim to invent them. +No systematic prior-art search for Theorem 1 has been completed in this round. diff --git a/docs/manuscripts/geometric-balance/exponential-birth-centres.md b/docs/manuscripts/geometric-balance/exponential-birth-centres.md new file mode 100644 index 00000000..7633e147 --- /dev/null +++ b/docs/manuscripts/geometric-balance/exponential-birth-centres.md @@ -0,0 +1,514 @@ +# Locating the two births in exponential rectangles + +2026-09-13. Continuation of the same geometric-balance manuscript, #739. +This note replaces the previously unspecified axial birth centres by two +well-defined inverse-correlation-length equations. It is a proof supplied in +this analysis, using the published inputs below; it is not an independent +acceptance of the older manuscript or a claim of literature priority. + +## 1. Main statement + +Let G4 be the nearest-neighbour square lattice and G8 its matching lattice, +with steps (+-1,0), (0,+-1), (+-1,+-1). All random variables are independent +**site** occupations. Write pc(G) for the infinite-volume site threshold. +For either graph define the horizontal inverse correlation length (mass) + +\[ + \kappa_G(p)=\lim_{n\to\infty}-\frac1n + \log\Pr_p^G(0\leftrightarrow(n,0)),\quad 00 satisfies + \[ + \mu_p(A)>\epsilon,\quad + q-p\ge\rho\frac{\log(1/(2\epsilon))}{\log N} + \quad\Longrightarrow\quad\mu_q(A)>1-\epsilon. \tag{7} + \] + Parameters must lie in [0,1] and 0x), including occupation of both endpoints, and put +s_p(x)=tau_p(x)/p. In particular s_p(0)=1. Conditioning a common endpoint to +be occupied leaves a product measure. Harris correlation on that measure gives + +\[ + \tau_p(x+y)\ge \frac{\tau_p(x)\tau_p(y)}p,\qquad + s_p(x+y)\ge s_p(x)s_p(y). \tag{8} +\] + +This argument is valid even when the connection events overlap away from the +common endpoint. It does not incorrectly treat them as independent. +Fekete's lemma along e1 gives + +\[ + \kappa(p)=\inf_{n\ge1}-\frac1n\log s_p(ne_1),\qquad + s_p(ne_1)\le e^{-n\kappa(p)}. \tag{9} +\] + +The limit in (1) is the same because log p/n tends to zero. A straight occupied +path gives kappa(p)<=-log p. AV supplies kappa(p)>0 for p0) on the axial torus. For m>=w>=2, + +\[ + \boxed{f_G(w,m;p)\le 2p\,m w^3\,e^{-(w-1)\kappa_G(p)}.} \tag{11} +\] + +**First-span proof.** A nonzero-homology closed walk has a planar lift whose +endpoint differs by (aw,bm), with (a,b) not both zero. Follow the lift until +its x-range or y-range first reaches w-1. Each physical step changes either +coordinate by at most one, so the entire retained prefix has both ranges at +most w-1. It lies in a translate of the square of vertices {0,...,w-1}^2. +This square injects into the w-by-m torus. The walk within it connects two +opposite sides of the square in one coordinate. + +The relevant edges are the planar edges of this cut square. Extra periodic +edges joining its opposite sides are NOT admitted to this event. The product +law on its vertices is exactly the planar finite-box law. There are at most +N=wm translations, two crossing directions, and w^2 pairs of endpoints. +Equation (10), followed by the union bound, proves (11). + +This argument retains the full distance w-1. An embedded radius-w/2 arm bound +would lose a factor two in the exponential rate and could not identify the +same centre. Backtracking, vertical winding and winding with both projections +nonzero are included. Planarity of the matching graph is not required: the +walk and its lifted displacement remain well defined despite crossing edges. + +## 4. Closing finite connecting seeds into a winding ring + +For fixed p in (0,pc), every epsilon>0 has a finite integer height D and w0 +such that, for every w>=w0 and m>=D, + +\[ + \boxed{1-f_G(w,m;p)\le + \exp\{-\lfloor m/D\rfloor e^{-(\kappa_G(p)+\epsilon)w}\}.} \tag{12} +\] + +Here D and w0 may depend on p and epsilon, but not on w or m. + +**Selecting a finite seed.** By (9), choose an integer L such that +-log s_p(Le1)/L < kappa(p)+epsilon/4. Connections in finite boxes +[-R,L+R] x [-R,R] increase to the full-plane connection as R grows. Choose a +fixed R for which the conditional finite-box probability + +\[ + q=\Pr_p(0\leftrightarrow Le_1\text{ in the box}\mid0\text{ occupied}) + >e^{-(\kappa(p)+\epsilon/2)L}. \tag{13} +\] + +No asymptotic theorem about the shape of a connecting cluster is needed for +this exhaustion step. Set D=2R+1, enlarging R if necessary to at least one. + +**Closing the seam.** Write w=kL+r, 0<=rL+2R, and all seeds use sites in the same D-row band. Require their +connection events and, when r>0, the remaining straight occupied path from +kL to w. A connected walk then runs from 0 to w e1 in the lift, including the +last endpoint, which is the translate of the first. Its projection has +nonzero homology. This is a closed ring, not an open cut-side crossing. + +The first seed has probability p q. If the first j seeds occur, the common +endpoint is occupied. Applying conditional Harris as in (8) to the next seed +shows inductively that the first k seeds have probability at least p q^k. +The remainder path contributes at worst p^r by the same common-endpoint +argument. Therefore the ring probability is at least + +\[ + p^{r+1}q^k\ge e^{-(\kappa(p)+\epsilon)w} \tag{14} +\] + +for all sufficiently large w. For r=0 there is no remainder requirement; +retaining the factor p is a harmless conservative lower bound. Possible +additional overlaps at the final seam only increase the Harris lower bound. + +Pack floor(m/D) disjoint D-row site bands. Their events are independent +because their SITE supports are disjoint. Unused edges between bands are +irrelevant. One successful ring already forces r_G>0, proving (12). + +### The rate statement, before making any inverse in p + +If log m/w -> d with d>=0, (11)--(12) imply for every fixed pd the event vanishes exponentially. For kappa(p)=min{x/2,1-exp(-1)}. Then let epsilon in +(12) decrease to zero AFTER taking liminf. The upper rate follows from (11) +and f<=1. This proves (15) without continuity, strict monotonicity, or an +assumed limit of the birth medians. + +## 5. Why the mass equation has exactly one solution + +The following arguments avoid silently importing a bond-only +inverse-correlation-length theorem. + +### 5.1 Continuity in the subcritical interval + +Monotone coupling makes kappa nonincreasing. Moreover it is the infimum over +L,R of the continuous functions -log q_(L,R)(p)/L, with q the conditional +finite seed probability above. Hence kappa is upper semicontinuous; together +with monotonicity this proves left continuity. + +For right continuity fix pn)<=C0 exp(-c0 n); the prefactor may be taken one in the cited +formulation but is immaterial. For any p<=q<=p0 and connected finite set A +containing 0, + +\[ + \frac{\Pr_q(C_0=A)}{\Pr_p(C_0=A)} + =(q/p)^{|A|}[(1-q)/(1-p)]^{|\partial A|}\le(q/p)^{|A|}. \tag{16} +\] + +Restrict the connection 0<->ne1 to clusters of size at most A0*n. The +remaining probability is bounded by the p0 tail. Using (9), + +\[ + \tau_q(ne_1)\le (q/p)^{\lceil A_0n\rceil}\tau_p(ne_1) + +C_0e^{-c_0 A_0n+O(1)}. +\] + +Taking exponential rates yields + +\[ + \kappa(q)\ge\min\{\kappa(p)-A_0\log(q/p),\ c_0 A_0\}. \tag{17} +\] + +Choose A0 large enough that c0 A0>kappa(p), and then q close to p. This proves +right continuity. The use of a CLUSTER-VOLUME exponential tail here is +essential; a one-arm radius tail alone does not justify this cutoff. + +### 5.2 Strict monotonicity from transitive sharp thresholds + +Suppose 00. Choose d in (0,A) so close to A +that rho*(A-d)/d0 small enough that +rho*(A-d+zeta)/d\epsilon_w:=e^{-(A-d+\zeta)w} +\] + +for large w. The event r_G>0 is increasing and invariant under all torus +translations, which act transitively on the N=wm sites. Also + +\[ + \rho\frac{\log(1/(2\epsilon_w))}{\log(wm)} + \longrightarrow\rho\frac{A-d+\zeta}{d}1-epsilon_w ->1. But (11) and kappa(q)=A>d force +f_G(w,m;q)->0. This contradiction proves strict decrease. Notice the logical +order: (15) was proved without strict monotonicity, so there is no circular +use of the desired inverse-centre formula. + +### 5.3 Range of the mass + +For p sufficiently small, counting nonbacktracking paths of length at least n +on the degree-z graph gives kappa(p)>=-log((z-1)p). Together with the straight +path bound, + +\[ + \max\{0,-\log((z-1)p)\}\le\kappa(p)\le-\log p. \tag{18} +\] + +Thus kappa(p)->infinity as p decreases to zero. If kappa were bounded below +by c>0 as p increases to pc, (10) would imply the uniform susceptibility bound + +\[ + \chi(p)=\sum_x\tau_p(x) + \le p+8p\sum_{n\ge1}n e^{-cn}<\infty. +\] + +This contradicts AV Proposition 5 and Theorem 2, which give +chi(p)->infinity as p increases to pc. Therefore kappa(p)->0. +Together with continuity and strict decrease, this makes kappa a bijection +from (0,pc) to (0,infinity), with a continuous strictly decreasing inverse. + +## 6. Deducing the two centres and the rank-one phase + +Let c_G(d)=kappa_G^{-1}(d). For p0. For +c_G(d)1. Monotonicity extends the latter conclusion +to all larger p. These pointwise limits imply concentration of the first +positive-rank birth at c_G(d) and convergence of its median there. + +Apply this first to G4. For G8, use its OWN site parameter t, its OWN +critical threshold, and its OWN mass kappa_G8. Finite digital duality gives + +\[ + P_2^{G4}(p)=1-f_{G8}(w,m;1-p). \tag{19} +\] + +Consequently the second G4 birth concentrates at 1-c_G8(d), not at +1-c_G4(d). The matching critical relation places pc(G4) strictly between the +two limits. The three off-boundary phases are + +\[ +\begin{array}{c|c} + pb(d)&P_2\to1. +\end{array} \tag{20} +\] + +Joint concentration follows from the union bound on the two actual coupled +births. Mixture weak convergence, fixed nonmedian quantiles and (6) follow +without a finite-birth independence assumption. Since all times lie in [0,1], +convergence of the moments follows by boundedness. + +The plateau in (20) contains pc. The balance root can select pc inside it +while the two births remain separated. Its location is governed by rare-sector +odds that disappear from the limiting unscaled CDF. No average of the two +centres is substituted for that root. + +## 7. A small exact computation improves the old quantitative brackets + +For d=log 4, the previous nonbacktracking/full-row bounds gave + + a in [1/12,1/4], b in [3/4,27/28]. + +A 3-by-3 planar seed already improves them, without estimating kappa itself. +Condition its left-middle vertex occupied and ask for a connection to the +right-middle vertex using only planar edges of the box. Denote this +conditional probability by q_G(p). By (9), + +\[ + \kappa_G(p)\le-\tfrac12\log q_G(p). \tag{21} +\] + +The seed probabilities have elementary independent derivations: + +\[ +\begin{aligned} + q_{G4}(p) + &=p\{p+(1-p)(2p^3-p^6)\} + =p^2+2p^4-2p^5-p^7+p^8,\\ + q_{G8}(p)&=p[1-(1-p)^3]=3p^2-3p^3+p^4. \tag{22} +\end{aligned} +\] + +For G4, if the centre vertex is closed, either the complete top or complete +bottom three-site detour must be occupied. For G8, any occupied vertex in the +middle column connects the two occupied endpoints. These derivations and an +independent enumeration of the eight remaining bits give identical polynomials. + +Let alpha and beta be the unique roots of q_G4(alpha)=1/16 and +q_G8(beta)=1/16. Exact rational bisection gives + +\[ + \alpha=0.239805566880062101\ldots,\qquad + \beta=0.156394361442176291\ldots. +\] + +Then (21) and the strict monotonicity of kappa give the rigorous bounds + +\[ + \boxed{\frac1{12}\le a(\log4)\le\alpha,\qquad + 1-\beta\le b(\log4)\le\frac{27}{28}.} \tag{23} +\] + +In particular 1-beta=0.843605638557823708... . The JSON stores rational +outward endpoints rather than relying on rounded decimals. Alpha and beta are +roots of FINITE SEED polynomials; they are NOT computed values or point +estimates of the two infinite centre locations. The gain here is a certified +bound: actual centres still require the actual planar mass functions. + +A finite seed is a one-sided certificate. Larger boxes can improve that upper +bound, but this note does not open a box/width sweep or claim an efficient +algorithm for arbitrary precision at a centre. + +## 8. Relation to prior work and remaining question + +The competition between a crossing's exponential cost and the number of +attempts is not a new mechanism. Grimmett's wedge/sponge programme, as recalled +and sharpened by Damron--Lam [DL], already connects a logarithmic geometry to +inverse correlation length. Their Section 1.1.2 records an inverse- +correlation-length formula for a BOND percolation wedge threshold; Section 2 +studies open-boundary rectangle crossings and uses stronger two-point +asymptotics. Those are close antecedents, not a site-torus theorem that can be +copied without examining the event and boundary conditions. + +Here the distinction is two periodic, ambient-rank births in the actual +square SITE / matching SITE pair. Equations (11)--(14) explicitly close the +seam and provide matching exponential rates using elementary product +arguments. We proved the mass properties needed for inversion with the +published AV and FK inputs, rather than asserting unverified site extensions +of Ornstein--Zernike results. No claim is made that inverse correlation length, +its qualitative properties, or this general entropy-cost mechanism are new. +A systematic literature priority conclusion has not been established. + +What remains at fixed d is NOT whether these two axial limiting centres +exist or how to characterize them: (3) settles that in this argument. What is +not determined is the finite-width displacement and fluctuation law at +kappa(p)=d. At equality, polynomial prefactors in a true winding probability, +periodic closure weights, and subexponential factors in m can matter. Neither +(15) nor an uncalibrated FK constant supplies a Gumbel law, a 1/w shift or its +coefficient. Changing to genuinely oblique growing periods may also require +a directional mass, not merely substituting the Euclidean systole in (3). +These are possible extensions of the same paper, not new automatic queues. + +## 9. Finite controls actually executed + +`scripts/winding_rate_centres.py` uses only the Python standard library. +It does not import an older automaton or transfer certificate. + +* Both 3-by-3 conditional seed polynomials are enumerated exactly; their roots + against 1/16 are isolated to dyadic intervals of width 2^-64. +* An independent graph-potential traversal on 3x3, 3x4 and 4x4, for BOTH + adjacencies, checks 140,288 graph/configuration pairs. For each of the 91,668 + nonzero-winding configurations it produces a lifted closed walk, extracts + the first-span prefix, and independently checks a crossing on the cut planar + square. Extra seam edges are excluded from that square. +* At 3x3 the finite seed-ring event, winding probability and conditional-Harris + lower bound are compared at p=1/100,1/4,1/2 with Fraction arithmetic. + The ring event is only sufficient, not all windings. +* The cluster-size truncation comparison used in right continuity is checked + directly on the finite 3x3 product law, at p=1/5 and q=1/4. +* Tests separately compare (22) to enumeration, check strict dyadic endpoint + signs, seam witnesses, probability inequalities and invalid inputs. + +These finite checks do not prove the infinite AV/FK inputs, the asymptotic +inversion or the all-size geometry. Those claims rest on the arguments above. +Full Matching-One repository CI was not run. No Monte Carlo, new numerical pc, +critical exponent fit, or external compute was used. + +## References and exact use + +[AV] T. Antunovic and I. Veselic, *Sharpness of the phase transition and +exponential decay of the subcritical cluster size for percolation on +quasi-transitive graphs*, Journal of Statistical Physics 130 (2008), 983--1009. +https://arxiv.org/html/0707.1089v3 +Theorems 2--3, Proposition 5, model definitions and Section 6 read in primary +HTML. Supplies subcritical site cluster-volume tails and susceptibility +divergence; no matrix or torus-centre formula is attributed to this source. + +[FK] E. Friedgut and G. Kalai, *Every monotone graph property has a sharp +threshold*, Proceedings of the AMS 124 (1996), 2993--3002. +https://www.ams.org/journals/proc/1996-124-10/S0002-9939-96-03732-X/ +The precise statement used here is the published theorem as reproduced in +[DKS] Theorem 6. No new direct reading of the original PDF is claimed. + +[DKS] P. Duncan, M. Kahle and B. Schweinhart, *Homological percolation on a +torus: plaquettes and permutohedra*. +https://arxiv.org/html/2011.11903v4 +Section 1.3, Theorems 5--6, read in primary HTML. Used for (7) and the Harris +formulation, NOT to assert that their model-specific torus theorem is the +square-site statement (3). + +[DL] M. Damron and W.-K. Lam, *Asymptotics for first passage percolation on +logarithmic subgraphs of Z^2*, arXiv:2502.18235v1 (2025). +https://arxiv.org/html/2502.18235v1 +Section 1.1.2 and Section 2 read in primary HTML. Context and closest mechanism: +bond wedges, correlation length and rectangle crossings, not a claimed proof +of our two site-rank birth locations. Original older wedge sources were not +independently read in this delivery. + +[D] Matching critical relation and finite digital-Alexander identity are +specified, sourced and used in the parent geometric-balance manuscript at +PR739 head 758800f92fd84ee036e9b10e91a7facd54d3712c. diff --git a/docs/manuscripts/geometric-balance/manuscript.md b/docs/manuscripts/geometric-balance/manuscript.md new file mode 100644 index 00000000..431961fe --- /dev/null +++ b/docs/manuscripts/geometric-balance/manuscript.md @@ -0,0 +1,558 @@ +# Balance without concentration: two geometric scales for square-site percolation on integer-period tori + +**Working mathematical manuscript — 2026-09-13.** This text consolidates the +probability argument in #735 and the axial full-law result in #736. Its new +step is an orientation-uniform staircase corridor and translation-packing +argument, which proves the full-law criterion for arbitrary integer periods. +It is an author-supplied proof under the explicit standard inputs below, not +an independently accepted publication or a claim of literature priority. + +## Abstract + +Let independent nearest-neighbour site percolation be defined on +\(\mathbb Z^2/\Lambda\), where \(\Lambda\) is a rank-two integer lattice, with +\(N=[\mathbb Z^2:\Lambda]\) vertices and shortest nonzero Euclidean period +\(\ell\). Write \(r\in\{0,1,2\}\) for the rank of the ambient homology image, +and \(P_j(p)=\Pr_p(r=j)\). The topological balance root solves \(P_2=P_0\). +Using site sharpness and matching duality, its convergence to the infinite +square-site critical probability is uniform over all period lattices as +\(\ell\to\infty\), with no area, aspect, or shear constraint. In contrast, +for any sequence of honest tori with \(N\to\infty\), the entire two-birth +mixture converges to a point mass at that critical probability **if and only +if** \(\log N/\ell\to0\). Necessity uses critical square-site box crossing: +an integer staircase of axis-aligned crossing rectangles closes around the +actual shortest period, at arbitrarily small exponential cost below +criticality. A finite-group packing lemma produces sufficiently many disjoint +translates without rotating the interaction or requiring an ambient-primitive +period. We also give an elementary, all-period endpoint-splitting corollary +when \(\log N/\ell\to\infty\). No critical exponent, conformal-invariance +assumption, numerical critical probability, or growing transfer matrix enters. + +## 1. Model, inputs, and statements + +### 1.1 The finite quantities + +The physical interaction is the nearest-neighbour (NN) square lattice with +unit edges. Quotient by a full-rank subgroup \(\Lambda\le\mathbb Z^2\), while +retaining lifted edge displacements. Assume each periodic unit square is an +embedded cell with four distinct corners; this is automatic when the shortest +period is sufficiently large. These are the **honest tori** throughout. A +change of period basis is not a rotation of the NN interaction. + +For an occupied vertex set \(\omega\), let \(G_\omega\) be its induced NN +graph in \(T_\Lambda=\mathbb R^2/\Lambda\), and put +\[ + r(\omega)=\dim_{\mathbb Q}\operatorname{im} + [H_1(G_\omega;\mathbb Q)\longrightarrow H_1(T_\Lambda;\mathbb Q)]. +\] +The source variable is \(X=r-1\), and +\[ + M_\Lambda(p)=\mathbb E_pX=P_2^\Lambda(p)-P_0^\Lambda(p),\qquad + F_\Lambda(p)=\tfrac12\mathbb E_pr=\tfrac12(1+M_\Lambda(p)). \tag{1} +\] +No directional wrapping marginal is substituted for rank. In particular a +rank-one spiral has nonzero projections on two coordinates but still rank one. + +Give each vertex an independent uniform label in \([0,1]\), and occupy labels +at most \(p\). Write \(T_1,T_2\) for the first times at which rank is at least +one and two; a simultaneous jump is allowed. Then +\[ + F_\Lambda(p)=\tfrac12\Pr(T_1\le p)+\tfrac12\Pr(T_2\le p). \tag{2} +\] +Thus \(F\) is a CDF, that of an independent fair choice between the two birth +times. It is not the rank law at a fixed parameter. Denote its inverse by +\(Q_\Lambda\), and its median, equivalently the balance root, by +\(p_\Lambda=Q_\Lambda(1/2)\). The conditional rank odds +\[ + H_\Lambda(p)=\frac{P_2^\Lambda(p)}{P_0^\Lambda(p)+P_2^\Lambda(p)} \tag{3} +\] +are a different function. + +### 1.2 Imported inputs and deterministic duality + +Only the following infinite-volume inputs are used. + +**S: site sharpness.** For NN and for its matching graph NN+NNN, each fixed +subcritical parameter has a bound +\[ + \Pr_p(0\leftrightarrow \partial B_R)\le C(p)e^{-c(p)R},\quad c(p)>0. + \tag{4} +\] +Distances can be Euclidean, with a change in constants because both step sets +are finite. Duminil-Copin--Tassion [S], Theorem 1.1(3), is printed for bonds; +its section 1.2 explicitly discusses the site adaptation. We use the adapted +site conclusion, not the value or threshold theorem for square bond percolation. + +**D: the matching critical relation.** With \(p_c=p_c^{\rm site}(\mathrm{NN})\), +\[ + p_c^{\rm site}(\mathrm{NN+NNN})=1-p_c. \tag{5} +\] +A direct source is Grimmett--Li [D], Theorem 5.5 in the amenable section. +Their Theorem 1.1(a) gives the more general relation with \(p_u\). We use the +amenable square-lattice instance, not a claim about every planar matching pair. + +**R: critical square-site box crossing.** There is \(c_0>0\) such that for +every integer \(s\ge1\), the probability at \(p_c\) of an occupied horizontal +crossing of a \(3s\)-by-\(2s\) axis-aligned rectangle is at least \(c_0\). +Zeng [R], Theorem 1.1, states the requisite square-site RSW result. It is used +as a preprint theorem; no publication status beyond the cited text is assumed. +The full-law necessity uses R. Balance-root consistency and full-law +sufficiency use S and D but not R. + +The finite identity +\[ + r_{\rm NN}(\omega)+r_{\rm NN+NNN}(\omega^c)=2 \tag{6} +\] +is the deterministic digital-Alexander lemma used in the earlier repository +proofs. For completeness, its topological content is as follows. Take a closed +regular neighbourhood \(U\) of the black NN graph and its complementary +subsurface \(V\). The images \(A,C\) of their first homology in that of the +torus satisfy \(C=A^\perp\) for the intersection form. Indeed, the annihilator +of \(A\) identifies with the kernel of restriction \(H^1(T)\to H^1(U)\); +the relative exact sequence, excision, and Poincare--Lefschetz duality identify +that kernel with the image from \(H_1(V)\). Their dimensions sum to two. +The white matching graph has the same ambient homology image as \(V\): in a +face retain the diagonal only for an opposite-white-pair pattern; every other +active white diagonal has a white boundary replacement in that contractible +face. The retained local graph is an embedded spine up to filling local faces, +which does not change the ambient image. This is the precise 4/8 adjacency +convention. The existing `notes/digital-alexander-duality-proof.md` supplies +its facewise implementation. It is not inferred from the numerical controls +in this paper. Short-period cell degeneracies are outside this lemma. + +### 1.3 Main conclusions + +**Theorem A (balance consistency, consolidated from #735).** The balance +root is unique on every honest torus, and +\[ + \lim_{L\to\infty}\ \sup_{\Lambda:\ell(\Lambda)\ge L} + |p_\Lambda-p_c|=0. \tag{7} +\] +More precisely, for each fixed \(p0\), +independent of area and period shape, such that +\[ + \frac{P_2^\Lambda(p)}{P_0^\Lambda(p)} + \le \exp[-\kappa(p)N/\ell],\qquad \ell\ge L(p). \tag{8} +\] +Above \(p_c\), the inverse ratio has the same type of estimate. Every fixed +interior quantile of \(H\) in (3) also converges uniformly under \(\ell\to\infty\). +This is a sufficient geometry for balance; necessity for balance is not asserted. + +**Theorem B (sharp full-law geometry).** For any sequence of honest integer- +period tori with \(N_n\to\infty\), the following are equivalent: + +1. \(\log N_n/\ell_n\to0\). +2. For every fixed \(pp_c\), \(F_n(p)\to1\). +3. Each of \(T_{1,n},T_{2,n}\) converges in probability to \(p_c\). +4. The birth-time mixture in (2) converges weakly to \(\delta_{p_c}\). +5. \(Q_n(u)\to p_c\) for every fixed \(u\in(0,1)\). +6. The convergence in 5 is uniform on every compact subinterval of \((0,1)\). + +The extension of necessity from axial periods (#736) to **all** integer +periods is proved in sections 4--6. It uses only axis-aligned NN rectangles, +not a rotated-lattice RSW assertion. + +**Corollary C (extreme elongation, all period shapes).** If instead +\(\log N_n/\ell_n\to\infty\), then for each \(p\in(0,1)\), +\[ + P_0^n(p),P_2^n(p)\to0,\qquad F_n(p)\to\tfrac12, +\] +and the mixture converges to \(\tfrac12\delta_0+\tfrac12\delta_1\). +When also \(\ell_n\to\infty\), its finite median still converges to \(p_c\) +by Theorem A. This includes genuinely oblique examples, not only rectangles. + +## 2. Finite strict monotonicity + +Adding sites cannot decrease the ambient homology image. Both events +\(r\ge1\) and \(r\ge2\) are increasing and nonconstant. Along an empty-to- +full occupation chain each changes value somewhere. Such a pivotal assignment +of the other sites has strictly positive product probability at every +\(00. +\] +The endpoint values are \(-1,+1\), proving the unique root and invertibility +of \(F\). Also \(P_2'>0\) and \(P_0'<0\), so \(H'>0\) on the interior. +A simultaneous rank jump does not invalidate either argument. + +## 3. Why balance needs no area restriction + +This section puts the arbitrary-period argument of #735 into the same +manuscript; it is not a second independent proof certificate for that PR. + +### 3.1 Shortest period and transverse height + +Choose a shortest period \(u\), so \(|u|=\ell\). It is primitive in +\(\Lambda\), since a proper lattice multiple would not be shortest. Complete +it to a basis \((u,v)\) with determinant \(N>0\), and subtract an integer +multiple of \(u\) from \(v\) so that \(|u\cdot v|\le\ell^2/2\). Since +\(|v|\ge\ell\), the transverse height is +\[ + h=N/\ell\ge\sqrt3\ell/2. \tag{9} +\] +Neither vector must be primitive in ambient \(\mathbb Z^2\). The circle +coordinate \(\theta(x)=\det(u,x)/\ell\pmod h\) is well defined. On vertices, +\(\det(u,x)\pmod N\) implements it exactly. A rank-two image contains a +closed walk with nonzero transverse winding. Every physical step changes +\(\theta\) by at most \(\sqrt2\), on either adjacency. + +### 3.2 Overlapping local balls: a lower bound for no winding + +Assume \(\ell\ge64\), put \(R=\ell/64\), and let \(a_R(p)\) be the one-arm +probability including the occupied origin. Stopping a path on its first exit +makes this an event on vertices at Euclidean distance at most \(R+\sqrt2\). +That ball injects into the torus because its diameter is less than \(\ell\). +The corresponding local event at each of the \(N\) vertices has exactly the +infinite-lattice probability \(a_R\). + +A nonzero winding walk has a lift that escapes this radius. Consequently, +absence of every local arm implies rank zero. The arm-absence events overlap +but are decreasing. Harris positive association, not independence, gives +\[ + P_0\ge(1-a_R)^N. \tag{10} +\] +Harris association for a product measure follows by induction on the sites: +condition on one Bernoulli variable, apply induction to the conditional +covariances, and use that the two conditional means are monotone in the same +direction for the remaining covariance. + +### 3.3 Disjoint transverse bands: an upper bound for rank two + +Use \(k=\lfloor8N/\ell^2\rfloor\) transverse bands of physical width +\(\ell/8\), leaving the residual strip unused. Shift boundaries off vertices. +In each band require an occupied path using only its vertices, joining the +lower and upper boundary layers of thickness \(\sqrt2\). + +A lift with nonzero transverse winding traverses every band. For a chosen +lifted band, take its first exit through the upper side after a visit below +the lower side, and the last entrance through the lower side preceding that +exit. The intervening path lies inside the band. This last-entry construction +allows arbitrary backtracking. The endpoint separation is at least +\(\ell/8-2\sqrt2>R\), and hence witnesses a local arm from an entry vertex. + +The entry layer contains at most \(B=4\lceil\ell\rceil\) vertices. To see +this uniformly in tilt, center unit squares at the lattice vertices; they tile +the quotient with area one each. Squares centered in a layer of width +\(\sqrt2\) lie in a layer of width \(2\sqrt2\). The latter has area +\(2\sqrt2\ell\), since transverse fibres have length \(\ell\). +Thus a band crossing has probability at most \(Ba_R\). The bands have disjoint +site supports, so their events **are** independent. Therefore +\[ + P_2\le(Ba_R)^k,\qquad k\ge4N/\ell^2. \tag{11} +\] +This remains valid for matching diagonals: edge lengths are at most +\(\sqrt2\), and edges between unused bands are not part of the events. + +### 3.4 Rate comparison + +At a fixed subcritical parameter, S gives \(a_R\le C e^{-c\ell/64}\). +For sufficiently large \(\ell\), independently of \(N\), +\[ + \log(Ba_R)\le-c\ell/128,\quad a_R\le1/2,\quad + 2a_R\le c/(64\ell). +\] +Equations (10)--(11) yield +\[ + \log(P_2/P_0) + \le -cN/(32\ell)+2Na_R + \le -cN/(64\ell). \tag{12} +\] +For \(p>p_c\), apply this to the matching graph at \(1-p\) and use (5)--(6). +Two fixed parameters \(p_c\pm\varepsilon\) trap the unique finite root +uniformly over all lattices with large \(\ell\). This proves A, including +the conditional-odds assertion. No value of the probabilities at \(p_c\) +and no quantitative control of \(c(p)\) near \(p_c\) is needed. + +## 4. An occupied staircase ring around an arbitrary integer period + +We now construct the new necessity mechanism. Constants are deliberately +conservative; their optimization is irrelevant to the criterion. + +**Lemma 4.1 (deterministic staircase).** Given \(s\in\mathbb N\) and a +nonzero integer vector \(u\), one can specify at most \(8\ell/s\) horizontal +or vertical rectangle-crossing events, for \(\ell=|u|\ge64s\), such that: + +- every rectangle has side lengths between \(2s\) and \(3s\); +- their projected intersection forces a closed occupied walk with lift + displacement exactly \(u\), including the periodic seam; +- the lifted vertex support \(\widetilde S\) lies within distance \(4s\) + of the segment \([0,u]\). + +When \(u\) is a shortest period of \(\Lambda\), every individual rectangle +injects into \(T_\Lambda\), since its diameter is at most \(\sqrt{13}s<\ell\). + +**Construction and proof.** A lattice reflection or quarter-turn is an exact +symmetry, so for notation arrange \(u=(a,b)\), \(a\ge b\ge0\). No arbitrary +angle rotation is performed. Set \(k=\lceil a/s\rceil\), and +\[ + z_j=(\lfloor ja/k\rfloor,\lfloor jb/k\rfloor),\quad 0\le j\le k. + \tag{13} +\] +Between \(z_j\) and \(z_{j+1}\), move horizontally to +\((z_{j+1,x},z_{j,y})\), then vertically to \(z_{j+1}\). Omit zero moves. +The resulting centers \(c_0,\ldots,c_J\) satisfy +\(c_0=0,c_J=u\), \(J\le2k\), and each axis step has length at most \(s\). + +At every \(c_i\), \(0\le i0\) +there are a fixed integer \(s=s_\eta\) and a fixed parameter +\(p_\eta\in(0,p_c)\), such that for every shortest integer period +\(u\) with \(\ell\ge64s\), the event \(\mathcal G_{u,s}\) of Lemma 4.1 +satisfies +\[ + \Pr_{p_\eta}(\mathcal G_{u,s})\ge e^{-\eta\ell}. \tag{14} +\] + +**Proof.** Choose \(00\). + +First suppose a further subsequence has \(\ell_n\to\infty\). Choose +\(\eta=d/2\) in (16). Its exponent in absolute value is at least +\[ + \frac{e^{(d/2)\ell_n}}{64s_\eta\ell_n}\longrightarrow\infty. +\] +Thus \(P_0^n(p_\eta)\to0\) at a **fixed** \(p_\etap_c\), apply (18) to the matching complement using D and (6). +Thus \(P_2^n(p)\to1\), proving assertion 2. This sufficient argument is +already present in #613; it is not new necessity disguised as a union bound. + +Monotonicity of \(F_n\) traps all \(Q_n(u)\), \(u\in[\delta,1-\delta]\), +between \(p_c-\varepsilon\) and \(p_c+\varepsilon\) for large \(n\). +This proves 2 => 6 => 5. Assertion 4 is equivalent to 2 by the CDF criterion +for weak convergence to a point mass. Finally, because \(T_1\le T_2\), +\[ + \Pr(T_1\le p)\le2F_n(p),\qquad + \Pr(T_2>p)\le2[1-F_n(p)], +\] +so 2 implies 3. Conversely 3 and (2) imply 4. All assertions in B follow. + +### 6.3 Extreme elongation + +Inequality (17) does not require RSW. It is valid for every honest period +lattice. Apply it also to the matching graph, which contains the same forced +NN path, at \(1-p\). Duality gives +\[ + P_2^\Lambda(p)\le + \exp\left[-\frac{N}{2\ell^2}(1-p)^{\sqrt2\ell}\right]. \tag{19} +\] +If \(\log N/\ell\to\infty\), both exponents in (17) and (19) diverge for +every fixed \(01\). With \(k_n=\lceil e^{n^2}\rceil\), +the birth mixture splits to the endpoints while the balance root converges +to \(p_c\). With \(k_n=\lceil e^{\sqrt n}\rceil\), all fixed quantiles +converge to \(p_c\). With \(k_n=\lceil e^{dn}\rceil\), \(d>0\), Theorem B +rules out full-law concentration but does not specify its limiting nonmedian +quantiles. No thin-continuum scaling law is used for these lattice sequences. + +## 7. Prior work, claim boundaries, and what remains + +The ambient homology observable, matching-function root, positive association, +RSW gluing, and translation packing are not presented as inventions of this +manuscript. The following comparison separates source scope from our deductions. + +| Source | Scope inspected in the primary text | Relation to this manuscript | +|---|---|---| +| Mertens--Ziff [MZ], equations (20)--(21) and the subsequent root paragraph | Finite matching lattices, wrapping contrasts, and convergence of roots on square sequences | Establishes the existing observable/root context; not an arbitrary-period full-law necessity statement | +| Duncan--Kahle--Schweinhart [DKS], section 1.1, Theorems 1--4 | Cubical plaquettes on uniform \(N\mathbb Z^d\) quotients and scaled permutohedral systems; in 2D the basic examples are bond square/site triangular | Same ambient-image question, but different finite sequence/model hypotheses; no automatic extension to arbitrary square-site period lattices | +| Zeng [R], Theorem 1.1 | Uniform critical square-site rectangle crossings | Imported box lower bound; the staircase and its endpoint/seam argument are supplied here | +| Duminil-Copin--Tassion [S], Theorem 1.1(3), section 1.2 | Subcritical sharpness, with explicit site adaptation | Imported one-arm decay, not a computed near-critical modulus | +| Grimmett--Li [D], Theorem 5.5; Theorem 1.1 and Remark 1.4 | Site matching critical relation in the amenable case and its wider uniqueness-threshold form | Imported infinite-graph relation; finite rank duality is a separate topological statement | +| Repository #735 and #736 | Arbitrary-period root argument; axial full-law necessity | Author-level predecessors consolidated here; sections 4--6 remove the axial restriction | + +This bounded source comparison does not certify novelty. It did not include +systematic citation-graph traversal, books, theses, or all strip-percolation +literature. In particular, earlier results on elongated strips may package +related rare-opportunity arguments in different language. No claim of absence +from print follows from the searches made for this delivery. + +The manuscript does not solve the original-U candidate-map problem, identify +an irrelevant field, prove an \(L^{-4}\) shift, furnish a new numerical bound +for \(p_c\), establish fixed-width-to-continuum interchange, or predict the +nonmedian limiting law at finite positive \(\log N/\ell\). Theorem A does +not assert its systole condition is necessary for the median. Theorem B's +necessity is for the entire law, not a failure of every selected quantile. + +The real next mathematical comparison is the consolidated theorem versus its +closest existing strip and homological statements. An independent reader can +challenge the seam construction, the finite-group support packing, or the +imported site inputs directly in this one text. No further width table, +source-jet hierarchy, or unrelated Jordan example is a dependency. + +## 8. Executable control and integration boundary + +`scripts/oblique_winding_corridor.py` implements only the new finite geometry: +integer quotient coordinates, staircase rectangles, planar rectangle-crossing +BFS, and a separate spanning-forest winding detector on the physical NN graph. +The tiny exhaustive controls use injecting rectangles, not the asymptotic +\(\ell\ge64s\) constants. They test the deterministic gluing rather than RSW. +The larger full-support cases check actual reduced oblique bases, including +ambient-nonprimitive shortest vectors; rational distances verify the tube +bound. The packing check uses independent finite cyclic-group examples. + +Execution details are in +`results/research-control-20260913/oblique-corridor-controls.json`. +Five local mathematical tests passed. The three tiny tori comprise 135,168 +configurations with no ring-without-winding failure. These checks do not prove +the all-size probability inputs or supply independent publication review. +No Monte Carlo, paid compute, GPU, or full Matching-One repository CI was run. +The code depends only on the standard library, not on the unmerged width-four +certificate stack. Old proofs and frozen results are not overwritten. + +## References + +[S] H. Duminil-Copin and V. Tassion, *A new proof of the sharpness of the phase +transition for Bernoulli percolation and the Ising model*. arXiv:1502.03050v3, +Theorem 1.1 and section 1.2. Primary HTML read: +https://arxiv.org/html/1502.03050v3 + +[D] G. Grimmett and Z. Li, *Hyperbolic site percolation*. arXiv:2203.00981, +Theorem 5.5 (amenable matching pairs), also Theorem 1.1 and Remark 1.4. +Primary theorem text read: https://arxiv.org/html/2203.00981 +Their *Percolation critical probabilities of matching lattice-pairs*, +arXiv:2205.02734v3, introduction (1.3), gives the companion context: +https://arxiv.org/html/2205.02734v3 + +[R] X. Zeng, *A Russo Seymour Welsh Theorem for critical site percolation on +\(\mathbb Z^2\)*, arXiv:1309.2273v1, Theorem 1.1. Primary theorem and setup +read: https://arxiv.org/html/1309.2273 +Kohler-Schindler--Tassion, *Crossing probabilities for planar percolation*, +arXiv:2011.04618, is general RSW background, not a replacement for checking +the critical square-site input: https://arxiv.org/html/2011.04618 + +[MZ] S. Mertens and R. M. Ziff, *Percolation in Finite Matching Lattices*, +arXiv:1603.07289v2. Primary HTML definitions and root discussion read: +https://arxiv.org/html/1603.07289v2 + +[DKS] P. Duncan, M. Kahle and B. Schweinhart, *Homological percolation on a +torus: plaquettes and permutohedra*, arXiv:2011.11903v4. Primary section 1.1 +and theorem statements read: https://arxiv.org/html/2011.11903v4 + +Repository predecessors (not independent sources of validation): +#735 at `9d29d014df28af7c635e6859d98a95ffe2b34d06`; +#736 at `64d809b4404f80ff3f9adf9713337cc76008e92d`; +the finite digital-Alexander note on main. Navigation reset #738 was read +on main together with its subsequent focus clarification. diff --git a/docs/manuscripts/geometric-balance/p740-site-cluster-renewal-20260913.md b/docs/manuscripts/geometric-balance/p740-site-cluster-renewal-20260913.md new file mode 100644 index 00000000..f212f7fb --- /dev/null +++ b/docs/manuscripts/geometric-balance/p740-site-cluster-renewal-20260913.md @@ -0,0 +1,199 @@ +# #740 — the site-cluster renewal: sources, the identity that is missing, and a measured obstruction + +Issue #740, returned to #739. Scope: the once-per-COMPONENT cylinder intensity +`nu_w^G(p)` for independent SITE percolation on `G = NN` and `G = NN+NNN`, and the +question whether `nu_w^G(p) = A_G(p) w^{-1/2} exp[-w kappa_G(p)] (1+o(1))` uniformly on +compact subcritical `p` intervals. + +Answer in one line: **the analyticity half is answerable and is answered by citation; the +`1/2` half is not, and the obstruction is named and measured here rather than argued +around.** Deliverable class (c) plus a partial (a). + +Two things are NOT done and are not pretended: no `A`, no `beta` is derived, and no +counterexample to the `1/2` is exhibited — what is exhibited is the specific multiplicity +that any proof of it must control first. + +--- + +## 1. Retrieval matrix + +Each row states the model, the hypotheses, what the source actually gives, and — explicitly — +what it does not. + +| source | model | hypotheses | what it gives | what it does **not** give | +|---|---|---|---|---| +| Campanino–Ioffe, *Ann. Probab.* **30** (2002) 652–682, doi 10.1214/aop/1023481005 | Bernoulli **bond** percolation on `Z^d`, `d >= 2` | `p < p_c(d)`; bond; nearest neighbour | a precise Ornstein–Zernike asymptotic for the two-point function `P_p(0 <-> x)` **in any direction `x`** and any subcritical `p` | not site; not the ANN+NNN range; not a cylinder-component density; no amplitude for anything but the two-point function | +| Campanino–Ioffe–Velenik, arXiv:math/0610100 (= mp_arc 06-275) | subcritical random-cluster measures, general `q` | Assumption (1.2): exponential decay of finite-volume **wired** connectivities in rectangles. Known to hold for `q = 1`, `q = 2` **in any dimension**, and for `q` sufficiently large; in `d = 2` it holds whenever infinite-volume connectivities decay exponentially | sharp OZ two-point asymptotics; **analyticity and strict convexity of the inverse correlation length**; an invariance principle; and structurally, a description of long clusters as **"essentially one-dimensional chains of irreducible objects"** with a random-walk representation | not a component-density theorem; the amplitude is the connectivity one, i.e. a *linear* chain between two distant points | +| D'Alimonte–Manolescu, arXiv:2510.13648v3 (23 Jun 2026) | 2D random-cluster, `1 <= q < 4` | 2D; `1 <= q < 4`; random-cluster (bond FK) | an OZ asymptotic for the two-point function holding **uniformly for `p < p_c`**; **strict convexity of the inverse correlation length** at the correlation-length scale, uniformly in `p < p_c`; the exploration is a **killed Markov renewal process** | bond FK; two-point function; no amplitude of a component density; no site statement; no matching-diagonal statement | + +**Direction versus `p`.** The two analyticities are different and the ticket is right to +separate them. Campanino–Ioffe 2002 supplies regularity in the **direction** `x` — the +asymptotic holds for every direction, so the directional dependence of the decay rate is +not the obstruction. Campanino–Ioffe–Velenik and D'Alimonte–Manolescu supply regularity in +**`p`**: analyticity (CIV) and strict convexity, the latter uniformly in `p < p_c` (DM, +in 2D). For our model `q = 1`, so CIV's Assumption (1.2) is **known**, not conjectural. + +Site versus bond: none of the three is stated for site percolation. CIV's skeleton/renewal +machinery is model-agnostic for finite-range independent percolation and its Assumption +(1.2) is exactly the hypothesis one would verify for the site model; but that verification +is not in any of the three, and the ticket's own note that "a negative search is not an +originality certificate" applies to the converse reading too. + +--- + +## 2. The secondary question — the exceptional `d` set — is answered, and the answer is "discrete, not empty" + +The earlier round flagged an at-most-countable exceptional set of `d` at which the +finite-median centred fluctuations need not be two independent Gumbels. + +**What is now citable.** `kappa_G(p)` is analytic on the whole subcritical interval and, in +2D, strictly convex there, uniformly in `p < p_c`. That is CIV plus D'Alimonte–Manolescu +specialised to `q = 1`. So the possibility that `kappa` fails to be differentiable at some +`p`, which would have wrecked the local inversion used to move the centre by `log(w)/w`, is +closed. `a(d) = kappa_NN^{-1}(d)` and `b(d) = 1 - kappa_matching^{-1}(d)` are therefore +analytic in `d` on the relevant range. + +**What that does and does not buy.** Define `h(d) = a(d) + b(d) - 1`. The exceptional `d` +are the zeros of `h`. Analyticity makes the zero set **discrete** — it cannot contain an +interval unless `h` vanishes identically, in which case `a = 1 - b` identically, which is a +strong and separable coincidence. So: + +- the exceptional set is at most countable and has no accumulation point inside the valid + interval, which is what one needs to bound it numerically; and +- it is **not** removed. Removing it means proving `a(d) + b(d) != 1` everywhere on the + range, and that is a statement about the square-site chain, not about regularity. No + cited source gives `A`, so none gives `a`, `b`, or `h`. + +The honest status of the secondary question is therefore: **analyticity obtained, emptiness +not.** Reported as asked. + +--- + +## 3. The identity that is missing, stated so that it can be attacked + +Write the renewal object of the handoff exactly as eq. (5.1) of +`winding-intensity-and-prefactor.md`: + +``` +L_w = w [z^w y^0] { -log(1 - A(z,y)) } + = w sum_{n>=1} (1/n) sum_{sum x_i = w, sum y_i = 0} prod_i a(x_i, y_i). +``` + +The factor `w` is horizontal translation; the `1/n` removes the marked renewal cut. For +this to compute `nu_w` rather than a different object, three separate identities are needed. +They are not three statements of one thing, and only the first has support in the literature. + +**(S1) Chain decomposition.** Every complete winding component is a *closed* chain of the +CIV irreducible objects, with the object displacement law having finite mean and variance. +*Support:* CIV §1.2 and §3.1 construct precisely such a representation for the linear +(0-to-x) case, with a local limit theorem for the displacement. The cyclic case is not in +CIV; it is the natural closure of their statement, and it is the part that has to be +supplied. + +**(S2) Multiplicity.** Up to the `w` translations, each component carries **exactly one** +admissible marking. *Status: false as it stands, measured below.* + +**(S3) Boundary weight.** The external vacant boundary weight `(1-p)^{|dC|}` is absorbed +into the object weights `a(x,y)` as a product over objects. *Status: no source supplies +this.* `|dC|` is not a sum over chain objects: a void site can border two objects, and the +outside of a winding component is itself one connected region whose weight is not +distributed over the chain. This is the point the ticket names and it survives every source +checked. + +**Why the two-point OZ amplitude cannot be substituted.** The OZ amplitude of CIV/CI/DM is +the `w^{-1/2}` obtained from the *directional* second derivative of the OZ surface along the +line `0 -> x`, in the geometry of the diamond/tube decomposition. The cylinder prefactor of +(5.1) is a **transverse closure probability on a periodic strip**: it is +`(2 pi D w)^{-1/2}` with `D = sigma^2/mu` from the *transverse* displacement law, and the +periodicity of the transverse direction is what selects coefficient `y^0`. These agree only +if an extra identity identifies the two displacement laws. Copying the number is not +supplying that identity, and the `1/2` remains a hypothesis. + +--- + +## 4. The measured part: (S2) fails, and by how much + +I did not argue (S2) — I measured the quantity it is about. `scripts/`-equivalent +`sewing_multiplicity.py` enumerates every occupied configuration of `(Z/wZ) x {0..L-1}` +exactly once with weight `p^{|A|}(1-p)^{wL-|A|}`, finds components with a union-find +carrying integer **lift gains** (so "winds" means the lift has a cycle of nonzero winding), +and for each winding component counts + +``` +c(C) = the number of distinct rows at which C crosses a fixed reference seam, +``` + +where "crosses" means containing an edge of nonzero lift gain — for NN that is the +horizontal edge from column `w-1` to column `0`; for NN+NNN it also includes the wrapping +diagonals `(x,w-1)-(x+1,0)` and `(x,0)-(x+1,w-1)`. + +At `p = 1/2`, exact rational arithmetic, all lengths `L = 2` to the stated maximum: + +| case | lengths | `E[c]` | `P(c >= 2)` | `P(c >= 3)` | `P(c = 0)` | +|---|---|---|---|---|---| +| `w = 2`, NN | 2..9 | **1.4331** | 0.3133 | 0.0896 | 0 | +| `w = 2`, NN+NNN | 2..9 | **2.2337** | 0.6063 | 0.3244 | 0 | +| `w = 3`, NN | 2..6 | **1.5236** | 0.3982 | 0.1039 | 0 | +| `w = 3`, NN+NNN | 2..6 | **2.1667** | 0.6510 | 0.3309 | 0 | +| `w = 4`, NN | 2..5 | **1.5157** | 0.4064 | 0.0954 | 0 | +| `w = 4`, NN+NNN | 2..5 | **2.0625** | 0.6492 | 0.2996 | 0 | + +What this says, and what it does not: + +1. `P(c = 0) = 0` in every case, as it must be: a winding component crosses the reference + seam at least once. That is the sanity check on the winding detection. +2. `E[c]` is **strictly greater than 1** and does **not** decay towards 1 over the widths + where it can be measured: NN sits at `1.43, 1.52, 1.52` and NN+NNN at `2.23, 2.17, 2.06` + for `w = 2, 3, 4`. The matching adjacency is worse throughout, which is expected — its + wrapping diagonals give a second route across the seam. +3. Therefore a complete winding component is **not** described by one cut. Whatever marking + a proof of (S2) chooses, it has to produce the factor `E[c]` or show that its marking is + not this geometric one. The renewal object of (5.1) contains no such factor. +4. **Consequence for `A`, and only for `A`.** `E[c]` is `O(1)` at the measured widths. An + `O(1)` multiplicity cannot change the power `w^{-1/2}` or the rate `kappa`; it changes the + amplitude. So the honest statement is: even if (S1) and (S3) were supplied tomorrow and + the renewal-loop calculation applied verbatim, the amplitude would be + `A_renewal * E[c]`-corrected, with `E[c]` not computed here beyond `w = 4`. Whether + `E[c]` tends to a constant, or grows, is exactly the part of `A` that remains unknown. + +Caveat, stated so the number is not overread: these are finite boxes, so a component that +would be cut by the top or bottom boundary in the infinite cylinder is included. That +inflates `E[c]` for small `L`. The quantity that matters for the asymptotic is its `w -> inf` +limit at fixed subcritical `p`, which is not measured here and is not claimed. + +--- + +## 5. Status, per the ticket's own three options + +| option | outcome | +|---|---| +| (a) a cited theorem with a complete model/closure mapping | **partial.** Analyticity and strict convexity of `kappa_G(p)`, uniformly in `p < p_c`, are cited with hypotheses and mapped onto this model at `q = 1`. That closes the regularity half. The closure mapping itself is not supplied by any source. | +| (b) a derived sewing lemma with proof and the resulting `A`, `beta` | **not achieved.** (S1) has literature support for the linear case only; (S2) is false as stated and quantified above; (S3) has no source. | +| (c) a precise obstruction | **achieved.** Three named obstructions, one measured exactly. | + +**What remains unknown, itemised.** + +- **The power.** `1/2` stays a hypothesis. Nothing retrieved gives a component-density + power, and the two-point OZ amplitude does not transfer without an extra identity. +- **The amplitude `A`.** Unknown, and now known to include a seam-multiplicity factor that + the renewal-loop calculation does not contain; measured as `E[c] = 1.5` (NN) and `2.1` + (NN+NNN) at `p = 1/2`, `w <= 4`, with the `w -> inf` limit open. +- **The remainder class.** The renewal-loop calculation gives `1 + O(1/w)` + **conditionally** on the sewing identity. Unconditionally, nothing beyond `o(1)` is + available for the actual site clusters. +- **`p`-regularity.** Obtained by citation: analytic on `(0, p_c)`, strictly convex in 2D + uniformly in `p < p_c`. What is *not* obtained is the emptiness of the zero set of + `a(d) + b(d) - 1`. + +Near-critical crossover is untouched and no claim is made about it: everything above is at +fixed subcritical `p` and the uniformity statements are the cited ones, not new ones. + +--- + +## 6. What was executed + +`sewing_multiplicity.py` (new), `sewing_multiplicity.json` (its output). Exact integer and +rational arithmetic throughout; `2^wL` configurations per cell. No Monte Carlo, no GPU, no +width census, no new `p_c`. + +No merge, no `docs/STATUS.md` edit, no new issue. Full repository CI has not been run. diff --git a/docs/manuscripts/geometric-balance/poisson-birth-windows.md b/docs/manuscripts/geometric-balance/poisson-birth-windows.md new file mode 100644 index 00000000..c0c8e741 --- /dev/null +++ b/docs/manuscripts/geometric-balance/poisson-birth-windows.md @@ -0,0 +1,787 @@ +# Winding-cluster intensities, Poisson windows, and the two birth fluctuations + +2026-09-13. Continuation of the SAME geometric-balance paper, PR #739. +Author-supplied proof, not an independent referee acceptance or priority claim. +The earlier axial mass/centre argument is used explicitly. The new step is a +local, once-per-component intensity and a two-colour Poisson approximation. +No fixed-width continuum identification or unproved Ornstein--Zernike +prefactor is used. + +## 1. What is settled, and what is conditional + +Let G4 be the NN square graph and G8 its eight-neighbour matching graph. All +occupations are independent SITES. On the axial w-by-m torus suppose + + w -> infinity, log(m)/w -> d in (0,infinity). + +Use the earlier manuscript's mass + + kappa_G(p) = lim_n -log Pr_p^G(0 <-> n e1)/n, + +and its continuous strictly decreasing inverse on the subcritical interval. +Write a=kappa_4^{-1}(d), c=kappa_8^{-1}(d), b=1-c. The earlier result gives +T1 -> a and T2 -> b, with 0 kappa_G(p). A window of w^2 interior rows approximates + it to an error exp[-c_I w^2], up to polynomial factors, uniformly on a fixed + compact subcritical parameter interval I. +* The two colour counts, using the SAME uniform labels at the two separated + birth windows, converge jointly to INDEPENDENT Poisson laws. +* Consequently, birth CDFs at specified intensity levels have opposite Gumbel + forms for every d>0. A separate uniform cluster-volume and semiconvexity + argument upgrades this to median-centred affine 1/w Gumbel limits for all + d outside an at-most-countable exceptional set. This does not require an OZ + prefactor. At exceptional d we give a convex-log-intensity subsequential + classification rather than pretending that a unique affine law is proved. +* Even in the actual site model, d alone does not fix the CDF at p=a(d). + By changing only the subexponential length factor, any boundary CDF value in + [0,1] is possible. + +The exceptional set refers to possible nondifferentiability of the mass; it +is NOT asserted to be nonempty. All limits here fix d>0 and send w to infinity, +with m growing exponentially. The fixed-width 2/3/4 laboratory is not this limit. + +A later section derives the displacement FROM THE INFINITE centre, including +a possible log(w)/w term, UNDER a separate prefactor hypothesis. That +hypothesis is not proved for G4/G8 here. The affine fluctuation theorem around +the TRUE FINITE MEDIAN is proved at regular d without this hypothesis. The +distinction between locating a centre and resolving fluctuations around it is +part of the mathematical conclusion. + +## 2. External tools and reused inputs + +[AV] supplies uniform subcritical one-arm decay on compact p intervals and +states Harris/FKG and BK for both site and bond product spaces. We use its +site statement, not a square-bond numerical critical probability. + +[AGG], Theorem 2, supplies Poisson PROCESS approximation for locally dependent +indicators. In this note d_TV is sup_A |P(A)-Q(A)| (half the L1 convention). +For indicators I_i with means pi_i, dependency neighbourhoods B_i including i, +put + + b1 = sum_i sum_{j in B_i} pi_i pi_j, + b2 = sum_i sum_{j in B_i,j != i} E(I_i I_j). + +When I_i is independent of the joint family outside B_i (b3=0), the published +process bound implies + + d_TV(Law((I_i)), product_i Poi(pi_i)) <= 2(b1+b2). (2.1) + +Its contractions give the same bound for sums or finitely many typed sums. +This factor of two has been checked against the paper's doubled-TV convention, +not inferred from OCR of a formula. Zero-mean coordinates may be discarded. + +The preceding `exponential-birth-centres.md` proves two model-specific inputs: +for a cylinder strip of t rows the positive-winding event has upper bound + + 2p w^3 (t+2w+4) exp[-(w-1) kappa_G(p)], (2.2) + +with an inessential enlargement of the boundary count; and a fixed-height, +seam-closed ring can be built with probability >=exp[-(kappa_G(p)+eps)w] +for each fixed subcritical p and eps>0. The first-span proof uses only planar +edges of an injecting w-by-w vertex square. The matching diagonals do not +invalidate it. We recall where these enter below. + +Digital Alexander duality is the earlier finite identity + + r_4(omega)+r_8(omega^c)=2. (2.3) + +No correlation-length differentiability, OZ amplitude, Gumbel hypothesis, or +independence of the finite birth times is included among these inputs. + +## 3. One anchor per full winding component + +Work first on the infinite cylinder C_w x Z, periodic horizontally and free +vertically. Because a whole empty row has probability (1-p)^w>0 and separated +rows are independent, every occupied component is vertically bounded almost +surely for fixed w and p<1, on BOTH graphs (all steps have vertical increment +at most one). + +For any component with nonzero horizontal winding, let j be its lowest row. +Choose as its anchor (j,x), where x is the smallest label in {0,...,w-1} +among its vertices in row j. This arbitrary horizontal tie-break is only a +counting convention. In particular, individual anchor probabilities need NOT +be equal in x. The sum over x is independent of the choice of tie-break. +Define + + nu_w^G(p) = E[number of winding-component anchors in row 0]. (3.1) + +This is NOT an event probability when more than one anchor is possible. +It is a mean count per unit vertical length and is at most w. + +For an integer H>=1, retain only components occupying at most H consecutive +rows. Their intensity is nu_{w,H}. The event that (j,x) is such an anchor can +be decided on the window + + C_w x {j-1,j,...,j+H} (3.2) + +alone. Compute the component of (j,x) in this window; require that it meets +neither guard row j-1 nor j+H, that its lowest row is j, that it has nonzero +horizontal winding, and that x is its bottom-row tie-break. + +The two guard rows are essential: without them a locally winding cluster might +join a larger component outside the window and get counted more than once. +Since vertical jumps are at most one, not meeting a guard row proves that the +computed component is the FULL infinite-cylinder component. + +Thus nu_{w,H}(p) is a finite polynomial in the product measure on w(H+2) sites. +Its events include closed sites and are generally NOT increasing. No use of +Harris or BK below is made directly on these anchor events. + +On a vertically periodic torus with m>4H+4, the same local test defines +indicators I_{j,x}. A component confined to at most H consecutive cyclic rows +has a unique bottom after the complementary gap, so it contributes exactly +one anchor. Translation in j, not an incorrect equality of all x marginals, +gives + + E Z_{w,m,H} = m nu_{w,H}, Z=sum_{j,x} I_{j,x}. (3.3) + +## 4. Uniform vertical localization on the cylinder + +Fix a compact subcritical interval I. By domination at sup I, the local +one-arm probability a_R is bounded by A exp(-cR), uniformly on I. Set + + R=w/64, h=floor(w/8), + +and take w sufficiently large. A path crossing a cylinder band of h rows +must run from its first to its last row and hence produce an R-arm from one +of the w possible entry sites. A first-exit arm uses only the radius +R+sqrt(2) neighbourhood, which injects into C_w x Z. Hence + + Pr(cross a specified h-row band) <= w a_R <= exp(-c0 w) (4.1) + +for some c0>0 and all large w, uniformly on I. + +To cross a vertical distance H-1, a path must cross floor(H/h) disjoint h-row +bands. Take the last entrance before the first exit in each band to handle +backtracking. Band crossing events use disjoint SITE sets, so are independent. +For H>=w, floor(H/h)>=4H/w, after an immaterial adjustment for endpoints. +Absorb that adjustment in constants. There are C_I,c_I>0 such that + + Pr(a specified H-row strip has a bottom/top crossing) + <= C_I exp(-c_I H). (4.2) + +This is a cylinder estimate derived from planar local arms, not an unjustified +application of an infinite-plane cluster law to a periodic graph. + +If a torus component cannot fit inside H consecutive cyclic rows, a lifted +path contains such a strip crossing. A component with any vertical homology +also does so. Union over the m strip positions gives + + Pr(Bad_H) <= C_I m exp(-c_I H). (4.3) + +On Bad_H^c all nonzero homology is horizontal and every winding component is +counted by Z. In particular + + {r_G=0} = {Z=0} on Bad_H^c. (4.4) + +For the infinite-cylinder anchor at row zero, height greater than H forces +the specified strip crossing. At most w anchors can lie in a row, so + + 0 <= nu_w - nu_{w,H} <= C_I w exp(-c_I H). (4.5) + +We henceforth set H=w^2. There is no unknown fitted cutoff constant. The +window has O(w^3) site variables but length polynomial rather than exponential +in w. Exact enumeration of it is NOT claimed to be computationally cheap. + +For every fixed w, local-polynomial exhaustion and uniform empty-row tails on +compact subsets of p<1 also prove continuity of nu_w(p). We do not assume +that this component density is globally monotone in p. + +## 5. Density and planar mass have the same exponential rate + +The upper bound follows from (2.2) applied to an H-row window: + + nu_{w,H} <= poly(w) exp[-(w-1) kappa_G(p)]. (5.1) + +Equation (4.5), with H=w^2, is superexponentially smaller. For the lower bound, +use the earlier fixed-height D ring with probability +exp[-(kappa_G(p)+eps)w]. Unless its full component has vertical height greater +than H, a component anchor lies in one of at most H+D nearby rows. The chance +that the component containing the ring travels a distance H/2 is at most +poly(H+D) exp(-c_I H/2), by (4.2). Therefore + + (H+D) nu_w(p) + >= exp[-(kappa_G(p)+eps)w] - poly(H+D) exp(-c_I H/2). (5.2) + +Together these prove + + -log nu_w^G(p)/w -> kappa_G(p). (5.3) + +The same conclusion holds for p_w -> p in a compact subcritical interval. +For the lower bound use a fixed seed at p-delta and monotonicity of the seed +event, subtracting a uniform long-component tail at p+delta. For the upper +bound use monotonicity of the enclosing winding event. Let delta decrease +after the size limit, using the already proved continuity of kappa. This +avoids falsely treating nu itself as an increasing event. + +## 6. Poisson approximation with a vanishing explicit error + +For a fixed (j,x), the dependency neighbourhood consists of all anchors whose +windows (3.2) overlap. Its size is at most + + D_w = w(2H+3). (6.1) + +Disjoint windows are functions of disjoint product variables, so b3=0 exactly. +If two windows overlap, their union lies in a cylinder band of at most 2H+3 +rows (including an appropriate lift across the vertical seam). Let + + B_w(p) = 2p w^3 (4H+4w+4) exp[-(w-1) kappa_G(p)]. (6.2) + +By first-span counting this bounds the probability of any winding in that +union; it also bounds each anchor probability. If I_i=I_j=1 for distinct +anchors, they are DIFFERENT full components. Each contains a winding witness, +and these occupied witness sets are disjoint. Let E be the increasing event +that the enlarged band contains a horizontal winding. Then + + {I_i=I_j=1} subset E square E, + E(I_i I_j) <= Pr(E square E) <= Pr(E)^2 <= B_w(p)^2. (6.3) + +The middle inequality is the site BK inequality. Anchors themselves can be +positively correlated because they share CLOSED guard sites; treating them +as increasing would be wrong. The executable controls exhibit that effect. + +There are mw anchor indices. Thus b1,b2 are each at most mw D_w B_w^2. +Equation (2.1), contraction to the count, localization, and a coupling of +Poisson laws with nearby means give + + d_TV(Law(actual winding-component count), Poi(m nu_w)) + <= C_I m(w+1) exp(-c_I w^2) + + 4 m w^2(2w^2+3) B_w(p)^2. (6.4) + +For the count outside Bad_H, define it as the number of components with any +nonzero ambient homology; its value on Bad_H changes the comparison by at +most Pr(Bad_H). This makes (6.4) an assertion about the true finite graph. + +Choose a compact interval I around c_G(d)=kappa_G^{-1}(d) so small that + + 2 inf_{p in I} kappa_G(p) > d. (6.5) + +If log m/w -> d, the RHS of (6.4) tends to zero exponentially in w, uniformly +on I. Polynomial factors in (6.4) are harmless; H=w^2 and the first term is +superexponentially small. In particular + + Pr_p(r_G=0) = exp[-m nu_w^G(p)] + o(1), uniformly on I. (6.6) + +No limit of m nu_w is needed for this absolute-error assertion. When +m nu_w(p_w)->lambda in (0,infinity), the count is Poi(lambda) asymptotically. +When the mean tends to zero/infinity, the corresponding void probabilities +follow as well. A finite real-rate numerical constant is not supplied here. + +The PROCESS version of (2.1) yields more: after projecting anchor row j to +j/m on the unit circle, the winding-component positions converge to a +homogeneous Poisson process of intensity lambda. For a fixed arc the mean is +its number of discrete rows times nu, tending to lambda times its length; +disjoint arcs have independent Poisson limits. No uniform distribution of the +horizontal tie-break x is asserted. + +## 7. Why the two actual births decouple in these windows + +Use the SAME independent uniform site labels U_v. At a lower parameter p_1 +call U_v<=p_1 black. At an upper parameter p_2 call U_v>p_2 white and use G8. +Choose p_1 near a and p_2 near b; then p_1 lambda_1, + m nu_w^8(1-p_2,w) -> lambda_2, (7.3) + +the two winding-component counts converge to independent Poi(lambda_1) and +Poi(lambda_2), despite being coupled through the same U_v. + +Duality identifies T1>p1 with no black winding, and T2<=p2 with no white +winding. Hence + + Pr(T1<=p1, T2<=p2) + -> (1-exp(-lambda_1)) exp(-lambda_2). (7.4) + +This is an asymptotic independence result for the two separated transition +windows, not a statement that finite birth times are independent, not a +process-in-p convergence theorem, and not a result uniform as d decreases to +zero and the two windows merge. + +## 8. The intensity-clock Gumbel law, without guessing a prefactor + +Put Lambda_w^G(p)=m nu_w^G(p). For each fixed lambda>0 define p_w^G(lambda) +as the FIRST parameter in a fixed small interval around c_G(d) where +Lambda_w^G reaches lambda. It exists for large w: the mass rate makes Lambda +tend to zero at the lower endpoint and infinity at the upper endpoint. +Continuity makes its value exactly lambda. Its first-hit definition is +monotone in lambda even if nu is not globally monotone. Bounds using the +monotone enclosing winding event show p_w^G(lambda)->c_G(d). + +Define deterministic level coordinates + + l_w(x)=p_w^4(exp(x)), + u_w(y)=1-p_w^8(exp(-y)). (8.1) + +Both increase with their displayed argument. Equations (6.6)--(7.4) give + + Pr(T1<=l_w(x)) -> 1-exp[-exp(x)], + Pr(T2<=u_w(y)) -> exp[-exp(-y)], + Pr(T1<=l_w(x), T2<=u_w(y)) + -> (1-exp[-exp(x)]) exp[-exp(-y)]. (8.2) + +Thus the intensity-level CDFs have opposite Gumbel forms and factorize. The +clock here is a cylinder component density determined in polynomial-height +windows, not -log of the full-torus survival CDF defined tautologically. + +Equivalent fixed quantile calibrations are + + first-birth u-quantile: Lambda_4 = -log(1-u), + second-birth u-quantile: Lambda_8 = -log(u), + either marginal median: Lambda = log(2). (8.3) + +For the equal mixture, at each fixed u != 1/2 the local approximation is + + u<1/2: Lambda_4 = -log(1-2u), + u>1/2: Lambda_8 = -log(2u-1). (8.4) + +In the lower window the whole rank law is + + P0=exp(-Lambda_4)+o(1), P1=1-exp(-Lambda_4)+o(1), P2=o(1), + +because localization excludes vertical homology. In the upper window duality +instead gives + + P0=o(1), P1=1-exp(-Lambda_8)+o(1), P2=exp(-Lambda_8)+o(1). + +These identify both edges of the rank-one plateau; they are not a replacement +for the rare-odds analysis at the matching median in its interior. + +Here 'quantile calibration' means the CDF at the specified intensity inverse +converges to u. A quantitative p-error requires control of the local inverse +clock; (8.3) is NOT silently called an affine quantile expansion. + +The matching median lies inside the rank-one plateau, not in either window. +It remains a rare-odds balance problem and is not determined by averaging +(8.3). This paper's root theorem is still a separate input to its pc limit. + +## 9. A genuine non-universality at the boundary + +Fix a subcritical p0 and d=kappa_G(p0). For any t>0 choose + + m_w(t)=floor(t/nu_w^G(p0)). (9.1) + +By (5.3), log m_w(t)/w -> d and m_w(t)>=w eventually. By (6.6), + + Pr_{p0}(r_G>0) -> 1-exp(-t). (9.2) + +Thus every boundary probability in (0,1) occurs in the ACTUAL site model +while keeping the same exponential geometry rate d. Taking t_w=exp(-sqrt w) +or exp(sqrt w) similarly gives 0 or 1, respectively. The absolute Poisson +error still vanishes since log m/w -> d. + +This is not a toy with a different percolation rule. It proves that d by +itself cannot select the boundary CDF or a universal finite-centre correction. +It does not show that any pair of black and white boundary probabilities can +be prescribed simultaneously by the one common length m; their density ratio +would additionally matter. + +At a first-birth median a_w,m in I, (6.6) does prove + + m nu_w^4(a_w,m) -> log(2), (9.3) + +and similarly for the white intensity at the second-birth median. This is a +sharper and correctly normalized finite-centre equation than kappa=d alone. + +## 10. Affine fluctuations at all but countably many d, without OZ + +We can go further than a conditional statement about p-scaling. The missing +regularity can be obtained at every differentiability point of kappa using a +uniform cylinder cluster-volume bound. This section supplies that argument. + +### 10.1 Uniform subcritical cluster-volume tails on finite-width cylinders + +**Lemma.** On every fixed compact I subset (0,pc(G)), there are C,c>0 and w0 +such that for all w>=w0, p in I and cylinder vertices v, + + Pr_p^{C_w x Z}(|C_v|>=n) <= C exp(-cn). (10.1) + +This does not follow by relabelling the plane graph. Here is an explicit +coarse-block proof using only the local one-arm bound already assumed. + +Choose a fixed integer scale s>=4. Partition the horizontal circle into cells +of integer widths between s and 2s, and the vertical line into cells of s rows. +For w>=32s this can be done with at least sixteen horizontal cells. Each block +contains at most 2s^2 vertices. Call a block bad if some occupied vertex in it +has an occupied arm of Euclidean length at least s. The event is decided in +the block enlarged by s+sqrt(2), and its probability is at most + + delta_s <= 2s^2 A exp(-c0 s), (10.2) + +uniformly on I. These supports inject into the cylinder. Their dependency +graph has a bounded degree independent of w and s; a conservative bound of +D=289 including each block itself suffices (only blocks within eight coarse +steps in each coordinate can overlap). + +The set of blocks visited by a connected site cluster is connected in a graph +of maximum degree eight. If it contains more than 81 blocks, it cannot be +contained in the Euclidean (s+sqrt(2))-enlargement of ANY visited block: such an enlargement meets +fewer than 81 blocks. Thus every visited block is bad. There are at most +64^k connected k-block sets through a specified block: encode a canonical +spanning tree by a depth-first walk of length 2(k-1), with at most eight +choices per step. Any k-set contains at least k/D mutually independent bad +block events (greedy selection in the dependency graph). If the full visited +set is larger than k, extract a connected k-set through the root block, all +of whose blocks are still bad. Therefore + + Pr(cluster visits at least k blocks) <= 64^k delta_s^(k/D). + +Take s once and for all so delta_s<=128^(-D); then this is at most 2^(-k). +Since a block holds at most 2s^2 vertices, absorb the finitely many k<=81 +cases in C to prove (10.1). The constants may be extremely conservative and +are not a numerical algorithm. Horizontal periodicity, diagonal matching +steps, uneven cells, and arbitrary vertical length are all covered. + +### 10.2 Cluster activities cancel the irrelevant bulk sites + +A horizontally winding finite cylinder component C with lowest row zero +contributes + + p^{n(C)} (1-p)^{b(C)}, + n(C)=|C|, b(C)=|external vertex boundary of C|. + +The boundary has distinct sites; no edge multiplicity is substituted for +b(C). Sum over such connected sets C of height at most H to get exactly +nu_{w,H}. This is a sum of component probabilities, NOT a probability that +only one component exists. Each full component is represented once. + +Under the probability measure on component shapes proportional to these +activities, denote expectation by E_*. Then with q=1-p, + + S_C=n(C)/p-b(C)/q, + (log nu_{w,H})'=E_* S_C, + (log nu_{w,H})''=Var_*(S_C)-E_*[n(C)/p^2+b(C)/q^2]. (10.3) + +These identities are exact. For logit parameter z they become + + partial_z log nu=E_*[(1-p)n-pb], + partial_z^2 log nu=Var_*[(1-p)n-pb]-p(1-p)E_*[n+b]. (10.4) + +They do not involve an artificial O(wH) independent bulk occupation count. + +The isolated full horizontal row has activity p^w(1-p)^{2w}; it belongs to +nu_{w,H} for every H>=1. Hence nu_{w,H}>=exp(-K_I w) uniformly on I. +Meanwhile (10.1) gives + + Pr_*(n(C)>=n) <= C w exp(K_I w-cn), + +because at most w bottom-row sites can represent such a component. Splitting +the tail sum at a sufficiently large multiple of w yields + + E_* n(C) = O_I(w), E_* b(C) = O_I(w), (10.5) + +uniformly in H and large w; use b(C)<=8n(C). In particular for H=w^2, + + F_w(p)=(1/w)log nu_{w,w^2}(p) + satisfies F_w''(p)>=-C_I on I. (10.6) + +Thus the scaled log-intensities are uniformly SEMICONVEX. Discarding the +nonnegative variance in (10.3) proves the lower curvature bound; we do not +need a variance asymptotic or cluster renewal theorem. + +### 10.3 Consequences for the mass and its slopes + +Section 5 gives F_w(p)->-kappa_G(p). Equation (10.6) says that +F_w(p)+C_I p^2/2 is convex. The finite pointwise limit is convex too, so +-kappa is locally semiconvex (equivalently kappa is locally semiconcave). +Convex secant bounds imply local uniform convergence. The same bounds imply: +at every differentiability point a of kappa, for EVERY sequence p_w->a, + + F_w'(p_w) -> -kappa_G'(a). (10.7) + +For completeness, bound the derivative of the convex function at p_w between +its secant slopes with endpoints p_w+-delta. Use local uniform convergence, +then let delta decrease to zero. This works for moving p_w, not merely fixed p. +In one dimension a convex function has at most countably many derivative +jumps. Hence kappa is differentiable outside an at-most-countable set of p. + +The slope does not vanish at a differentiability point. The earlier FK +argument actually gives the quantitative comparison + + kappa(p)-kappa(q) >= (q-p) kappa(q)/rho, p= kappa_G(a)/rho >0 (10.9) + +where the derivative exists. No numerical rho is calibrated. These arguments +do not assert analyticity of kappa or rule out every possible corner. + +### 10.4 Actual median-centred Gumbel theorem + +Let a_w,m and b_w,m be the TRUE medians of T1 and T2. For a regular d, meaning +that both kappa_4 at a(d) and kappa_8 at c(d)=1-b(d) are differentiable, put +v4=-kappa_4'(a)>0 and v8=-kappa_8'(c)>0. Then + + X_w=v4 w (T1-a_w,m), Y_w=v8 w (T2-b_w,m) + +converge jointly to INDEPENDENT variables with CDFs + + Pr(X<=x)=1-2^(-exp(x)), + Pr(Y<=y)=2^(-exp(-y)). (10.10) + +Regular d excludes at most a countable subset of (0,infinity), since each +mass is a bijection and its exceptional p set is countable. + +**Proof.** The centres converge to a and b by the earlier mass argument. +The Poisson formula at an exact marginal median implies +m nu_{w,w^2}(a_w,m)->log 2, and likewise on the matching side at 1-b_w,m. +For fixed x, apply (10.7) throughout the shrinking interval from a_w,m to +p_w=a_w,m+x/(v4 w), and integrate: + + log[nu_{w,w^2}(p_w)/nu_{w,w^2}(a_w,m)] -> x. + +Apply (6.6). For the white side the displacement is negative in its own +occupation probability, giving -y. Apply (7.4) for joint factorization. This +proves (10.10) without a prefactor expansion or a formula for the medians' +distance from a,b. A finite-centre fluctuation theorem and a deterministic +centering correction are genuinely different results. + +### 10.5 Moments and an archive-facing consequence + +The earlier FK concentration about true medians has exponential tails on +scale 1/log N; here log N~dw. Consequently the w-scaled variables have +uniformly bounded moments of every fixed order. Joint convergence therefore +also gives convergence of means, variances, and products. Set + + h0=EulerGamma+log(log 2) = 0.210702744319868533594073... . + +Then at regular d, + + E T1=a_w,m-h0/(v4 w)+o(1/w), + E T2=b_w,m+h0/(v8 w)+o(1/w), + Var(T1)=pi^2/(6v4^2 w^2)+o(w^-2), + Var(T2)=pi^2/(6v8^2 w^2)+o(w^-2), + Cov(T1,T2)=o(w^-2). (10.11) + +The quarter and three-quarter quantiles of the mixture lie within o(1/w) of +a_w,m and b_w,m: the other birth is a fixed positive distance away and the +limiting CDF (10.10) crosses its own median strictly. Hence, for the already +available rank-gap observable G=E(T2-T1), + + G-IQR(F) = [h0/w](1/v4+1/v8)+o(1/w). (10.12) + +This refines the earlier O(1/log N) comparison. It requires regular d, the +correct ambient-rank birth statistics, and the actual mass slopes. It is not +a free numerical prediction at width two or four. + + +### 10.6 A scale-free consequence that does not require numerical mass slopes + +Write J1=IQR(Law(T1)), J2=IQR(Law(T2)), and J=IQR(F) for the mixture. +Let + + D0=log[log(4)/log(4/3)] = 1.57253358368551918078557... . + +The marginal quantile functions of (10.10) are + + x(u)=log[-log(1-u)/log 2], + y(u)=log[log 2/(-log u)]. + +Both marginal IQRs in the scaled coordinate equal D0. Consequently, at every +regular fixed d, + + J1=D0/(v4 w)+o(1/w), J2=D0/(v8 w)+o(1/w), + [G-J]/(J1+J2) -> h0/D0 = 0.133989344651100063543034... , (10.13) + Var(Tj)/Jj^2 -> pi^2/(6 D0^2) + = 0.665194479964364626613157... . (10.14) + +Thus a properly typed exponential-aspect birth archive can test the shape +without knowing A, beta, or the numerical mass slopes. These are statements +about population quantiles/moments, not finite-sample unbiasedness claims. +They are not predictions for fixed-aspect square sequences (d=0) or the +fixed-width 2/3/4 controls. No new data collection is commissioned here. + +## 11. Exceptional d: a constrained crossover, not an arbitrary profile + +The intensity-clock statement (8.2) holds for EVERY d>0. We can also constrain +all subsequential p-scaled profiles at a corner of the mass. + +Let a=c_G(d), let a_w,m be the first positive-rank median for G, and define + + psi_w(x)=log[m nu_{w,w^2}(a_w,m+x/w)]. + +Here psi_w(0)->log(log 2), and (10.6) gives psi_w''>=-C_I/w. Secant bounds +from local uniform convergence to -kappa bound psi_w' on compact x intervals +between the limiting one-sided slopes + + v_-=-kappa'_-(a), v_+=-kappa'_+(a), + 00, A is continuous, beta is fixed, kappa is twice differentiable +near a, and v=-kappa'(a)>0. Suppose + + log m=dw+gamma log w+c0+o(1). (12.2) + +Then a first-birth u-quantile satisfies + + Q_G(u)=a+[(beta-gamma)log w-c0-log A(a)+log(-log(1-u))]/(vw) + +o(1/w). (12.3) + +For the marginal median use log(log 2). Apply the analogous formula to the +white site graph and reflect p=1-q for the second birth. At a location with +log[m nu_w(p)]=x the law is 1-exp[-exp(x)], while around the true median it +is (10.10). The distinct constants are not interchangeable. + +No A or beta value for square-site winding COMPONENT density has been derived +here. In particular, a plane two-point OZ factor w^-1/2 cannot simply be +copied into (12.1): periodic seam closure and once-per-component counting +change the normalization. The existence of a pure polynomial prefactor is itself left unproved, not +only the numerical values of A and beta. This unresolved centering problem does NOT +invalidate the proved regular-d finite-median fluctuation law. + +## 13. What the calculation actually checked + +The accompanying script has NO dependency on earlier state certificates. +It uses physical lifted graph traversal, retaining parallel periodic edges, +and a second, window-restricted implementation of component anchoring. + +* 75,776 graph/configuration pairs across 2x5, 2x6, 3x5 and both graphs. + Every eligible full component gets exactly one local anchor. Void mismatch + is contained in the explicit localization-failure event. +* Local window polynomials independently reproduce the expected number of + anchors divided by m at two rational probabilities. Marginals, neighbour + pairs, count laws, and b1/b2 are exact fractions. +* All 3^8=6,561 low/middle/high assignments on 2x4, with probabilities + 1/4,1/2,1/4, check the common-label coupling and typed count law. The small + system's count covariance is NONZERO (4831/1048576); no finite independence + is inferred. Opposite association is checked for the enclosing winding + events, not falsely asserted for the anchor counts. +* 8,192 deterministic full/empty-row masks on 3x12 check seams, cutoffs and + disjoint-window neighbourhoods without random sampling. +* Component-shape activity sums are checked against full-window occupancy + sums at widths/cutoffs (2,1), (2,2), (3,2), on both graphs. That is 168 + interior candidate shapes and 8,832 surrounding-window configurations. + At three rational p values, 18 exact checks compare first and second + log-derivatives via distinct external boundary counts against derivatives + of the full-window polynomial. Logit chain rules and the curvature lower + bound agree as well. These checks test (10.3)--(10.4), not the asymptotic + uniform cluster-volume proof. +* For one-row isolated loops the exact local intensity is + nu_{w,1}(p)=p^w(1-p)^(2w). Two loops two rows apart have joint probability + p^(2w)(1-p)^(3w), strictly GREATER than the product of their anchor marginals. + This is the closed-guard countercontrol for an invalid direct BK argument. + +These tiny cutoffs are NOT H=w^2 and their void/true-rank discrepancy need not +be small. The output records that discrepancy rather than claiming a tiny +system verifies the asymptotic localization constants. Total variation against +Poisson uses floating exponentials as a diagnostic; all site probabilities +and the published-theorem RHS are stored exactly. No finite check proves the +asymptotic result, its source inputs, or publication novelty. + +## 14. Position within the same paper + +The present closure is: + + geometric consistency -> two mass-defined centres -> local component + intensity -> joint Poisson windows -> natural-clock laws at every d -> + uniform component tails/semiconvexity -> median-centred affine laws at + regular d -> explicit leading fluctuation moments. + +No new width ladder is required for this proof. At regular d, the affine +finite-median law is now proved. The remaining numerical centre displacement +is a local prefactor expansion of the winding-component density; the possible +countable exceptional d need separate regularity information. Merely fitting +a Gumbel curve or copying a plane two-point prefactor would not supply either. +The unconditional and conditional statements above are kept separate. + +This is not presented as a novel Chen--Stein method. [AGG] already explicitly +explains declumping, extremes, and process approximation. [DL] is nearby +bond-wedge/rectangle work with inverse-correlation and Poisson arguments. +The specific model work here is physical SITE winding-component anchoring, +vertical localization on a periodic cylinder, and the opposite-colour +common-label joint limit. No systematic priority certification is claimed. + +## References and actual reading + +[AGG] R. Arratia, L. Goldstein, L. Gordon, *Two Moments Suffice for Poisson +Approximations: The Chen--Stein Method*, Annals of Probability 17 (1989), 9--25. +Author-hosted PDF, Section 2, Theorems 1--2; printed pages 10--11 rendered and +checked. Uses the doubled total-variation convention; (2.1) uses half of it. +https://dornsife.usc.edu/larry-goldstein/wp-content/uploads/sites/221/2023/06/AGG-1.pdf +DOI: 10.1214/aop/1176991491. + +[AV] T. Antunovic, I. Veselic, *Sharpness of the phase transition and exponential +decay of the subcritical cluster size for percolation on quasi-transitive +graphs*, J. Stat. Phys. 130 (2008), 983--1009. Primary HTML, Theorems 2--3 and +Section 3 Fundamental Tools, especially product-site Harris and BK. +https://arxiv.org/html/0707.1089v3 + +[FK/DKS] P. Duncan, M. Kahle, B. Schweinhart, *Homological percolation on a +torus: plaquettes and permutohedra*, Theorem 6 reproduces Friedgut--Kalai. +Used for the earlier two-birth concentration, the quantitative mass-slope +inequality, and uniform integrability of median-centred fluctuations. It is +not the model-specific Poisson proof. +https://arxiv.org/html/2011.11903v4 + +[DL] M. Damron, W.-K. Lam, *Asymptotics for first passage percolation on +logarithmic subgraphs of Z^2*, arXiv:2502.18235v1. Sections 1--2 and the Poisson +comparison in Section 5 read for scope. Bond/open-boundary context, not a +substitute for site-periodic closure. +https://arxiv.org/html/2502.18235v1 + +[Previous working proof] `exponential-birth-centres.md`, owner handoff on +2026-09-13, recorded in #739 comment 5650571466. It supplies the axial mass +rate and its continuity/inversion with named inputs. The local control code +in this delivery does not depend on that earlier script. diff --git a/docs/manuscripts/geometric-balance/prefactor-contrast-erratum-20260913.md b/docs/manuscripts/geometric-balance/prefactor-contrast-erratum-20260913.md new file mode 100644 index 00000000..6ca5dbdf --- /dev/null +++ b/docs/manuscripts/geometric-balance/prefactor-contrast-erratum-20260913.md @@ -0,0 +1,70 @@ +# Erratum — the (2,4,8) window and the κ-drift reading in `winding-prefactor-contrast.json` + +**Status: erratum to `results/geometric-consistency/winding-prefactor-contrast.json` (commit `3745b13`) +and to the interpretation printed in the `3745b13` commit message, the #741 delivery comment, and the +matching #739 comment. The committed JSON and note are left untouched so the audit trail shows what +was actually computed; this file is the correction of record. Source of the correction: #741 comment +5652002027. Both corrections were re-verified here against the committed log values before being +accepted.** + +## E1. The (2,4,8) window used an equal-spacing formula on unequal spacing + +The committed fields `beta_eff_2_4_8` (−7.137336 NN, −7.069824 matching) and `R_window_2_4_8` were +computed as `log nu_2 − 2 log nu_4 + log nu_8`, the second difference that cancels the mass term +**only for equally spaced widths**. The window (2,4,8) has spacing 2 then 4, so the combination +retains −2κ: it is not a mass-cancelled contrast, and the values are not beta estimates of any kind. +The conclusion drawn from them — "the assumed form does not describe those widths at all" — is +therefore **retracted**. + +The correct contrast for distinct widths x < y < z uses c = (z−y, x−z, y−x), which satisfies both +Σc_i = 0 and Σc_i·w_i = 0, and divides by −Σc_i·log w_i: + +``` +beta_eff(x,y,z) = [ (z−y)·log nu_x + (x−z)·log nu_y + (y−x)·log nu_z ] / [ −Σ c_i log w_i ] +``` + +For (2,4,8) this is `(2·log nu_2 − 3·log nu_4 + log nu_8)/log 2`, giving + +| graph | committed (wrong) | corrected | +|---|---|---| +| NN, p = 1/4 | −7.137336 | **0.718245787** | +| matching, p = 1/8 | −7.069824 | **0.533377434** | + +Re-verified here at 40 digits against the committed `log_nu_by_width` values; agreement with the +corrector's numbers is exact to 1e−8. + +The substantive reading changes accordingly: the two windows now read (2,4,8) → 0.718/0.533 and +(4,8,12) → 0.793/0.508. That is **finite-window drift between two valid mass-cancelled contrasts**, +not evidence that the two-parameter form breaks down, and not a second exponential. The (4,8,12) +values, the six densities and the engine validation in the committed JSON are unaffected (that window +IS equally spaced and the formula used there is correct). + +## E2. The κ-drift reading was vacuous, not evidence about the amplitude + +The `3745b13` comment said "the effective kappa is still moving at w = 12 … Neither graph has settled +its amplitude." But for an **exact** `A·w^−β·e^(−κw)` law, adjacent κ estimates must drift by + +``` +κ_eff(u,v) − κ_eff(v,z) = β·log(4/3)/4 (for u,v,z equally spaced with step u/2… here 4) +``` + +so the drift is forced by the fitted β itself and carries no information beyond `beta_eff`. Checked +against the committed values: + +| graph | observed drift | β-forced prediction | difference | +|---|---|---|---| +| NN | 0.057003 | 0.057003 | −3.9e−16 | +| matching | 0.036568 | 0.036568 | −1.4e−16 | + +The observed drifts equal the β-forced amounts to machine precision. The "amplitude has not settled" +reading is **retracted**; what remains is only the honest statement that three widths cannot +distinguish a true asymptote from a finite-window effective exponent, which the ticket already said. + +## What survives unchanged + +- The six exact/certified densities and their certificates. +- The (4,8,12) contrasts 0.792584457 (NN) / 0.508452577 (matching) and the observation that the two + graphs disagree. +- The engine, the 18-control validation, the w=12 cost report, and the floordiv portability note. + +Filed on the record by the same author who made the errors, after independent re-verification. diff --git a/docs/manuscripts/geometric-balance/prefactor-handoff-20260913.md b/docs/manuscripts/geometric-balance/prefactor-handoff-20260913.md new file mode 100644 index 00000000..e22af514 --- /dev/null +++ b/docs/manuscripts/geometric-balance/prefactor-handoff-20260913.md @@ -0,0 +1,45 @@ +# 前因子交接:同一篇论文,只剩一个微观映射和一个数值对比 + +2026-09-13。主入口仍为 #739;本批代码尚未推入其分支。阅读 +[winding-intensity-and-prefactor.md](winding-intensity-and-prefactor.md)。 + +## 本轮已完成 + +1. 对实际 NN / NN+NNN 点渗流构造单前沿、带整数提升位移与逐分量绕行标志的转移;只在完整绕行分量永久离开前沿时计数。宽度 2/3/4 的完整状态数为 6/14/38,同权重且保留计数分布的强合并为 3/4/7。两张图的全 p 密度有理式均已求出。 +2. 将 Mertens–Ziff 已有的有限绕行分量分类写成 W4−W8=r4−1,推导互补概率下的圆柱密度与计数压力关系。同一 p 的两个颜色不能独立泊松化:独立模型给不可能的 (0,0) 事件正概率。这是窗口合并的实质约束,不是另开模型。 +3. 对明确指定的有限范围 renewal-loop 模型,证明 w^{-1/2} 前因子及振幅 1/sqrt(2πD)。这还不是 SITE 分量的前因子定理;从两点连接到闭合、完整且每簇只计一次的缝合映射仍然缺失。 +4. 修正上一批条件中心展开:只有可微性时,必须保留精确 κ^{-1};直接把 log(w)/w 位移线性化并宣称 o(1/w) 余项,需要额外正则性。有限中位数处 O(1/w) 的 Gumbel 结论不因这个修正而改变。 + +## 已直接开出的两项工作 + +**#740 — 理论/定向检索。** +https://github.com/LightChainr/Matching-One/issues/740 + +确定实际 SITE 绕行分量是否具有 A(p)w^{-1/2}exp[−wκ(p)],或给出正确幂次、周期修正与振幅。必须落实每簇一次、切口数量、w/n 因子、闭合缝与完整外边界权重。已完成的 renewal 系数计算无需重做。先读并追踪 CI/CIV 的实际适用模型及 SITE 扩展;2026 年 D’Alimonte–Manolescu v3 的主要模型为 BOND FK,Theorem 1.1 是两点函数的两侧比较,不能直接当作本题振幅公式。结果返回 #739。 + +**#741 — 有界 CPU 计算。** +https://github.com/LightChainr/Matching-One/issues/741 + +只计算两组固定参数:NN p=1/4、matching p=1/8;每组宽度 4、8、12。输出 + + R4 = nu4*nu12/nu8^2, + beta_eff = log(R4)/log(4/3). + +此对比精确消去所假设渐近式中的质量和振幅;三个宽度不能证明极限。不得换成无绕行生存特征值或长环面直接抽样。记录实际状态数、运行时间、内存与 log(nu) 误差,优先达到 1e-8,达不到就报告实际界。现成的空行复位给出从平稳残差到密度误差的严格界。 + +参考脚本只是有保护上限的原型:width<=10、默认 state_cap=5000。它不是开箱即可计算宽度 12 的优化实现;应根据 #741 做稀疏聚合或逐站点因式分解,而非默认删除上限后建立巨型稠密逆矩阵。已经实际运行的 NN 容量探测到宽度 8:2214 状态、566784 条掩码转移、约 6.7 秒;这不等于宽度 12 的价格估计。 + +## 复现 + +从仓库根执行: + +```sh +python -m unittest discover -s tests -p 'test_cylinder_winding_intensity.py' -v +python scripts/cylinder_winding_intensity.py --output /tmp/cylinder-intensity-new.json +``` + +脚本拒绝覆盖输出。完整报告的符号部分使用 SymPy;转移、精确平稳求解、数值残差证书与测试使用标准库。表内匹配关系为 nu_NN(p)=nu_matching(1-p),不是同一 p 上的两图相等。 + +本批 12 项局部测试通过。139776 个开放圆柱图/配置逐一对照,66064 对有限环面互补配置检查;18 个有理数参数点与符号函数核对,3 个全 p 互补恒等式。完整 Matching-One CI 没有运行。小系统控制不替代渐近证明,也不是新 Monte Carlo 样本。 + +本轮不要继续派发大角度梯队、generic Jordan 例子、任意高阶源或固定宽度谱重建。下一次新增分析应由 #740 的微观映射或 #741 的这个特定对比改变结论。 diff --git a/docs/manuscripts/geometric-balance/sewing-with-memory.md b/docs/manuscripts/geometric-balance/sewing-with-memory.md new file mode 100644 index 00000000..b7646807 --- /dev/null +++ b/docs/manuscripts/geometric-balance/sewing-with-memory.md @@ -0,0 +1,463 @@ +# Sewing with memory: exact site weights, unbiased cuts, and a heat-kernel conjecture + +2026-09-13. Continuation of #739, responding to the returns of #740 and #741. + +**Status.** Sections 1–5 are finite identities, an elementary infinite-cylinder +limit, or algebraic reanalysis of supplied numbers. Section 6 is explicitly a +research conjecture and its conditional consequences. It is not a proof of the +fixed-subcritical site prefactor, parameter analyticity, or near-critical +universality. No new width-12 calculation was performed. + +## 1. What the two returns do and do not establish + +The #741 result at commit `3745b13b8e1126017a1e88567a6af44881b8a1ff` supplies +six component densities, at widths 4,8,12, for NN site p=1/4 and matching site +p=1/8. The requested equal-spacing contrast is retained: + +| graph and p | beta_eff(4,8,12), recomputed from the supplied logs | +|---|---:| +| NN, 1/4 | 0.792584457189 | +| matching NN+NNN, 1/8 | 0.508452576643 | + +These are effective finite-width contrasts, not determinations of an +asymptotic exponent. The width-12 residual certificates are reported by the +external computation; this delivery reads them but does not regenerate them. +The rounded logarithms and those imported error bounds are kept explicitly +in the new script. Extra decimal-input rounding is allowed when propagating +errors. The original density values are not changed. + +Three interpretation corrections matter. + +For distinct x=3. G is either +NN or matching NN+NNN, with distinct lifted edges retained. A finite nonempty +connected vertex set C has probability + + q_p(C) = p^|C| (1-p)^|partial_G C| (4) + +of being exactly one complete occupied component. The external vertex +boundary consists of DISTINCT sites, not open-to-closed incidences. No +condition is imposed beyond this boundary. In particular the exterior need +not be connected, and entire distant guard rows are not forced to be vacant. + +Let S_i={y : (i,y) in C}, i modulo w. For a set S of integer rows write + + E_4(S)=S, + E_8(S)=S union(S-1)union(S+1). + +Define + + B_i = [(S_i-1) union(S_i+1) + union E_G(S_(i-1)) union E_G(S_(i+1))] minus S_i. (5) + +Then, for EVERY finite set C, whether or not it is connected or winding, + + |C| = sum_i |S_i|, |partial_G C| = sum_i |B_i|, + q_p(C) = product_i phi_p(S_(i-1),S_i,S_(i+1)), + phi_p(A,B,C)=p^|B| (1-p)^|B_i(A,B,C)|. (6) + +**Proof.** An external neighbour in column i can be adjacent to a site in +column i or one of its two neighbours only. Formula (5) is precisely that +union with the occupied central sites removed. Each external site belongs to +one physical column, so the sum counts it once. Product independence then +gives (4) and (6). Diagonal steps only change E_4 into E_8. End of proof. + +This resolves a *weight-bookkeeping* obstruction: the exact local factor is +available. It does not make successive irreducible objects independent. In +column language it is a three-column interaction, equivalently a transfer +on pairs (S_(i-1),S_i). The constraint that C is one connected winding +component remains a global predicate, or must be retained by connectivity +and lift information in an enlarged state. There is no claim that summing +unconstrained column words gives the desired component density. + +A six-site example on w=4 consists of a complete row at y=0 and teeth at +(0,1),(2,1). It has 8 distinct external boundary sites but 12 occupied-to-void +incidences. Its true activity is p^6*(1-p)^8, not p^6*(1-p)^12. The error is +already present without any continuum limit or multiple winding paths. + +### 2.1 Weight allocation is a gauge choice, not a new physical amplitude + +At bounded height, write a pair-state transfer as + + K_(A,B),(B,C)=phi_p(A,B,C). + +For any positive function d(A,B), replace it by + + K'_(A,B),(B,C)=d(A,B)*K_(A,B),(B,C)/d(B,C). (7) + +This is a diagonal similarity transformation. Every cyclic product is +unchanged by telescoping, including a product restricted by the same global +connectivity predicate. Open endpoints acquire the corresponding d factors. +Thus moving boundary weights between adjacent pieces can change an open +endpoint amplitude without changing the closed object. It cannot justify +identifying an open two-point amplitude with a closed component amplitude. +This elementary gauge identity is a tool, not an asserted CIV intertwiner. + +## 3. A canonical exact height expansion for the desired cylinder density + +At each p<1 an entire empty row has positive probability. Independent such +rows occur arbitrarily far in both directions, so every component on a +fixed-width cylinder is finite. Anchor a winding component by its minimum +row. Let nu_(w,<=H) be the expected number anchored at row 0 with span at most +H rows. Then + + nu_(w,<=H) = + sum_{C connected,winding; min_y C=0,max_y Cinfinity} nu_(w,<=H). (8) + +All terms are nonnegative. The anchor rate equals the retirement rate used +by the supplied one-frontier engine: stationarity transports one mark per +finite component from its bottom to its retirement row. No winding path is +counted multiple times. + +For fixed w a coarse, explicit bound is + + 0 <= nu_w-nu_(w,<=H) + <= w [1-(1-p)^w]^H. (9) + +Indeed a component anchored at row 0 and reaching row H requires every row +1,...,H to be nonempty; there are at most w anchors at row 0. Empty rows +separate both adjacency types. This bound is valid but becomes very poor as +w increases; it is NOT a uniform Ornstein–Zernike remainder. + +Now define the unanchored strip activity + + Xi_(w,H) = sum_{C connected,winding; C subset rows[0,H)} q_p(C), + Xi_(w,0)=0. (10) + +Its external boundary is still the boundary in the INFINITE cylinder, not a +free-boundary graph of H rows. A shape of vertical span h can be placed at +H-h+1 heights in this strip. Therefore + + Xi_(w,H) = sum_{h=1}^H (H-h+1)*nu_(w,span=h), + Xi_(w,H)-Xi_(w,H-1) = nu_(w,<=H), + Xi_(w,H)-2 Xi_(w,H-1)+Xi_(w,H-2) = nu_(w,span=H). (11) + +These are exact finite differences. A strip calculation with the right +external boundary weights can therefore recover the density by a height +difference. It need not guess a unique seam cut or a factor w/n. + +### 3.1 A nontrivial finite-height sewing is explicitly closed + +At H=1 the only connected winding set is the full horizontal row: + + Xi_(w,1) = [p(1-p)^2]^w. (12) + +At H=2 use nonempty column symbols 1,2,3. On NN, adjacent symbols must overlap; +on matching, all adjacent nonempty symbols communicate. In either case +these local compatibility rules are equivalent to the union being connected +and winding. For NN an incompatible interface has no occupied crossing, so +winding is impossible. If all interfaces overlap, either the word is a +single constant row or a double-occupied column joins all strands. For +matching, any two occupied sites in consecutive two-row columns are adjacent. + +There are 7 allowed pair states on NN and 9 on matching. Use the weight in +(6) on pair-state transitions. Then + + Xi_(w,2)=trace K_(H=2)(p)^w, + nu_(w,<=2)=trace K_(H=2)(p)^w - [p(1-p)^2]^w. (13) + +The new script verifies this identity against actual anchored component +activity at w=3,4,5 and p=1/4,1/2 for BOTH graphs. It is an exact finite-height +representation of actual site components, not the unknown all-height renewal +sewing. Fixed H has finitely many transverse states; its leading large-w +behaviour need not have the all-height w^(-1/2) factor. Exchanging the two +limits is a substantive step. + +## 4. Multiple seam marks are removable exactly, not a no-go theorem + +Fix the seam between columns w-1 and 0. For each winding component C let +M(C) be any nonempty finite set of specified seam marks, and c(C)=|M(C)|. +Marks may be seam edges, or distinct seam rows, but the convention cannot be +changed halfway. A raw seam edge is not automatically an OZ regeneration cut. + +For every single configuration, + + sum_{e in M(C)} 1/c(C) = 1. (14) + +Let component-Palm mean selecting a component proportionally to its activity +per anchor row, and mark-Palm mean selecting a mark proportionally to its +activity. If nu is component intensity and mu is marked intensity, then + + mu = nu * E_component[c], + dP_mark(C) = c(C)/E_component[c] * dP_component(C), + nu = mu * E_mark[1/c]. (15) + +Importantly, + + E_mark[1/c]=1/E_component[c] + +but in general E_component[1/c] is different. Multiplying mu by the latter +produces a bias; Jensen's inequality puts that bias above the correct value. +Formula (15) follows from sums in a finite height window, or from stationary +mass transport in the infinite cylinder. It requires the same model, support, +marking rule and sampling law on both sides. + +There is also an exact generating-function form. If + + Z_H(t)=sum_C q_p(C)*t^{c(C)}, 0<=t<=1, + +over the anchored finite-height class, then + + nu_(w,<=H)=integral_0^1 Z_H'(t) dt. (16) + +The inverse-mark factor is the identity 1/c=integral_0^1 t^(c-1)dt. Multiple +cuts are therefore not an impossibility result for sewing. They demand a +specified mark law and a correct unrooting operator. Whether an OZ chain's +marks agree with the raw seam marks remains to be proved. + +### 4.1 A true complete-component small control + +For NN, w=4, span at most 3, p=1/2, the exact anchored density and marked +intensity for seam edges are + + nu = 9087/1048576, + mu = 5601/524288, + E_component[c] = 11202/9087, + E_mark[1/c] = 9087/11202. (17) + +The product in (15) recovers nu exactly. Using E_component[1/c] instead +would overestimate it by about 9.53%. This is a truncated full-component +activity with the exact external void weight, not a free strip with cut +components retained. The full infinite-height density is NOT (17). + +Finite numbers such as 1.5 or 2.1 at widths at most four prove neither tightness +nor growth of c in the asymptotic regime, and do not by themselves determine +an amplitude correction to a differently marked renewal model. + +## 5. A modest centre-order consequence, distinct from regularity + +Using the preceding definitions of a(d)=kappa_4^(-1)(d) and +c(d)=1-b(d)=kappa_8^(-1)(d), and their continuous strictly decreasing masses, +monotone graph inclusion gives kappa_8(p)<=kappa_4(p) whenever both are +subcritical. If a(d)>=pc_8 then c(d)=1. (18) + +This uses the previous mass-inversion theorem as an input and does not prove +strict inequality at every d. Strictness is a plausible graph-enhancement +question, not the definition of an exceptional Gumbel parameter. In particular +c=a only makes the black and white *occupation probabilities* equal; it does +not make their original-label thresholds a and 1-a coincide unless a=1/2. +No p-analyticity theorem is obtained by this observation. + +## 6. A research conjecture: heat-kernel sewing rather than independent pieces + +The following is deliberately recorded as a conjectural continuation, not an +accepted result. It remains within the same density problem and does not +request a fourth width or another source programme. + +### 6.1 Why this formulation is preferable + +The actual site weights have the local memory (5). The correct candidate is +therefore a cyclic Gibbs/Markov-renewal description that retains overlap state, +not necessarily an independent sequence of geometrical blobs. Multiple raw +seam crossings need not be excluded; their weights must be unrooted as in (14). + +**Conjecture HK (fixed-subcritical closed-component scaling).** For each +adjacency G and fixed 00 and zeta_G(p)>0 such that +for H/sqrt(D_G(p)w)->h in (0,infinity), + + Xi_(w,H)(p) + ~ zeta_G(p) exp[-w kappa_G(p)] + sum_{n>=1} exp[-pi^2 n^2 D_G(p) w/(2H^2)]. (19) + +This is the Dirichlet heat trace of ONE diffusive transverse mode. D is the +long-time transverse diffusion coefficient, including inter-piece correlations, +not merely a one-step variance. Zeta contains the still-unidentified +microscopic sewing/mark normalization. These quantities are not fitted or +computed for the real site process in this delivery. + +The equivalent anchored version is safer as a target, because relative +asymptotics of Xi alone do not justify taking a finite difference. Require +in addition enough uniform remainder control, or directly conjecture + + nu_(w,<=H)(p) / nu_w(p) -> F_range(h), + nu_w(p) ~ zeta_G(p) exp[-w kappa_G(p)]/sqrt(2*pi D_G(p)w). (20) + +A claim of (19) without finite-difference control is NOT a proof of (20). + +The limiting cutoff function is the range distribution of a standard +Brownian bridge, with two equivalent series: + + F_range(h) + = sqrt(2*pi)*pi^2/h^3 * sum_{n>=1} n^2 exp[-pi^2 n^2/(2h^2)] + = 1 + 2 sum_{n>=1}(1-4n^2h^2) exp[-2n^2h^2]. (21) + +The first converges well at small h, the second at large h. This formula is +an exact Brownian identity; its application to SITE components is conjectural. + +**Derivation of the Brownian target.** For a unit-time standard bridge with +range R, integrating the free bridge kernel over starting positions whose +translated bridge fits in (0,h) gives + + trace exp(Delta_(0,h)/2) + = E[(h-R)_+]/sqrt(2*pi) + = sum_{n>=1}exp[-pi^2 n^2/(2h^2)]. (22) + +Differentiate in h to get the first series in (21). Poisson summation gives +the second. The discrete identities (11) are exactly the height-counting +analogue of this derivative. This supplies a concrete geometric reason for +the *anchored* w^(-1/2) factor, not just a matching of powers. + +### 6.2 What could falsify this conjecture + +A second soft transverse mode, slowly decaying interaction between irreducible +pieces, a nontrivial w-dependent unrooting factor, or a different limit shape +of complete winding components can invalidate (19)–(20). Raw seam multiplicity +larger than one does not do so by itself. Conditional support at fixed H also +does not test the Brownian H/sqrt(w) regime. + +A specific sufficient marking hypothesis worth examining is tightness with +an exponential moment of c under the component-Palm law, uniformly at fixed +p as w grows, plus convergence of its relevant joint law with the sewing +state. This would preserve the power when converting between mark and component +intensities. It would not identify the constant without that joint law. +This marking hypothesis is **not proved here** and is not implied by a few +small free-boundary means. + +Targets from (21) are approximately F_range(1)=0.178, F_range(2)=0.98994. +The result JSON contains higher precision evaluations of the explicit series. +They are not measurements of a percolation cluster. + +### 6.3 A geometry prediction that does not fit a mass or an amplitude + +If the range convergence in (20) also holds with its first two moments +(the needed uniform integrability is part of this conjecture, not automatic), +let L(C)=max_y C-min_y C+1 for the complete component selected under the +component-Palm law. The Brownian bridge range has + + E R=sqrt(pi/2), E R^2=pi^2/6. + +The first identity follows by reflection from the maximum of a bridge and +symmetry of its minimum; the second follows by integrating (21), using an +absolutely convergent second-moment series. Consequently HK predicts + + E_component L / sqrt(Dw) -> sqrt(pi/2), + E_component L^2/(Dw) -> pi^2/6, + Var_component(L)/(E_component L)^2 -> pi/3 - 1 + = 0.0471975511966... . (23) + +This last ratio is independent of kappa, D and zeta. It tests the proposed +GEOMETRY of a complete winding component, not merely another fit of density +versus width. A seam-marked sample must first be debiased by (15); otherwise +it probes a different distribution. The existing free-strip seam means are +not this statistic. No new acquisition is commissioned here, and (25) is +not scored against fixed tiny widths as an asymptotic theorem. + +### 6.4 A more distant, explicitly conditional critical crossover + +A possible extension on approaching pc is + + nu_w^G(p) ~ w^(-1) F(w*kappa_G(p)), (24) + +after the appropriate lattice metric is fixed. If D_G(p)*kappa_G(p)->D_*>0 +and zeta_G(p)->zeta_*>0, (20) would match a large-x tail + + F(x) ~ zeta_* sqrt[x/(2*pi*D_*)] exp(-x). (25) + +A finite nonzero F(0) would describe a critical cylinder density. Neither the +existence of this scaling function nor its critical value, common metric, +or equality between NN and matching functions is proved here. Fixed-p OZ +estimates are not uniform critical estimates. Moreover the same-label black/ +white winding counts obey the exact topology constraint from the earlier +handoff, so two independent Poisson processes cannot simply be continued into +this common window. + +Equations (19)–(25) are stored so they can guide a later proof or a specific +comparison; they are not to be copied into the claim ledger as data or theorems. + +## 7. Executed scope + +The standalone script implements physical lifted BFS and independent gain +union/find, the literal external-neighbour set and an independent column-union +formula, component-Palm/mark-Palm arithmetic, and the two-row trace. + +- 11,938 nonempty shape masks across both adjacencies: all boundary sets agree + and both winding detectors agree. Connected anchored winding shapes are + then weighted with (4). +- 17,408 actual extended-strip configurations with random guard rows: + direct complete-component expectations agree with the anchored activity + sum at p=1/3. Unrelated guard sites are integrated out, not forced vacant. +- Twelve exact two-row trace comparisons at widths 3,4,5 and p=1/4,1/2. +- The returned #741 logs are rescored, not regenerated by a new large solve. + All displayed long decimals in the JSON beyond input precision are arithmetic + outputs, not extra precision of the supplied densities. + +Run from the repository root: + + python -m unittest discover -s tests -p 'test_cluster_sewing_identity.py' -v + python scripts/cluster_sewing_identity.py --output /tmp/sewing-new.json + +The output path must not exist. No Monte Carlo or full repository CI is included. +No theorem in Section 6 is inferred from these finite checks. + +## Sources and integration references + +- #740 return: `787d5d5d40539f115dda23b68be6ff03ee3c82d9`, issue comment + `5651941180`; keep its finite seam-count observations, correct the + p-regularity and marking inferences. +- #741 return: `3745b13b8e1126017a1e88567a6af44881b8a1ff`, + `results/geometric-consistency/winding-prefactor-contrast.json`. +- Campanino–Ioffe–Velenik, *Fluctuation theory of connectivities for + subcritical random cluster models*, Ann. Probab. 36 (2008), arXiv:math/0610100v2. + Primary PDF Theorems A/B and printed page 13 read; pages 10 and 13 rendered. + Directional regularity and the deferred temperature remark are distinguished. +- D'Alimonte–Manolescu, arXiv:2510.13648v3, primary HTML sections 1.1–1.2 + and Theorem 4.9 read. Bond-FK model and direction-versus-p distinction checked. + +These are bounded source readings, not a completed literature-priority search. +The exact bookkeeping identities here are elementary derivations; no novelty +claim for mass transport, Gibbs transfers, Palm debiasing or heat kernels is made. diff --git a/docs/manuscripts/geometric-balance/span-resolvent-frontier.md b/docs/manuscripts/geometric-balance/span-resolvent-frontier.md new file mode 100644 index 00000000..664c389b --- /dev/null +++ b/docs/manuscripts/geometric-balance/span-resolvent-frontier.md @@ -0,0 +1,221 @@ +# From a complete-component resolvent to a closed diffusive theory + +2026-09-13. Same #739 probability programme. The exact finite constructions +are in `tagged-span-resolvent.md`; this note separates an elementary +conditional stability theorem from three deliberately unproved site +conjectures. No extra width ladder is commissioned. + +## 1. A complete component's range is not an additive observable + +If a component is decomposed into pieces at transverse positions y_i, with +local lower/upper excursions ell_i,u_i, its inclusive span is + + L=1+max_i(y_i+u_i)-min_i(y_i+ell_i). (1) + +It is not sum_i(u_i-ell_i+1), nor the total variation of the center path. +An alternating center sequence 0,1,0,1,... has range one and total variation +proportional to its length. This deterministic distinction invalidates the +piecewise-additive-span explanation in the returned diagnostic; it does +not invalidate the computed finite-width moments. + +Here is the appropriate transfer lemma. + +**Conditional bush-stability theorem.** Suppose a complete component C_w +has a center path gamma_w and transverse Hausdorff error B_w, with + + E[number of pieces whose error exceeds t] <= C w^a exp(-ct) (2) + +under the **same component-Palm/closed-loop ensemble**, for fixed C,a,c>0. +Suppose gamma_w/sqrt(Dw) has a Brownian-bridge limit, with the moment bounds +required at the order under discussion. Then C_w has the same transverse +range limit and the same corresponding normalized moments. + +Proof. By a union bound, + + Pr(B_w>t)<=min(1,Cw^a exp(-ct)), + +so for each fixed r, E B_w^r=O((log w)^r). Deterministically, + + |range(C_w)-range(gamma_w)| <= 2 B_w. (3) + +After division by sqrt(w), (3) tends to zero in every fixed L^r. Slutsky +and the stated center-path uniform integrability transfer the law and +moments. In particular, if the skeleton first two moments have their +Brownian limits with error e_w, then the component CV^2 differs from the +skeleton CV^2 by O(log w/sqrt(w)), plus that pre-existing error. No sign +for this correction is asserted. + +This proof requires neither independence of pieces nor absence of branches. +The load-bearing condition is (2) under the **closed component law**. +Unconditional exponential tails cannot simply be conditioned on an +exponentially rare winding event and reused unchanged. + +CIV section 1.3.3, equation (1.10), states O(log n) Hausdorff closeness of +its full long connection cluster to the effective path, followed by its +Brownian-bridge Theorem C. Thus invoking CIV to say the full span must be +an extensive sum is the opposite of what that text establishes in its +actual setting. Its bond model/open-endpoint conditional law remains +different from this site's periodic component-Palm law. It is a proof +architecture and a specific missing comparison, not a finished transfer. + +Finite-width CV values 0.127 (NN) or 0.116 (matching) versus the target +0.04719755 do not decide this theorem's hypotheses. Even simple positive +boundary thickness alone is not a complete explanation: adding a positive +constant to a Brownian range decreases CV^2. Finite core corrections, +random decorations and covariance can produce either correction sign. + +## 2. Conjecture R: formulate the fixed-p problem using the exact resolvent + +For each fixed subcritical p of the chosen graph, let alpha_w,R_w,b_w be +the tagged construction and nu_w=alpha_w(I-R_w)^(-1)b_w. Let mu_w=E L, +which is now obtainable without a height cutoff. Define + + F_w(s)= z alpha_w(I-zR_w)^(-1)b_w / nu_w, + z=exp(-s/mu_w), s>=0. (4) + +**Conjecture R (complete shape, mean normalized).** At fixed strictly +subcritical p, + + F_w(s) -> E exp[-s range(B)/E range(B)] (5) + +locally uniformly for s>=0, with convergence of the corresponding moments. +No mass, amplitude, diffusion coefficient or finite-height offset is fitted +in (5). It is equivalent to a mean-normalized full shape law, stronger than +agreement of a single CV statistic. Fixed-w rationality does not preclude +a nonrational limit as the number of states grows. Conversely, the largest +single eigenvalue of R_w does not by itself determine the distribution in +the joint w,height scaling window; source/exit overlaps and multiple modes +remain in (4). + +The exact Brownian-range CDF used to compute the right-hand side is + + F_R(x)=sqrt(2pi)*pi^2/x^3 sum_(n>=1) n^2 exp[-pi^2 n^2/(2x^2)] + =1+2 sum_(n>=1)(1-4n^2x^2)exp(-2n^2x^2), (6) + +with E R=sqrt(pi/2), E R^2=pi^2/6. The explicit target transform at s=1,2,4 +is approximately 0.3762840878410, 0.1475796893947, 0.0252164362526. +These are Brownian formula values, not measured percolation quantities. + +In the new all-height computations, NN p=1/4 gives at s=2: + + w=4:0.1875595963; w=6:0.1744603845; w=8:0.1671020675. + +Matching p=1/8 gives 0.1765806063,0.1690681784,0.1638984502. +These move toward the proposed value over the reported widths; they do not +prove its limit and do not establish a correction exponent. The same finite +data can be compatible with several extrapolations. No new computation is +ordered merely by making the conjecture explicit. + +A proof can aim directly at the normalized resolvent (4), or prove the +conditional bush-stability hypotheses with a correctly sewn loop skeleton. +It need not first invent a unique raw seam cut. An obstruction should identify +which of mixing, one transverse mode, Palm normalization, or tight decoration +control fails. + +## 3. Conjecture J: joint geometry and thermodynamic marks + +The direct-activity representation defines, near a fixed physical point, + + Psi_w(z,u,v)=sum_C z^L u^K v^B, + +where B is the number of DISTINCT external boundary sites. This is not a +random-cluster q derivative. It supplies the correct finite joint law and +covariance of (L,K,B), all within the complete-component ensemble. + +**Conjecture J (one closed diffusive band with additive marks).** If the +physical closed chain has a reflection-symmetric mixing renewal description, +then for constants D>0, densities rho_K,rho_B and a covariance matrix Sigma, + + (L/sqrt(Dw), (K-rho_K w)/sqrt(w), (B-rho_B w)/sqrt(w)) + => (range(Brownian bridge), Gaussian_2), (7) + +with independence between the range and the Gaussian mark vector. +Possible sublinear corrections to the centering must be controlled; actual +finite means are a safer alternative where that expansion is unknown. + +Why independence is plausible, rather than just convenient: in a +reflection-symmetric Markov-additive effective chain, transverse increments +are odd and occupancy/boundary increments are even. Their long-run cross +covariances vanish. A joint functional CLT would give a Gaussian transverse +path independent of the additive even marks; conditioning the path to close +produces a bridge and preserves that independence. Applying this argument +requires a proved mixing/conditioning comparison for the site loop ensemble, +not merely reflection of the one-point marginal. + +The prior decorated dilute limit supplies one rigorous special-regime +motivation, not a proof at fixed p. The present exact computations give +finite squared correlations Corr(L,K)^2 of about 0.867 at NN w=4,p=1/4 +and 0.838 at w=5. They are not small yet. They neither establish (7) nor +contradict an asymptotic zero correlation. Under the moment hypotheses of +(7), a concrete consequence would be Corr(L,K)->0 whenever the limiting +occupation variance is nonzero. + +If f(u,v)=lim_w w^(-1) log Psi_w(1,u,v) exists with enough local regularity, +its log-coordinate gradient gives rho_K,rho_B and its Hessian gives Sigma. +Along u=p,v=1-p this would imply + + -kappa'(p)=rho_K/p-rho_B/(1-p). (8) + +Equation (8) is conditional on exchanging the limit and derivative. +The finite score identity is exact already; analyticity of finite rational +functions does not prove p-analyticity of the infinite limit. + +## 4. Conjecture U: is the closed-loop residue actually one? + +This is the bolder, less-supported conjecture. Keep it separate from R and J. +For an explicitly defined finite-state cyclic renewal kernel A(z,k), a +single simple critical eigenvalue gives + + w[z^w] {-log det(I-A(z,k))} ~ R(k)^(-w). + +The simple logarithmic singularity has coefficient one. Integrating the +one transverse quadratic mode gives + + L_w ~ exp(-kappa w)/sqrt(2pi D w), (9) + +with no independent endpoint-overlap amplitude. This is a statement about +that specified cyclic object, whose w/n unrooting is exact; it is not a +statement about arbitrary site clusters. + +**Conjecture U (unit sewing residue).** A canonical all-regeneration-cut +construction for the actual complete site component might identify it with +such a cyclic Gibbs object, making the previous sewing factor zeta(p)=1. +All external-boundary overlaps and multiple-cut weights must be included +before making this identification. A merely bounded, nontrivial cyclic +insertion would leave zeta!=1; several leading bands, residual marking +multiplicity, or lattice periodicity could also invalidate (9). + +This conjecture has a stronger falsifiable consequence than beta=1/2. If R +and the corresponding diffusion scale also hold, then + + 2 exp(kappa w) nu_w E L -> 1. (10) + +Without U, the same quantity tends to zeta(p), not necessarily one. With +only the older heat-kernel conjecture, nu_w E L has no power prefactor but +still has the unknown zeta/2 amplitude. An accurately known mass is needed +to use (10); none is manufactured from the six existing densities. + +This is not a new compute order. It states which genuinely new normalization +identity would remove an unknown amplitude, and exactly how a counterexample +would change the theory. The direct activity transfer now defines the correct +microscopic object to compare, rather than a count of seam crossings. + +## 5. Near-critical continuation stays downstream + +The fixed-subcritical conjectures above are not uniform claims for p->pc. +Even if D(p)kappa(p)->D0 and a scaling function for w nu_w were established, +the same-parameter black/white count constraint forbids blindly taking the +independent two-window Poisson law into a common critical window. The prior +conditional log-aspect/log-log-aspect crossover remains a conjecture requiring +uniform input; the new finite matrices do not discharge it. + +Current direction: use the exact all-height component law as the microscopic +object; establish or falsify the correct closed-loop mixing and decoration +control; only then infer a fixed-p amplitude or a critical crossover. This +keeps the geometric probability paper coherent while preserving the bolder +hypotheses in an explicit, testable form. + +Sources: CIV, arXiv:math/0610100v2, section 1.3.3 and equation (1.10), for the +open-connection architecture under its bond hypotheses; standard phase-type +absorption formulas are prior art (Maier, 1991, doi:10.1080/15326349108807207). +No general Brownian, phase-type, Gibbs or renewal theorem is claimed new here. diff --git a/docs/manuscripts/geometric-balance/span-spectrum-diagnostic-20260913.md b/docs/manuscripts/geometric-balance/span-spectrum-diagnostic-20260913.md new file mode 100644 index 00000000..3da1cf0a --- /dev/null +++ b/docs/manuscripts/geometric-balance/span-spectrum-diagnostic-20260913.md @@ -0,0 +1,119 @@ +# Span-spectrum diagnostic for the heat-kernel sewing conjecture (§6) + +> **Partly superseded — see `span-spectrum-erratum-20260913.md`.** The solved width range is +> 2–7, not 2–8; the §2 tail-negligibility sentence is false for 4 of 30 configurations; the +> §4/§5 "additive span" mechanism reading is withdrawn; and two solver defects (an unnormalised +> `light` chain, an implicit certificate-versus-observable gap) are fixed there. The §3/§4 +> tables themselves stand and are reproducible from the committed results JSON. +> +> **The §4/§5 conclusion is also revised, not just its mechanism.** Re-read against the CIV +> log-closeness statement, the moment series `Var/(E L)^2` is consistent with approaching +> `pi/3 - 1` as `c(p)/w` (amplitudes 0.26–0.63), and the competing "decays to zero" reading is +> excluded by the slope of `(Var/(E L)^2 - (pi/3 - 1))*w` in all four families. "Not yet reached" +> is not "not supported": the prediction is **not contradicted** at these widths. See §5.1 of +> the erratum. + +**Status: finite-width DIAGNOSTIC of the §6 research conjecture, delivered as the ticket asked. +The conjecture is neither proved nor refuted; its moment prediction is not supported at any +accessible fixed-p width, and its scaling exponent is near-diffusive but not yet settled.** + +This note answers the testability demand of §6.3 directly: instead of fitting another exponent, +we measure the vertical-span distribution of the complete winding cluster — the object the +conjecture makes a sharp prediction about — exactly, at fixed subcritical p, for both +adjacencies, widths 2-8. + +## 1. The measurable object + +Let d_h(p) = nu_(w, span=h) be the anchored density of complete winding clusters whose vertical +span is exactly h (§3 of the sewing-with-memory note). The one-frontier retirement engine +(`scripts/cylinder_winding_intensity.py`, validated against all 18 published controls) is extended +with a per-component min-row offset: each retiring winding component reports its span, giving the +full spectrum d_1..d_D_MAX plus the exact tail mass (span > D_MAX). + +Two exact facts hold at every width, and they are the engine's validation: + +1. **Closure.** The depth-clamped chain is an exact lumping, so + `sum_h d_h + tail = nu_w` EXACTLY, with nu_w the independently certified density of the + winding-intensity engine. At NN w=4, p=1/4 the closure reproduces the #741 certified rational + `1750262847.../(4^32)`-scale fraction to the last digit. +2. **Controls.** d_1 = p^w (1-p)^(2w) exactly (the full-row cluster); at NN w=4, p=1/2, + `sum_{h<=3} d_h = 9087/1048576` — the §4.1 finite-height control of the sewing-with-memory + note, reproduced digit for digit. + +## 2. Data + +Both adjacencies, p in {1/8, 1/4} (NN) and {1/16, 1/8} (matching), plus p=1/2 for w<=4; +widths w = 2..8 (D_MAX = 48 for w<=6, 20 for w=7, 16..20 for w=8). Tail fractions are +negligible everywhere (<= 2e-6, mostly < 1e-20). Machine-readable values are in +`results/geometric-consistency/span-spectrum-20260913.json`. + +## 3. Finding 1 — the mean span is sublinear, near-diffusive but not settled + +E[L] grows sublinearly at every fixed subcritical p: + +| family | E[L], w=2..7 | E[L]/w, w=2 → 7 | +|---|---|---| +| NN p=1/4 | 2.08, 2.64, 3.14, 3.57, 3.94, (w7: 4.27) | 1.04 → 0.61 | +| NN p=1/8 | 1.52, 1.77, 2.01, 2.24, 2.45, (2.65) | 0.76 → 0.38 | +| matching p=1/8 | 2.05, 2.70, 3.24, 3.68, 4.06, 4.40 | 1.03 → 0.63 | +| matching p=1/16 | 1.85, 2.23, 2.63, 2.94, 3.22, 3.47 | 0.92 → 0.50 | +| NN p=1/2 (w<=4) | 3.62, 5.42, 7.09 | 1.81 → 1.77 (FLAT) | + +Local log-log exponents at NN p=1/4: alpha ≈ 0.55-0.61 over w = 2..6 — near-diffusive, +drifting down, but the width range cannot yet separate alpha = 1/2 from alpha = 3/4. +At p = 1/2 the exponent is 1.0 (E[L] proportional to w): the dense regime is NOT diffusive. + +## 4. Finding 2 — the moment prediction of §6 is not supported + +The §6.3 conjecture predicts, once the sewing identifications hold, + + Var(L)/(E L)^2 -> pi/3 - 1 = 0.0471975511966... + +(Brownian-bridge range law). The measured ratios decline steadily and are 2-7x the target at +the largest widths: + +| family | Var/(E L)^2, w=2 -> 7 | +|---|---| +| NN p=1/4 | 0.275, 0.250, 0.211, 0.180, 0.157, (0.140) | +| NN p=1/8 | 0.229, 0.232, 0.214, 0.192, 0.171, (0.152) | +| matching p=1/8 | 0.184, 0.200, 0.178, 0.157, 0.140, 0.127 | +| matching p=1/16 | 0.133, 0.122, 0.117, 0.105, 0.096, 0.089 | +| NN p=1/2 (w<=4) | 0.358, 0.333, 0.304 | + +The decline is consistent with the CLUSTER-CHAIN picture: at fixed p the complete winding +cluster is a one-dimensional chain of irreducible pieces (CIV skeleton); its span is the sum of +~w/mu piece heights, so Var(L) grows like w while (E L)^2 grows faster, driving the ratio toward +zero — NOT toward the Brownian-bridge constant. No family shows the plateau at pi/3 - 1. + +## 5. What this does to the conjecture + +The §6.2 falsification list is exercised for the first time, and the data land on its own +named failure modes: the complete cluster carries MORE transverse fluctuation than a single +diffusing skeleton (bushes/branch Deaths add vertical extent piecewise), so the heat-kernel +trace over spans describes at most the SKELETON observable, not the complete-component span, +at fixed p. Concretely: + +- The pure single-diffusion form `nu_(w,<=H)/nu_w -> F_range(H/sqrt(D_G w))` is not supported + at any fixed p measured: neither the H/sqrt(w) collapse nor the moment constant appears. +- In the DILUTE joint limit (w p^2 -> 0) the proved Bessel regime already covers the + near-straight rows; the conjecture's remaining content at fixed p would have to be a + SKELETON-only statement (condition on no bushes / restrict to the irreducible chain), or + absorb the piecewise-additive fluctuation into zeta_G(p). +- The measured slopes s(p) = d(E[L]-1)/d(w) — 0.24 (NN p=1/8), 0.50 (p=1/4), 1.75 (p=1/2); + 0.41 (matching p=1/8) — are themselves new exactly-measurable micro-objects feeding the + amplitude question of #740. + +## 6. Method and cost + +- Engine: `scripts/span_spectrum_build.cpp` — the validated one-frontier advance() with an + integer min-row offset per component (merge rule max, retirement span = offset), depth + clamped at D_MAX; the clamped chain is an exact lumping (bins 1..D_MAX exact, tail exact). +- Solver: `scripts/span_spectrum_solve.py` — chunked streaming construction of the sparse + chain (no 15 GB table ever resident), stationary solve by sparse LU (n <= 5e4) or power + iteration, exact int64 residual certificate where the scale fits, exact-rational solve for + n <= 300. +- Cost, measured: w=8 build 469 s (2 505 625 frontier states, 604M transitions, 15.4 GB table, + ARM container); solves w<=6 minutes each on one 16-vCPU container; the full grid + (38 (graph,width,p) configurations) ran across 10 containers in parallel. +- Every number above is a finite-width diagnostic; nothing here proves or refutes the + conjecture asymptotically, and no new p_c, Monte Carlo, or GPU was used. diff --git a/docs/manuscripts/geometric-balance/span-spectrum-erratum-20260913.md b/docs/manuscripts/geometric-balance/span-spectrum-erratum-20260913.md new file mode 100644 index 00000000..36294111 --- /dev/null +++ b/docs/manuscripts/geometric-balance/span-spectrum-erratum-20260913.md @@ -0,0 +1,186 @@ +# Erratum and second-round locks — span-spectrum diagnostic (2026-09-13) + +**Scope.** Corrections to `span-spectrum-diagnostic-20260913.md` (commit `7226a2c`) and to +`scripts/span_spectrum_solve.py`, prompted by the owner's return read at the same commit +(PR #739, comment `5653178247`). No result is overwritten, no claim is upgraded; three claims +are downgraded to what was actually run, two source defects are fixed, one missing artifact is +restored. + +## 1. Coverage claim corrected: the measured widths are 2–7, not 2–8 + +The note's §1/§2 say "widths 2-8" and "38 configurations"; the artifact that carries the data +(`results/geometric-consistency/span-spectrum-20260913.json`) holds **30 configurations, +widths 2–7**. Every w=8 statement in the note is about the *builder's capability and measured +build cost* (469 s, 2 505 625 frontier states, 604M transitions, 15.4 GB intermediate), not +about a solved spectrum: the w=8 solve never produced a result, and the `light` flag was +introduced for it (see §3). The width-8 row therefore must not be read as a measurement. +Tables §3/§4 are unaffected — they stop at w=7 by construction. + +The results JSON itself was honest about this — its `honesty` list says "w=8 runs were still +streaming at delivery time and are NOT included". The overclaim is in the note's prose only. +Two further prose fields inside the JSON are wrong at claim level and are corrected in §6.1. + +## 2. Tail-negligibility sentence corrected: 4 of 30 configurations are censored + +§2 says "Tail fractions are negligible everywhere (<= 2e-6, mostly < 1e-20)". That is false. +With `D_MAX = 48` (w <= 6) the tail bin (`span > D_MAX`, excluded from all moments) carries: + +| configuration | tail fraction | E[L] as printed | +|---|---|---| +| matching p=1/2, w=4 | **2.411e-02** | 14.253297 (censored) | +| matching p=1/2, w=3 | 2.113e-03 | 9.578554 (censored) | +| NN p=1/2, w=4 | 1.569e-06 | 7.087711 (censored) | +| matching p=1/2, w=2 | 1.294e-06 | 4.761844 (censored) | + +**No published number is materially affected.** The two matching p=1/2 rows were computed but +never printed in §3/§4; the only published censored row is NN p=1/2, w=4, where a 1.6e-6 tail +shifts E[L] by ~1.2e-4 — below the two decimals quoted. All subcritical-p rows (p = 1/8, 1/4, +1/16) are complete to better than 1e-19. The solver now returns `moments.censored` and +`moments.tail_fraction` explicitly, and `tests/test_span_spectrum.py` locks the count at 4. + +## 3. Source defect 1 — `light=True` skipped the `p_den**W` normalisation (fixed) + +`light=True` handed the raw integer-weight float32 chain to `stationary()`, while the normal +branch divides by `P_W = p_den**W`. The stationary *distribution* is scale invariant; neither +solver is. Measured, on the committed tables, with this worktree's fixed copy sidelined: + +| table | normal branch | pre-erratum `light` branch | +|---|---|---| +| `w2_nn.bin` (exact control) | exact rational | **RuntimeError: Factor is exactly singular** | +| `w4_nn.bin`, p=1/4 (n=11245, splu) | nu total 4.429301e-03, res 4.5e-15 | nu total 3.739144e-01 (**x84 wrong**), res **255** | +| `w5_nn.bin`, p=1/4 (n=52061, power) | nu total 1.344317e-03, res 2.8e-14 | **nan** (overflow to inf per sweep) | + +With `(K^T - I)` nonsingular for the unscaled `K`, the `splu` path returned a non-stationary +vector with no error raised — a silent-wrong branch, not a crash. The fix divides exactly like +the normal branch; `w2_nn.bin` light and exact now agree to 0 difference (residual 1.4e-16), +locked by `test_light_chain_is_normalised`. + +**No reported number used this path.** The 30 delivered runs carry modes: 6 `exact-rational`, +12 `float64(splu)`, 8 `float64(power)`, 4 `float64(power) + certificate`. Zero `light`. The +flag was dead code for every published value. + +## 4. Source defect 2 — the certificate bounded a different vector than the one printed + +The int64 residual certificate bounds `|observable(a/2^k) - observable(pi_exact)|` for the +**rational candidate** `a/2^k = round(pi * 2^k)/2^k`, while the printed observables come from the +float `pi`. The gap was implicit. The solver now emits both sides of it: + +* `cert_candidate` — the candidate's spectrum, moments, and its `max_abs_diff_dh` and + `rel_diff_sum_dh` against the float solve; +* `observable_bound_cert` — the certificate, unchanged in meaning; +* `observable_bound_float` — the same lemma applied to the float solve through its *reported* + residual `float_residual_l1` (same `ginf/delta` factor); +* `ginf_num`, now recorded (it was not, which is why this could not be recomputed post hoc). + +For the four certified runs, the candidate/float split is bounded by +`observable_bound_cert + observable_bound_float`, with `k >= 20`: the rounding term alone is +`<= 2^-20` relative, and the float residuals are 1.2e-13 … 1.7e-13, so the sum is far below the +six significant digits printed. The exact numbers are produced by the pending rerun in §6. + +## 5. Mechanism reading withdrawn (owner's correction accepted) + +§4 explained the declining ratio by "its span is the sum of ~w/mu piece heights". That +reasoning is wrong and is withdrawn. The span is +`max_i(y_i + upper_i) - min_i(y_i + lower_i) + 1` of the **whole** component; the engine's rule +was already that (per-component min-row offset, merge `max`, retire `span = offset`, verified by +`d_1 = p^w (1-p)^(2w)` and `sum_{h<=3} d_h = 9087/1048576`), but the one-line *explanation* was +not. If decorations are logarithmically Hausdorff-close to the skeleton — CIV §1.3.3, eq (1.10), +reprint p.11, then Theorem C's Brownian bridge for its bond/open-connection model — then +decorations do not force an extensive span and a range limit transfers to the full component. +What this delivery establishes is therefore the **measurement** only: no plateau at the +largest accessible width, ratio 2.7x the Brownian-bridge target and still decreasing. It does +not establish the additive mechanism, and it does not settle the asymptotics — the tagged +resolvent's conjecture (R) remains the right place for that. + +Two related wordings are also narrowed: the closure `sum_h d_h + tail = nu_w` is a *theorem* +(the depth-clamped chain is an exact lumping) but is *verified* only where a certified `nu_w` +reference exists — w = 2, 3, 4 at the published p (plus #741's w=8 NN p=1/4 and matching p=1/8 +rationals, unused here because no w=8 spectrum exists). §1's "at every width" means that. + +Checked invariant, previously unstated: the 8-slot retire record cannot overflow. `nret` counts +distinct span bins among *retiring components*, each component contributes one bin, and at most +`W <= 8` components retire in a transition (`span_spectrum_build.cpp` line 182 caps W at 8), so +the `nret < 8` guard is unreachable and no retirement can be silently dropped. + +## 5.1 What the data actually support: the moment prediction is not contradicted + +With the CIV mechanism in hand, §5's headline ("the ratio is driven toward zero — NOT toward the +Brownian-bridge constant") is itself an over-read and is withdrawn. The decoration contributes +`O((log w)^2)` to the variance against `Var(chain) ~ w`, so it is *subleading*: convergence to +`pi/3 - 1` was never excluded, and the direction the ratio moves cannot distinguish the two +readings. What can: + + model A: Var/(E L)^2 = (pi/3 - 1) + c/w [conjectured constant, c free] + model B: Var/(E L)^2 = c/w [decays to 0] + +Under A, `R*w = (Var/(E L)^2 - (pi/3 - 1))*w` is constant; under B it decreases *linearly* at +`-pi/3 + 1 = -0.0471975511966` per unit width. `scripts/span_moment_limits.py` computes both +from the committed results JSON (the w=8 columns combine this delivery's chain with the owner's +independent tagged resolvent): + +| family | w | R*w, w=4.. | slope of R*w (w>=4) | required by B | [A] rms | [B] rms | +|---|---|---|---|---|---|---| +| NN p=1/4 | 4,5,6,7,8 | 0.657, 0.665, 0.659, 0.650, 0.640 | **-0.0049** | -0.0472 | 0.0316 | 0.0442 | +| NN p=1/8 | 4,5,6,7 | 0.669, 0.724, 0.741, 0.736 | **+0.0218** | -0.0472 | 0.0571 | 0.0625 | +| matching p=1/8 | 4,5,6,7,8 | 0.523, 0.548, 0.556, 0.556, 0.551 | **+0.0064** | -0.0472 | 0.0427 | 0.0524 | +| matching p=1/16 | 4,5,6,7 | 0.277, 0.288, 0.293, 0.290 | **+0.0043** | -0.0472 | 0.0187 | 0.0334 | + +**The "limit 0" reading is excluded in all four families**: `R*w` does not fall at the rate that +reading requires — in three families its slope has the opposite sign, and in the fourth it is 9.6x +too small. Model A, whose limit is fixed a priori, fits better than B in all four while using the +same number of free parameters, and its correction amplitude is + + c = 0.619 (NN 1/4), 0.631 (NN 1/8), 0.495 (matching 1/8), 0.257 (matching 1/16), + +i.e. `c(p)` grows as p decreases — the same amplitude question #740 asks about. + +**Revised finding.** The §6.3 moment prediction `Var/(E L)^2 -> pi/3 - 1` is *not contradicted* +by this delivery's data; the measured ratios approach it like `c(p)/w`, reaching 2.7x the target +at the largest width because `c(p)/w` is still 0.64 there. The original note's "2-4x the target, +no plateau **so the prediction is not supported**" conflated "not yet reached" with "not +supported"; only the former is measured. Caveats kept explicit: the 1/w law is an empirical fit +over 4-5 widths, not a theorem; the dilute families NN p=1/8 (spread 10.1%) and matching p=1/16 +(5.4%) are the least settled; and two of the four w=8 points come from the owner's chain. + +## 6. Restored artifact and independent corroboration + +`results/geometric-consistency/span-spectrum-20260913.json` (the 30-run table behind §3/§4) was +missing from `7226a2c` and is committed here, byte-identical to the artifact the tables were +computed from. Its headline moments regenerate from committed code via +`spectrum_moments(...)` (`test_published_moments_regenerate`), which they could not before: the +driver that produced §3/§4 was never committed. + +The owner's one-lineage tagged resolvent — all heights, no bins, 3 963 reachable states at w=8 +against this delivery's 2 505 625 — reports + +| family | E L (this delivery, w=6 → 7) | E L (tagged, w=8) | CV^2 (w=6 → 7) | CV^2 (tagged, w=8) | +|---|---|---|---|---| +| NN p=1/4 | 3.93802 → 4.26752 | 4.56334396378038 | 0.15706 → 0.14000 | 0.127163500068044 | +| matching p=1/8 | 4.06011 → 4.40122 | 4.711805413158092 | 0.13990 → 0.12660 | 0.116004934830910 | + +Both columns continue the same trend within the quoted digits — two independent chains agreeing +on the measured object, and a route that removes the width-8 age-state computation this +delivery could not finish. + +## 6.1 Two claim-level corrections inside the results JSON + +The JSON is committed with every number byte-identical (the `runs` array is unchanged, verified +by a sorted re-serialisation equality check before writing). Two prose fields were false and are +replaced, so that the machine-readable artifact cannot be read as claiming a validation it never +ran: + +* `honesty[2]`, was: *"the exact int64 certificate is reported where the scale fits; w=7,8 use + float64/float32 power iteration validated by exact closure against certified nu_w"* — wrong + twice: no run ever used float32, and no closure against a certified `nu_w` was run at w >= 5 + (`gap_float` is `None` for all 11 of those runs). Now: the certificate count is 4 of 30, the + other 26 are float64 solves with the float residual reported, and closure is verified at + w = 2, 3, 4 only. +* `findings.interpretation` carried the additive-span mechanism. Now marked WITHDRAWN with the + corrected reading of §5. + +## 7. Pending, and not claimed here + +1. Width-8 spectrum (needs the fleet; the `light` path is fixed but the state count is 2.5M). +2. Rerun of the four certified configurations to print the certified candidate of §4 exactly. +3. Closure at w >= 5 against a certified `nu_w` at those widths (or the tagged resolvent's + total), the one validation this delivery could not run. diff --git a/docs/manuscripts/geometric-balance/tagged-span-resolvent-crosscheck-20260913.md b/docs/manuscripts/geometric-balance/tagged-span-resolvent-crosscheck-20260913.md new file mode 100644 index 00000000..36fb9e14 --- /dev/null +++ b/docs/manuscripts/geometric-balance/tagged-span-resolvent-crosscheck-20260913.md @@ -0,0 +1,256 @@ +# Cross-check of the tagged-span resolvent delivery + +2026-09-13. Verification note for the additive package handed over as +`matching_one_tagged_span_resolvent_20260913`, which is +`docs/manuscripts/geometric-balance/tagged-span-resolvent.md` plus +`span-resolvent-frontier.md` and four data/code files, and which was delivered +in the same round as comment 5653178247 on #739. Nothing in the delivered files +is changed here. This note records what we were able to check independently, and +one reproduction caveat that the delivered `EXECUTION.json` states too strongly. + +Reproduce with + + python scripts/tagged_span_crosscheck.py --write + +which reads the delivered `tagged-span-resolvent.json`, our own +`span-spectrum-20260913.json`, and `winding-nu-certified-20260913.json` (the +output of `scripts/winding_nu_certified.py`, an exact-rational winding-cluster +engine that shares no code with the delivered construction), and writes +`tagged-span-crosscheck-20260913.json`. + +## 1. Reception of the package + +All six delivered files reproduce `EXECUTION.json`'s sha256 exactly after +`git apply`, and the two machine-independent test runs agree with the handover: + +| check | result | +|---|---| +| sha256 of all six files vs `EXECUTION.json` | 6/6 match | +| `python -m unittest discover -s tests -p 'test_tagged_winding_span.py'` | 17 tests, OK, 0.46 s | +| `scripts/tagged_span_controls.py --output ...` | 132994 bytes, 29.9 s class, all 14 systems closed | + +Closing widths are 2--8 for both adjacencies, with tagged state counts +5, 13, 43, 131, 411, 1275, 3963 and exit-law lumps NN 3, 5, 10, 17, 36, 71, 161 / +matching 2, 3, 7, 15, 33, 68, 152, matching the table in section 4 of the note. +`build()` raises rather than truncating above width 8, so nothing here rests on +a silently incomplete automaton. + +**Caveat.** `EXECUTION.json` records +`"report_regenerated_identically_except_elapsed_seconds": true`. That is true on +the delivering machine but not across platforms. Re-running the controls report +on macOS/py3.13.12 differs from the delivered file in two ways: + +1. `laplace_mean_scaled_float_diagnostic` differs in the last one or two bits + (relative ~1e-16). This is explicitly labelled a floating diagnostic and is + immaterial. +2. For the widths 5--8 systems, the `centres` and all `*_interval` bounds are + *different exact rationals with different denominators*, because a centre is + a float solve plus one correction, and the float solve depends on the BLAS. + Relative difference between the two platforms' centres: at most 9.34e-32. + +That second item is not a defect, and it is worth saying why: the two platforms' +certified intervals overlap pairwise in 16/16 w>=5 systems, and — the real test +— **both platforms' intervals contain our independently computed exact rational +`nu_w` in all 12 systems where an independent exact value exists** (widths +6, 7, 8). A certificate that survives a different BLAS and an independently +written exact engine is doing its job. But "regenerated identically" should not +be quoted as a portability claim; the correct claim is "regenerated within its +own certified intervals". + +## 2. Density certificate vs an independent exact value + +`scripts/cylinder_winding_intensity.py` computes the winding-cluster density +`nu_w` by exact rational Gauss-Jordan on a transfer built from scratch, then +re-certifies the forward error through the empty-row reset. It shares no code +with `tagged_winding_span.py`. Comparing its exact value against the delivered +section 4.1 intervals: + +| graph | w | p | interval contains our exact nu | interval width | centre rel. error | +|---|---:|---:|---:|---:|---:| +| NN | 6 | 1/8 | yes | 1.16e-31 | 7.5e-33 | +| NN | 6 | 1/4 | yes | 3.67e-31 | 3.4e-32 | +| NN | 7 | 1/8 | yes | 3.70e-31 | 4.2e-33 | +| NN | 7 | 1/4 | yes | 1.02e-30 | 2.1e-32 | +| NN | 8 | 1/8 | yes | 4.70e-31 | 5.2e-32 | +| NN | 8 | 1/4 | yes | 4.07e-30 | 8.4e-33 | +| matching | 6 | 1/16 | yes | 4.14e-32 | 2.2e-32 | +| matching | 6 | 1/8 | yes | 1.68e-31 | 3.4e-32 | +| matching | 7 | 1/16 | yes | 1.04e-31 | 9.5e-34 | +| matching | 7 | 1/8 | yes | 1.41e-31 | 4.2e-32 | +| matching | 8 | 1/16 | yes | 6.46e-31 | 1.9e-32 | +| matching | 8 | 1/8 | yes | 6.59e-31 | 2.5e-32 | + +12/12 contained, no violations. The delivered centres sit ~1e-32 relative from +the exact value, which is the expected accuracy of one Newton-like correction on +a float solve; the intervals are a few orders looser than that but still +astronomically tight. Two independent exact engines now agree on `nu_w` at +w=6,7,8 for both adjacencies and five p values. The parameter-6 and +parameter-8 controls of the delivered `winding-prefactor` line are therefore +consistent, not merely self-consistent. + +## 3. Our own depth-clamped spectrum against the all-height law + +Our `span-spectrum-20260913.json` measures a depth-clamped chain with a D_MAX +bin cutoff plus a tail bin, so its `E[L]` and `CV^2` are censored. Comparing all +30 cells against the delivered all-height moments: + +| tail fraction of cell | cells | worst CV^2 relative bias | +|---|---:|---:| +| <= 1e-6 | 26 | 2.4e-05 | +| > 1e-6 | 4 | 1.8e-01 | + +The 4 materially censored cells are all at p=1/2, where the winding cluster is +not small on a narrow cylinder: + +| graph | w | p | D_MAX | tail fraction | CV^2 truncated | CV^2 all-height | rel. bias | +|---|---:|---:|---:|---:|---:|---:|---:| +| NN | 4 | 1/2 | 48 | 1.57e-06 | 0.304422 | 0.304476 | 1.8e-04 | +| matching | 2 | 1/2 | 48 | 1.29e-06 | 0.559489 | 0.559600 | 2.0e-04 | +| matching | 3 | 1/2 | 48 | 2.11e-03 | 0.591669 | 0.625015 | 5.3e-02 | +| matching | 4 | 1/2 | 48 | 2.41e-02 | 0.523973 | 0.637515 | 1.8e-01 | + +Consequences for what we already published. The erratum's section 2 already +flagged censoring in this file and added a per-run `censored` flag; this +quantifies it. Every cell used in the section 5.1 moment-limit revision is +either uncensored to <= 2.4e-05 relative, or — for the w=7 rows — carries a tail +fraction of order 1e-7 to 1e-12. The two p=1/2 rows that are off by 5% and 18% +in CV^2 were not used in the slope test, and must not be quoted as measurements +of the p=1/2 span law. + +## 4. The two constructions agree height by height, not just in their moments + +The strongest check available, and the one that actually used the delivered +construction rather than treating it as one more set of numbers. The two engines +compute the same object through structurally unrelated state spaces: + +| | state space at w=7 | stored quantity | +|---|---:|---| +| `span_spectrum_build.cpp` | 389391 states (668439 at w=6) | all component ages, then projected onto a span histogram | +| `tagged_winding_span.py` | 71 lumped states (36 at w=6) | one tagged lineage, no age, no depth cutoff | + +Agreement at every height h <= D_MAX and on the cutoff tail, across all 30 cells +of the committed spectrum: + +| quantity | worst relative difference, over scored heights | +|---|---:| +| `d_h` at w=2,3,4 | 1.0e-14 | +| `d_h` at w=5 | 1.4e-12 | +| `d_h` at w=6 | 2.4e-12 | +| `d_h` at w=7 | 3.0e-12 | +| cutoff tail bin, w=5..7 | 3.3e-12 | + +Two further details make this a real cross-validation rather than a coincidence. + +First, the error grows smoothly with height and with width (4e-16 at h=11 to +3e-12 at h=48) — exactly the signature of the committed file's own float64 +stationary solve, whose accuracy degrades as `d_h` becomes a small remainder. +The tagged side is exact rational, so the residual is the older file's error, +not a constructional disagreement. At w=2, both are exact and the difference is +identically zero. + +Second, 231 of the 1408 compared heights fall below `1e-20 * nu`, where the +committed file stores denormal-scale floats (`d_h` ~ 1e-40, tail bins ~ 1e-45); +those are excluded from the score rather than used to characterise agreement, and +are reported separately as `heights_below_floor`. Without that floor the naive +worst case reads 0.73 purely from noise in the 1e-40 range. The check is +scale-aware for that reason. + +A caveat on what this does and does not establish. Both engines could share a +misreading of what "span" means — the check cannot detect that, and the +arithmetic agreement would survive it. What it does establish is that the +depth-clamped construction and the tagged construction are computing the same +quantities to the accuracy of the less precise of the two, so the tag/forbidden +lumping is not silently changing the observable. A 1e-12-level agreement between +a 389391-state and a 71-state description of the same law is also the clearest +statement available of how much the age bookkeeping was buying. + +## 5. The section 6.3 moment limit, now tested on uncensored moments + +The point of the delivered construction for us is section 2's +`nu = alpha Z b`, `m1 = alpha Z^2 b`, `m2 = alpha (2Z^3 - Z^2) b`, which give +`E[L]` and `CV^2` at every closed width with no height cutoff. That extends the +moment-limit test from four families on truncated w=4..7 data to six families on +all-height w=2..8 data. + +Write `T = pi/3 - 1 = 0.04719755119659775` and +`R_w = (CV^2 - T) * w`. Model A (`CV^2 = T + c/w`) makes `R_w` a constant. +Model B (`CV^2 = c/w`, i.e. the ratio tends to zero) forces `R_w` to fall at +slope exactly `-T` per unit width. + +| graph | p | widths | R_w at w=4,5,6,7,8 | slope of R_w | rms(A) | rms(B) | verdict | +|---|---|---:|---|---:|---:|---:|---| +| NN | 1/8 | 4-8 | 0.66857, 0.72404, 0.74127, 0.73550, 0.71725 | +0.0109 | 0.0258 | 0.0847 | model A | +| NN | 1/4 | 4-8 | 0.65687, 0.66484, 0.65916, 0.64985, 0.63973 | -0.0049 | 0.0086 | 0.0600 | model A | +| matching | 1/16 | 4-8 | 0.27734, 0.28788, 0.29296, 0.28981, 0.28399 | +0.0015 | 0.0054 | 0.0691 | model A | +| matching | 1/8 | 4-8 | 0.52247, 0.54774, 0.55598, 0.55555, 0.55046 | +0.0064 | 0.0124 | 0.0762 | model A | + +Model B requires `R_8 = R_4 - 4T = R_4 - 0.1888`, i.e. about 0.4798 / 0.4681 / +0.0886 / 0.3337. Measured: 0.7173 / 0.6397 / 0.2840 / 0.5505. The gap is +0.17--0.24 in `R_w` units, roughly an order of magnitude larger than the whole +observed drift of `R_w` across four widths, and model A's rms is 3--13 times +smaller than model B's in every family. Model B is excluded; model A is +consistent. + +The two p=1/2 families have only widths 2--4 in the delivery, so they cannot +enter a slope test; they are excluded rather than reported as support. + +Two things the table does *not* say. First, `R_w` is not flat: NN p=1/8 rises +from 0.6686 to 0.7413 by w=6 and then falls, and NN p=1/4 falls monotonically +after w=5. A one-parameter `c/w` correction cannot produce a turnover, so the +finite-width drift is not a clean single power and no correction exponent should +be quoted from it. Second, the gap at w=8 is between model A and model B, not +evidence for `T` itself: a family can fit model A well while `c(p)` is still far +from its limit. Section 6.3's conjecture remains neither proved nor refuted — +it is refuted only in the strong "ratio tends to zero" reading, which was +already the reading withdrawn in the erratum. + +## 6. What changes, and what is now open + +Changed: the w=8 point of the moment-limit test exists, exactly and without +censoring, so the w=8 span-table build is no longer on the critical path; it is +retained only as a third exact route to the same two numbers. The p=1/2 rows of +our committed spectrum are now known to be censored by 5% and 18% in CV^2 and +must be labelled as such wherever they are quoted. + +Unchanged: the delivered note's section 5 criticisms of the read commit are +accurate. Items 3 and 4 (the `light=True` branch not dividing by `p_den**w`, and +the certificate being computed for the rounded candidate `a/2^k` rather than the +printed `pi`) are the same two defects our erratum found and fixed independently; +the delivered file `tagged-span-resolvent.json` was indeed absent from the read +commit's tree, which is the gap the erratum restored. Item 1 — that a complete +component's span is a maximum-minus-minimum, not a sum of irreducible piece +heights — targets a mechanism reading, not the computation; the erratum had +already withdrawn that mechanism, and the height-by-height agreement in section 4 +above — where a 389391-state age-tracking chain and a 71-state tagged chain land on +the same `d_h` to 1e-12 — confirms the truncated chain was measuring the true span +all along. + +Open, in rough order of value: + +1. Width 9, past the delivered `build()` cap of 8, to see whether `R_w` keeps + drifting or plateaus — the cleanest remaining discriminator among + correction exponents. +2. A method independent of linear algebra. Every check above, including the + height-by-height one, is exact rational or float64 arithmetic on one or + another transfer operator; a direct simulation of the cylinder is the only + check that does not share that architecture. +3. The width-8 height-by-height row of section 4, which is currently missing + because no committed truncated w=8 spectrum exists. The delivered tagged + construction can supply the reference side immediately — at NN p=1/4, + `nu = 4.432636548604856e-05`, `E[L] = 4.56334396378038`, + `CV^2 = 0.12716350006804397`, `sum_{h>20} d_h = 1.2246438200402218e-11`, + and at matching p=1/8, `nu = 3.791735919415724e-05`, + `E[L] = 4.711805413158092`, `CV^2 = 0.11600493483091046`, + `sum_{h>20} d_h = 1.3400726036376886e-11`; both close exactly, + `sum(d_h) + tail = nu`. +4. The `psi_w(z,u,v)` joint activity of the delivered section 3, whose + `Corr(L,K)^2 ~ 0.867` at NN w=4 is the frontier note's conjecture J input. + The delivered direct-activity transfer closes only to width 5 or 6, so this + is where a width extension would buy something the resolvent does not + already give. + +Boundary. This note certifies arithmetic, mutual consistency, and platform +robustness of the delivered finite construction. It does not verify the +unique-anchor pathwise theorem, the completeness of the tagged automaton beyond +the recorded widths, or any asymptotic statement. "Model A consistent" means +consistent with the finite data, not established. diff --git a/docs/manuscripts/geometric-balance/tagged-span-resolvent.md b/docs/manuscripts/geometric-balance/tagged-span-resolvent.md new file mode 100644 index 00000000..be260e1c --- /dev/null +++ b/docs/manuscripts/geometric-balance/tagged-span-resolvent.md @@ -0,0 +1,397 @@ +# A complete-component span law without an age cutoff + +2026-09-13. Continuation of #739, after reading the span-spectrum delivery at +`7226a2c6d099535f34486eccb1bd996f7affda13`. This is a new exact finite-state +construction and its executed finite controls. It is not a proof of the +fixed-p Brownian sewing conjecture, a publication-priority claim, or an +independent certification of the previous large solver. + +The main change is to stop keeping the ages of *all* active components. +One candidate component is followed, with forbidden ancestors ensuring a +unique lowest-row anchor. A second, independent transfer sums the exact +complete-component activities with two-row boundary memory. Both describe +all heights using one fixed operator; neither has a depth parameter. + +## 1. The object and the unique anchor + +Use independent site percolation on `C_w x Z`, with NN or matching NN+NNN +adjacency and lifted horizontal edge displacements retained. All statements +below use `0= 0, R 1 <= (1-delta)1, delta=(1-p)^w>0. + +The same property holds after the all-p exit-law-preserving lumping used +in the implementation. This lumping preserves distributions, not the state +path of a fixed mask word. We make no minimal-realization claim. + +Write Z=(I-R)^(-1). A component with span h continues for h-1 steps after +its row-zero source and retires on the next step. The pathwise theorem gives + + d_h = alpha R^(h-1) b, (1) + D(z) = sum_(h>=1) d_h z^h = z alpha (I-zR)^(-1) b, (2) + nu = alpha Z b. (3) + +These are identities for all heights, not fits to the first few bins. In +particular the complete-component span distribution is rational at each +closed finite width. General rational absorption-time formulae are classical +phase-type theory [PH]; the contribution here is the candidate/forbidden- +ancestor realization of the *correct complete site-component Palm law*. + +### 2.1 All moments and all omitted-tail moments + +Unnormalised raw moments of order zero, one and two are + + m0 = alpha Z b, + m1 = alpha Z^2 b, + m2 = alpha (2Z^3-Z^2)b. (4) + +For k>=1, the factorial moment is + + sum_h (h)_k d_h = k! alpha R^(k-1) Z^(k+1) b. (5) + +Thus E L=m1/m0 and Var L=m2/m0-(m1/m0)^2. There is no cutoff bias. +For a reporting cutoff H, rather than dismissing a small tail-bin mass, +compute its contributions exactly: + + sum_(h>H) d_h = alpha R^H Z b, + sum_(h>H) h d_h = alpha R^H (H Z+Z^2)b, + sum_(h>H) h^2 d_h + = alpha R^H [H^2 Z+(2H-1)Z^2+2Z^3]b. (6) + +A small tail probability alone never bounds its first or second moment. +Here the missing moments are returned by the same resolvent. + +### 2.2 The height-window activity is now directly computable + +For the earlier complete-component window sum Xi_(w,H), including its +external boundary in the infinite cylinder, + + Xi_H = sum_(h<=H)(H-h+1)d_h + = alpha[(H+1)Z-Z^2+R^(H+1)Z^2]b. (7) + +This reproduces Xi_H-Xi_(H-1)=sum_(h<=H)d_h. At fixed w, + + Xi_H = nu[H+1-E L] + alpha R^(H+1)Z^2 b. (8) + +The intercept of the large-height activity therefore contains the full +mean span, including branches. Equations (2) and (7) refer to propagation +in the **vertical height**, not a derived horizontal OZ renewal. They do +not prove a w^(-1/2) prefactor as w increases. + +### 2.3 Exact Palm sampling, with no burn-in or rejection + +Let h=Zb. Remove states with h_i=0. Then + + R*_ij=R_ij h_j/h_i, b*_i=b_i/h_i, + alpha*_i=alpha_i h_i/nu + +define a stochastic absorbing chain with initial mass one. Its accepted +absorption time has distribution d_h/nu. For a physical sample retain the +individual source-row masks and individual transition masks, weighting each +by the corresponding h value; do not sample only a representative lumped +mask word. + +The product of these probabilities telescopes to + + Q(source rows, anchor, future rows) + = product_of_original_Bernoulli_row_weights / nu + +for every successful trajectory. The unique-anchor theorem then supplies +the complete-component Palm distribution, not a seam- or size-biased one. +The included exact-Fraction sampler records the original rows; independent +lifted-graph BFS recovers the actual component and checks its full span. +A row safety cap raises rather than returning a censored sample. + +This is an ordinary Doob conditioning of a finite chain after its model +mapping has been proved. It does not assert that building the finite chain +at arbitrarily large w is cheap. + +## 3. Independent sewing through direct component activities + +There is a second representation which does not introduce a random +surrounding environment or forbidden colours. A finite selected component +is processed row by row. The state stores its frontier connectivity and +winding, plus the preceding row's selected-site mask. Empty interior rows +are impossible for a connected nearest-row component. If any selected +component retires while another selected frontier component remains, reject: +it can never reconnect. At final retirement require exactly one connected +component and nonzero winding. + +For row masks A,B,C (previous, current, next), write S(B) for horizontal +neighbours of B, and E4(B)=B, E8(B)=B union left(B) union right(B). +The distinct boundary sites in the current row are exactly + + boundary(A,B,C) = [S(B) union E_G(A) union E_G(C)] minus B. (9) + +Finalise the weight u^|B| v^|boundary(A,B,C)| when the next mask is known. +The source additionally contributes v^|E_G(first)| for the external bottom +row. The terminal transition includes v^|E_G(last)| for the external top +row. Thus a valid path has weight u^|C| v^|boundary C|, with each vacant +boundary site counted once. Other occupied components in the random +realization need not be enumerated at all. + +Let Q_w(u,v) be the resulting nonnegative matrix, c_w its source and e_w +its successful exit vector. Then the formal series identity is + + Psi_w(z,u,v) + = sum_(C anchored,minrow=0,winding,connected) + z^L(C) u^|C| v^|boundary C| + = z c_w(u,v) (I-zQ_w(u,v))^(-1) e_w(u,v). (10) + +At u=p,v=1-p, Psi_w=D(z) from (2). The two representations have different +state spaces and transition rules. Q is not generally substochastic, so +the tagged-chain reset certificate must NOT be blindly applied to Q. +Its physical series converges: fixed-width empty-row bounds give an +exponential tail for L, and |C|<=w L, |boundary C|<=8|C|. This also ensures +local convergence in the occupation and boundary fugacities near a fixed +physical point. A finite reachable/co-reachable nonnegative realization +therefore has spectral radius below one there. + +The coefficients of (10) give joint complete-component observables, not +only the marginal span. For example, derivatives with respect to log u +and log v give E|C| and E|boundary C|, and their log-Hessian is the +corresponding covariance matrix. Along the physical p curve, + + d(log nu)/dp = E|C|/p - E|boundary C|/(1-p). (11) + +This is an exact fixed-width score identity. Passing its derivatives to a +w->infinity limit is a separate regularity question. + +The implementation gives exact all-height moments of (L,K), K=|C|, using +linear solves for the derivatives of (10). For NN p=1/4, width four: + + E L = 3.1371029435733466..., + E K = 7.238700819343702..., + Corr(L,K)^2 = 0.8674117242489037.... + +All are exact rationals in the result file. A finite positive correlation +is neither an extensive-span law nor a refutation of a proposed asymptotic +shape/occupation decoupling. + +## 4. Completed finite results and numerical certificates + +Tagged reachable states, followed by the all-p exit-law lumps: + +| w | tagged states | NN lumps | matching lumps | +|---|---:|---:|---:| +|2|5|3|2| +|3|13|5|3| +|4|43|10|7| +|5|131|17|15| +|6|411|36|33| +|7|1275|71|68| +|8|3963|161|152| + +Each recorded state has every row successor resolved. Width-eight builds +and two-parameter certificates took seconds to tens of seconds here; this +is not a like-for-like benchmark against the team's other hardware. The +structural saving is the absence of all component ages and of D_MAX. + +For NN p=1/4 and matching p=1/8 the all-height results are: + +| graph | w | E L | Var(L)/(E L)^2 | +|---|---:|---:|---:| +|NN|4|3.1371029435733466|0.2114153618009875| +|NN|6|3.9380183817628125|0.1570569824332094| +|NN|8|4.56334396378038|0.1271635000680440| +|matching|4|3.2422208646738944|0.1778141825223629| +|matching|6|4.060109171060249|0.1398612019890094| +|matching|8|4.711805413158092|0.1160049348309105| + +These reproduce the finite-width trend in the returned note, using a new +operator without height truncation. They still do not determine a limiting +shape. In particular none of these widths is claimed asymptotic. + +At width two the full all-p generating functions are compact. Write q=1-p: + + D_NN(z) = p^2 q^4 z [1+p(1+p)z]^2 + /[(1-pqz)(1-pz-p^3qz^2)], + D_matching(z) = p^2 q^4 z [1+q(2-p)z] + /[(1-p(2-p)z)(1-pqz)]. (12) + +At p=1/2 both total densities are 7/48, but their span means are 76/21 and +100/21. Equal complementary densities do not imply equal shape laws. +The p=1/2 matching calculation is an exact fixed-cylinder control, NOT a +planar-subcritical matching example. + +### 4.1 Certification at widths five through eight + +Write A=I-R. Since ||A^(-1)||_infinity<=1/delta, approximate solutions +x1~A^(-1)b, x2~A^(-1)x1, x3~A^(-1)x2 have errors bounded recursively by + + e1=||b-Ax1||_inf/delta, + e2=(||x1-Ax2||_inf+e1)/delta, + e3=(||x2-Ax3||_inf+e2)/delta. (13) + +Multiply by ||alpha||_1 to enclose m0,m1,m2, using errors e1,e2,2e3+e2. +Positive-interval division then encloses means and variances. The implementation +uses a floating solve, then one correction driven by the **exact rational** +residual, storing the sum of two dyadic rationals. The final residual is +recomputed exactly for that stored vector. It is not a certificate for a +different, pre-rounding vector. Width-eight CV^2 interval widths in the two +main controls are about 2.3e-24 and 1.6e-25. This is arithmetic control on +the new finite operator, not an asymptotic error estimate. + +Widths two through four and the small direct-activity solves use Fraction +Gaussian elimination throughout. Mean-scaled Laplace values and Brownian +comparison integrals in the report are separately labelled floating/high- +precision diagnostics; they are not covered by (13). + +## 5. Reading the returned span calculation accurately + +The mean and CV trends in `span-spectrum-diagnostic-20260913.md` are useful. +Two interpretations and implementation details must not be carried forward: + +1. A complete component's span is not the sum of irreducible-piece heights. + It is a maximum minus a minimum after placing the pieces at their actual + transverse positions. See the separate frontier note for the deterministic + stability bound and the precise conditional theorem. +2. A decreasing finite-width CV^2 above pi/3-1 cannot identify its limiting + value, whether zero or pi/3-1. Widths 2--4 at p=1/2 do not establish a + non-diffusive asymptotic regime. +3. The `light=True` branch of `span_spectrum_solve.py` at the read commit + passes its integer-weight matrix (converted to float32) into `stationary` + without division by p_den^w. The normal branch does divide. Hence light + is not using a row-stochastic kernel as written. This is source inspection, + not evidence that a particular reported run used that branch. +4. Its certificate is computed for a rounded vector a/2^k, while the displayed + probabilities are from pi. Add the explicit evaluation discrepancy or + report the certified candidate. A single-bin reward bound is not by itself + a total-moment bound. The new implementation avoids these ambiguities. +5. The headline `results/geometric-consistency/span-spectrum-20260913.json` + was not present at the read commit; its nested directory contained only + validation tables. The new report is fully present and independently + regenerated. This does not erase the old data or assert that they never + existed on a team machine. + +No remote job was stopped and no old result file is overwritten by this work. + +## 6. Reproduction and evidence boundary + +Files in this additive delivery: + +- this note and `span-resolvent-frontier.md`; +- `scripts/tagged_winding_span.py` and `scripts/tagged_span_controls.py`; +- `tests/test_tagged_winding_span.py`; +- `results/geometric-consistency/tagged-span-resolvent.json`. + +From a checkout with these files: + + python -m unittest discover -s tests -p 'test_tagged_winding_span.py' -v + OPENBLAS_NUM_THREADS=1 python scripts/tagged_span_controls.py \ + --output /tmp/tagged-span-new.json + +Python 3.10+; core exact construction/sampling uses the standard library. +The full report/tests additionally use NumPy, SciPy, SymPy and mpmath, listed +here rather than silently adding a project-wide dependency. Results refuse +to overwrite an existing output. No binary tables or old source snapshots +are required. + +Executed: 18,754 nonempty shape masks with independent graph-potential BFS; +11,904 complete source-row words checking the actual accepted anchors; +66 exact physical-activity parameter controls; 18 full two-fugacity +coefficient comparisons; all tagged closures through width eight; direct +activity/marked-resolvent agreement through width five; eight exact Palm +trajectory controls; 17 local tests. The small complete-word and shape +counts are controls, not Monte Carlo probability estimates. No full +Matching-One CI, fresh external peer acceptance or priority certification +is claimed. + +## Sources + +[PH] R. S. Maier, *The algebraic construction of phase-type distributions*, +Communications in Statistics—Stochastic Models 7 (1991), 573--602, +doi:10.1080/15326349108807207. General rational absorption-time representations +are prior art; this note proves the model-specific anchor mapping. + +[CIV] M. Campanino, D. Ioffe, Y. Velenik, *Fluctuation theory of connectivities +for subcritical random cluster models*, Ann. Probab. 36 (2008), 1287--1321, +arXiv:math/0610100v2. Section 1.3.3, equation (1.10), Theorem C were read in +full and rendered; the model in section 1.1 is bond random cluster. They do +not automatically settle the periodic site-component sewing used here. diff --git a/docs/manuscripts/geometric-balance/two-birth-reduction.md b/docs/manuscripts/geometric-balance/two-birth-reduction.md new file mode 100644 index 00000000..7ebdd1f4 --- /dev/null +++ b/docs/manuscripts/geometric-balance/two-birth-reduction.md @@ -0,0 +1,361 @@ +# Two sharp births, not an arbitrary broad threshold law + +2026-09-13. A continuation of the **same** geometric-balance manuscript (#739). +The new organizing statement here is a direct application of the published +Friedgut--Kalai sharp-threshold theorem, followed by finite identities and +consequences. It is not presented as a new sharp-threshold theorem or as a +novelty certificate. No new continuum model, source dictionary, or width scan +is introduced. + +## 1. The next question, and what is settled here + +The main manuscript distinguishes the balance root from concentration of the +whole birth-time mixture. It gives the full-law geometric criterion +`log N / ell -> 0`, and endpoint splitting for `log N / ell -> infinity`. +The intermediate regime is not a reason to fit an unrestricted profile. + +For an honest integer-period square-site torus, write + +\[ + f_1(p)=\Pr_p(r\ge1)=1-P_0(p),\qquad f_2(p)=\Pr_p(r=2)=P_2(p). +\] + +Both are increasing nonconstant Boolean-event probabilities on **N independent +site variables**. The translation group `Z^2/Lambda` acts transitively on +those variables and preserves either event. Translation acts trivially on +ambient homology, but preserves its rank; no rotation of the period lattice +or irreducibility assumption on its homology representation is needed. + +Let `T1 <= T2` be the two birth times in the usual uniform-label coupling. +Define their unique medians by + +\[ + f_1(a_N)=\tfrac12,\qquad f_2(b_N)=\tfrac12. +\] + +Finite monotonicity gives `a_N <= b_N`. The mixture CDF and its median are + +\[ + F_N=\tfrac12(f_1+f_2),\qquad q_N=F_N^{-1}(1/2). +\] + +The main conclusion below is uniform over the period shape: + +\[ + W_1\!\left(\mathcal L(T),\tfrac12\delta_{a_N}+\tfrac12\delta_{b_N}\right) + \le \frac{C_{\rm FK}}{\log N}. \tag{1} +\] + +Here `T` is a fair independent selection of T1 or T2. The constant is the +universal constant in the imported theorem; it is NOT estimated by our tiny +controls. At finite precision and small N the bound may be uninformative. +Equation (1) is in the **unscaled probability coordinate p**. It does not imply +an affine closure of standardized quantile shapes or of finite-size response +jets. In particular it does not undo #706's finite nonaffine shape result. + +## 2. Precisely the imported theorem + +Friedgut and Kalai (1996), in the theorem stated on the first page and in the +publisher abstract [FK], prove that for a monotone event A invariant under a +transitive group on N Boolean coordinates, there is an absolute C_FK such that + +\[ + \mu_p(A)>\epsilon,\qquad + q\ge p+C_{\rm FK}\frac{\log(1/(2\epsilon))}{\log N} + \quad\Longrightarrow\quad \mu_q(A)>1-\epsilon, \tag{2} +\] + +when the displayed parameters lie in [0,1]. This exact formulation is also +stated as Theorem 6 of Duncan--Kahle--Schweinhart [DKS]. We read the publisher's +statement and DKS section 1.3; the original AMS PDF was not fetched successfully. +The general theorem, not DKS's model-specific conclusion about synchronized +homological thresholds, is used here. + +Only product measure, event monotonicity and coordinate transitivity are +needed for this application. Site sharpness, RSW and matching duality are +**not** inputs to equations (1)--(8). They remain inputs to the separate +geometric conclusions in the main manuscript. + +## 3. Concentration of each birth, with a rate + +Put `L=log N`, let A be either rank event, and let theta be its median. For x>0 +choose `epsilon = exp(-L*x/C_FK)/2` in (2). Starting from the median bounds +the upper tail. If `mu_(theta-x)(A)>epsilon`, (2) would give +`mu_theta(A)>1-epsilon>1/2`, a contradiction, bounding the lower tail. A tail +whose parameter is outside [0,1] is simply zero. Thus + +\[ + \Pr(T_j\le\theta_j-x),\;\Pr(T_j>\theta_j+x) + \le\tfrac12 e^{-Lx/C_{\rm FK}},\qquad + (\theta_1,\theta_2)=(a_N,b_N). \tag{3} +\] + +Consequently, for every positive integer k, + +\[ + \mathbb E|T_j-\theta_j|^k + \le k!\left(\frac{C_{\rm FK}}L\right)^k. \tag{4} +\] + +This follows by integrating the tail: `E X^k = integral k x^(k-1) Pr(X>x) dx`. +In particular the mean-median discrepancy is at most C_FK/L and the variance +is at most `2 C_FK^2/L^2`. + +These estimates do **not** assert independence of T1 and T2. Their joint law +is within `2 C_FK/L` of the point `(a_N,b_N)` in W1 with the l1 metric, +by their actual common-label coupling. Correlations of rescaled fluctuations +can survive. The finite 2x3 control has covariance `1123/58800`, not zero. + +Couple T to the corresponding median using the same fair selector. Equation +(4) proves (1), and similarly W_k is at most `(k!)^(1/k) C_FK/L`. +Every convergent subsequence `(a_N,b_N)->(a,b)` therefore satisfies + +\[ + \mathcal L(T_1,T_2)\Longrightarrow\delta_{(a,b)},\qquad + \mathcal L(T)\Longrightarrow\tfrac12\delta_a+\tfrac12\delta_b. \tag{5} +\] + +Conversely any subsequential weak limit of the mixture has this form, by +compactness of the two centers. Centers need not converge on an arbitrary +oscillating geometric sequence. The two atoms may coincide. This is not an +assertion about the number of physical fields or Markov states. + +There is also a path statement. If +`r_det(p)=1_{p>=a_N}+1_{p>=b_N}`, then under the same uniform labels + +\[ + \mathbb E\int_0^1 |r(p)-r_{\rm det}(p)|\,dp + \le\frac{2C_{\rm FK}}L. \tag{6} +\] + +This is an integrated-p bound, not a uniform-in-p approximation at jumps. +For `a_N+x <= p <= b_N-x`, (3) gives `P1(p)>=1-exp(-L*x/C_FK)`. +The rank-one plateau is caused by separation of two individually sharp +transitions, not by a broad transition of either Boolean event. + +## 4. A finite data reduction already available in rank-birth archives + +Set `Delta_N=b_N-a_N`, `G_N=integral_0^1 P1(p) dp`, and let K1,K2 be the +first and second ambient-rank birth **occupation indices** in a uniform +random permutation of the N sites. Then + +\[ + G_N=\mathbb E(T_2-T_1) + =\frac{\mathbb E(K_2-K_1)}{N+1},\qquad + |G_N-\Delta_N|\le\frac{2C_{\rm FK}}L. \tag{7} +\] + +The first equality is the survival-function identity. Conditional on the +permutation, the kth uniform order statistic has mean k/(N+1), giving the +second. It handles a simultaneous rank jump. K means occupation index here, +not elapsed physical time, and neither birth is replaced by a directional +wrapping proxy. + +No new source or simulation is needed to read G_N from an archive that +already stores these correctly typed birth indices. For occupation-count +censuses `c_(1,k)`, the same exact identity is + +`G_N = (1/(N+1)) sum_(k=0)^N c_(1,k)/binom(N,k)`. + +The mixture quartiles give another version of the same asymptotic gap: + +\[ + a_N-\frac{C_{\rm FK}\log2}{L}\le Q_N(1/4)\le a_N, + \qquad b_N\le Q_N(3/4)\le b_N+\frac{C_{\rm FK}\log2}{L}, +\] +\[ + \Delta_N\le\operatorname{IQR}(F_N) + \le\Delta_N+\frac{2C_{\rm FK}\log2}{L}. \tag{8} +\] + +For example, `f1/2 <= F <= f1` brackets Q(1/4) between the first-birth +quarter-quantile and median. The symmetric argument brackets Q(3/4). +The factor log2 then comes directly from (2). + +These are asymptotic absolute-error relations, not a license to equate finite +thermal jets, IQR and the rank gap without their finite errors. C_FK is not +a calibrated finite-sample error bar. + +For completeness the mixture variance separates exactly: + +\[ + \operatorname{Var}(T)=\tfrac12\operatorname{Var}(T_1) + +\tfrac12\operatorname{Var}(T_2) + +\tfrac14[\mathbb ET_2-\mathbb ET_1]^2. +\] + +Equations (3)--(4) imply an error of at most +`C_FK*Delta_N/L + 3 C_FK^2/L^2` from `Delta_N^2/4`. +A macroscopically broad mixture need not mean either birth is noisy. + +## 5. What this adds to the geometric main theorem + +For every finite torus, + +\[ + a_N\le q_N\le b_N. \tag{9} +\] + +At a_N, `F<=1/2`; at b_N, `F>=1/2`. Thus when ell_N->infinity, Theorem A +of the manuscript puts p_c between every limiting pair of birth centers. +It does **not** make q_N their midpoint. A plateau discards the exponentially +small tail odds that can determine the finite median. + +Combining the reduction with the geometric theorem in #739 gives, for +N_n->infinity, + +\[ + \frac{\log N_n}{\ell_n}\to0 + \quad\Longleftrightarrow\quad \Delta_n\to0 + \quad\Longleftrightarrow\quad G_n\to0 + \quad\Longleftrightarrow\quad \operatorname{IQR}(F_n)\to0. \tag{10} +\] + +Here is the potentially missing step in the reverse direction: if ell has a +bounded subsequence, #739's forced-path packing gives T1->0 and T2->1 on that +subsequence, so Delta->1. Hence Delta->0 forces ell->infinity. Equation (9) +and root consistency then force both centers to p_c, and Theorem B yields +the geometric criterion. These geometric inputs are author-supplied results +of #739; equation (10) is not an independent validation of its corridor proof. + +At extreme elongation the pair is (0,1). At finite positive log N/ell we now +know the possible shape of every subsequential unscaled law: two equal atoms, +with an undetermined pair of locations. The main remaining problem is the +location of those centers, not an unrestricted limiting profile. + +## 6. Why transitivity does not synchronize the births + +Translation is transitive on sites but acts trivially on homology. It sharpens +each rank event separately. It does not require its two threshold locations +to coincide. DKS explicitly separates transitivity from the extra point-group +symmetry of homology in its introduction and surjectivity argument [DKS]. + +A short finite comparison illustrates the extra symmetry. Suppose the actual +period lattice is invariant under a quarter-turn J. Split rational homology +lines into pairs `{l,Jl}`, choosing one line from each pair for a class A, +and its rotate for class B. Define E_A/E_B to mean the ambient image contains +a line in the respective class. These events are increasing. Their union is +`r>=1`, their intersection is `r=2`, and quarter-turn symmetry gives equal +probabilities. Harris association therefore gives, at every p, + +\[ + P_2(p)\ge\Pr(E_A)\Pr(E_B)\ge\tfrac14[1-P_0(p)]^2. \tag{11} +\] + +This is the two-dimensional elementary instance of DKS's symmetry strategy, +not a new general surjectivity theorem. At a_N it implies `P2>=1/16`. +Applying (2) with epsilon=1/32 shows + +`b_N-a_N <= C_FK log(16)/log N`. + +Such quarter-turn symmetry is real on Gaussian ideal quotients. It is absent +on a generic elongated or tilted period lattice. Changing a period basis does +not create it. This explains why importing a synchronized-threshold theorem +from symmetric tori would answer a different question. + +## 7. A quantitative first step in the unsolved intermediate regime + +For axial periods (w,0),(0,m), let w->infinity and `log m / w -> d` with +`00)\le + N\frac{D}{D-1}\frac{[(D-1)p]^w}{1-(D-1)p}. \tag{12} +\] + +It is an overcount, which is appropriate for this upper bound. It also works +for the matching graph: each diagonal changes either coordinate by at most +one, so a nonzero axial period still requires at least w steps. D is 4 on NN +and 8 on matching. Fully occupied horizontal rows, on disjoint site sets, +give the other bound `P0 <= (1-p^w)^m`. + +Using the exact matching-complement relation between birth medians, every +subsequential pair (a,b) obeys + +\[ + \frac{e^{-d}}3\le a\le\min\{p_c,e^{-d}\},\qquad + \max\{p_c,1-e^{-d}\}\le b\le1-\frac{e^{-d}}7. \tag{13} +\] + +For example d=log4 gives `1/12 <= a <= 1/4` and +`3/4 <= b <= 27/28`. These are proven broad brackets, not predictions of +exact center values. The constants 3 and 7 are walk-count bounds, not measured +surface tensions. The relations do NOT establish convergence of a_n,b_n for +all sequences with the same d, and do not identify the equality case in a +putative cost-versus-volume transition. + +## 8. Finite controls, not additional asymptotic evidence + +The existing width-two local matrix gives + +`x=p(1-p), lambda_±=p(1±sqrt(1+4p(1-p)))/2`, + +`P0=(1-p^2)^m-2*x^m`, + +`P2=lambda_+^m+lambda_-^m-x^m`. + +The companion script uses those already established #705 formulas at +m=2,4,8,16,32,128. This is not a new state engine or a new circumference. +Selected values (full values are in the result JSON): + +| m | a_m | q_m | b_m | integral P1 | +|---:|---:|---:|---:|---:| +| 4 | 0.39543672 | 0.56386499 | 0.71750418 | 0.29523810 | +| 16 | 0.20590464 | 0.56519772 | 0.86713870 | 0.63896753 | +| 128 | 0.07348861 | 0.56519772 | 0.95578173 | 0.87423968 | + +Width 2 is fixed, so q_m is not approaching the infinite square-site p_c. +The example illustrates how separated sharp births and an internal balance +root coexist; it is not an extrapolation test of (10). + +Independent graph-potential censuses of 2x2,2x3,2x4 (336 configurations total) +check the formulas, exact beta integrals and normalization. All 720 orders on +2x3 independently verify `E(K2-K1)/(N+1)=3/14` and retain nonzero birth-time +covariance. Seven targeted tests pass. Numerical roots/quadratures are computed +at 80 digits and selected values are recomputed at 110; they are not interval +certificates. Full repository CI has not been run for this addition. + +## 9. One next research target + +Keep the work in #739. The next target is whether the two centers have limits +on exponentially elongated sequences and, when they do, which **microscopic +winding cost** determines them. Start with the axial finite-d family and only +then ask about orientation dependence. Do not infer these costs from a +fixed-width eigenvalue or from a continuum cusp formula with another order of +limits. Equations (12)--(13) are the completed elementary start, not a solution +to the center-location problem. + +No new production is requested here. Existing ambient-rank birth archives can +already supply a_N,b_N and G_N where both births are recorded; do not substitute +directional wrapping times. The balance-root theorem and its independent +proof review remain intact. Higher source orders, more Jordan examples, and +new generic control machinery are not needed to answer this next question. + +## References and claim scope + +[FK] E. Friedgut and G. Kalai, *Every monotone graph property has a sharp +threshold*, Proc. AMS **124** (1996), 2993--3002, +https://doi.org/10.1090/S0002-9939-96-03732-X . The exact transitive-event theorem +is printed in the publisher abstract: +https://www.ams.org/journals/proc/1996-124-10/S0002-9939-96-03732-X/ . +Publisher theorem statement read; full original PDF not retrieved this round. + +[DKS] P. Duncan, M. Kahle and B. Schweinhart, *Homological percolation on a torus: +plaquettes and permutohedra*, arXiv:2011.11903v4, +https://arxiv.org/html/2011.11903v4 . Theorem 6 is precisely (2); section 1.1 +and the section-3 surjectivity discussion distinguish coordinate transitivity +from the homology point-group argument. Those sections were read; their +model-specific simultaneous-threshold theorem is not imported to arbitrary +integer-period square-site tori. + +The generic sharpness input, phase separation through multiple Boolean +events, order-statistic integral and symmetry mechanism are prior tools. +This note supplies their explicit consequences for the manuscript's exact +observable and narrows the remaining research question. No priority claim, +new critical exponent, original-U identification, or complete finite-profile +closure is made. diff --git a/docs/manuscripts/geometric-balance/winding-intensity-and-prefactor.md b/docs/manuscripts/geometric-balance/winding-intensity-and-prefactor.md new file mode 100644 index 00000000..318cb6ec --- /dev/null +++ b/docs/manuscripts/geometric-balance/winding-intensity-and-prefactor.md @@ -0,0 +1,555 @@ +# Count the component before assigning its prefactor + +2026-09-13. Continuation of the **same** geometric-balance paper (#739). + +The earlier fixed-d Poisson/Gumbel note leaves the cylinder intensity +`nu_w^G(p)` as the microscopic object controlling the finite centre. This +note makes that object explicitly computable, identifies an exact +complementary-count constraint on the crossover, and separates a proved +renewal-loop calculation from the still missing SITE-cluster sewing theorem. +The current delivery does **not** certify a site prefactor exponent or a +near-critical Gumbel limit. + +## 1. Results and one correction + +**Actual site model, completed here.** A one-frontier transfer retains the +connectivity, horizontal lift gains, and existing winding flag of each active +component. A reward is issued only when a winding component is permanently +retired. For widths 2,3,4 this has respectively 6,14,38 reachable states for +each of G4=NN and G8=NN+NNN. Complete successor tables close exactly. Common +homogeneous row-weight/reward lumpings have 3,4,7 states. Their stationary +rewards give rational functions of p for the actual infinite-cylinder +component intensities. These are sufficient representations, not claimed +minimal positive or linear realizations. + +**Prior topology, with useful consequences.** The classification already +printed in Mertens--Ziff [MZ, section II] gives, for an honest finite torus, + + W4(omega)-W8(omega^c)=r4(omega)-1, (1.1) + +where W counts components with nonzero ambient homology. It implies +`nu4_w(p)=nu8_w(1-p)`, equality of complementary count pressures, and a +rigorous obstruction to independent two-colour Poisson counts at one common +parameter. Neither the classification nor the idea of matching topology is +claimed new. + +**Explicit renewal object, completed here.** For a positive-length, +aperiodic, transversely symmetric finite-range renewal kernel, the +once-per-closed-loop coefficient with the correct horizontal translation +factor has prefactor `1/sqrt(2*pi*D*w)`. This is a direct coefficient/Laplace +calculation. It is NOT yet an identification of percolation components with +those renewal loops. That identification is the precise external task #740. + +**Correction to the preceding conditional displacement formula.** Mere +C1 regularity at a does not justify an `o(1/w)` remainder after linearizing +at a displacement of size `log(w)/w`. The exact mass-inverse formula in +section 7 is valid under the previous prefactor hypothesis and a local +inverse-Lipschitz bound. Its linear version additionally needs a Taylor +remainder of order `o(1/w)` there, for instance C^{1,alpha} regularity. This +does not affect a finite-median-centred window of size `1/w`, which only +uses differentiability. A concrete C1, locally semiconcave countercontrol is +included. + +## 2. A component-retirement transfer for the actual site graph + +### 2.1 Boundary data + +Process spatial rows from bottom to top on `C_w x Z`. Only the current row +is exposed; there is no stored first-row torus seam. Record: + +* which current sites are occupied and their connected-component partition; +* in a component with no horizontal winding, the integer horizontal cut + gain from its first current vertex to each other current vertex; +* a Boolean flag on a component once a nonzero horizontal cycle has appeared. + +Within a winding component, relative gains may be replaced by zero: every +future component meeting it is already winding. This replacement is NOT +permitted in a nonwinding component. It would destroy the distinction, for +example, between row histories `[13,5,13,0]` and `[7,5,13,0]` at width four. +The first has zero horizontal-winding components, the second has one. + +For the new row, add its occupied NN ring edges. Across the old/new interface +add vertical edges (G4), or vertical and both diagonal edges (G8). A cut +gain for an edge from column i to column i+dx is `floor((i+dx)/w)`. Lifted +parallel edges at width two are retained, not collapsed. + +When a component has no representative on the new row, it can never meet +any later row: both graphs have vertical step at most one. Give reward 1 +if that component winds and reward 0 otherwise. Then forget the old row. +Appending a deterministic empty row at the end flushes all active components. + +### 2.2 Why it retains the right count for every continuation + +Replace each processed nonwinding component by a gain-labelled tree between +its exposed vertices. Any future closed path can substitute an old path for +a tree path or vice versa; the difference is a previously existing closed +path. In a nonwinding component that difference has zero horizontal gain. +A winding component stays winding under arbitrary continuation, so its flag +is enough when it merges. Components never split when processed vertices are +forgotten, because the forgotten connecting paths are retained by the +partition. A completely unexposed component cannot reappear. + +Induction on appended rows therefore proves: the cumulative reward plus the +number of active winding components is the number of complete winding +components of the entire finite free-height cylinder. The empty-row flush +returns the exact complete count. This is a statement about component counts, +not just the rank of their union. + +The encoding works whenever its reachable-state exploration terminates. The +returned complete successor table proves termination/closure at each tested +width. It is not an all-width asymptotic state-count formula. For widths +2/3/4, both graphs give the stated 6/14/38 states, all gains in {-1,0,1}, and +1488 total row-transition entries over the six tables. + +### 2.3 Row probabilities and the source-marked kernel + +For row mask b, let `k(b)` be its occupation count and +`a_b(p)=p^{k(b)}(1-p)^{w-k(b)}`. If `tau(s,b)` is the new state and `R(s,b)` +the retirement reward, define + + K_z(s,t)=sum_{b:tau(s,b)=t} a_b(p) exp[z R(s,b)]. (2.1) + +At z=0 the matrix is stochastic. Every state jumps to the empty state with +probability at least `(1-p)^w`; every listed state is reachable from empty. +Hence for 0infinity} Var(W_m)/m=psi''(0). (2.3) + +Changing the initial frontier or flushing the last components has only a +bounded boundary effect on the log generating function. Perron simplicity +near z=0 gives analyticity and the derivatives in (2.3) for these finite +chains. No claim is made that psi''(0)=nu at a fixed small width. + +The implementation computes the variance with exact rational linear algebra. +Writing K_j=partial_z^j K_z|0 and 1 for the constant vector, solve + + (I-K_0)h=K_1*1-nu*1, pi*h=0. + +Then + + psi''(0)=pi*K_2*1+2*pi*K_1*h-nu^2. (2.4) + +### 2.4 What the smaller matrices preserve + +Partition refinement compares, for each old state, the exact integer counts +of row masks for every triple + + (new-row occupied count, reward, next block). + +Equality is a polynomial identity in p, not a numerical test at a few p's. +The resulting 3/4/7-state kernels preserve the joint count/reward law for +any sequence of *row-wise homogeneous* probabilities. + +They need NOT give the same answer configuration by configuration for an +unchanged sequence of fixed row masks. One can relabel/mix same-weight masks +inside a lump. Consequently the verification compares the unreduced transfer +with each physical configuration and the reduced transfer with the complete +occupation/count polynomial. Treating a stochastic lump as a deterministic +pathwise quotient would be a mistake. + +## 3. Exact intensities, not a fitted prefactor + +The NN functions for widths two and three are + + nu_2(p)= p^2(1-p)^2 (p^2+p+1)/(p^2-p+1), (3.1) + + nu_3(p)= p^3(1-p)^3 (p^6+p^3+2p^2+2p+1) + /(p^6-3p^5+3p^4+p^3-p^2-p+1). (3.2) + +The width-four rational function has a degree-27 numerator and degree-19 +denominator. Its exact factored expression and all integer coefficients, +together with both matching-graph functions and the generating state tables, +are stored in `results/geometric-consistency/cylinder-winding-intensity.json`. +They are generated by the actual transfer, not supplied as fitted data. + +At p=1/2: + +| width | NN nu_w | count variance per vertical row | +|---|---:|---:| +| 2 | 7/48 | 343/6912 | +| 3 | 169/1984 | 4769011/122023936 | +| 4 | 323849/5576960 | 186754153229427053/6098108298338304000 | + +For example the width-two asymptotic count Fano ratio is `49/144`, not one. +The finite-width count process is not exactly Poisson. A small-width control +cannot be called evidence for an exact Poisson process at that width. + +Similarly, the no-horizontal-winding probability for a free strip at width +two is `(1-p^2)^m`, because a full row is necessary and sufficient for +horizontal winding there. Its decay rate is `-log(1-p^2)`, not (3.1). +At p=1/2 these are approximately 0.287682 and 0.145833 respectively. The two +objects can have the same leading rare-event rate as w grows without being +identical at fixed w. The component density is the one needed by the +preceding Poisson-window analysis. + +All-p complement identities are checked symbolically. At p=1/4,1/2,3/4, +exact Fraction stationary solves independently agree with the symbolic +functions and with complementary-graph variance rates. + +## 4. Complementary counts constrain the window merger + +### 4.1 The finite topology already in the literature + +[MZ] explicitly states that single-wrapping black and white matching clusters +occur in equal numbers, including spirals, and that a cross-wrapping cluster +is unique and occurs only when the other colour has no wrapping cluster. +On any honest torus the same elementary subsurface argument gives: + + (W4,W8) is (1,0), (0,1), or (k,k) with k>=1. (4.1) + +For completeness, in the rank-one case take a regular neighbourhood of the +occupied graph. Its essential boundary curves are parallel primitive circles. +An essential connected neighbourhood has exactly two essential boundaries; +any further holes bound discs in the torus. Cutting along all essential +boundaries yields an alternating cyclic order of black and white essential +regions. Each has two such boundaries, so their numbers agree. Contractible +regions do not affect this count. The embedded white reduction uses the same +facewise diagonal replacement as the digital-Alexander argument. Rank-two +and rank-zero cases follow from the complement-rank identity and disjointness +of independent essential curves. This proves (4.1) and (1.1). + +This is a reformulation/use of the published classification, not a claim to +have discovered a new homology observable. + +### 4.2 Exact intensity and pressure duality + +Divide the expectation of (1.1) by m and take m->infinity at fixed width. +Closing an open cylinder by its vertical torus seam adds at most 3w edges; +each added edge changes the essential-component count by at most one. Thus +the open-cylinder and torus mean count densities have the same limit. Hence + + nu_w^4(p)=nu_w^8(1-p), 0= exp[-lambda4-lambda8]. (4.5) + +The TV convention is sup over events. This nonvanishing obstruction applies +at every finite size and any limit with both means bounded. It does not +contradict the earlier two-window theorem: that theorem measures BLACK at +one parameter and WHITE at a different, separated parameter. It does prove +that their independence cannot be extended to a common critical window merely +by sending d to zero inside the fixed-d theorem. + +Even when each marginal admits some approximation, their joint law must +respect (4.1). In particular, shared-label coupling is not an optional +normalization detail in a crossover calculation. + +## 5. A closed-renewal prefactor calculation, with its model boundary + +This section identifies exactly what a successful microscopic renewal +mapping would buy. It is a theorem about the following explicit renewal +object, NOT an unproved substitution for the site component activity. + +Let `a(x,y)>=0` have finite support with integer x>=1 and integer y. Assume +reflection symmetry in y, total mass below one, and positive weights at +(1,0),(1,1),(1,-1). Define + + A(z,y)=sum_{x,j} a(x,j) z^x y^j. + +Let R>1 be the unique root A(R,1)=1, set kappa=log R, and normalize +`q(x,j)=a(x,j)R^x`. With expectation under q, put + + mu=E X>0, sigma^2=E Y^2>0, D=sigma^2/mu. + +Define the closed-loop intensity with one unit of transverse length as + + L_w = w [z^w y^0] {-log(1-A(z,y))} + = w sum_{n>=1} (1/n) + sum_{sum x_i=w, sum y_i=0} product_i a(x_i,y_i). (5.1) + +The factor w is horizontal translation; the 1/n removes the marked renewal +cut with the usual weighted cyclic convention. The expression itself fixes +the object even for periodic words. A percolation sewing argument must show +that its own multiplicities match this convention or explicitly correct it. + +**Proposition.** Under these hypotheses, + + L_w = exp(-kappa*w)/sqrt(2*pi*D*w) * (1+O(1/w)). (5.2) + +**Proof.** Take the y^0 coefficient by Fourier inversion. For each theta, + + w[z^w]{-log(1-A(z,e^{i theta}))} + = [z^w] z A_z(z,e^{i theta})/(1-A(z,e^{i theta})). (5.3) + +Near theta=0 the implicit-function theorem gives a simple root R(theta) +near R. Symmetry makes it even and real for real theta sufficiently small. +Expanding A at the root gives + + log R(theta)=kappa+(D/2)theta^2+O(theta^4). (5.4) + +Indeed, differentiating with respect to log z yields mu, while the second +Fourier derivative is -sigma². The pole in (5.3) has principal part +`z/(R(theta)-z)`, so its coefficient is exactly R(theta)^(-w), with leading +amplitude one. Other roots are uniformly farther away for small theta. + +For theta away from zero the triangle inequality is strict at |z|=R: equality +would require identical phases at every support point. The three positive +(1,0),(1,±1) weights force both the phase of z and theta to be zero. Compactness +then supplies a uniform larger coefficient-contour radius away from that +neighbourhood. Those Fourier contributions are exponentially smaller. +Laplace integration of (5.4) yields + + (1/2pi) integral exp[-w(kappa+D theta²/2+O(theta⁴))] dtheta + = R^(-w)/sqrt(2*pi*D*w) * (1+O(1/w)). + +This proves (5.2). More general step supports require their actual lattice +span factors; those are not hidden in the constant. Finite-support is a +sufficient hypothesis here, not the expected final site-renewal class. + +For a finite-state Markov renewal kernel the analogous singular object is +`-log det(I-A)`. A simple Perron crossing again isolates one logarithmic +singularity; however an actual site mapping may involve an infinite internal +state and nontrivial boundary weights. No such mapping is supplied here. + +### 5.1 A completely exact control + +For x=1 and Y uniform on {-1,0,1}, with a common killing weight t in (0,1), + + L_w=t^w c_w/3^w, + c_w=sum_{k=0}^{floor(w/2)} binom(w,k) binom(w-k,k). + +Here D=2/3 and (5.2) has amplitude sqrt(3)/(2sqrt(pi)). The code computes +all coefficients with integers and checks the mass-cancelling contrast below. +For w=8,16,32,64,128, the effective powers approach 1/2 from below; the last +is approximately 0.4983006988 and the normalized amplitude is 0.9985352834. +These are a renewal-model check, NOT site-percolation data. + +Omitting the w factor in (5.1) would change the power from 1/2 to 3/2 without +changing kappa. A two-point decay rate alone cannot determine this counting +normalization. Degenerate transverse variance would also invalidate the +Gaussian prefactor rather than supply the same theorem with D=0. + +## 6. The computation that distinguishes a power without fitting the mass + +Suppose, at a fixed subcritical p, + + nu_w=A w^(-beta) exp(-kappa*w)(1+o(1)). (6.1) + +Then + + R_w=nu_w*nu_{3w}/nu_{2w}^2 -> (4/3)^beta, (6.2) + beta_eff(w)=log(R_w)/log(4/3) -> beta. + +Both log A and the exponential mass cancel algebraically. No pc estimate or +amplitude fitting is used. The finite expression is always defined; its +interpretation as beta uses (6.1). Corrections and possible width arithmetic +oscillations can dominate a small-width contrast, so an agreement at three +widths is not a theorem about w->infinity. + +The concrete external task #741 is exactly two graph/probability inputs, +G4 at p=1/4 and G8 at p=1/8, on w=4,8,12. Both inputs are safely subcritical +by elementary nonbacktracking path bounds. These are not a common-mass pair. +They avoid giant torus simulations and probe the proposed sewing power. + +The reference Python builder was capacity-probed, not physically enumerated, +at widths 5--8. Full state counts were 102,282,786,2214; the all-mask transition +counts were 3264,18048,100608,566784. NN width eight took about 6.7 seconds +on this host and gave 90 stochastic reward blocks. No polynomial algorithm +or cheap width-24 calculation is inferred. At width 12 sparse/site-wise +factorization may be necessary. + +### 6.1 A residual can be turned into an actual rare-density error bound + +The row chain has the common empty-row reset `delta=(1-p)^w`. It is therefore +an L1 contraction by at most 1-delta on zero-mass signed measures. For any +normalized nonnegative candidate pi_hat, let `r=pi_hat*K-pi_hat`. Summing +its propagated residuals gives + + ||pi_hat-pi||_1 <= ||r||_1/delta. + +Consequently + + |pi_hat*g-nu| <= ||g||_infinity ||r||_1/delta. (6.3) + +The implementation supplies this certificate in exact fractions; larger +floating runs must use outward error bounds including matrix-vector and +reward-evaluation rounding. The requested target is absolute error <=1e-8 +on log nu where practical. Merely printing a tiny residual is not a bound on +relative error in a rare event. This is a usable numerical estimate, not a +request for an additional audit framework. + +## 7. Correct centering at order 1/w + +Let (6.1) hold locally uniformly near a with A continuous and positive, +constant beta, kappa(a)=d and kappa locally inverse-Lipschitz. Assume + + log m=d*w+gamma log w+c0+o(1). + +For a fixed intensity level lambda>0 (lambda=-log(1-u) for a first-birth +u-quantile), the exact-mass centering is + + p_w = kappa^{-1}( d + + [(gamma-beta)log w+c0+log A(a)-log lambda]/w ) + + o(1/w). (7.1) + +Here p_w denotes an intensity solution; the earlier uniform Poisson/window +argument transfers it to the corresponding true quantile at a regular +mass point. The proof first brackets p_w within O(log w/w) of a using the +positive lower slope, replaces log A(p_w) by log A(a)+o(1), and uses the +inverse-Lipschitz bound to turn the remaining o(1) logarithmic error into +an o(1/w) p error. This does not linearize kappa at the larger displacement. + +If kappa is C^{1,alpha} near a, alpha>0, and v=-kappa'(a)>0, (7.1) simplifies to + + p_w=a+[(beta-gamma)log w-c0-log A(a)+log lambda]/(v*w) + +o(1/w). (7.2) + +Indeed w*(log w/w)^{1+alpha}->0. The same linear formula is valid with +mere differentiability when the logarithmic coefficient beta-gamma vanishes. +Without either that cancellation or an appropriate Taylor-remainder bound, +(7.2) has not been justified to o(1/w). This corrects that precision claim +in the preceding conditional-prefactor discussion, not its finite-median +Gumbel theorem. + +**Countercontrol.** On h>0 put + + kappa(a+h)=d-h-h/log(e/h), + +and on h<=0 put kappa(a+h)=d-h. On a small neighbourhood it is C1, +strictly decreasing and concave, with derivative -1 at a. Let +`nu_w(p)=w^{-1} exp[-w*kappa(p)]` and `log m=dw`. At intensity one the true +positive displacement h solves + + h+h/log(e/h)=log w/w. + +Then h/(log w/w)->1, but + + w*(h-log w/w)=-w*h/log(e/h) -> -1. + +Thus the linear formula's error is not o(1/w), even under the local +semiconcavity obtained in the prior argument. This is a mathematical +regularity control, not a claim that the actual site mass has this defect. + +## 8. Near-critical crossover: what is now fixed and what remains open + +Equation (4.5) is an unconditional constraint on simultaneous complementary +counts. It rules out copying the separated-window independent Poisson law +into a common critical window. It does not by itself find the crossover law. + +The earlier Poisson proof used a compact subcritical p interval, hence fixed +localization constants C,c. If p=p_w approaches criticality, its error estimate +would require new uniform constants. Keeping them explicit, sufficient +conditions of the same form include a cutoff H_w with 4H_w=w, and + + C_w m(w+1) exp(-c_w H_w) -> 0, + m w^8 (H_w+w+1)^3 exp[-2(w-1)kappa(p_w)] -> 0. (8.1) + +These are conservative sufficient conditions inherited from the local +indicator proof, not a necessary physical crossover criterion. Neither +c_w nor their divergence scale is supplied by a fixed-p compactness argument. + +There is one useful, explicitly CONDITIONAL scaling calculation. Suppose a +near-critical component-density theorem establishes + + w nu_w(p)=Psi(z)(1+o(1)), z=w*kappa(p), + Psi(z)~c_* sqrt(z) exp(-z), z->infinity, (8.2) + +with the uniformity needed for the same p_w and w limit. Then, for aspect +ratio R=m/w->infinity and intensity lambda, + + z=log R + (1/2)log log R + log(c_*/lambda)+o(1). (8.3) + +This follows by taking logarithms of R*Psi(z)=lambda. It shows why a +near-critical analysis may depend on log(m/w), not simply log m. At a bounded +aspect ratio the large-z approximation itself fails. In fixed-p notation, +(8.2) would require A(p)~c_*sqrt(kappa(p)); a fixed subcritical amplitude cannot +be held constant all the way to pc. + +Neither (8.2) nor a site critical exponent is proved here. The literature +input most directly suggested by this question is [DM26], but it treats +BOND random-cluster configurations and its Theorem 1.1 gives two-sided +comparability of a TWO-POINT function, not the exact component amplitude. +The site model and the sewing/normalization remain genuine separate steps. +Do not label the heuristic `beta=1/2` or equation (8.3) as a demonstrated +near-critical square-site law. + +## 9. Execution and source record + +Commands from the repository root: + + python -m unittest discover -s tests -p 'test_cylinder_winding_intensity.py' -v + python scripts/cylinder_winding_intensity.py --output /tmp/intensity-new.json + +The report refuses to overwrite an existing path. Python stdlib suffices +for the transfer, Fraction stationary solves, controls and tests; report +regeneration also uses SymPy for the all-p rational functions. No existing +unmerged table or script is a dependency of this new calculation. + +Executed controls: 139,776 open-cylinder graph/configuration comparisons +on both adjacencies (2x4,3x4,4x4); 66,064 complementary torus pairs +(2x2,3x3,4x4); 18 Fraction/symbolic intensity checks and their complementary +variance checks; all-p symbolic density duality at the three widths. The +physical oracle is a separate raw-(dx,dy)-potential BFS, not the transfer's +one-dimensional gain DSU. Reduced and full transfer occupation/count +polynomials agree, without a false configurationwise lumping assertion. +Twelve local mathematical tests passed. Full Matching-One CI was not run. + +[MZ] S. Mertens and R. M. Ziff, *Percolation in Finite Matching Lattices*, +arXiv:1603.07289v2, section II: paragraphs on single/spiral counts and unique +cross-wrapping, before equations (6)--(11). Primary HTML read this round: +https://arxiv.org/html/1603.07289v2 . Its known classification supports section 4; +no prior-art absence is claimed for the count identity or ordinary transfer +methods. + +[DM26] L. D'Alimonte and I. Manolescu, *Near-critical Ornstein--Zernike theory +for the planar random-cluster model*, arXiv:2510.13648v3, 23 June 2026. +Primary PDF printed pp3--4 (model definition and Theorem 1.1) read AND rendered: +https://arxiv.org/pdf/2510.13648 . The configuration variables are edges and +the symbol in the theorem is asymp. Current abstract/version record checked: +https://arxiv.org/abs/2510.13648 . Only these targeted sections were read, +not the entire 44-page proof. Some HTML versions displayed mismatched dates +and incomplete formulas; the cited scope is tied to the v3 PDF. + +[CI/CIV leads] Campanino--Ioffe (2002), DOI 10.1214/AOP/1023481005; and +Campanino--Ioffe--Velenik, arXiv:math/0610100. Author/institution metadata or +abstracts checked in this round, not a full site-sewing theorem reading. +They are explicit starting points for #740, not imported site conclusions. + +The only external jobs opened are #740 (the actual site sewing/prefactor +mapping) and #741 (the six fixed-p intensity values and one cancelling +contrast per graph). Both return to #739. No new GPU, exponential torus +simulation, or parallel mechanism programme has been launched. diff --git a/docs/manuscripts/geometric-balance/winding-prefactor-contrast-20260913.md b/docs/manuscripts/geometric-balance/winding-prefactor-contrast-20260913.md new file mode 100644 index 00000000..0e4d8a2a --- /dev/null +++ b/docs/manuscripts/geometric-balance/winding-prefactor-contrast-20260913.md @@ -0,0 +1,130 @@ +# The winding-prefactor contrast at widths 4, 8 and 12 + +2026-09-13. Computed for issue #741, returning to the #739 manuscript. This is a +numerical counterpart to #740, not a new mechanism programme and not a width scan. + +## What was computed + +The once-per-COMPLETE-component cylinder density + + nu_w^G(p) = expected number of horizontally winding components retired per vertical row + +for two fixed inputs, both rigorously subcritical by elementary path bounds: + +| graph | p | why subcritical | +|---|---|---| +| NN square site | 1/4 | `3p < 1` | +| matching NN+NNN site | 1/8 | `7p < 1` | + +at `w = 4, 8, 12`. The contrast is + + R_4 = nu_4 * nu_12 / nu_8^2, beta_eff(4) = log(R_4) / log(4/3). + +If `nu_w = A w^-beta exp(-kappa w)(1+o(1))` then the exponential mass and the +amplitude cancel in `R_4` and `R_4 -> (4/3)^beta`. This is therefore a direct +diagnostic of the `w^{-1/2}` sewing hypothesis of #740 — one number, not a fit of +three unknown parameters. + +## Result + +| graph | p | log nu_4 | log nu_8 | log nu_12 | beta_eff | deviation from 1/2 | +|---|---|---|---|---|---|---| +| NN | 1/4 | −5.419513505388 | −10.023930900251 | −14.400335955877 | **0.792584457** ± 1.9e−9 | +0.292584 | +| matching NN+NNN | 1/8 | −5.742669143987 | −10.180101524507 | −14.471261214034 | **0.508452577** ± 5.1e−10 | +0.008453 | + +`w = 4` and `w = 8` are exact rationals with a zero certificate bound; `w = 12` +carries the certificate below, all below 6e−10 on `log nu`. + +### The three-width agreement is not an asymptotic proof, and here it is not even self-consistent + +Two checks make that concrete rather than rhetorical. + +1. **A second, equally admissible window disagrees wildly.** The same construction on + `(2,4,8)` returns `beta_eff = −7.137` (NN) and `−7.070` (matching). The assumed + form does not describe those widths at all, which says the `(4,8,12)` values are + finite-window effective exponents rather than a settled amplitude. +2. **The effective kappa is still moving.** Adjacent differences give + + NN (4,8) 1.151104 (8,12) 1.094101 matching (4,8) 1.109358 (8,12) 1.072790 + + both still decreasing in magnitude at `w = 12`, so the amplitude has not settled either. + +An identical construction cannot have two different true exponents, so at least one +of the two `beta_eff` values above is not asymptotic. The honest reading is: + +- the `1/2` sewing hypothesis is **numerically close** on the matching graph at `p = 1/8`; +- it is **not** close on NN at `p = 1/4`, where the same formula returns `0.79`; +- and the `(2,4,8)` window shows the whole two-parameter description is not yet valid, + so neither number should be quoted as `beta`. + +Reported as required even though inconsistent with `1/2`. This neither confirms nor +refutes the sewing hypothesis; deciding that needs the `A, beta` derivation of #740, +not a fourth width. + +## Engine, validation and cost + +The supplied `scripts/cylinder_winding_intensity.py` caps the builder at width ≤ 10 and +solves densely in `Fraction`. `scripts/cylinder_winding_intensity_fast.cpp` is an +allocation-free C++ port of the same `advance()` / `empty_state()` / `reward_lump()` +semantics, with the transition table cached after BFS so that the reward-lumping +refinement does not recompute 6e8 successors per iteration. + +**Validation is exact, not indicative.** All 18 published controls of +`results/geometric-consistency/cylinder-winding-intensity.json` — both graphs, widths +2/3/4, `p = 1/4, 1/2, 3/4` — reproduce as **equal rationals**, and the frontier-state +and reward-lump counts match (`6/3`, `14/4`, `38/7`). The capacity-probe counts +`102/282/786/2214` at `w = 5..8` and `90` reward lumps at `w = 8` also reproduce. + +One caveat worth recording, found by this validation: the C++ port first disagreed on +the matching graph alone. The cause was integer division — C++ `/` truncates toward +zero while Python `//` floors, and the only affected call is the `dx = −1` diagonal step +at `i = 0`, where `(i+dx)//w = −1` but `(i+dx)/w = 0`. NN was unaffected, which is +exactly why a matching-side control matters. Fixed by an explicit floor division. + +Cost, measured rather than extrapolated, single process on a 16 vCPU aarch64 container: + +| | w = 4 | w = 8 | w = 12 | +|---|---:|---:|---:| +| frontier states | 38 | 2 214 | 147 578 | +| reward lumps | 7 | 90 | 2 105 | +| transitions | 152 | 566 784 | 604 479 488 | +| wall time | <1 s | 0.5 s | 504 s (NN) / 561 s (matching) | +| peak RSS | — | — | 2.4 GB (2.25 GB cached table) | + +`w = 12` broke down as BFS 234 s + table cache 238 s + refinement ≈ 30 s. The same +counts are reachable on a laptop at `w = 8` (0.5 s) but not at `w = 12`. + +## Error control + +For a normalised nonnegative `pi_hat` and the uniform empty-row reset +`delta = (1-p)^w` (the empty row always maps to the empty state, so the chain is +uniformly ergodic with gap at least `delta`), + + |pi_hat . g - nu| <= ||g||_inf * ||pi_hat K - pi_hat||_1 / delta. + +`w = 4, 8` are solved in exact rational arithmetic. `w = 12` is solved in float64 +(2 105 states), then corrected once using the **exact rational** stationary residual and +certified exactly; that step is what brings the bound from 1.6e−14 down to 3e−16 (NN) +and 7.5e−17 (matching), i.e. `log nu` to 5.5e−10 and 1.5e−10. + +## What this does not establish + +No exponent is determined. No asymptote is claimed. The `w^-beta` form is not verified; +the `(2,4,8)` window shows it fails at small width. `kappa_G` is not measured as a +limit. No new `p_c`, no Monte Carlo, no GPU, no continuum identification. The residual +certificate bounds arithmetic only; it says nothing about the model assumptions or the +imported inputs of #739. + +## Reproducing + +```sh +g++ -O3 -std=c++17 -o winding_build scripts/cylinder_winding_intensity_fast.cpp +for w in 4 8 12; do ./winding_build $w 0 out_nn_$w.json; done # NN, 0 = site NN +for w in 4 8 12; do ./winding_build $w 1 out_m_$w.json; done # matching +python3 scripts/winding_prefactor_contrast.py \ + '[["out_nn_4.json","1/4",true],["out_nn_8.json","1/4",true],["out_nn_12.json","1/4",false],'\ +'"["out_m_4.json","1/8",true],["out_m_8.json","1/8",true],["out_m_12.json","1/8",false]]' \ + results/geometric-consistency/winding-prefactor-contrast.json +``` + +The `w = 12` builds need ~2.4 GB and ~9 minutes each; the `w ≤ 8` builds are seconds. diff --git a/docs/manuscripts/geometric-consistency/README.md b/docs/manuscripts/geometric-consistency/README.md new file mode 100644 index 00000000..5ee35afe --- /dev/null +++ b/docs/manuscripts/geometric-consistency/README.md @@ -0,0 +1,581 @@ +# When the matching root locates criticality but the threshold law does not + +**Consolidated research manuscript — 13 September 2026.** + +This document replaces a dispersed reading path with one mathematical argument. +It consolidates the probability results of #613, #735 and #736, and supplies a +new oblique winding construction for the necessity direction of the full-law +criterion. It does not merge those PRs or import their unrelated representation, +Jordan, source-response or sampling results. The construction and proofs below +are this delivery's author analysis; the finite controls are not an independent +referee's proof acceptance. Priority in the literature is not established. + +## Abstract + +We study independent square-lattice site percolation on finite tori obtained +from arbitrary full-rank integer period lattices. Let N be the number of sites, +ell the length of the shortest nonzero period, and r the rank of the occupied +ambient first-homology image. The matching root is the unique solution of +P(r=2)=P(r=0). Its convergence to the infinite-lattice critical probability is +uniform over all period lattices with ell tending to infinity, without aspect +or shear restrictions. In contrast, the mixture of the two ambient-homology +birth times converges to a point mass at the critical probability if and only +if log(N)/ell tends to zero. + +The necessity statement, previously obtained only for axial rectangles in +#736, follows from an explicit necklace of axis-aligned occupied circuits and +connecting crossings around an arbitrary shortest period. Critical box crossing +and finite-product continuity make its exponential probability cost arbitrarily +small at a fixed subcritical parameter. Lattice translations pack order N/ell +independent necklaces. The construction never rotates the square-lattice +interaction and applies when the shortest period is nonprimitive in Z^2. + +The inputs are site sharpness on the nearest-neighbour and matching graphs, +their critical-point relation, critical square-site box crossing, and finite +matching duality. No critical exponent, conformal limit, transfer-matrix +representation, new numerical critical point, or near-critical rate is assumed. + +## 1. Model, observables and statements + +Let Lambda be a rank-two sublattice of Z^2. On the flat torus + + T_Lambda = R^2/Lambda, V_Lambda = Z^2/Lambda, + N = [Z^2:Lambda], ell = min_{u in Lambda, u != 0} |u|_2, + +occupy each vertex independently with probability p. Use the physical nearest- +neighbour square-grid edges; the ambient embedding, including edge lifts, is +part of the model. All tori considered are honest square-cell tori: each unit +square is embedded with four distinct corners. Every sufficiently large ell +has this property. Parallel lifted edges are not identified merely because +they have the same endpoints. + +For the induced occupied graph G_omega, define, over Q, + + r(omega) = rank im[H_1(G_omega) -> H_1(T_Lambda)] in {0,1,2}, + P_j(p) = Pr_p(r=j), + M(p) = P_2(p)-P_0(p), F(p) = E_p[r]/2 = (1+M(p))/2. + +A rank-one diagonal/spiral class remains rank one. Nonzero projection on two +coordinate axes is not rank two. + +Give the sites independent uniform [0,1] labels, and let T_j be the first p +at which r reaches j, for j=1,2. A single insertion can create more than one +rank, so T_1=T_2 is allowed. Pathwise, + + r(p) = 1_{T_1 <= p} + 1_{T_2 <= p}. + +Thus F is the distribution function of T_J, where J is independent and +uniform on {1,2}. It is not the law of r at a fixed p. Let Q=F^{-1} on (0,1). + +Both {r>0} and {r=2} are increasing nonconstant events. A positive pivotal +configuration on an empty-to-full chain, together with the finite Bernoulli +Russo formula, makes their derivatives positive at each interior p. Therefore +F and M are strictly increasing there. The endpoint values M(0)=-1, M(1)=1 +give a unique root q_Lambda, and q_Lambda=Q(1/2). + +### Theorem A — root consistency, consolidated from #735 + +For the actual nearest-neighbour square-site model, + + lim_{L -> infinity} sup_{Lambda: ell(Lambda) >= L} + |q_Lambda - p_c^site(Z^2)| = 0. (A) + +More precisely, for each fixed p0 and L_p=L_p. (A1) + +At each fixed p>p_c, the reciprocal ratio satisfies the corresponding bound. + +### Theorem B — sharp geometry for the whole law + +Let Lambda_n be any sequence of honest integer-period tori with N_n tending +to infinity. The following are equivalent: + +1. Q_n(u) tends to p_c for every fixed u in (0,1). +2. This convergence is uniform on each compact subinterval of (0,1). +3. F_n(p) tends to 0 for pp_c. +4. The mixture law of T_1,T_2 converges weakly to delta_{p_c}. +5. log(N_n)/ell_n tends to zero. (B) + +The result includes arbitrary shear, orientation and Smith class. It does +not assert that ell tending to infinity is *necessary* for a balance-root +sequence to converge: Theorem A is a uniform sufficient statement for roots. +The necessity in Theorem B is for the complete set of fixed interior +quantiles, not for its median alone. + +The new work in this document is the general-period necessity in Theorem B. +Its key estimate is given in Proposition 6 below. + +## 2. Probability and topology inputs + +We use the following established inputs with their actual model types. + +**S: Site sharpness.** At fixed subcritical p, the probability that an occupied +origin connects to Euclidean distance R is at most C(p) exp[-c(p) R], on both +NN Z^2 and the eight-neighbour matching graph. Duminil-Copin–Tassion [DT], +Theorem 1.1(3), is printed in bond language; their Section 1.2 explicitly gives +the adaptation to site percolation on transitive graphs and refers to +Aizenman–Barsky. We use that site result, not square-bond p_c=1/2. + +**D: Matching criticality.** p_c^site(NN)+p_c^site(NN+NNN)=1. The source chain +is Grimmett–Li [GL], Eq. (1.3), with p_u=p_c in the amenable case. Their main +strict-inequality theorem is not being relabelled as this identity. + +**R: Critical box crossing.** For any fixed aspect ratio, critical NN +square-site crossing probabilities of axis-aligned rectangles are bounded +away from zero uniformly in scale. Zeng [Z], Theorem 1.1, states the specific +site version. Only its lower bound, at aspect ratios 4 and 14, is needed for +the new argument. The retrieved source is an arXiv preprint; journal status +and a quantitative value for its constant are not assumed. + +**T: Finite matching duality.** For every configuration on an honest torus, + + r_NN(omega)+r_matching(omega^c)=2. (T) + +For completeness, a topological route to T is as follows. Take a closed regular +neighbourhood U of the occupied NN graph. In a face, a white matching diagonal +can be replaced by a white boundary path unless its endpoints are the only +two white corners. The remaining diagonals do not cross, and facewise replacement +does not change the ambient homology image. The resulting white graph represents +the image of the complementary subsurface V=closure(T_Lambda\U). For +complementary subsurfaces, relative cohomology, excision and Poincare–Lefschetz +duality identify im H_1(V) with the intersection-orthogonal complement of +im H_1(U). The nondegenerate torus intersection form has dimension two, proving +T. This is the repository's digital-Alexander bridge, not a new result here. + +We also use Harris positive association for increasing or decreasing events +under a product Bernoulli law, and continuity of probabilities of finite +cylinder events in p. The latter is simply finite polynomial continuity. + +## 3. Period geometry without rotating the interaction + +Choose a shortest nonzero u in Lambda and put S=|u|^2=ell^2. It is primitive +in Lambda: u=kz with z in Lambda and |k|>1 would contradict shortest length. +It need not be primitive in Z^2. Complete it to a basis (u,v), with + + det(u,v)=N>0, |u dot v| <= ell^2/2. + +Subtracting a nearest integer multiple of u from v achieves the second +condition. Since |v|>=ell, the transverse height satisfies + + h = N/ell >= sqrt(3) ell/2. (3.1) + +Write n=(-u_y,u_x)/ell. The transverse coordinate on the continuous torus is +n dot x modulo h. On vertices it is det(u,x) modulo N, divided by ell. +Every physical matching edge has Euclidean length at most sqrt(2), so its +transverse displacement is at most sqrt(2). These coordinates do not change +the interaction graph. + +Let g=gcd(|u_x|,|u_y|). The possible transverse coordinates of integer +translations have spacing + + delta = g/ell <= 1. (3.2) + +Indeed, Bezout gives z_0 in Z^2 with det(u,z_0)=g, and g divides N. +Thus the translation levels are delta times integers modulo h. This is the +point where ambient nonprimitivity must be retained, rather than assuming g=1. + +A tube of transverse half-width W around R u / Z u embeds in T_Lambda when +2W=64 set rho=ell/64. Let a=a_rho(p) be the probability that an occupied +origin in the infinite graph has an occupied path to Euclidean distance rho. +Stop at first exit. Its support is contained in radius rho+sqrt(2), whose +diameter is less than ell. It therefore injects into every relevant quotient. +Let A_x be its translate to site x. + +A nonzero ambient cycle has a lifted path escaping this ball. Consequently, +if no A_x occurs, r=0. Harris association applies to the overlapping decreasing +events A_x^c and gives + + P_0 >= Pr(intersection_x A_x^c) >= (1-a)^N. (4.1) + +The local balls are not independent. The lower bound depends on positive +association, not on pretending their supports are disjoint. + +### Lemma 2 — independent bands constrain rank two + +In the transverse circle of circumference h, select + + k = floor(8N/ell^2) + +successive half-open bands of physical width ell/8, shifting their boundaries +off vertices. Their vertex sets are disjoint; any leftover strip is unused. +In band j, define B_j to be an occupied path using only that band's sites, +from the lower sqrt(2) layer to the upper sqrt(2) layer. + +Rank two implies a closed occupied walk with nonzero transverse winding. +Repeat its lift if necessary. For each band, take a first passage above its +upper boundary and the last preceding passage below its lower boundary. +Discard the endpoint edges crossing the boundaries. The intervening path is +in the band and starts/ends within sqrt(2) of the corresponding boundary. +This last-entry/first-exit construction permits arbitrary backtracking. +Hence {r=2} is contained in the intersection of all B_j. + +Each B_j uses only its own site's variables, so these events are independent. +Physical edges between different bands are unused and do not alter this fact. + +To count entrance vertices, centre a unit square at each lattice site. These +squares tile the flat torus with total area N. The squares of vertices in a +transverse layer of width sqrt(2) lie in a layer of width 2sqrt(2). The fibres +have length ell, so there are at most 2sqrt(2)ell entrance sites. We may use + + B = 4 ceil(ell). + +A B_j crossing has transverse separation at least ell/8-2sqrt(2)>rho, so its +initial site witnesses a local arm. A union bound and independence give + + P_2 <= (B a)^k. (4.2) + +Equation (3.1) implies k>=4N/ell^2. Both (4.1) and (4.2) apply to NN and to +the matching graph, with their respective local-arm probabilities. + +### Proof of Theorem A + +Fix pp_c(NN), D makes 1-p subcritical for the matching graph; +T exchanges its ranks 0 and 2 with the original ones. Apply the same estimate. +The two fixed parameters p_c-epsilon and p_c+epsilon then trap the unique +root uniformly over all Lambda with sufficiently large ell, proving A. + +The conditional function H=P_2/(P_0+P_2) also has fixed interior quantiles +converging uniformly, since H<=P_2/P_0 below p_c and 1-H<=P_0/P_2 above it. +This conditional function is distinct from F. + +A finite arithmetic consequence is useful but not an infinite-volume bound: +if an actual upper bound abar for a satisfies + + (4 ceil(sqrt(S)) abar)^4 < (1-abar)^S, + +then P_2/P_0<1 on that finite torus. No near-critical arm bound or numerical +p_c enclosure is computed in this manuscript. + +## 5. An oblique necklace of axis-aligned crossings + +This is the new deterministic construction. It addresses the previously +missing necessity direction without assuming rotated RSW, conformal +invariance, a primitive vector in ambient Z^2, or a particular Smith type. + +### Lemma 3 — explicit geometric construction + +Let s>=8 be even and ell>=64s. Set + + n_0 = ceil(4ell/s), + z_i = nearest_integer_coordinatewise(i u/n_0), 0<=i<=n_0. + +Use rounding satisfying round(x+k)=round(x)+k for integer k, and extend +z_{i+n_0}=z_i+u. In particular z_0=0 and z_{n_0}=u. Successive centres satisfy + + |z_{i+1}-z_i|_infinity <= s/4+1 <= s/2. (5.1) + +For z_i=(x_i,y_i), require four occupied NN crossings: + +- horizontal crossings of [x_i-2s,x_i+2s] times [y_i+s,y_i+2s] + and [x_i-2s,x_i+2s] times [y_i-2s,y_i-s]; +- vertical crossings of [x_i-2s,x_i-s] times [y_i-2s,y_i+2s] + and [x_i+s,x_i+2s] times [y_i-2s,y_i+2s]. + +The four crossings meet in the four corner squares. Their union contains an +occupied circuit C_i surrounding the inner square z_i+[-s,s]^2. This is the +usual planar annulus gluing: choose crossing subpaths joining the consecutive +corner intersections. The resulting closed walk travels successively through +top, right, bottom and left strips and has winding one about z_i; extracting +simple cycles leaves one enclosing the inner square's interior. + +Connect C_i to C_{i+1} by requiring one more horizontal crossing of + + R_i = [min(x_i,x_{i+1})-3s, max(x_i,x_{i+1})+3s] + times + [max(y_i,y_{i+1})-s/2, min(y_i,y_{i+1})+s/2]. (5.2) + +Its height is at least s/2 and width at most 13s/2, hence aspect ratio at most +13. A left-right crossing of R_i has endpoints outside both outer squares, +and at x=x_i and x=x_{i+1} passes strictly inside their inner squares. +Planarity of NN edges forces it to meet both C_i and C_{i+1} in occupied +vertices. This works even when the progression of centres is nearly vertical: +the connector is still horizontal, with a common central vertical interval. + +There are exactly 5 n_0 crossing events. Every individual rectangle has +diameter less than 7s0. It is a +sufficient event, not an equality with all winding configurations. Multiple +intersections, side contacts and path backtracking cannot destroy it. + +### Lemma 4 — arbitrarily low exponential cost at a fixed subcritical p + +There is c in (0,1), independent of s, orientation and u, bounding all these +individual crossing probabilities below at p_c. For the annuli use aspect 4 +in R. For connectors compare in the infinite grid with a 7s-by-s/2 crossing +(aspect 14) and restrict to the shorter rectangle. The relevant event on the +torus has exactly the infinite-grid law because its own support injects. + +Fix s. Only finitely many integer rectangle dimensions occur. Finite-product +continuity gives a single p_s in (0,p_c) at which each has probability at least +c/2. Integer translations do not change these probabilities. Consequently +Harris association on the overlapping crossing events gives + + Pr_{p_s}(necklace) >= (c/2)^(5 n_0) + >= exp[-25 log(2/c) ell/s]. (5.3) + +For every eta>0, choose one even s large enough that 25 log(2/c)/s<=eta, +and then choose p_eta=p_s. For every shortest u with ell>=64s, + + Pr_{p_eta}(necklace around u) >= exp(-eta ell). (5.4) + +The quantifier order is eta -> s -> p_eta -> arbitrary large tori. +p_eta is a fixed parameter below p_c, not a size-dependent sequence. +No numerical RSW constant or estimate of p_c-p_eta is supplied. + +## 6. Packing independent necklaces despite shear and nonprimitivity + +### Lemma 5 — integer translations supply enough transverse space + +Let delta=g/ell from (3.2), and take + + D = ceil((12s+2)/delta), Delta = D delta. + +Then 12s+2<=Delta<12s+3. Let z_0 have det(u,z_0)=g, and translate the whole +necklace by jD z_0 for j=0,...,b-1, where + + b=floor(h/Delta). + +Their transverse centres are j Delta modulo h. Successive centres, including +the last-to-first circular gap, are at least Delta apart. Their tubes have +full width 12s, so the complete event supports have disjoint site sets. +No claim of independence is made for the crossings inside one necklace. + +Since h>=sqrt(3)ell/2>=32sqrt(3)s and s>=8, h/Delta>2, and + + b >= h/(2Delta) >= h/(30s) = N/(30s ell). (6.1) + +This explicit use of delta handles u=(w,0), u=(an,bn), and primitive ambient +vectors in the same construction. Taking a period basis with small display +entries is not required. A large longitudinal shift of a translated necklace +is immaterial to disjoint transverse support. + +### Proposition 6 — a uniform upper bound for the rank-zero probability + +For every eta>0 there are s and p_eta=64s satisfies + + P_0^Lambda(p_eta) + <= [1-exp(-eta ell)]^b + <= exp[-N exp(-eta ell)/(30s ell)]. (6.2) + +Only one successful necklace is needed to prevent rank zero. Disjoint support +makes the b necklace events independent. Neither a success nor their union is +being asserted to imply rank two. + +The appearance of both a geometric opportunity count and an exponential +cost is essential. An upper union bound failing to vanish would not yield +this lower-quantile obstruction. + +## 7. Proof of the sharp full-law criterion + +### Sufficiency + +Suppose log(N_n)/ell_n -> 0. In particular ell_n -> infinity. At fixed p0) <= C(p) N_n exp[-c(p) ell_n] -> 0. + +Apply the same statement to the matching complement at fixed p>p_c and use T +to obtain Pr_p(r_n<2)->0. Hence F_n tends to the threshold step. This is the +previous sufficient argument of #613, reproduced to close the theorem. + +### Necessity when ell is unbounded along a witnessing subsequence + +If log(N_n)/ell_n does not tend to zero, choose a subsequence with +log(N_n)>=d ell_n for some fixed d>0. First suppose that along a further +subsequence ell_n tends to infinity. In Proposition 6 choose eta=d/2. +Then + + N_n exp(-eta ell_n)/(30s ell_n) + >= exp(d ell_n/2)/(30s ell_n) -> infinity. + +Therefore P_0(p_eta)->0 at the fixed subcritical p_eta, and + + F_n(p_eta) >= (1-P_0(p_eta))/2 -> at least 1/2. + +For every fixed u<1/2, eventually Q_n(u)<=p_etainfinity, independent repetition again gives P_0(p)->0 and the same +lower-quantile obstruction. + +Every subsequence witnessing failure of the geometric condition has one of +these two further subsequences. This proves necessity without assuming ell_n +already tends to infinity. + +### Equivalence of law and quantile formulations + +Threshold-step convergence traps all Q_n(u), u in [epsilon,1-epsilon], +between p_c-delta and p_c+delta for sufficiently large n. It thus implies +uniform compact-quantile convergence, which implies pointwise convergence. +Conversely, if all fixed quantiles converge, then for fixed p0, eventually p 1/sqrt(2). Theorem A gives q_{Lambda_n}->p_c, while Theorem B +shows that the whole law does not concentrate; each fixed lower quantile is +bounded away from p_c along the witnessing construction. Both conclusions +concern the same microscopic site model, and u_n is nonprimitive in ambient +Z^2. No value of a displaced limiting quantile is asserted. + +### Standard square and Gaussian-square families remain inside the good regime + +For a square Gaussian period lattice generated by g and ig, ell=sqrt(N). +Thus log(N)/ell tends to zero, including nonprimitive Gaussian representatives. +Both root and full-law consistency hold. The obstruction is excessive volume +relative to the shortest period, not arithmetic nonprimitivity by itself. + +### What remains outside the result + +There is no quantitative near-critical rate, no value of a shifted quantile +on exponential-aspect sequences, and no L^-4 correction law. Critical RSW +contributes a qualitative, scale-uniform lower bound, followed by continuity +at a fixed block size. This argument does not identify a continuum operator, +original-U source map, generic-q tangent, or width-uniform spectral expansion. + +Theorems A and B concern independent site occupation. Positive dependent +marks, arbitrary random-cluster measures and large externally imposed sources +need their own hypotheses; they are not inserted as corollaries here. + +## 9. Relation to prior results and contribution boundary + +The relevant comparison is between precise models and limit orders, not +whether a paper uses the name "matching" or "homological". + +| Source / existing asset | Statement used or read | Relation to this manuscript | +|---|---|---| +| Mertens–Ziff [MZ], Section IV and matching identities | Finite matching function, square-sequence root/step convergence; empirical rapid root shift | Observable and square-sequence conclusions are prior art; not an all-period iff quoted from this source | +| Duncan–Kahle–Schweinhart [DKS], Section 1, Theorems 1–2 | Ambient-homology transitions on the specified growing cubical/permutohedral tori; i=1 cubical model is bond, 2D permutohedral site model is triangular | Prior art for ambient-image observables and homological transitions; not automatically the arbitrary-shape NN square-site law | +| Zeng [Z], Theorem 1.1 | Critical NN square-site box crossing | Imported lower bound; no new RSW theorem is claimed | +| Duminil-Copin–Tassion [DT], Theorem 1.1(3), Section 1.2 | Subcritical decay and explicit site adaptation | Imported sharpness, not relabelled bond criticality | +| Grimmett–Li [GL], introduction Eqs. (1.1)–(1.3) | Matching critical relation through uniqueness and amenability | Imported infinite-graph relation | +| Damron–Lam [DL], Section 2, Proposition 2.5 / Corollary 2.7 | Fixed-subcritical bond crossings of tall thin free rectangles, controlled by opportunity count times exp[-short side / correlation length] | Closest retrieved quantitative mechanism; ordinary crossing is not a seam-closed NN-site winding event on an arbitrary period quotient | +| #735 | Uniform root comparison on arbitrary integer-period tori | Consolidated, not counted as a new theorem in this delivery | +| #736 | Axial full-law iff | Extended by the oblique necklace and integer-translation packing | + +[DL] explicitly relates its result to Grimmett's 1981 "Critical sponge +dimensions" and later subcritical-connectivity work. This is a meaningful +prior-art lead, not a claim that the broad opportunity-versus-cost mechanism +originates here. The original 1981 article was not independently read in this +delivery. No exhaustive citation graph or novelty certification was performed. +The direct primary texts read for [Z], [DT], [GL], [MZ] and [DKS] were their +stated theorem/definition sections; [DL] was read at its introduction and +Section 2 crossing statements. Full original proofs of all imported results +were not re-proved or independently refereed. + +## 10. Finite controls and integration + +The new script `scripts/oblique_winding_necklace.py` is standalone standard +Python. It uses exact integer centres and period cosets. Free-rectangle crossing +BFS is separate from its physical lifted-graph winding detector. Eight periods +include an axis shortest vector with ambient gcd 512, an oblique vector with +gcd 128, primitive oblique vectors, two genuinely reduced HNF examples and a +near-diagonal short-period choice. Every example is in ell>=64s with s=8. + +Executed controls verify 12,990 specified crossing events, local rectangle +injectivity bounds, tube support, seam closure with primitive u-winding, and +disjoint *whole event supports* for selected first/second/last packed translates. +These are deterministic occupied witnesses, not Monte Carlo samples. A tiny +separate Fraction calculation checks Harris arithmetic but supplies no RSW +constant. Six local tests pass. No full repository CI was run. + +Read this document as one probability manuscript, not as a new dispatch tree. +The working research boundary is now the validity and positioning of this +single combined statement. Keep the older narrow proofs and original raw +results in their branches; they remain useful if any proposed extension +needs revision. The repository's representation and original-U work is not +made dependent on this document and is not reopened by it. + +## References + +[Z] X. Zeng, *A Russo Seymour Welsh Theorem for critical site percolation on +Z^2*, arXiv:1309.2273v1, Theorem 1.1. +https://arxiv.org/html/1309.2273 + +[DT] H. Duminil-Copin and V. Tassion, *A new proof of the sharpness of the phase +transition for Bernoulli percolation and the Ising model*, arXiv:1502.03050v3, +Theorem 1.1 and Section 1.2. +https://arxiv.org/html/1502.03050v3 + +[GL] G. Grimmett and Z. Li, *Percolation critical probabilities of matching +lattice-pairs*, arXiv:2205.02734v3, introduction Eqs. (1.1)–(1.3), with the +companion proof identified there. +https://arxiv.org/html/2205.02734v3 + +[MZ] S. Mertens and R. M. Ziff, *Percolation in Finite Matching Lattices*, +arXiv:1603.07289v2. Equation numbering can differ between HTML and PDF. +https://arxiv.org/html/1603.07289v2 + +[DKS] P. Duncan, M. Kahle and B. Schweinhart, *Homological percolation on a +torus: plaquettes and permutohedra*, arXiv:2011.11903v4, Section 1. +https://arxiv.org/html/2011.11903v4 + +[DL] M. Damron and W.-K. Lam, *Asymptotics for first passage percolation on +logarithmic subgraphs of Z^2*, arXiv:2502.18235v2, Section 2, especially +Corollary 2.7. +https://arxiv.org/html/2502.18235v2 + +Repository inputs read: #735 at 9d29d014df28af7c635e6859d98a95ffe2b34d06; +#736 at 64d809b4404f80ff3f9adf9713337cc76008e92d; main AGENTS.md, +RESEARCH-FRONTIER.md and ROADMAP.md after #738. No unmerged runtime inputs are +needed for the new script or this proof. diff --git a/results/geometric-consistency/cluster-sewing-identity.json b/results/geometric-consistency/cluster-sewing-identity.json new file mode 100644 index 00000000..0db2051a --- /dev/null +++ b/results/geometric-consistency/cluster-sewing-identity.json @@ -0,0 +1,541 @@ +{ + "schema": "matching-one.sewing-identities.v1", + "date": "2026-09-13", + "scope": "Exact finite-window algebra + return-value reanalysis; conjectures live in note, not numerical conclusions.", + "factorization_controls": [ + { + "width": 3, + "height": 1, + "matching": false, + "nonempty_masks": 7, + "anchored_winding_shapes": 1 + }, + { + "width": 3, + "height": 2, + "matching": false, + "nonempty_masks": 63, + "anchored_winding_shapes": 14 + }, + { + "width": 3, + "height": 3, + "matching": false, + "nonempty_masks": 511, + "anchored_winding_shapes": 117 + }, + { + "width": 4, + "height": 1, + "matching": false, + "nonempty_masks": 15, + "anchored_winding_shapes": 1 + }, + { + "width": 4, + "height": 2, + "matching": false, + "nonempty_masks": 255, + "anchored_winding_shapes": 34 + }, + { + "width": 4, + "height": 3, + "matching": false, + "nonempty_masks": 4095, + "anchored_winding_shapes": 629 + }, + { + "width": 5, + "height": 2, + "matching": false, + "nonempty_masks": 1023, + "anchored_winding_shapes": 82 + }, + { + "width": 3, + "height": 1, + "matching": true, + "nonempty_masks": 7, + "anchored_winding_shapes": 1 + }, + { + "width": 3, + "height": 2, + "matching": true, + "nonempty_masks": 63, + "anchored_winding_shapes": 26 + }, + { + "width": 3, + "height": 3, + "matching": true, + "nonempty_masks": 511, + "anchored_winding_shapes": 267 + }, + { + "width": 4, + "height": 1, + "matching": true, + "nonempty_masks": 15, + "anchored_winding_shapes": 1 + }, + { + "width": 4, + "height": 2, + "matching": true, + "nonempty_masks": 255, + "anchored_winding_shapes": 80 + }, + { + "width": 4, + "height": 3, + "matching": true, + "nonempty_masks": 4095, + "anchored_winding_shapes": 1889 + }, + { + "width": 5, + "height": 2, + "matching": true, + "nonempty_masks": 1023, + "anchored_winding_shapes": 242 + } + ], + "guard_controls": [ + { + "width": 3, + "height": 1, + "matching": false, + "p": "1/3", + "enumerated_configurations": 512, + "direct_expectation": "64/19683", + "component_activity_expectation": "64/19683" + }, + { + "width": 3, + "height": 2, + "matching": false, + "p": "1/3", + "enumerated_configurations": 4096, + "direct_expectation": "6400/531441", + "component_activity_expectation": "6400/531441" + }, + { + "width": 4, + "height": 1, + "matching": false, + "p": "1/3", + "enumerated_configurations": 4096, + "direct_expectation": "256/531441", + "component_activity_expectation": "256/531441" + }, + { + "width": 3, + "height": 1, + "matching": true, + "p": "1/3", + "enumerated_configurations": 512, + "direct_expectation": "64/19683", + "component_activity_expectation": "64/19683" + }, + { + "width": 3, + "height": 2, + "matching": true, + "p": "1/3", + "enumerated_configurations": 4096, + "direct_expectation": "8704/531441", + "component_activity_expectation": "8704/531441" + }, + { + "width": 4, + "height": 1, + "matching": true, + "p": "1/3", + "enumerated_configurations": 4096, + "direct_expectation": "256/531441", + "component_activity_expectation": "256/531441" + } + ], + "small_Palm_laws": [ + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/4", + "mark": "edges", + "nu_truncated": "3262962447/1099511627776", + "marked_intensity": "1786422519/549755813888", + "component_mean_c": "544558/497327", + "component_mean_inverse_c": "2844989/2983962", + "mark_mean_inverse_c": "497327/544558", + "wrong_component_reciprocal_estimate": "1694117471969097/546816819306954752", + "c_weights": { + "1": "23140647/8589934592", + "2": "292036671/1099511627776", + "3": "557685/68719476736" + } + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/4", + "mark": "rows", + "nu_truncated": "3262962447/1099511627776", + "marked_intensity": "1786422519/549755813888", + "component_mean_c": "544558/497327", + "component_mean_inverse_c": "2844989/2983962", + "mark_mean_inverse_c": "497327/544558", + "wrong_component_reciprocal_estimate": "1694117471969097/546816819306954752", + "c_weights": { + "1": "23140647/8589934592", + "2": "292036671/1099511627776", + "3": "557685/68719476736" + } + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/2", + "mark": "edges", + "nu_truncated": "9087/1048576", + "marked_intensity": "5601/524288", + "component_mean_c": "3734/3029", + "component_mean_inverse_c": "16147/18174", + "mark_mean_inverse_c": "3029/3734", + "wrong_component_reciprocal_estimate": "30146449/3176136704", + "c_weights": { + "1": "111/16384", + "2": "1851/1048576", + "3": "33/262144" + } + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/2", + "mark": "rows", + "nu_truncated": "9087/1048576", + "marked_intensity": "5601/524288", + "component_mean_c": "3734/3029", + "component_mean_inverse_c": "16147/18174", + "mark_mean_inverse_c": "3029/3734", + "wrong_component_reciprocal_estimate": "30146449/3176136704", + "c_weights": { + "1": "111/16384", + "2": "1851/1048576", + "3": "33/262144" + } + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/4", + "mark": "edges", + "nu_truncated": "11038915305/1099511627776", + "marked_intensity": "16660537569/1099511627776", + "component_mean_c": "846443/560835", + "component_mean_inverse_c": "31220479/39258450", + "mark_mean_inverse_c": "560835/846443", + "wrong_component_reciprocal_estimate": "57794440366852839/4796124695940300800", + "c_weights": { + "1": "108341793/17179869184", + "2": "6003315/2147483648", + "3": "10569771/17179869184", + "4": "120177837/549755813888", + "5": "13325391/137438953472", + "7": "7919127/1099511627776" + } + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/4", + "mark": "rows", + "nu_truncated": "11038915305/1099511627776", + "marked_intensity": "6859742013/549755813888", + "component_mean_c": "697022/560835", + "component_mean_inverse_c": "8922431/10095030", + "mark_mean_inverse_c": "560835/697022", + "wrong_component_reciprocal_estimate": "755624380108563/68516067084861440", + "c_weights": { + "1": "4266244323/549755813888", + "2": "2332284597/1099511627776", + "3": "87071031/549755813888" + } + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/2", + "mark": "edges", + "nu_truncated": "4369/1048576", + "marked_intensity": "9093/1048576", + "component_mean_c": "9093/4369", + "component_mean_inverse_c": "589613/917490", + "mark_mean_inverse_c": "4369/9093", + "wrong_component_reciprocal_estimate": "255302429/45812285440", + "c_weights": { + "1": "439/262144", + "2": "187/131072", + "3": "61/131072", + "4": "179/524288", + "5": "7/32768", + "7": "47/1048576" + } + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/2", + "mark": "rows", + "nu_truncated": "4369/1048576", + "marked_intensity": "1615/262144", + "component_mean_c": "380/257", + "component_mean_inverse_c": "1205/1542", + "mark_mean_inverse_c": "257/380", + "wrong_component_reciprocal_estimate": "1946075/404226048", + "c_weights": { + "1": "1275/524288", + "2": "1547/1048576", + "3": "17/65536" + } + } + ], + "two_row_trace_controls": [ + { + "width": 3, + "matching": false, + "p": "1/4", + "pair_states": 7, + "Xi2": "181521/16777216", + "Xi1": "729/262144", + "anchored_height_at_most_two": "134865/16777216" + }, + { + "width": 3, + "matching": false, + "p": "1/2", + "pair_states": 7, + "Xi2": "53/4096", + "Xi1": "1/512", + "anchored_height_at_most_two": "45/4096" + }, + { + "width": 4, + "matching": false, + "p": "1/4", + "pair_states": 7, + "Xi2": "8614593/4294967296", + "Xi1": "6561/16777216", + "anchored_height_at_most_two": "6934977/4294967296" + }, + { + "width": 4, + "matching": false, + "p": "1/2", + "pair_states": 7, + "Xi2": "177/65536", + "Xi1": "1/4096", + "anchored_height_at_most_two": "161/65536" + }, + { + "width": 5, + "matching": false, + "p": "1/4", + "pair_states": 7, + "Xi2": "416236401/1099511627776", + "Xi1": "59049/1073741824", + "anchored_height_at_most_two": "355770225/1099511627776" + }, + { + "width": 5, + "matching": false, + "p": "1/2", + "pair_states": 7, + "Xi2": "605/1048576", + "Xi1": "1/32768", + "anchored_height_at_most_two": "573/1048576" + }, + { + "width": 3, + "matching": true, + "p": "1/4", + "pair_states": 9, + "Xi2": "303993/16777216", + "Xi1": "729/262144", + "anchored_height_at_most_two": "257337/16777216" + }, + { + "width": 3, + "matching": true, + "p": "1/2", + "pair_states": 9, + "Xi2": "41/4096", + "Xi1": "1/512", + "anchored_height_at_most_two": "33/4096" + }, + { + "width": 4, + "matching": true, + "p": "1/4", + "pair_states": 9, + "Xi2": "19938879/4294967296", + "Xi1": "6561/16777216", + "anchored_height_at_most_two": "18259263/4294967296" + }, + { + "width": 4, + "matching": true, + "p": "1/2", + "pair_states": 9, + "Xi2": "127/65536", + "Xi1": "1/4096", + "anchored_height_at_most_two": "111/65536" + }, + { + "width": 5, + "matching": true, + "p": "1/4", + "pair_states": 9, + "Xi2": "1318505121/1099511627776", + "Xi1": "59049/1073741824", + "anchored_height_at_most_two": "1258038945/1099511627776" + }, + { + "width": 5, + "matching": true, + "p": "1/2", + "pair_states": 9, + "Xi2": "405/1048576", + "Xi1": "1/32768", + "anchored_height_at_most_two": "373/1048576" + } + ], + "boundary_counterexample": { + "sites": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ] + ], + "occupied": 6, + "external_void_sites": 8, + "open_to_void_incidences": 12, + "void_rows_by_column": [ + [ + -1, + 2 + ], + [ + -1, + 1 + ], + [ + -1, + 2 + ], + [ + -1, + 1 + ] + ], + "overcount_if_weighted_per_incidence": 4 + }, + "prefactor_return_reanalysis": { + "source_commit": "3745b13b8e1126017a1e88567a6af44881b8a1ff", + "source_path": "results/geometric-consistency/winding-prefactor-contrast.json", + "source_note": "Input density values and solver error bounds imported; width-12 certificate not regenerated.", + "models": { + "NN": { + "source_log_nu": { + "2": "-2.868379786881457", + "4": "-5.419513505387646", + "8": "-10.023930900250674", + "12": "-14.400335955876589" + }, + "correct_beta_2_4_8": "0.71824578691522865404736829644283335380495805091886369498749117019", + "correct_beta_4_8_12": "0.79258445718869286667742842634145454180824516015690220807954526230", + "invalid_2_4_8_same_spacing_formula": "-7.1373362227880735711027271671148592894443400104871934337582692286", + "correct_2_4_8_weights": [ + 2, + -3, + 1 + ], + "conditional_beta_half_plus_c_over_w": { + "beta": "0.5", + "c1": "1.0100556361346704353646859640370354109789417346134336609600058881", + "kappa": "1.0328967125165553852176995484415705723974705539982982913299148148", + "log_A": "-0.8472933837951467585531411757847999950793530832999099957996622033", + "scope": "post-return 3-parameter interpolation of 3 values, zero residual DOF; NOT evidence for beta=1/2" + }, + "four_width_eliminate_one_over_w": "0.87826078303481935973928527476932610864310020095605208369487808951", + "propagated_4_8_12_log_input_bound": "1.9281198769479639794114664428197429531948762310791259784875221324E-9" + }, + "matching": { + "source_log_nu": { + "2": "-3.3390984215201938", + "4": "-5.742669143987384", + "8": "-10.180101524506828", + "12": "-14.471261214034028" + }, + "correct_beta_2_4_8": "0.53337743380312707582960774090536877576303816106140507880518768221", + "correct_beta_4_8_12": "0.50845257664347892824252359384173594615493229397983087974471616055", + "invalid_2_4_8_same_spacing_formula": "-7.0698241316137423293703625607206978398565618413397504690864094296", + "correct_2_4_8_weights": [ + 2, + -3, + 1 + ], + "conditional_beta_half_plus_c_over_w": { + "beta": "0.5", + "c1": "0.02917985719624243536468596403703541097894173461343366096000588808", + "kappa": "1.0218028270224852602176995484415705723974705539982982913299148148", + "log_A": "-0.9696056196365582585531411757847999950793530832999099957996622033", + "scope": "post-return 3-parameter interpolation of 3 values, zero residual DOF; NOT evidence for beta=1/2" + }, + "four_width_eliminate_one_over_w": "0.47972634067742551275099439984595224786415366777162879379552765213", + "propagated_4_8_12_log_input_bound": "5.0505329501398976288083124188300481693795793072890923499202282572E-10" + } + } + }, + "counts": { + "factorization_nonempty_masks": 11938, + "guard_configurations": 17408 + }, + "conjectural_Brownian_range_targets": { + "0.5": "5.2948078813444317565443879380285349511370527044195335000434606202E-7", + "1": "0.17792335564307067868999571368143526430949071990168885728053834148", + "1.5": "0.82225498928954055389658185703272617711284931391075460158794075536", + "2": "0.98993612116132895997617246007007360307936093798072127541368694318", + "3": "0.99999893390141787011600947042056632136210919189744620244468005068" + } +} diff --git a/results/geometric-consistency/cylinder-winding-intensity.json b/results/geometric-consistency/cylinder-winding-intensity.json new file mode 100644 index 00000000..4b5a864e --- /dev/null +++ b/results/geometric-consistency/cylinder-winding-intensity.json @@ -0,0 +1,10123 @@ +{ + "schema": "matching-one.cylinder-winding-intensity.v1", + "scope": "two graphs; exact fixed-width component rewards, not a large-width prefactor proof", + "models": [ + { + "width": 2, + "graph": "NN", + "frontier_states": 6, + "reward_lumps": 3, + "max_absolute_gain": 0, + "transition_entries": 24, + "symbolic_intensity": { + "expression": "p**2*(p - 1)**2*(p**2 + p + 1)/(p**2 - p + 1)", + "numerator_descending": [ + 1, + -1, + 0, + -1, + 1, + 0, + 0 + ], + "denominator_descending": [ + 1, + -1, + 1 + ], + "low_p_through_8": "p**2 - p**4 - 2*p**5 + 2*p**7 + 2*p**8 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "189/3328", + "variance_per_row": "6348321/143982592", + "fano_rate": "33589/43264", + "rounded_stationary_certificate": { + "estimate": "238197/4194304", + "absolute_error_bound": "5/6291456", + "lower": "714581/12582912", + "upper": "714601/12582912", + "stationarity_l1_residual": "5/8388608", + "empty_row_reset": "9/16" + } + }, + { + "p": "1/2", + "intensity": "7/48", + "variance_per_row": "343/6912", + "fano_rate": "49/144", + "rounded_stationary_certificate": { + "estimate": "152917/1048576", + "absolute_error_bound": "1/524288", + "lower": "152915/1048576", + "upper": "152919/1048576", + "stationarity_l1_residual": "1/1048576", + "empty_row_reset": "1/4" + } + }, + { + "p": "3/4", + "intensity": "333/3328", + "variance_per_row": "7780545/143982592", + "fano_rate": "23365/43264", + "rounded_stationary_certificate": { + "estimate": "209841/2097152", + "absolute_error_bound": "3/1048576", + "lower": "209835/2097152", + "upper": "209847/2097152", + "stationarity_l1_residual": "3/4194304", + "empty_row_reset": "1/16" + } + } + ], + "states": [ + [ + [ + -1, + -1 + ], + [ + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1 + ], + [ + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0 + ], + [ + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 0, + 0, + 1, + 2, + 2 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ] + ] + ] + }, + { + "width": 2, + "graph": "matching", + "frontier_states": 6, + "reward_lumps": 3, + "max_absolute_gain": 0, + "transition_entries": 24, + "symbolic_intensity": { + "expression": "p**2*(p - 1)**2*(p**2 - 3*p + 3)/(p**2 - p + 1)", + "numerator_descending": [ + 1, + -5, + 10, + -9, + 3, + 0, + 0 + ], + "denominator_descending": [ + 1, + -1, + 1 + ], + "low_p_through_8": "3*p**2 - 6*p**3 + p**4 + 2*p**5 + 2*p**6 - 2*p**8 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "333/3328", + "variance_per_row": "7780545/143982592", + "fano_rate": "23365/43264", + "rounded_stationary_certificate": { + "estimate": "1678725/16777216", + "absolute_error_bound": "1/524288", + "lower": "1678693/16777216", + "upper": "1678757/16777216", + "stationarity_l1_residual": "1/524288", + "empty_row_reset": "9/16" + } + }, + { + "p": "1/2", + "intensity": "7/48", + "variance_per_row": "343/6912", + "fano_rate": "49/144", + "rounded_stationary_certificate": { + "estimate": "611669/4194304", + "absolute_error_bound": "1/524288", + "lower": "611661/4194304", + "upper": "611677/4194304", + "stationarity_l1_residual": "1/524288", + "empty_row_reset": "1/4" + } + }, + { + "p": "3/4", + "intensity": "189/3328", + "variance_per_row": "6348321/143982592", + "fano_rate": "33589/43264", + "rounded_stationary_certificate": { + "estimate": "119099/2097152", + "absolute_error_bound": "1/524288", + "lower": "119095/2097152", + "upper": "119103/2097152", + "stationarity_l1_residual": "1/524288", + "empty_row_reset": "1/16" + } + } + ], + "states": [ + [ + [ + -1, + -1 + ], + [ + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1 + ], + [ + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0 + ], + [ + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1 + ], + [ + 0, + 0 + ], + [ + 1 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 5, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 1, + 1, + 2, + 2, + 2 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ] + ] + ] + }, + { + "width": 3, + "graph": "NN", + "frontier_states": 14, + "reward_lumps": 4, + "max_absolute_gain": 1, + "transition_entries": 112, + "symbolic_intensity": { + "expression": "-p**3*(p - 1)**3*(p**6 + p**3 + 2*p**2 + 2*p + 1)/(p**6 - 3*p**5 + 3*p**4 + p**3 - p**2 - p + 1)", + "numerator_descending": [ + -1, + 3, + -3, + 0, + 1, + 1, + 0, + -1, + -1, + 1, + 0, + 0, + 0 + ], + "denominator_descending": [ + 1, + -3, + 3, + 1, + -1, + -1, + 1 + ], + "low_p_through_8": "p**3 - p**6 - 3*p**7 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "181467/11948032", + "variance_per_row": "5883728514060969/416417702119211008", + "fano_rate": "32423132107/34852409344", + "rounded_stationary_certificate": { + "estimate": "127401/8388608", + "absolute_error_bound": "11/4718592", + "lower": "1146433/75497472", + "upper": "1146785/75497472", + "stationarity_l1_residual": "11/8388608", + "empty_row_reset": "27/64" + } + }, + { + "p": "1/2", + "intensity": "169/1984", + "variance_per_row": "4769011/122023936", + "fano_rate": "28219/61504", + "rounded_stationary_certificate": { + "estimate": "357275/4194304", + "absolute_error_bound": "5/1048576", + "lower": "357255/4194304", + "upper": "357295/4194304", + "stationarity_l1_residual": "5/4194304", + "empty_row_reset": "1/8" + } + }, + { + "p": "3/4", + "intensity": "467235/8802304", + "variance_per_row": "843847890194655/23786530602483712", + "fano_rate": "1806045973/2702307328", + "rounded_stationary_certificate": { + "estimate": "890547/16777216", + "absolute_error_bound": "57/2097152", + "lower": "890091/16777216", + "upper": "891003/16777216", + "stationarity_l1_residual": "57/33554432", + "empty_row_reset": "1/64" + } + } + ], + "states": [ + [ + [ + -1, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0 + ], + [ + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 8, + 0 + ], + [ + 2, + 1 + ], + [ + 10, + 0 + ], + [ + 4, + 1 + ], + [ + 12, + 0 + ], + [ + 6, + 1 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 4, + 1 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 8, + 0 + ], + [ + 2, + 1 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 7, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 2, + 3, + 2, + 3, + 3 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 1, + 0 + ] + ] + ] + }, + { + "width": 3, + "graph": "matching", + "frontier_states": 14, + "reward_lumps": 4, + "max_absolute_gain": 1, + "transition_entries": 112, + "symbolic_intensity": { + "expression": "-p**3*(p - 1)**3*(p**6 - 6*p**5 + 15*p**4 - 21*p**3 + 20*p**2 - 15*p + 7)/(p**6 - 3*p**5 + 3*p**4 - 3*p**3 + 5*p**2 - 3*p + 1)", + "numerator_descending": [ + -1, + 9, + -36, + 85, + -134, + 153, + -133, + 86, + -36, + 7, + 0, + 0, + 0 + ], + "denominator_descending": [ + 1, + -3, + 3, + -3, + 5, + -3, + 1 + ], + "low_p_through_8": "7*p**3 - 15*p**4 + 6*p**5 - 19*p**6 + 45*p**8 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "467235/8802304", + "variance_per_row": "843847890194655/23786530602483712", + "fano_rate": "1806045973/2702307328", + "rounded_stationary_certificate": { + "estimate": "3562191/67108864", + "absolute_error_bound": "129/33554432", + "lower": "3561933/67108864", + "upper": "3562449/67108864", + "stationarity_l1_residual": "129/33554432", + "empty_row_reset": "27/64" + } + }, + { + "p": "1/2", + "intensity": "169/1984", + "variance_per_row": "4769011/122023936", + "fano_rate": "28219/61504", + "rounded_stationary_certificate": { + "estimate": "714553/8388608", + "absolute_error_bound": "17/4194304", + "lower": "714519/8388608", + "upper": "714587/8388608", + "stationarity_l1_residual": "17/4194304", + "empty_row_reset": "1/8" + } + }, + { + "p": "3/4", + "intensity": "181467/11948032", + "variance_per_row": "5883728514060969/416417702119211008", + "fano_rate": "32423132107/34852409344", + "rounded_stationary_certificate": { + "estimate": "1019251/67108864", + "absolute_error_bound": "5/2097152", + "lower": "1019091/67108864", + "upper": "1019411/67108864", + "stationarity_l1_residual": "5/2097152", + "empty_row_reset": "1/64" + } + } + ], + "states": [ + [ + [ + -1, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0 + ], + [ + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1 + ], + [ + 0, + 0, + 0 + ], + [ + 1 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 9, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 11, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 13, + 0 + ], + [ + 2, + 0 + ], + [ + 11, + 0 + ], + [ + 4, + 0 + ], + [ + 9, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 8, + 0 + ], + [ + 7, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 1, + 1, + 2, + 1, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ] + ] + ] + }, + { + "width": 4, + "graph": "NN", + "frontier_states": 38, + "reward_lumps": 7, + "max_absolute_gain": 1, + "transition_entries": 608, + "symbolic_intensity": { + "expression": "p**4*(p - 1)**4*(p**19 - 5*p**18 + 10*p**17 - 8*p**16 - 3*p**15 + 12*p**14 - 14*p**13 + 14*p**12 - 8*p**11 - 5*p**10 + 3*p**9 + 3*p**8 + 3*p**7 + 4*p**6 - 3*p**5 - 3*p**4 - 9*p**3 - 7*p**2 - 3*p - 1)/((p**2 - p - 1)*(p**2 - p + 1)*(p**15 - 7*p**14 + 21*p**13 - 33*p**12 + 25*p**11 - 2*p**10 - 8*p**9 + 3*p**8 - p**7 - 2*p**6 + 6*p**5 - 4*p**4 + 4*p**3 - 2*p**2 - p + 1))", + "numerator_descending": [ + 1, + -9, + 36, + -82, + 110, + -69, + -38, + 146, + -199, + 179, + -95, + 7, + 21, + -7, + -10, + 24, + -28, + 27, + -20, + 2, + 5, + -1, + 1, + -1, + 0, + 0, + 0, + 0 + ], + "denominator_descending": [ + 1, + -9, + 36, + -82, + 111, + -78, + 0, + 50, + -40, + 5, + 17, + -21, + 19, + -12, + 1, + 5, + -7, + 3, + 1, + -1 + ], + "low_p_through_8": "p**4 + 4*p**6 - 8*p**7 + 7*p**8 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "52135149017187/11770514026725376", + "variance_per_row": "107671389667607820495112464945385192549455/24883207262705966516568509444493445552930816", + "fano_rate": "1329276415649479265371758826486236945055/1360681650462409150795880180152204460032", + "rounded_stationary_certificate": { + "estimate": "297159/67108864", + "absolute_error_bound": "233/28311552", + "lower": "8008381/1811939328", + "upper": "8038205/1811939328", + "stationarity_l1_residual": "233/67108864", + "empty_row_reset": "81/256" + } + }, + { + "p": "1/2", + "intensity": "323849/5576960", + "variance_per_row": "186754153229427053/6098108298338304000", + "fano_rate": "186754153229427053/354111608171577600", + "rounded_stationary_certificate": { + "estimate": "487113/8388608", + "absolute_error_bound": "7/262144", + "lower": "486889/8388608", + "upper": "487337/8388608", + "stationarity_l1_residual": "7/2097152", + "empty_row_reset": "1/16" + } + }, + { + "p": "3/4", + "intensity": "253184971435209/8106458900660224", + "variance_per_row": "193503921484883898824750584886568833512341/8128560171801230876435903836265251008937984", + "fano_rate": "2388937302282517269441365245513195475461/3134262337892251904972475409773888077824", + "rounded_stationary_certificate": { + "estimate": "2095973/67108864", + "absolute_error_bound": "125/1048576", + "lower": "2087973/67108864", + "upper": "2103973/67108864", + "stationarity_l1_residual": "125/67108864", + "empty_row_reset": "1/256" + } + } + ], + "states": [ + [ + [ + -1, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + -1, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0, + 0 + ], + [ + 0, + 0, + -1, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + -1, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 1 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 16, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 17, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 18, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 20, + 0 + ], + [ + 6, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 22, + 0 + ], + [ + 23, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 28, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 32, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 16, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 17, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 2, + 1 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 28, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 34, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 18, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 35, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 32, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 20, + 0 + ], + [ + 6, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 28, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 31, + 0 + ], + [ + 36, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 22, + 0 + ], + [ + 23, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 32, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 2, + 1 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 6, + 1 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 31, + 0 + ], + [ + 10, + 1 + ], + [ + 23, + 0 + ], + [ + 12, + 1 + ], + [ + 17, + 0 + ], + [ + 14, + 1 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 9, + 1 + ], + [ + 36, + 0 + ], + [ + 23, + 0 + ], + [ + 12, + 1 + ], + [ + 13, + 1 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 31, + 0 + ], + [ + 36, + 0 + ], + [ + 23, + 0 + ], + [ + 12, + 1 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 27, + 0 + ], + [ + 35, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 9, + 1 + ], + [ + 10, + 1 + ], + [ + 11, + 1 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 2, + 1 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 28, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 31, + 0 + ], + [ + 10, + 1 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 27, + 0 + ], + [ + 35, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 9, + 1 + ], + [ + 36, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 6, + 1 + ], + [ + 7, + 1 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 34, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 2, + 1 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 6, + 1 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 34, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 32, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 27, + 0 + ], + [ + 35, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 34, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 6, + 1 + ], + [ + 7, + 1 + ], + [ + 30, + 0 + ], + [ + 31, + 0 + ], + [ + 34, + 0 + ], + [ + 23, + 0 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 27, + 0 + ], + [ + 35, + 0 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 9, + 1 + ], + [ + 10, + 1 + ], + [ + 11, + 1 + ], + [ + 33, + 0 + ], + [ + 17, + 0 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 25, + 0 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ], + [ + 29, + 0 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 9, + 1 + ], + [ + 36, + 0 + ], + [ + 23, + 0 + ], + [ + 12, + 1 + ], + [ + 13, + 1 + ], + [ + 19, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 24, + 0 + ], + [ + 2, + 1 + ], + [ + 26, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 6, + 1 + ], + [ + 21, + 0 + ], + [ + 8, + 1 + ], + [ + 31, + 0 + ], + [ + 10, + 1 + ], + [ + 23, + 0 + ], + [ + 12, + 1 + ], + [ + 17, + 0 + ], + [ + 14, + 1 + ], + [ + 15, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 2, + 1, + 3, + 1, + 3, + 1, + 3, + 1, + 3, + 4, + 4, + 5, + 4, + 6, + 5, + 4, + 5, + 6, + 5, + 4, + 4, + 4, + 4 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 0, + 0 + ], + [ + 3, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 3, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 0 + ], + [ + 5, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ] + ] + }, + { + "width": 4, + "graph": "matching", + "frontier_states": 38, + "reward_lumps": 7, + "max_absolute_gain": 1, + "transition_entries": 608, + "symbolic_intensity": { + "expression": "p**4*(p - 1)**4*(p**19 - 14*p**18 + 91*p**17 - 366*p**16 + 1025*p**15 - 2135*p**14 + 3451*p**13 - 4447*p**12 + 4619*p**11 - 3834*p**10 + 2450*p**9 - 1060*p**8 + 66*p**7 + 444*p**6 - 517*p**5 + 302*p**4 - 78*p**3 + 17*p**2 - 33*p + 19)/((p**2 - p - 1)*(p**2 - p + 1)*(p**15 - 8*p**14 + 28*p**13 - 58*p**12 + 84*p**11 - 97*p**10 + 93*p**9 - 72*p**8 + 56*p**7 - 61*p**6 + 59*p**5 - 31*p**4 + 7*p**3 - 4*p**2 + 3*p - 1))", + "numerator_descending": [ + 1, + -18, + 153, + -818, + 3092, + -8809, + 19696, + -35527, + 52678, + -64931, + 66739, + -56787, + 38961, + -19814, + 4793, + 3710, + -6098, + 4653, + -2294, + 867, + -420, + 263, + -109, + 19, + 0, + 0, + 0, + 0 + ], + "denominator_descending": [ + 1, + -10, + 45, + -122, + 227, + -315, + 343, + -297, + 209, + -148, + 144, + -138, + 72, + 12, + -41, + 20, + -2, + 3, + -3, + 1 + ], + "low_p_through_8": "19*p**4 - 52*p**5 + 50*p**6 - 76*p**7 + 5*p**8 + O(p**9)" + }, + "point_controls": [ + { + "p": "1/4", + "intensity": "253184971435209/8106458900660224", + "variance_per_row": "193503921484883898824750584886568833512341/8128560171801230876435903836265251008937984", + "fano_rate": "2388937302282517269441365245513195475461/3134262337892251904972475409773888077824", + "rounded_stationary_certificate": { + "estimate": "523989/16777216", + "absolute_error_bound": "289/50331648", + "lower": "785839/25165824", + "upper": "49133/1572864", + "stationarity_l1_residual": "289/67108864", + "empty_row_reset": "81/256" + } + }, + { + "p": "1/2", + "intensity": "323849/5576960", + "variance_per_row": "186754153229427053/6098108298338304000", + "fano_rate": "186754153229427053/354111608171577600", + "rounded_stationary_certificate": { + "estimate": "974237/16777216", + "absolute_error_bound": "29/2097152", + "lower": "974005/16777216", + "upper": "974469/16777216", + "stationarity_l1_residual": "29/4194304", + "empty_row_reset": "1/16" + } + }, + { + "p": "3/4", + "intensity": "52135149017187/11770514026725376", + "variance_per_row": "107671389667607820495112464945385192549455/24883207262705966516568509444493445552930816", + "fano_rate": "1329276415649479265371758826486236945055/1360681650462409150795880180152204460032", + "rounded_stationary_certificate": { + "estimate": "297245/67108864", + "absolute_error_bound": "457/16777216", + "lower": "295417/67108864", + "upper": "299073/67108864", + "stationarity_l1_residual": "457/67108864", + "empty_row_reset": "1/256" + } + } + ], + "states": [ + [ + [ + -1, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [] + ], + [ + [ + 0, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + -1, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0 + ] + ], + [ + [ + 0, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0, + 0 + ], + [ + 0, + 0, + -1, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + -1 + ], + [ + 0 + ] + ], + [ + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + -1, + 0 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + -1, + 0 + ], + [ + 0 + ] + ], + [ + [ + 0, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + -1, + 0, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + 0, + -1, + -1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 1 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 0, + 1 + ] + ], + [ + [ + -1, + 0, + -1, + 1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1, + 0 + ] + ], + [ + [ + 0, + -1, + 1, + -1 + ], + [ + 0, + 0, + 0, + 0 + ], + [ + 1, + 0 + ] + ] + ], + "transition_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 16, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 18, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 19, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 18, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 16, + 0 + ], + [ + 11, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 21, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 18, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 8, + 0 + ], + [ + 24, + 0 + ], + [ + 21, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 19, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 18, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 26, + 0 + ], + [ + 6, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 26, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 16, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 29, + 0 + ], + [ + 6, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 10, + 0 + ], + [ + 11, + 0 + ], + [ + 12, + 0 + ], + [ + 19, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 16, + 0 + ], + [ + 11, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 0 + ], + [ + 26, + 0 + ], + [ + 6, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 21, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 0 + ], + [ + 26, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 33, + 0 + ], + [ + 2, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 0 + ], + [ + 29, + 0 + ], + [ + 6, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 24, + 0 + ], + [ + 21, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 19, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 16, + 0 + ], + [ + 11, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 18, + 0 + ], + [ + 6, + 0 + ], + [ + 7, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 33, + 0 + ], + [ + 2, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 0 + ], + [ + 29, + 0 + ], + [ + 6, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 24, + 0 + ], + [ + 21, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 19, + 0 + ], + [ + 14, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 2, + 1 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 34, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 0 + ], + [ + 26, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 0 + ], + [ + 9, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 12, + 0 + ], + [ + 13, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 35, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 1 + ], + [ + 24, + 0 + ], + [ + 36, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 2, + 1 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 34, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 35, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 30, + 0 + ], + [ + 29, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 8, + 1 + ], + [ + 24, + 0 + ], + [ + 36, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 33, + 0 + ], + [ + 32, + 0 + ], + [ + 31, + 0 + ], + [ + 4, + 1 + ], + [ + 37, + 0 + ], + [ + 28, + 0 + ], + [ + 27, + 0 + ], + [ + 25, + 0 + ], + [ + 24, + 0 + ], + [ + 23, + 0 + ], + [ + 22, + 0 + ], + [ + 20, + 0 + ], + [ + 19, + 0 + ], + [ + 17, + 0 + ], + [ + 15, + 0 + ] + ] + ], + "reward_lump_map": [ + 0, + 1, + 1, + 2, + 1, + 3, + 2, + 4, + 1, + 2, + 3, + 4, + 2, + 4, + 4, + 5, + 4, + 5, + 4, + 5, + 5, + 4, + 5, + 5, + 5, + 6, + 4, + 5, + 5, + 5, + 6, + 5, + 6, + 6, + 6, + 6, + 6, + 6 + ], + "reduced_table": [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 4, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 4, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 4, + 0 + ], + [ + 2, + 0 + ], + [ + 4, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 6, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ], + [ + [ + 0, + 1 + ], + [ + 6, + 0 + ], + [ + 1, + 1 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ], + [ + 5, + 0 + ] + ] + ] + } + ], + "checks": { + "open_cylinder_graph_configurations": 139776, + "torus_complement_pairs": 66064, + "symbolic_point_controls": 18, + "all_p_duality_identities": 3, + "joint_torus_support_observed": [ + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 2 + ] + ] + }, + "renewal": { + "model": "X=1, Y=-1,0,1 with equal probabilities; distinct from site percolation", + "predicted_beta": "1/2", + "transverse_diffusion": "2/3", + "predicted_amplitude_squared_times_pi": "3/4", + "controls": [ + { + "width": 8, + "exact_tripling_ratio": "227222247/198330889", + "effective_beta": 0.47271561483240876, + "normalized_amplitude": 0.976712804506633 + }, + { + "width": 16, + "exact_tripling_ratio": "78913468642899849224364279/68610898610447508357566201", + "effective_beta": 0.48630254690114255, + "normalized_amplitude": 0.9882931060576412 + }, + { + "width": 32, + "exact_tripling_ratio": "5598591736654901948634657665769196096078639949512066432911/4858045220932244076931899197605773408405366558066798609889", + "effective_beta": 0.49317967652068856, + "normalized_amplitude": 0.9941430473274564 + }, + { + "width": 64, + "exact_tripling_ratio": "33133797227958609412406661233614764539723852298912939247654628944786089987137183302977629636626054884489534683455856527/28722811660000469298819575603334899524337584519985064607772914061445380264923922405355207660582432524040325829514184161", + "effective_beta": 0.4965974629888063, + "normalized_amplitude": 0.9970708529596739 + }, + { + "width": 128, + "exact_tripling_ratio": "20767036285170502586172473490653935090174324617646116945508941579405774941893972819771119170015397376244058121764854799348344523550340161848491185725487616217668242894689587306502109388032483720684027879571030145523473934076045166703283477511/17993575146736031601445596674637833602171717872174816862506738541588954274975038787762013872366442577987728896973956009377053875367521526813095284590533338485300782379641551173500956518523656636489292125575934535049132054546363149501784093929", + "effective_beta": 0.49830069876173705, + "normalized_amplitude": 0.9985352833648251 + } + ] + }, + "centering_counterexample": [ + { + "width": "10^4", + "scaled_linearization_error": "-1.0114208781395718274816030007828861502193277281211151292934625975846142061155679" + }, + { + "width": "10^8", + "scaled_linearization_error": "-1.0486661338057171063132555144197851941722022634339301605413364378229801028841860" + }, + { + "width": "10^16", + "scaled_linearization_error": "-1.0447446516850138067968641848677595355347933976169603026290713083502517912222400" + }, + { + "width": "10^32", + "scaled_linearization_error": "-1.0320134073127176264053019489513414596533901490703180770528736417488295378888790" + } + ], + "elapsed_seconds": 9.133352026000011 +} diff --git a/results/geometric-consistency/dilute-winding-crossover.json b/results/geometric-consistency/dilute-winding-crossover.json new file mode 100644 index 00000000..ea4850ef --- /dev/null +++ b/results/geometric-consistency/dilute-winding-crossover.json @@ -0,0 +1,277 @@ +{ + "schema": "matching-one/dilute-prefactor/v1", + "scope": "NN SITE dilute double limit plus an explicitly separate matrix-renewal control; no fixed-p OZ theorem", + "geometry_checks": { + "cycles": 2443, + "gap_subset_checks": 27, + "max_contact_over_r": 4.0 + }, + "minimal_nonrow_census": [ + { + "width": 3, + "tested_fixed_size_sets": 41, + "nonrow_winding_counts": { + "3": 0, + "4": 0, + "5": 0 + }, + "predicted_first_count": 0 + }, + { + "width": 4, + "tested_fixed_size_sets": 154, + "nonrow_winding_counts": { + "4": 0, + "5": 0, + "6": 4 + }, + "predicted_first_count": 4 + }, + { + "width": 5, + "tested_fixed_size_sets": 582, + "nonrow_winding_counts": { + "5": 0, + "6": 0, + "7": 10 + }, + "predicted_first_count": 10 + }, + { + "width": 6, + "tested_fixed_size_sets": 2211, + "nonrow_winding_counts": { + "6": 0, + "7": 0, + "8": 18 + }, + "predicted_first_count": 18 + }, + { + "width": 7, + "tested_fixed_size_sets": 8437, + "nonrow_winding_counts": { + "7": 0, + "8": 0, + "9": 28 + }, + "predicted_first_count": 28 + }, + { + "width": 8, + "tested_fixed_size_sets": 32318, + "nonrow_winding_counts": { + "8": 0, + "9": 0, + "10": 40 + }, + "predicted_first_count": 40 + } + ], + "independent_matrix_trace_coefficients": [ + "3/8", + "107/128", + "291/1024", + "9427/32768", + "49329/262144", + "736831/4194304", + "5138027/33554432", + "314325251/2147483648", + "2382293829/17179869184", + "36896778821/274877906944" + ], + "numerics": { + "small_width_retained_site_controls": [ + { + "width": 2, + "p": "1/32", + "nu_exact": "1015777/1041235968", + "nu_over_p_to_w": "0.99896246380916414904330312", + "bessel": "1.0039100663533544851278467", + "ratio": "0.99507166756265108739969013" + }, + { + "width": 2, + "p": "1/64", + "nu_exact": "16515009/67662512128", + "nu_over_p_to_w": "0.99974823187221051326555914", + "bessel": "1.0009768009444507521251346", + "ratio": "0.99877262982410676433877674" + }, + { + "width": 2, + "p": "1/128", + "nu_exact": "266338177/4363955208192", + "nu_over_p_to_w": "0.99993801122809597404195116", + "bessel": "1.0002441555265654198830768", + "ratio": "0.9996939304301075568999033" + }, + { + "width": 3, + "p": "1/32", + "nu_exact": "34050535322719/1115805188582539264", + "nu_over_p_to_w": "0.99996661861043110149987111", + "bessel": "1.0088083932745527185892953", + "ratio": "0.99123542714050825726667325" + }, + { + "width": 3, + "p": "1/64", + "nu_exact": "17728526576767167/4647445430768219717632", + "nu_over_p_to_w": "0.99999600644516563507956396", + "bessel": "1.0021984729137734562207749", + "ratio": "0.99780236497247455333717852" + }, + { + "width": 3, + "p": "1/128", + "nu_exact": "9150751527491551615/19190526232621887891963904", + "nu_over_p_to_w": "0.99999951198628886374492172", + "bessel": "1.0005493918479830188616354", + "ratio": "0.99945042207193935280084832" + }, + { + "width": 4, + "p": "1/32", + "nu_exact": "4474941304325856444847338672710119/4675167075569569864633478310744408719360", + "nu_over_p_to_w": "1.0036680994022294152982275", + "bessel": "1.0156861412236079233547345", + "ratio": "0.98816756344937399171306128" + }, + { + "width": 4, + "p": "1/64", + "nu_exact": "343083015125336094706475689322942604624447/5750535312434487951923723844041041486567897563136", + "nu_over_p_to_w": "1.0009464402805725375335546", + "bessel": "1.0039100663533544851278467", + "ratio": "0.99704791676853371072386202" + }, + { + "width": 4, + "p": "1/128", + "nu_exact": "322259858718084930015533383531141592775736914503/86485185297567971130649207291796618094959772345772802048", + "nu_over_p_to_w": "1.0002403513138719845713588", + "bessel": "1.0009768009444507521251346", + "ratio": "0.99926426903212551391020752" + } + ], + "bessel_contrast_curve": [ + { + "lambda": "0.05", + "beta_crossover": "0.017112316840867266575199661" + }, + { + "lambda": "0.1", + "beta_crossover": "0.065397172746318797803725633" + }, + { + "lambda": "0.25", + "beta_crossover": "0.30766035968951565158837001" + }, + { + "lambda": "0.5", + "beta_crossover": "0.60217481012385055449362348" + }, + { + "lambda": "1", + "beta_crossover": "0.63345301281698534244879706" + }, + { + "lambda": "2", + "beta_crossover": "0.55014475672342332825451932" + }, + { + "lambda": "4", + "beta_crossover": "0.52063665446642206842220606" + }, + { + "lambda": "10", + "beta_crossover": "0.50759817582716807023129548" + }, + { + "lambda": "30", + "beta_crossover": "0.50245165937891411565443832" + } + ], + "matching_fixed_width_low_p_limit_not_finite_p_data": { + "c4": 19, + "c8": 1107, + "c12": 73789, + "R4_exact": "1401991/1225449", + "beta_effective_limit": "0.46782915803867695654419993" + }, + "proved_bound_numerical_controls_not_density_estimates": [ + { + "width": 64, + "p": "1/256", + "lambda": "0.25", + "finite_lower_over_bessel": "0.97976236544816369011344071", + "walk_upper_over_bessel": "1.0019903375367301483087813", + "universal_lower_factor": "0.875", + "universal_upper_factor": "1.005876574714478322766683" + }, + { + "width": 256, + "p": "1/256", + "lambda": "1.0", + "finite_lower_over_bessel": "0.88818847544168495401452164", + "walk_upper_over_bessel": "1.009103052658314946935824", + "universal_lower_factor": "0.5", + "universal_upper_factor": "1.0237143166023579169688505" + }, + { + "width": 1024, + "p": "1/1024", + "lambda": "1.0", + "finite_lower_over_bessel": "0.97128740046313902746753251", + "walk_upper_over_bessel": "1.0022550698722570539788439", + "universal_lower_factor": "0.875", + "universal_upper_factor": "1.005876574714478322766683" + }, + { + "width": 1024, + "p": "1/256", + "lambda": "4.0", + "finite_lower_over_bessel": "0.51066693893278599483236007", + "walk_upper_over_bessel": "1.044565976499507742163823", + "universal_lower_factor": "-1.0", + "universal_upper_factor": "1.0982851403078258486502099" + } + ], + "matrix_renewal_controls_not_site_model": { + "mean_forward_length": "3/2", + "single_step_transverse_variance": "1/2", + "asymptotic_variance_per_renewal": "1", + "D": "2/3", + "naive_D_ignoring_correlations": "1/3", + "sequence": [ + { + "width": 8, + "normalized_gaussian_amplitude": "0.8473029209783016747029948", + "beta_effective": "0.2889944274690882503308101" + }, + { + "width": 16, + "normalized_gaussian_amplitude": "0.92847341407200684608741177", + "beta_effective": "0.38846535391804191114872381" + }, + { + "width": 32, + "normalized_gaussian_amplitude": "0.96956080304801010351813996", + "beta_effective": "0.46026688247931377606194586" + }, + { + "width": 64, + "normalized_gaussian_amplitude": "0.98563441495658425494014059", + "beta_effective": "0.48241781188732095533592058" + }, + { + "width": 128, + "normalized_gaussian_amplitude": "0.99299850301651533865874337", + "beta_effective": "0.49167011031188536311776649" + } + ] + }, + "log_nu_absolute_error_to_beta_error_multiplier": "13.904237987128827641505998" + } +} diff --git a/results/geometric-consistency/oblique-necklace-controls.json b/results/geometric-consistency/oblique-necklace-controls.json new file mode 100644 index 00000000..29b3a20a --- /dev/null +++ b/results/geometric-consistency/oblique-necklace-controls.json @@ -0,0 +1,358 @@ +{ + "schema": "matching-one.oblique-necklace-controls.v1", + "nature": "deterministic geometric controls, not production evidence", + "cases": [ + { + "input_basis": [ + [ + 512, + 0 + ], + [ + 37, + 900 + ] + ], + "reduced_basis": [ + [ + 512, + 0 + ], + [ + 37, + 900 + ] + ], + "N": 460800, + "squared_shortest_period": 262144, + "ambient_gcd": 512, + "block_scale": 8, + "blocks": 256, + "crossing_events": 1280, + "support_vertices": 16896, + "occupied_witness_vertices": 15828, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 9, + "checked_translates": [ + 0, + 1, + 8 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 0, + 512 + ], + [ + -1200, + 51 + ] + ], + "reduced_basis": [ + [ + 0, + 512 + ], + [ + -1200, + 51 + ] + ], + "N": 614400, + "squared_shortest_period": 262144, + "ambient_gcd": 512, + "block_scale": 8, + "blocks": 256, + "crossing_events": 1280, + "support_vertices": 25088, + "occupied_witness_vertices": 19746, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 12, + "checked_translates": [ + 0, + 1, + 11 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 384, + 512 + ], + [ + -1536, + 1152 + ] + ], + "reduced_basis": [ + [ + 384, + 512 + ], + [ + -1536, + 1152 + ] + ], + "N": 1228800, + "squared_shortest_period": 409600, + "ambient_gcd": 128, + "block_scale": 8, + "blocks": 320, + "crossing_events": 1600, + "support_vertices": 28928, + "occupied_witness_vertices": 25988, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 19, + "checked_translates": [ + 0, + 1, + 18 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 511, + 129 + ], + [ + -387, + 1533 + ] + ], + "reduced_basis": [ + [ + 511, + 129 + ], + [ + -387, + 1533 + ] + ], + "N": 833286, + "squared_shortest_period": 277762, + "ambient_gcd": 1, + "block_scale": 8, + "blocks": 264, + "crossing_events": 1320, + "support_vertices": 20868, + "occupied_witness_vertices": 14930, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 16, + "checked_translates": [ + 0, + 1, + 15 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 357, + -407 + ], + [ + 1221, + 1071 + ] + ], + "reduced_basis": [ + [ + 357, + -407 + ], + [ + 1221, + 1071 + ] + ], + "N": 879294, + "squared_shortest_period": 293098, + "ambient_gcd": 1, + "block_scale": 8, + "blocks": 271, + "crossing_events": 1355, + "support_vertices": 24679, + "occupied_witness_vertices": 21782, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 16, + "checked_translates": [ + 0, + 1, + 15 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 900, + 0 + ], + [ + 271, + 711 + ] + ], + "reduced_basis": [ + [ + 271, + 711 + ], + [ + -900, + 0 + ] + ], + "N": 639900, + "squared_shortest_period": 578962, + "ambient_gcd": 1, + "block_scale": 8, + "blocks": 381, + "crossing_events": 1905, + "support_vertices": 36787, + "occupied_witness_vertices": 28923, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 8, + "checked_translates": [ + 0, + 1, + 7 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 1100, + 0 + ], + [ + 473, + 853 + ] + ], + "reduced_basis": [ + [ + 473, + 853 + ], + [ + -627, + 853 + ] + ], + "N": 938300, + "squared_shortest_period": 951338, + "ambient_gcd": 1, + "block_scale": 8, + "blocks": 488, + "crossing_events": 2440, + "support_vertices": 45226, + "occupied_witness_vertices": 40544, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 9, + "checked_translates": [ + 0, + 1, + 8 + ], + "conditions_pass": true + }, + { + "input_basis": [ + [ + 1024, + 0 + ], + [ + 517, + 515 + ] + ], + "reduced_basis": [ + [ + 507, + -515 + ], + [ + 517, + 515 + ] + ], + "N": 527360, + "squared_shortest_period": 522274, + "ambient_gcd": 1, + "block_scale": 8, + "blocks": 362, + "crossing_events": 1810, + "support_vertices": 33002, + "occupied_witness_vertices": 28767, + "winding_gcd": [ + 1, + 0 + ], + "packed_bands": 7, + "checked_translates": [ + 0, + 1, + 6 + ], + "conditions_pass": true + } + ], + "cases_count": 8, + "crossing_event_checks": 12990, + "harris_control": { + "scope": "toy Harris inequality, not a percolation/RSW estimate", + "rows": [ + { + "p": "1/3", + "joint": "7/27", + "product": "125/729" + }, + { + "p": "1/2", + "joint": "1/2", + "product": "27/64" + }, + { + "p": "2/3", + "joint": "20/27", + "product": "512/729" + } + ] + }, + "no_probability_or_novelty_estimate": true, + "full_repository_ci_run": false +} diff --git a/results/geometric-consistency/sewing-multiplicity.json b/results/geometric-consistency/sewing-multiplicity.json new file mode 100644 index 00000000..6ddf1902 --- /dev/null +++ b/results/geometric-consistency/sewing-multiplicity.json @@ -0,0 +1,138 @@ +{ + "w2-NN": { + "p": "1/2", + "lengths": [ + 2, + 9 + ], + "width": 2, + "matching": false, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "690858/1006099", + "2": "225092/1006099", + "3": "66486/1006099", + "4": "18208/1006099", + "5": "4426/1006099", + "6": "886/1006099", + "7": "261/2012198", + "8": "12/1006099", + "9": "1/2012198" + }, + "E_c": "1441792/1006099", + "P_c_ge_2": "315241/1006099", + "P_c_ge_3": "90149/1006099", + "winding_component_weight": "1006099/131072" + }, + "w2-matching": { + "p": "1/2", + "lengths": [ + 2, + 9 + ], + "width": 2, + "matching": true, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "115522/293395", + "2": "66165/234716", + "3": "183571/1173580", + "4": "5076/58679", + "5": "26751/586790", + "6": "1314/58679", + "7": "22659/2347160", + "8": "942/293395", + "9": "1393/2347160" + }, + "E_c": "131072/58679", + "P_c_ge_2": "177873/293395", + "P_c_ge_3": "380667/1173580", + "winding_component_weight": "293395/32768" + }, + "w3-NN": { + "p": "1/2", + "lengths": [ + 2, + 6 + ], + "width": 3, + "matching": false, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "20727/34444", + "2": "81119/275552", + "3": "5835/68888", + "4": "9343/551104", + "5": "287/137776", + "6": "63/551104" + }, + "E_c": "419819/275552", + "P_c_ge_2": "13717/34444", + "P_c_ge_3": "28617/275552", + "winding_component_weight": "8611/4096" + }, + "w3-matching": { + "p": "1/2", + "lengths": [ + 2, + 6 + ], + "width": 3, + "matching": true, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "81384/233215", + "2": "74662/233215", + "3": "45226/233215", + "4": "89453/932860", + "5": "16041/466430", + "6": "6237/932860" + }, + "E_c": "505297/233215", + "P_c_ge_2": "151831/233215", + "P_c_ge_3": "77169/233215", + "winding_component_weight": "233215/65536" + }, + "w4-NN": { + "p": "1/2", + "lengths": [ + 2, + 5 + ], + "width": 4, + "matching": false, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "25587/43102", + "2": "308235/991346", + "3": "81597/991346", + "4": "6116/495673", + "5": "781/991346" + }, + "E_c": "1502595/991346", + "P_c_ge_2": "17515/43102", + "P_c_ge_3": "47305/495673", + "winding_component_weight": "495673/524288" + }, + "w4-matching": { + "p": "1/2", + "lengths": [ + 2, + 5 + ], + "width": 4, + "matching": true, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": { + "1": "100443/286340", + "2": "400461/1145360", + "3": "463721/2290720", + "4": "5769/71585", + "5": "7585/458144" + }, + "E_c": "147644/71585", + "P_c_ge_2": "185897/286340", + "P_c_ge_3": "343127/1145360", + "winding_component_weight": "71585/32768" + } +} \ No newline at end of file diff --git a/results/geometric-consistency/span-spectrum-20260913.json b/results/geometric-consistency/span-spectrum-20260913.json new file mode 100644 index 00000000..58e070f8 --- /dev/null +++ b/results/geometric-consistency/span-spectrum-20260913.json @@ -0,0 +1,1991 @@ +{ + "schema": "matching-one/span-spectrum-diagnostic/v1", + "issue": 740, + "pr": 739, + "date": "2026-09-13", + "definition": "d_h = nu_(w, span=h): anchored density of complete winding clusters with vertical span h; one-frontier transfer with per-component min-row offsets (exact lumping: sum_h d_h + tail = nu_w exactly)", + "conjecture_under_test": "sewing-with-memory section 6.3: nu_(w,<=H)/nu_w -> F_range(H/sqrt(D_G w)) with Var(L)/(E L)^2 -> pi/3 - 1 = 0.04719755119659763 (Brownian-bridge range law)", + "inputs": { + "NN": "p in {1/8, 1/4} (subcritical by 3p<1, 7p<1); p=1/2 for w<=4 (cross-checks)", + "matching NN+NNN": "p in {1/16, 1/8} (subcritical by 15p<1); p=1/2 for w<=4" + }, + "engine": { + "builder": "scripts/span_spectrum_build.cpp", + "solver": "scripts/span_spectrum_solve.py", "moment_test": "scripts/span_moment_limits.py", + "validation": [ + "d_1 = p^w (1-p)^(2w) exact at every config", + "sum_{h<=3} d_h = 9087/1048576 exact (section 4.1 control, NN w=4 p=1/2 D_MAX=3)", + "closure sum d_h + tail = certified nu_w exact in every run where a certified reference was supplied (w=2,3,4 at the published p); no closure was run at w=5..7 because no certified nu_w reference exists at those widths (#741's w=4,8 values were not used: the w=8 spectrum is absent)" + ], + "cost": { + "w8_build_seconds": 469, + "w8_states": 2505625, + "w8_transitions": 604479488, + "fleet": "10 Huawei ARM containers, 144 vCPU, streamed binary tables" + } + }, + "runs": [ + { + "file": "/workspace/mospan/s2_m0.bin", + "label": "NN p=1/2", + "width": 2, + "matching": false, + "p": "1/2", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.015625, + 0.03515625, + 0.0341796875, + 0.023193359375, + 0.01470947265625, + 0.0090484619140625, + 0.005504608154296875, + 0.0033330917358398438, + 0.0020143985748291016, + 0.0012164711952209473, + 0.000734373927116394, + 0.0004432760179042816, + 0.0002675512805581093, + 0.0001614841166883707, + 9.74649447016418e-05, + 5.882546247448772e-05, + 3.550434848875739e-05, + 2.1428780200949404e-05, + 1.2933415519000846e-05, + 7.806007431554463e-06, + 4.71134241308846e-06, + 2.8435467278598026e-06, + 1.7162322789587847e-06, + 1.0358378135233437e-06, + 6.251834250847743e-07, + 3.7733157610964074e-07, + 2.2773975217812992e-07, + 1.374530996097953e-07, + 8.296028431950021e-08, + 5.0070960886229674e-08, + 3.022049821330044e-08, + 1.8239684162093785e-08, + 1.1008623219391723e-08, + 6.644291869830111e-09, + 4.010184886127885e-09, + 2.4203606849285363e-09, + 1.460816897847314e-09, + 8.816809917317037e-10, + 5.321415519813123e-10, + 3.2117583797388845e-10, + 1.9384676598577644e-10, + 1.169968728662563e-10, + 7.061385930723919e-11, + 4.2619234207760616e-11, + 2.572298331058276e-11, + 1.552519379327642e-11, + 9.370283353549632e-12, + 5.6554662888545925e-12 + ], + "tail_bin_float": 8.609925707605852e-12, + "sum_dh_float": 0.1458333333247234, + "nu_total_float": 0.14583333333333334, + "certificate_bound": "0", + "tail_bound_eq9": "79766443076872509863361/39614081257132168796771975168", + "tail_bound_eq9_float": 2.0135881117402228e-06, + "delta": "1/4", + "nu_ref": "7/48", + "closure_exact": true, + "gap_to_ref": "0", + "gap_float": 2.7755575615628914e-17 + }, + { + "file": "/workspace/mospan/s3_m0.bin", + "label": "NN p=1/2", + "width": 3, + "matching": false, + "p": "1/2", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.0019531249999999998, + 0.009033203124999998, + 0.015228271484375, + 0.014057159423828123, + 0.011713504791259766, + 0.00913029909133911, + 0.006853006780147552, + 0.005019151605665683, + 0.0036155955167487255, + 0.0025744175800355147, + 0.0018178180816903475, + 0.0012757646829868463, + 0.0008913097659899448, + 0.0006206135081932018, + 0.0004310340213158348, + 0.00029879172936381204, + 0.00020682028472963215, + 0.00014300006575318925, + 9.878977859106538e-05, + 6.820356015559686e-05, + 4.7063826099165094e-05, + 3.246405994869448e-05, + 2.2386812119737147e-05, + 1.543422709582161e-05, + 1.0639059444687932e-05, + 7.332710807609763e-06, + 5.053381505839931e-06, + 3.4822983717025717e-06, + 2.399518119228814e-06, + 1.6533402385693814e-06, + 1.1391611987473205e-06, + 7.848676175350562e-07, + 5.407526184438436e-07, + 3.725580304729474e-07, + 2.5667519895907374e-07, + 1.7683563948012178e-07, + 1.2182952335762715e-07, + 8.393302545458326e-08, + 5.782442925882328e-08, + 3.9837163240970726e-08, + 2.7445071036667657e-08, + 1.890773341816755e-08, + 1.3026085791042295e-08, + 8.974037913217165e-09, + 6.182462392163831e-09, + 4.259266087242239e-09, + 2.9343224446781054e-09, + 2.0215324867934963e-09 + ], + "tail_bin_float": 4.47702675164191e-09, + "sum_dh_float": 0.0851814471358765, + "nu_total_float": 0.08518145161290325, + "certificate_bound": "131/274877906944", + "tail_bound_eq9": "110110104651882376323690633096100980566403/22300745198530623141535718272648361505980416", + "tail_bound_eq9_float": 0.0049375078577704856, + "delta": "1/8", + "float_residual_l1": 2.749292680992338e-16, + "nu_ref": "169/1984", + "closure_exact": false, + "gap_float": -2.7755575615628914e-17 + }, + { + "file": "/workspace/mospan/s4_m0.bin", + "label": "NN p=1/2", + "width": 4, + "matching": false, + "p": "1/2", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.00024414062500000005, + 0.0022125244140625004, + 0.006209373474121094, + 0.007723748683929443, + 0.007700148969888688, + 0.006921775871887805, + 0.005874147391295993, + 0.004807409756722337, + 0.0038384595982847718, + 0.0030110885350076453, + 0.0023312263546662053, + 0.0017868584177336147, + 0.0013589471140562231, + 0.0010271378481617696, + 0.0007725053486816978, + 0.0005786694137758308, + 0.0004320520226165195, + 0.00032171530036268555, + 0.000239023592109804, + 0.00017725868385373936, + 0.00013125198131200006, + 9.706119428343348e-05, + 7.169970544722771e-05, + 5.2917109937683165e-05, + 3.9025121590880586e-05, + 2.8761655328689146e-05, + 2.118597793937478e-05, + 1.5598567310345702e-05, + 1.1480298018740872e-05, + 8.446556799056633e-06, + 6.21278214398372e-06, + 4.568680595847576e-06, + 3.3589941664893557e-06, + 2.469190581411838e-06, + 1.814838532269097e-06, + 1.333732684483004e-06, + 9.800652404558012e-07, + 7.201174264262533e-07, + 5.290777781698508e-07, + 3.8869454201329173e-07, + 2.8554476532969617e-07, + 2.0975885197183048e-07, + 1.5408121393599067e-07, + 1.1317875241144726e-07, + 8.313196906243975e-08, + 6.106059063867886e-08, + 4.4848223415410164e-08, + 3.293988698055074e-08 + ], + "tail_bin_float": 9.110250511132349e-08, + "sum_dh_float": 0.05806900030213107, + "nu_total_float": 0.05806909140463618, + "certificate_bound": "8037/1099511627776", + "tail_bound_eq9": "283387333428466483068181247517713927663862705230712890625/1569275433846670190958947355801916604025588861116008628224", + "tail_bound_eq9_float": 0.18058482744091406, + "delta": "1/16", + "float_residual_l1": 7.217116260037216e-16, + "nu_ref": "323849/5576960", + "closure_exact": false, + "gap_float": 3.469446951953614e-17 + }, + { + "file": "/workspace/mospan/s2_m0.bin", + "label": "NN p=1/4", + "width": 2, + "matching": false, + "p": "1/4", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.019775390625, + 0.0210113525390625, + 0.010428428649902344, + 0.0037803053855895996, + 0.001241091638803482, + 0.00038716220296919346, + 0.00011744500079657882, + 3.504400865494972e-05, + 1.0352129777402297e-05, + 3.0389829852595085e-06, + 8.88611997984512e-07, + 2.591821246372694e-07, + 7.547446112619177e-08, + 2.195568857629596e-08, + 6.382722755081865e-09, + 1.8547240898399312e-09, + 5.388067126647228e-10, + 1.5649825570373446e-10, + 4.5450241891799974e-11, + 1.3198687557320626e-11, + 3.832697502188905e-12, + 1.1129225436138057e-12, + 3.231593188048955e-13, + 9.383456433063587e-14, + 2.7246165644548408e-14, + 7.911259204632598e-15, + 2.2971234284450494e-15, + 6.669942303480222e-16, + 1.9366859234518438e-16, + 5.623360289464106e-17, + 1.6327976322353034e-17, + 4.7409856986625155e-18, + 1.3765906629718314e-18, + 3.9970623548265195e-19, + 1.1605850762426902e-19, + 3.369868940098675e-20, + 9.784733932941809e-21, + 2.8410901771169943e-21, + 8.2493742833035955e-22, + 2.395283888346389e-22, + 6.954933386671096e-23, + 2.0194306992672077e-23, + 5.86360804554449e-24, + 1.7025540541676144e-24, + 4.943526717714623e-25, + 1.4353997353623624e-25, + 4.167818880721099e-26, + 1.2101656276211161e-26 + ], + "tail_bin_float": 4.95156369042763e-27, + "sum_dh_float": 0.056790865384615384, + "nu_total_float": 0.056790865384615384, + "certificate_bound": "0", + "tail_bound_eq9": "36703368217294125441230211032033660188801/3138550867693340381917894711603833208051177722232017256448", + "tail_bound_eq9_float": 1.1694367803657442e-17, + "delta": "9/16", + "nu_ref": "189/3328", + "closure_exact": true, + "gap_to_ref": "0", + "gap_float": 0.0 + }, + { + "file": "/workspace/mospan/s3_m0.bin", + "label": "NN p=1/4", + "width": 3, + "matching": false, + "p": "1/4", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.002780914306640625, + 0.005257666110992432, + 0.003968370147049427, + 0.0018771786853903905, + 0.0007971179295509501, + 0.0003164309536636267, + 0.00012055621481749101, + 4.465417263024938e-05, + 1.620594183741421e-05, + 5.79149409417641e-06, + 2.044959305710962e-06, + 7.151620893565229e-07, + 2.481543839014266e-07, + 8.555035703389947e-08, + 2.933307087587011e-08, + 1.0011233464106846e-08, + 3.403299931257205e-09, + 1.1530031026954816e-09, + 3.894685453267956e-10, + 1.3121633495265006e-10, + 4.4107602745247405e-11, + 1.479670293952224e-11, + 4.954976714699316e-12, + 1.6566429959615415e-12, + 5.530965929092592e-13, + 1.8442608575732585e-13, + 6.142562176612325e-14, + 2.0437714950028174e-14, + 6.793828381341571e-15, + 2.2564990465387273e-15, + 7.489083158377562e-16, + 2.483852971533733e-16, + 8.23292948396594e-17, + 2.7273373990583588e-17, + 9.030285200501545e-18, + 2.9885610882972352e-18, + 9.88641555878164e-19, + 3.2692480667141236e-19, + 1.0806968013056531e-19, + 3.571249016395254e-20, + 1.1798009499010798e-20, + 3.896553483830757e-21, + 1.286606644091993e-21, + 4.247302993741976e-22, + 1.4018167751966936e-22, + 4.625805156188507e-23, + 1.526189052930735e-23, + 5.034548750935916e-24 + ], + "tail_bin_float": 2.1875045906896858e-17, + "sum_dh_float": 0.01518802427044052, + "nu_total_float": 0.015188024270440543, + "certificate_bound": "503/4947802324992", + "tail_bound_eq9": "5633833526679699844762086578145447590607134815636231346599406944241011738563/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056", + "tail_bound_eq9_float": 1.132831348752325e-11, + "delta": "27/64", + "float_residual_l1": 5.36537818034195e-16, + "nu_ref": "181467/11948032", + "closure_exact": false, + "gap_float": -2.2551405187698492e-17 + }, + { + "file": "/workspace/mospan/s4_m0.bin", + "label": "NN p=1/4", + "width": 4, + "matching": false, + "p": "1/4", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.0003910660743713379, + 0.001223609084263444, + 0.001352971898995747, + 0.0007909598441493415, + 0.0003837217951137145, + 0.0001694053095294621, + 7.081012412142495e-05, + 2.85573807225981e-05, + 1.123025146170212e-05, + 4.33439253391616e-06, + 1.6488884767871305e-06, + 6.201062248596548e-07, + 2.3103736185213033e-07, + 8.541473030978868e-08, + 3.137244667433105e-08, + 1.1458936953273917e-08, + 4.165351806012204e-09, + 1.5077824953072808e-09, + 5.437830898048302e-10, + 1.954771055121637e-10, + 7.006534705082745e-11, + 2.504831280274867e-11, + 8.933739888046595e-12, + 3.1795390830344173e-12, + 1.1294182332770705e-12, + 4.004777112133781e-13, + 1.4177483278199042e-13, + 5.011572303576925e-14, + 1.76910405386669e-14, + 6.237093869315529e-15, + 2.196347314853759e-15, + 7.725842179246849e-16, + 2.714872443665886e-16, + 9.531064741291203e-17, + 3.343094835570296e-17, + 1.1716442315247065e-17, + 4.10303274367337e-18, + 1.4358096311741304e-18, + 5.020999871202325e-19, + 1.7546978269015277e-19, + 6.128429718011727e-20, + 2.13917136538362e-20, + 7.46285658630605e-21, + 2.602198583848433e-21, + 9.069082839810818e-22, + 3.1592562267244127e-22, + 1.1000567580625958e-22, + 3.8288084022476365e-23 + ], + "tail_bin_float": 1.33210785239347e-23, + "sum_dh_float": 0.004429300954810661, + "nu_total_float": 0.004429300954810661, + "certificate_bound": "27035/29686813949952", + "tail_bound_eq9": "463261636424876129938368329678177489488710534372668564138134650863022623301645808169269002974033355712890625/9850501549098619803069760025035903451269934817616361666987073351061430442874302652853566563721228910201656997576704", + "tail_bound_eq9_float": 4.7029243548240174e-08, + "delta": "81/256", + "float_residual_l1": 4.3559866368714224e-15, + "nu_ref": "52135149017187/11770514026725376", + "closure_exact": false, + "gap_float": 1.734723475976807e-18 + }, + { + "file": "/workspace/mospan/s5_m0.bin", + "label": "NN p=1/4", + "width": 5, + "matching": false, + "p": "1/4", + "states": 52061, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 5.499366670846921e-05, + 0.0002685774679775955, + 0.00041920655475725444, + 0.0003011608792269195, + 0.00016360308192832088, + 7.787099891522328e-05, + 3.444947525988904e-05, + 1.4560818681768365e-05, + 5.966925547267184e-06, + 2.39117813155661e-06, + 9.421921138186353e-07, + 3.6637804849418257e-07, + 1.4096396555162592e-07, + 5.3765016159604146e-08, + 2.0357572035825403e-08, + 7.660673157118224e-09, + 2.867486624867872e-09, + 1.0683987957577382e-09, + 3.9647026234594935e-10, + 1.4660122731493613e-10, + 5.40362460990511e-11, + 1.9860832462025123e-11, + 7.281102978775053e-12, + 2.6631137815233536e-12, + 9.719999304497497e-13, + 3.540838087895593e-13, + 1.2875934255596367e-13, + 4.674611602669718e-14, + 1.6945744570226397e-14, + 6.134404093638731e-15, + 2.217807445496492e-15, + 8.008546908820293e-16, + 2.8886631248839174e-16, + 1.0408421345598055e-16, + 3.7466765076571547e-17, + 1.34743208991533e-17, + 4.841619362511448e-18, + 1.7382777044980422e-18, + 6.236089370968185e-19, + 2.2355708885004308e-19, + 8.008743036127138e-20, + 2.8671844754461054e-20, + 1.025833034291749e-20, + 3.6680972852178736e-21, + 1.3108727559729292e-21, + 4.682171320525994e-22, + 1.6715212215849362e-22, + 5.964367110859976e-23 + ], + "tail_bin_float": 3.3052769078520395e-23, + "sum_dh_float": 0.0013443169288498255, + "nu_total_float": 0.0013443169288498255, + "certificate_bound": "189295/44530220924928", + "tail_bound_eq9": "35173827586146711359030030820932874394961166615686251714832528575517620172590998817556357514093470893595722714087962964978427553231888523205/3121748550315992231381597229793166305748598142664971150859156959625371738819765620120306103063491971159826931121406622895447975679288285306290176", + "tail_bound_eq9_float": 1.1267348096497496e-05, + "delta": "243/1024", + "float_residual_l1": 1.220540374621817e-14 + }, + { + "file": "/workspace/mospan/s6_m0.bin", + "label": "NN p=1/4", + "width": 6, + "matching": false, + "p": "1/4", + "states": 668439, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 7.73348438087828e-06, + 5.712696213677894e-05, + 0.00012264919085897016, + 0.00010803343658328537, + 6.573799878510071e-05, + 3.353773640463686e-05, + 1.5544698450544575e-05, + 6.799481083166279e-06, + 2.8632134152773766e-06, + 1.1739291928692518e-06, + 4.719206700896149e-07, + 1.8686074776702892e-07, + 7.3106410280686e-08, + 2.8324472821260713e-08, + 1.0885912729573941e-08, + 4.155461351696108e-09, + 1.5770942943589466e-09, + 5.955579127748111e-10, + 2.2392169397355852e-10, + 8.386909531802678e-11, + 3.130620272141289e-11, + 1.1650379598358159e-11, + 4.323797809685463e-12, + 1.600741241395098e-12, + 5.912978000783452e-13, + 2.179749429027585e-13, + 8.020417599343971e-14, + 2.946071528205611e-14, + 1.0804473006937555e-14, + 3.956666481698854e-15, + 1.4469942782115205e-15, + 5.285144260090252e-16, + 1.9281309412084537e-16, + 7.026502580000863e-17, + 2.5579679820906536e-17, + 9.303184426274976e-18, + 3.380444172945743e-18, + 1.2272819101885231e-18, + 4.452092926461759e-19, + 1.6138107952402836e-19, + 5.845574180609356e-20, + 2.1159440783824884e-20, + 7.654180478310065e-21, + 2.7670987364390157e-21, + 9.997582506707628e-22, + 3.6101209190945254e-22, + 1.302915084645981e-22, + 4.699899118556935e-23 + ], + "tail_bin_float": 2.648893593891943e-23, + "sum_dh_float": 0.000421977915226643, + "nu_total_float": 0.000421977915226643, + "certificate_bound": "1468555/59373627899904", + "tail_bound_eq9": "60924341153833918515884510589286564112732997153125818166751211034966124212623374710338562852583208379447190812204849104701003575066405973325522563669663859866564652341123/123665200736552267030251260509823595017565674550605919957031528046448612553265933585158200530621522494798835713008069669675682517153375604983773077550946583958303386074349568", + "tail_bound_eq9_float": 0.0004926554988061912, + "delta": "729/4096", + "float_residual_l1": 3.9368329345808195e-14 + }, + { + "file": "/workspace/mospan/s7_m0.bin", + "label": "NN w=7 p=1/4", + "width": 7, + "matching": false, + "p": "1/4", + "states": 389391, + "d_max": 20, + "mode": "float64(power) + cert:exact", + "d_h_float": [ + 1.0875212410608261e-06, + 1.1913415519219256e-05, + 3.44688520863608e-05, + 3.704115720290019e-05, + 2.5304838826781436e-05, + 1.3845292980267145e-05, + 6.711567275590036e-06, + 3.027256676699071e-06, + 1.3036948987523842e-06, + 5.439107164890305e-07, + 2.217783671507103e-07, + 8.88779296174647e-08, + 3.513984040249842e-08, + 1.3743508170201648e-08, + 5.327642413982698e-09, + 2.0499809558845607e-09, + 7.838510798191698e-10, + 2.981078228488553e-10, + 1.1284426328001173e-10, + 4.2540671669078275e-11 + ], + "tail_bin_float": 2.5518102710093005e-11, + "sum_dh_float": 0.00013561566203666855, + "nu_total_float": 0.00013561568755477126, + "float_residual_l1": 1.71790823522859e-13, + "certificate_bound": "184403033/1603087953297408", + "tail_bound_eq9": "774514738838194016120517274561193044863927692645562046806281920641136041804097894807/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176", + "delta": "2187/16384" + }, + { + "file": "/workspace/mospan/s2_m0.bin", + "label": "NN p=1/8", + "width": 2, + "matching": false, + "p": "1/8", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.009159088134765625, + 0.004722654819488525, + 0.0011784275993704796, + 0.00021798534726258367, + 3.6110155861024396e-05, + 5.635311030260937e-06, + 8.480483204009737e-07, + 1.2459699927271778e-07, + 1.8003959129545368e-08, + 2.5706203136458464e-09, + 3.638200503379187e-10, + 5.115297161796809e-11, + 7.156137477796936e-12, + 9.972770125401985e-13, + 1.3856718792273776e-13, + 1.9208742440166077e-14, + 2.6579737113328107e-15, + 3.6726950196728873e-16, + 5.069123940491633e-17, + 6.990325466206872e-18, + 9.632937022153299e-19, + 1.3267224758622824e-19, + 1.8264648032022293e-20, + 2.513574276918361e-21, + 3.4582186589705275e-22, + 4.756835462467136e-23, + 6.541966236563306e-24, + 8.99577232523058e-25, + 1.2368610256860835e-25, + 1.7004560833097016e-26, + 2.3376515027492335e-27, + 3.2134394275840326e-28, + 4.41714220032995e-29, + 6.07152038481772e-30, + 8.345290368869467e-31, + 1.1470327919534284e-31, + 1.5765311871445966e-32, + 2.166821880407656e-33, + 2.9780982064369216e-34, + 4.093086884189295e-35, + 5.625483367795216e-36, + 7.731544960694155e-37, + 1.0626023797548803e-37, + 1.460406431777318e-38, + 2.007129803029832e-39, + 2.758520421478931e-40, + 3.791195394780774e-41, + 5.210453361622058e-42 + ], + "tail_bin_float": 8.30199947973057e-43, + "sum_dh_float": 0.015320895010964912, + "nu_total_float": 0.015320895010964912, + "certificate_bound": "0", + "tail_bound_eq9": "283387333428466483068181247517713927663862705230712890625/248661618204893321077691124073410420050228075398673858720231988446579748506266687766528", + "tail_bound_eq9_float": 1.1396504835537574e-30, + "delta": "49/64" + }, + { + "file": "/workspace/mospan/s3_m0.bin", + "label": "NN p=1/8", + "width": 3, + "matching": false, + "p": "1/8", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.0008765533566474916, + 0.0007413039129460233, + 0.00025800984784041253, + 5.787874251345083e-05, + 1.1514087058222515e-05, + 2.1384595842244496e-06, + 3.8061402639336317e-07, + 6.579678601984872e-08, + 1.1135602396977864e-08, + 1.8544809318050156e-09, + 3.0495230770924067e-10, + 4.9637360584711315e-11, + 8.011933082617466e-12, + 1.2841390798127483e-12, + 2.0459441266678273e-13, + 3.2430006391350505e-14, + 5.1175875487260236e-15, + 8.044298039167878e-16, + 1.2601257889830913e-16, + 1.967924323761447e-17, + 3.0648682794345153e-18, + 4.761498958735392e-19, + 7.380856818575453e-20, + 1.1418000052818497e-20, + 1.7630759267330494e-21, + 2.717801266148878e-22, + 4.183020862120868e-23, + 6.428966148055711e-24, + 9.86775402981999e-25, + 1.5127384534920776e-25, + 2.316411403338326e-26, + 3.543301135755749e-27, + 5.414668614695885e-28, + 8.266757655455589e-29, + 1.2610246082901088e-29, + 1.922030347998424e-30, + 2.9272954182066055e-31, + 4.455147056481695e-32, + 6.775864038051588e-33, + 1.0298904433802116e-33, + 1.5644308409171568e-34, + 2.3750614560520244e-35, + 3.603790950428895e-36, + 5.465410207589576e-37, + 8.284679286051851e-38, + 1.2552463257610046e-38, + 1.7866440744571415e-39, + 7.724997189287025e-41 + ], + "tail_bin_float": 0.0, + "sum_dh_float": 0.0019478581716144037, + "nu_total_float": 0.0019478581716144037, + "certificate_bound": "2405/53876069761024", + "tail_bound_eq9": "260425241864707734341697372438100746077389566318575100642014190617221949494552945641779244032770090003029123/11090678776483259438313656736572334813745748301503266300681918322458485231222502492159897624416558312389564843845614287315896631296", + "tail_bound_eq9_float": 2.348145204754419e-23, + "delta": "343/512", + "float_residual_l1": 2.6168906077215933e-16 + }, + { + "file": "/workspace/mospan/s4_m0.bin", + "label": "NN p=1/8", + "width": 4, + "matching": false, + "p": "1/8", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 8.388889546040447e-05, + 0.00010619236400444267, + 4.958197905932574e-05, + 1.2770432894075624e-05, + 2.749495242252434e-06, + 5.411535383103682e-07, + 1.0103788257989154e-07, + 1.8220122771636764e-08, + 3.2056703871013383e-09, + 5.537388764334851e-10, + 9.429919348564081e-11, + 1.587740023447234e-11, + 2.648656187848727e-12, + 4.3845394030183624e-13, + 7.210978457155577e-14, + 1.1793524057504501e-14, + 1.9195411343296885e-15, + 3.1111396452609247e-16, + 5.023735970126487e-17, + 8.085370142725183e-18, + 1.297450230076012e-18, + 2.0764821501975213e-19, + 3.315300213032942e-20, + 5.2816548696824876e-21, + 8.397548390111388e-22, + 1.3327318940364293e-22, + 2.1115655018486524e-23, + 3.34036670649175e-24, + 5.2766902830236355e-25, + 8.32437422826375e-26, + 1.3116082854806474e-26, + 2.064216676975394e-27, + 3.24517038934501e-28, + 5.096596781375202e-29, + 7.996691962239747e-30, + 1.253580365120029e-30, + 1.963486965756732e-31, + 3.072970083781889e-32, + 4.805757906208013e-33, + 7.510277523079891e-34, + 1.172888101524074e-34, + 1.830536669801718e-35, + 2.855191354919209e-36, + 4.4508159750433805e-37, + 6.934313899237815e-38, + 1.079786266510126e-38, + 1.6805553176044485e-39, + 2.6143163087629994e-40 + ], + "tail_bin_float": 4.065020510797389e-41, + "sum_dh_float": 0.0002558474509633242, + "nu_total_float": 0.0002558474509633242, + "certificate_bound": "99383/377132488327168", + "tail_bound_eq9": "100033559332019239094061723727797186970352138998119164006345534090328380913525333672339759374896113978662437562878081097327509496608399786055088043212890625/61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174784", + "tail_bound_eq9_float": 1.617812589737735e-18, + "delta": "2401/4096", + "float_residual_l1": 1.229136363401482e-15 + }, + { + "file": "/workspace/mospan/s5_m0.bin", + "label": "NN p=1/8", + "width": 5, + "matching": false, + "p": "1/8", + "states": 52061, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 8.02842944835906e-06, + 1.428912456841301e-05, + 8.664835144576243e-06, + 2.547535393273768e-06, + 5.848331086881011e-07, + 1.1957312880033615e-07, + 2.2910914870623746e-08, + 4.2128154944800345e-09, + 7.529644215554585e-10, + 1.3181422803907893e-10, + 2.2712820881904246e-11, + 3.86506769761484e-12, + 6.511157220337847e-13, + 1.0877774171635401e-13, + 1.80461199105036e-14, + 2.9760560802013615e-15, + 4.882807991879365e-16, + 7.975497421943588e-17, + 1.2976012979622312e-17, + 2.1038528912946316e-18, + 3.4005062984931177e-19, + 5.481055709978331e-20, + 8.812422073773239e-21, + 1.4136383788220568e-21, + 2.262983008269213e-22, + 3.615770881371521e-23, + 5.76719272914307e-24, + 9.183989044263276e-25, + 1.4603408220750049e-25, + 2.3188890330033196e-26, + 3.6774818121047854e-27, + 5.825102987269322e-28, + 9.216651399939849e-29, + 1.4567664347953284e-29, + 2.3002857823305778e-30, + 3.628892976348482e-31, + 5.719923276780803e-32, + 9.008472279631204e-33, + 1.4176742942122508e-33, + 2.229379863252593e-34, + 3.5034061957133077e-35, + 5.501878389700007e-36, + 8.634947176336596e-37, + 1.3544085861176183e-37, + 2.1232112640587654e-38, + 3.32660749406965e-39, + 5.209371523291749e-40, + 8.153693823573848e-41 + ], + "tail_bin_float": 1.5120356730345478e-41, + "sum_dh_float": 3.4262366660512944e-05, + "nu_total_float": 3.4262366660512944e-05, + "certificate_bound": "4746017/5279854836580352", + "tail_bound_eq9": "27916096372865122639212290832360183915072748396765500032063354999707729474027504537460959512979840516283320450097372837842299031338300522629802649585660919342770480750862376696436750865870578487098934405/5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576", + "tail_bound_eq9_float": 5.061250245889357e-15, + "delta": "16807/32768", + "float_residual_l1": 1.200465290614019e-14 + }, + { + "file": "/workspace/mospan/s6_m0.bin", + "label": "NN p=1/8", + "width": 6, + "matching": false, + "p": "1/8", + "states": 668439, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 7.683457870499937e-07, + 1.8521177084573244e-06, + 1.426148582298968e-06, + 4.788085609918973e-07, + 1.1722645225082183e-07, + 2.4829407251823538e-08, + 4.861961005688145e-09, + 9.072726225540982e-10, + 1.639113842807307e-10, + 2.89334503192346e-11, + 5.018913346333443e-12, + 8.588338617743778e-13, + 1.45369046136892e-13, + 2.4386714937504138e-14, + 4.0606534182314405e-15, + 6.718850827422975e-16, + 1.1057072884557365e-16, + 1.8111046936265362e-17, + 2.954330155108406e-18, + 4.801709382433874e-19, + 7.77908737000132e-20, + 1.256621479864368e-20, + 2.0246432160359212e-21, + 3.254378457074741e-22, + 5.219824435529788e-23, + 8.355890195255607e-24, + 1.335208817790755e-24, + 2.1300387336596847e-25, + 3.392834698734048e-26, + 5.396643687186467e-27, + 8.572635463435645e-28, + 1.3601091154467167e-28, + 2.1554464332618154e-29, + 3.4122174859521485e-30, + 5.3963620238969345e-31, + 8.526222243171959e-32, + 1.3459452659793664e-32, + 2.122927974522103e-33, + 3.345802786622566e-34, + 5.269156729600549e-35, + 8.292292647062124e-36, + 1.3041170398804897e-36, + 2.0496584949327495e-37, + 3.2194591136740873e-38, + 5.053977588703371e-39, + 7.929473445434857e-40, + 1.243445864924431e-40, + 1.9489066884095445e-41 + ], + "tail_bin_float": 3.619923421756302e-42, + "sum_dh_float": 4.6734446291313875e-06, + "nu_total_float": 4.6734446291313875e-06, + "certificate_bound": "112073861/18479491928031232", + "tail_bound_eq9": "141272159255176962717311971334441282709836926766552632851580696234093050558544680388124869778388222686551006523713459560772627135259132600848946713566832883085282238520683424867652502219908851252184828605251974232725586944070528261363506317138671875/61501577861568104283923723841611832207865934590357532972465351809127477760976746151505184346770074671911354525161107149776344601938347976800349887747194103071045442949864673913541659442291879217725274258783458313456274137454056383441015716964266784080483319808", + "tail_bound_eq9_float": 2.2970493468177657e-12, + "delta": "117649/262144", + "float_residual_l1": 2.4432278556826696e-14 + }, + { + "file": "/workspace/mospan/s7_m0.bin", + "label": "NN w=7 p=1/8", + "width": 7, + "matching": false, + "p": "1/8", + "states": 389391, + "d_max": 20, + "mode": "float64(power) + cert:exact", + "d_h_float": [ + 7.353309290127088e-08, + 2.34152826274788e-07, + 2.2494528974763336e-07, + 8.619742587123842e-08, + 2.2557500687986383e-08, + 4.952581631300141e-09, + 9.90636163702269e-10, + 1.8742349678519115e-10, + 3.4187546561914407e-11, + 6.0776924580262045e-12, + 1.0600385016390535e-12, + 1.821849879104039e-13, + 3.094734713050711e-14, + 5.207143141731101e-15, + 8.69249920477468e-16, + 1.4414413303092336e-16, + 2.3767150685444505e-17, + 3.89960129002205e-18, + 6.370851699934351e-19, + 1.0368875902907328e-19 + ], + "tail_bin_float": 2.006217093211884e-20, + "sum_dh_float": 6.475583214335057e-07, + "nu_total_float": 6.475583214335257e-07, + "float_residual_l1": 9.887197490672116e-14, + "certificate_bound": "3967861/31581162962944", + "tail_bound_eq9": "882714838618621761515306205757964096040701836260884535475366105066812810234101881463175526756564787737799895865967328357607/2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576", + "delta": "823543/2097152" + }, + { + "file": "/workspace/mospan/s2_m1.bin", + "label": "matching p=1/16", + "width": 2, + "matching": true, + "p": "1/16", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.0030174851417541504, + 0.006023183232173324, + 0.0010608806633172208, + 0.00014789047986241144, + 1.904676486842727e-05, + 2.37313278128934e-06, + 2.912790827735075e-07, + 3.550103356081057e-08, + 4.312368739661015e-09, + 5.229869639964477e-10, + 6.337651098754571e-11, + 7.67719810685715e-12, + 9.298188369314734e-13, + 1.1260451513696985e-13, + 1.3636245896603726e-14, + 1.6512959616045304e-15, + 1.9996348422140833e-16, + 2.4214437378619352e-17, + 2.932223425409952e-18, + 3.550743053675781e-19, + 4.2997301135146664e-20, + 5.206705721611989e-21, + 6.304995964028867e-22, + 7.634956492142973e-23, + 9.245455386160495e-24, + 1.1195668783410822e-24, + 1.3557255256317068e-25, + 1.6416988839039533e-26, + 1.9879947452797723e-27, + 2.4073373886506984e-28, + 2.9151351201171394e-29, + 3.530046435130872e-30, + 4.27466560540107e-31, + 5.176352881751166e-32, + 6.268239817869074e-33, + 7.590446654523207e-34, + 9.191556495754102e-35, + 1.1130400444102083e-35, + 1.3478219287794425e-36, + 1.6321281168822092e-37, + 1.97640514153755e-38, + 2.39330310108092e-39, + 2.898140473965348e-40, + 3.509466980192514e-41, + 4.2497451713269314e-42, + 5.146175793403741e-43, + 6.231697249824862e-44, + 7.546195888459806e-45 + ], + "tail_bin_float": 1.0396981001877964e-45, + "sum_dh_float": 0.010271191102340508, + "nu_total_float": 0.010271191102340508, + "certificate_bound": "0", + "tail_bound_eq9": "384911869886326803597351844737651131424133495862387386084832227353008641/19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153408", + "tail_bound_eq9_float": 1.9537678765278126e-44, + "delta": "225/256" + }, + { + "file": "/workspace/mospan/s3_m1.bin", + "label": "matching p=1/16", + "width": 3, + "matching": true, + "p": "1/16", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.00016575540939811617, + 0.000932414645493651, + 0.0002922774621204891, + 7.321752289781675e-05, + 1.6581108547454624e-05, + 3.545181339731574e-06, + 7.303206701408232e-07, + 1.465844095897587e-07, + 2.886114156657793e-08, + 5.599157165746052e-09, + 1.0736153012953731e-09, + 2.0391576650810348e-10, + 3.8427495746210453e-11, + 7.19394459704087e-12, + 1.3392174699821346e-12, + 2.4810333741735023e-13, + 4.5770470041786714e-14, + 8.412672710337467e-15, + 1.5412212207236491e-15, + 2.815366312110461e-16, + 5.12951731976554e-17, + 9.32402053474479e-18, + 1.6912695785960802e-18, + 3.0618941656196397e-19, + 5.53361967595374e-20, + 9.98470614876248e-21, + 1.7989767936483546e-21, + 3.2369135036445912e-22, + 5.816976592201244e-23, + 1.0441547913279746e-23, + 1.8722780017746234e-24, + 3.353872929891231e-25, + 6.00238015479488e-26, + 1.0733171352680664e-26, + 1.9177187728234698e-27, + 3.4238642592529983e-28, + 6.108625225149742e-29, + 1.0891422567339517e-29, + 1.940694874337581e-30, + 3.456029239460861e-31, + 6.151199378114037e-32, + 1.0942538601442237e-32, + 1.9456508049648544e-33, + 3.457896329243147e-34, + 6.142854187577187e-35, + 1.0908116527514481e-35, + 1.936244182042086e-36, + 3.4356595513123777e-37 + ], + "tail_bin_float": 6.094078247539665e-38, + "sum_dh_float": 0.0014847040199716197, + "nu_total_float": 0.0014847040199716197, + "certificate_bound": "48569/1125899906842624", + "tail_bound_eq9": "455002686873272398961203959261385785836777676053468652171073780899855373783236064180089640363508663190136823563401368702646734866523393283/247330401473104534060502521019647190035131349101211839914063056092897225106531867170316401061243044989597671426016139339351365034306751209967546155101893167916606772148699136", + "tail_bound_eq9_float": 1.8396553119360492e-36, + "delta": "3375/4096", + "float_residual_l1": 8.90130474233892e-16 + }, + { + "file": "/workspace/mospan/s4_m1.bin", + "label": "matching p=1/16", + "width": 4, + "matching": true, + "p": "1/16", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 9.105216580707063e-06, + 0.00011824319123167332, + 8.123338189128075e-05, + 2.5786425671547625e-05, + 6.654150293327419e-06, + 1.5606265074628216e-06, + 3.4634238669065583e-07, + 7.413948704931311e-08, + 1.5472503922954164e-08, + 3.168678518965635e-09, + 6.395433501635677e-10, + 1.2759401329464143e-10, + 2.5216979377839204e-11, + 4.944864333778447e-12, + 9.632676542892114e-13, + 1.8658968998262967e-13, + 3.5967364037817384e-14, + 6.903653492351463e-15, + 1.3201393919022674e-15, + 2.516024006181834e-16, + 4.780995962896369e-17, + 9.060696764711423e-18, + 1.712996804665284e-18, + 3.231468527035939e-19, + 6.08381064371789e-20, + 1.1432920967463189e-20, + 2.1449094730078887e-21, + 4.017796938434474e-22, + 7.515274818172179e-23, + 1.40386313614492e-23, + 2.6191968782887793e-24, + 4.881028766031751e-25, + 9.086304198004042e-26, + 1.6897622223073942e-26, + 3.1394484465912456e-27, + 5.827672919420405e-28, + 1.0808701699684895e-28, + 2.003129624057561e-29, + 3.7095451922082505e-30, + 6.86476692620221e-31, + 1.2711602218616164e-31, + 2.344249461798091e-32, + 4.329521860852325e-33, + 7.991074041430039e-34, + 1.4742647174934707e-34, + 2.7183521623508416e-35, + 5.009738569474633e-36, + 9.228219968497297e-37 + ], + "tail_bin_float": 1.6991646334424985e-37, + "sum_dh_float": 0.00024302291372574716, + "nu_total_float": 0.00024302291372574716, + "certificate_bound": "1172981/6755399441055744", + "tail_bound_eq9": "212973206675758171898786855452494755367352158232068957794228178735783853199250479465158168770215251835820553832352023693184239686417580480171598874767938005217510182128943616121838653251057368363668481/388129523075177233787244872115625638814221504279174152784763009506512738171594221582719602207161619487621932674282768301542895011028703597861071818760295284801113744005212476387566321407899611206315749798429117187723211713454014464", + "tail_bound_eq9_float": 5.487168432546863e-31, + "delta": "50625/65536", + "float_residual_l1": 3.0609219526965606e-15 + }, + { + "file": "/workspace/mospan/s5_m1.bin", + "label": "matching p=1/16", + "width": 5, + "matching": true, + "p": "1/16", + "states": 52061, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 5.001644850241958e-07, + 1.3738573135018877e-05, + 1.6760480411029502e-05, + 6.512419989340742e-06, + 1.8394253981271891e-06, + 4.551207559723094e-07, + 1.0493292083022068e-07, + 2.3156197111767866e-08, + 4.959660344821043e-09, + 1.0395005952256278e-09, + 2.1431621099037625e-10, + 4.3619330730466456e-11, + 8.78587593037336e-12, + 1.7545774730459295e-12, + 3.478930783749837e-13, + 6.856031728506765e-14, + 1.3440750231510612e-14, + 2.622981548968658e-15, + 5.098361871209632e-16, + 9.874847118150148e-17, + 1.9066112024463742e-17, + 3.670858247427219e-18, + 7.049649973631915e-19, + 1.3507211952285967e-19, + 2.5825688086940763e-20, + 4.928382010143235e-21, + 9.388402407240756e-22, + 1.7855596579686765e-22, + 3.3908294289956834e-23, + 6.430342737618197e-24, + 1.217871690680345e-24, + 2.3038089435802954e-25, + 4.3531474892243244e-26, + 8.216814534161872e-27, + 1.549441046105696e-27, + 2.919065500547051e-28, + 5.494565140992216e-29, + 1.0333918020157127e-29, + 1.9420419951684376e-30, + 3.646970723769102e-31, + 6.84388506849336e-32, + 1.2834688988792255e-32, + 2.4054398044196498e-33, + 4.5055041443623494e-34, + 8.434209111968193e-35, + 1.5780067898594079e-35, + 2.9508530923485e-36, + 5.515317347709302e-37 + ], + "tail_bin_float": 1.2669030060451703e-37, + "sum_dh_float": 3.994054136253931e-05, + "nu_total_float": 3.994054136253931e-05, + "certificate_bound": "63933181/15832967439974400", + "tail_bound_eq9": "68637260318529697683735328697639953737239663927542130971626209064434233311194039380510665956906570867967613945265680389789703915099448487898460512711227543372385483565895004354145239659084876044752998072166788665737576177868235290316136112109489649674536959008005/9745314011399999080353382387875188310876226857595007526867906457212948690766426102465615065882010259225304916231408668183459169865203094046577987296312653419531277699956473029870789655490053648352799593479218378873685597925394874945746363615468965612827738803104277547081828589991914110976", + "tail_bound_eq9_float": 7.043104022942547e-27, + "delta": "759375/1048576", + "float_residual_l1": 9.302014547429043e-15 + }, + { + "file": "/workspace/mospan/s6_m1.bin", + "label": "matching p=1/16", + "width": 6, + "matching": true, + "p": "1/16", + "states": 668439, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 2.747485574473748e-08, + 1.537779141859809e-06, + 2.9739864620772007e-06, + 1.5372101789324968e-06, + 4.867515614557227e-07, + 1.2752254449086908e-07, + 3.0424324388544554e-08, + 6.871765030271464e-09, + 1.4974322055962062e-09, + 3.181596375606771e-10, + 6.634078810296515e-11, + 1.3633572028231976e-11, + 2.7696138280175267e-12, + 5.573635865239019e-13, + 1.1129117253308996e-13, + 2.207578296530708e-14, + 4.354316419982708e-15, + 8.54679690037276e-16, + 1.6704540374709217e-16, + 3.252623288552917e-17, + 6.31225182117774e-18, + 1.2213501135845658e-18, + 2.3568504604543373e-19, + 4.537030608802339e-20, + 8.714764976743422e-21, + 1.67058167017114e-21, + 3.1965465031846915e-22, + 6.106044878723969e-23, + 1.1645589962271541e-23, + 2.2178698548239415e-24, + 4.218215432581698e-25, + 8.012720073313091e-26, + 1.5202885348145133e-26, + 2.8813743633942565e-27, + 5.4554510738354265e-28, + 1.0319197640319947e-28, + 1.9501592080056004e-29, + 3.682354062733544e-30, + 6.9475701986499406e-31, + 1.3098186621033328e-31, + 2.4676163697575097e-32, + 4.64567059039477e-33, + 8.740541409127624e-34, + 1.6434676918813072e-34, + 3.088372626527946e-35, + 5.8003711526802126e-36, + 1.088805998557312e-36, + 2.0427921576312692e-37 + ], + "tail_bin_float": 4.714333095866186e-38, + "sum_dh_float": 6.729919865943701e-06, + "nu_total_float": 6.729919865943701e-06, + "certificate_bound": "3215594599/19791209299968000", + "tail_bound_eq9": "380358660155434977137810732887177136201153968240407996132136346887517732644439769348721501537905811452827847639825452517121608045811184225162881970333551102824483002794276260431320112087292331950068680733351848392755398866437572629491560452211397285357200191126519906155655995261740521560028706373353486481221842950076111363/30586163746423534736016196859602863404567906871720399525097698785459848898045979160893431969078985896157922253436754523272229504177518075325166808445105312843032236485740311026554891598507977199806026406070913961044058889037416849294524066078150011422449920984937381935812401301757825999056522854284963618731273116584417271632339059204708523573248", + "tail_bound_eq9_float": 1.2435644538779749e-23, + "delta": "11390625/16777216", + "float_residual_l1": 2.946602056775337e-14 + }, + { + "file": "/workspace/mospan/s7_m1.bin", + "label": "matching w=7 p=1/16", + "width": 7, + "matching": true, + "p": "1/16", + "states": 389391, + "d_max": 20, + "mode": "float64(power) + cert:WEAK(4.44e-06)", + "d_h_float": [ + 1.5092389019937132e-09, + 1.6910016685450345e-07, + 4.831044001050075e-07, + 3.3002561822591373e-07, + 1.1908030343498337e-07, + 3.323125723785371e-08, + 8.210901630047481e-09, + 1.8957137212778107e-09, + 4.1938397161732836e-10, + 9.010327496715276e-11, + 1.8950323745713632e-11, + 3.921526207540255e-12, + 8.012355138662818e-13, + 1.6203170502614836e-13, + 3.249080481624732e-14, + 6.4689932297136826e-15, + 1.280236335588757e-15, + 2.5204953164873547e-16, + 4.939894960940764e-17, + 9.643296797254581e-18 + ], + "tail_bin_float": 2.3268106320173644e-18, + "sum_dh_float": 1.1466909630264635e-06, + "nu_total_float": 1.1466909630287903e-06, + "float_residual_l1": 1.4007165165110463e-13, + "certificate_bound": "WEAK(4.44e-06)", + "tail_bound_eq9": "42851444519221967990798526617501251983229842792838733416777005100606086364652937078705564282226577115934781011966041528953981347576805123854500269846372532523207/3773962424821541352241554580988268890916921220416440428376206300245624162392148852086126725177658767541468375030763844899770584629924792632561434251432696043649395326976", + "delta": "170859375/268435456" + }, + { + "file": "/workspace/mospan/s2_m1.bin", + "label": "matching p=1/2", + "width": 2, + "matching": true, + "p": "1/2", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.015625, + 0.02734375, + 0.0244140625, + 0.019287109375, + 0.01470947265625, + 0.0110931396484375, + 0.008335113525390625, + 0.006255149841308594, + 0.0046923160552978516, + 0.0035194754600524902, + 0.002639666199684143, + 0.001979764550924301, + 0.0014848271384835243, + 0.0011136212851852179, + 0.000835216196719557, + 0.0006264122057473287, + 0.00046980916886241175, + 0.0003523568802847876, + 0.0002642676611230854, + 0.00019820074606968774, + 0.00014865055960910922, + 0.00011148791972104277, + 8.361593979433479e-05, + 6.271195484663927e-05, + 4.70339661352015e-05, + 3.5275474601456636e-05, + 2.6456605951106354e-05, + 1.9842454463333235e-05, + 1.4881840847500794e-05, + 1.1161380635625812e-05, + 8.371035476719413e-06, + 6.278276607539574e-06, + 4.708707455654684e-06, + 3.5315305917410137e-06, + 2.6486479438057603e-06, + 1.98648595785432e-06, + 1.4898644683907403e-06, + 1.1173983512930551e-06, + 8.380487634697914e-07, + 6.285365726023435e-07, + 4.714024294517577e-07, + 3.5355182208881826e-07, + 2.6516386656661366e-07, + 1.9887289992496026e-07, + 1.491546749437202e-07, + 1.1186600620779015e-07, + 8.389950465584261e-08, + 6.292462849188196e-08 + ], + "tail_bin_float": 1.8877388547564587e-07, + "sum_dh_float": 0.14583314455944785, + "nu_total_float": 0.14583333333333334, + "certificate_bound": "0", + "tail_bound_eq9": "79766443076872509863361/39614081257132168796771975168", + "tail_bound_eq9_float": 2.0135881117402228e-06, + "delta": "1/4", + "nu_ref": "7/48", + "closure_exact": true, + "gap_to_ref": "0", + "gap_float": 2.7755575615628914e-17 + }, + { + "file": "/workspace/mospan/s3_m1.bin", + "label": "matching p=1/2", + "width": 3, + "matching": true, + "p": "1/2", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.001953125, + 0.006103515625, + 0.007354736328125, + 0.007511138916015625, + 0.007141590118408203, + 0.0065503716468811035, + 0.005891211330890655, + 0.005239338614046573, + 0.004629179951734841, + 0.004074232550919986, + 0.003577502882762928, + 0.003136960036727032, + 0.0027483586236769497, + 0.0024066769198363143, + 0.0021068288449090917, + 0.0018439976206359727, + 0.0016137745234150525, + 0.0014121991728759044, + 0.0012357518306690112, + 0.0010813239175505526, + 0.0009461801725018583, + 0.0008279191649134879, + 0.0007244353660465629, + 0.0006338841735702224, + 0.0005546503612753605, + 0.00048531997125851535, + 0.00042465545413188544, + 0.00037157377614859466, + 0.00032512718851037856, + 0.0002844863611021228, + 0.0002489256036418213, + 0.00021780992313713096, + 0.0001905836933089686, + 0.00016676073723906413, + 0.0001459156480461016, + 0.00012767619360870097, + 0.00011171667023807444, + 9.77520868980513e-05, + 8.553307626863894e-05, + 7.484144185835196e-05, + 6.54862616913426e-05, + 5.7300479014493554e-05, + 5.0137919155986306e-05, + 4.38706792711804e-05, + 3.838684436741504e-05, + 3.35884888242057e-05, + 2.938992772261894e-05, + 2.571618675805352e-05 + ], + "tail_bin_float": 0.00018001330731325094, + "sum_dh_float": 0.08500143830559001, + "nu_total_float": 0.08518145161290326, + "certificate_bound": "65/549755813888", + "tail_bound_eq9": "110110104651882376323690633096100980566403/22300745198530623141535718272648361505980416", + "tail_bound_eq9_float": 0.0049375078577704856, + "delta": "1/8", + "float_residual_l1": 3.9620597876725457e-16, + "nu_ref": "169/1984", + "closure_exact": false, + "gap_float": -4.163336342344337e-17 + }, + { + "file": "/workspace/mospan/s4_m1.bin", + "label": "matching p=1/2", + "width": 4, + "matching": true, + "p": "1/2", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.00024414062499999967, + 0.0014495849609374985, + 0.0024728775024414028, + 0.003028333187103268, + 0.0032595731317996935, + 0.003295164322480556, + 0.0032171439524972777, + 0.0030761889856876193, + 0.0029032970192588406, + 0.002717227648528106, + 0.002529149924715532, + 0.002345539198783092, + 0.0021699813192757383, + 0.0020042952887020815, + 0.0018492309009828637, + 0.0017049014061302381, + 0.0015710510487924752, + 0.0014472197657086122, + 0.0013328438909697767, + 0.0012273170956520391, + 0.001130026665551395, + 0.0010403745293727181, + 0.0009577888994035011, + 0.0008817301722710779, + 0.0008116933564408578, + 0.0007472084321843348, + 0.0006878395132323295, + 0.0006331833451881817, + 0.000582867467859926, + 0.0005365482394700947, + 0.0004939088405751997, + 0.00045465732598219644, + 0.00041852476245068015, + 0.0003852634713225291, + 0.00035464538393793814, + 0.00032646051098141906, + 0.0003005155230098696, + 0.0002766324372617929, + 0.00025464740475649724, + 0.00023440959124496825, + 0.00021578014550964773, + 0.0001986312486676816, + 0.00018284523841217932, + 0.00016831380246811581, + 0.00015493723590703624, + 0.00014262375733586788, + 0.00013128887933731097, + 0.0001208548288854196 + ], + "tail_bin_float": 0.0013998292201687535, + "sum_dh_float": 0.056669262184467474, + "nu_total_float": 0.05806909140463623, + "certificate_bound": "1811/1099511627776", + "tail_bound_eq9": "283387333428466483068181247517713927663862705230712890625/1569275433846670190958947355801916604025588861116008628224", + "tail_bound_eq9_float": 0.18058482744091406, + "delta": "1/16", + "float_residual_l1": 5.990694299510661e-16, + "nu_ref": "323849/5576960", + "closure_exact": false, + "gap_float": -1.3877787807814457e-17 + }, + { + "file": "/workspace/mospan/s2_m1.bin", + "label": "matching p=1/8", + "width": 2, + "matching": true, + "p": "1/8", + "states": 249, + "d_max": 48, + "mode": "exact-rational", + "d_h_float": [ + 0.009159088134765625, + 0.018175065517425537, + 0.006012887693941593, + 0.0016010166000341997, + 0.00039621048949811666, + 9.515567046136653e-05, + 2.2552998684644e-05, + 5.313299987679508e-06, + 1.2483060353430487e-06, + 2.928999997696934e-07, + 6.868434227654009e-08, + 1.610181981190201e-08, + 3.774293543974933e-09, + 8.846470287272933e-10, + 2.0734428572525908e-10, + 4.8596878975781e-11, + 1.1389954979674669e-11, + 2.6695274216125314e-12, + 6.256712247960459e-13, + 1.4664177374109296e-13, + 3.436917451754739e-14, + 8.055276239719715e-15, + 1.8879554739216027e-15, + 4.4248957571070465e-16, + 1.0370849556613865e-16, + 2.4306678786010552e-17, + 5.696877855531812e-18, + 1.3352057490375203e-18, + 3.12938847610837e-19, + 7.334504242849581e-20, + 1.719024432133404e-20, + 4.028963513048404e-21, + 9.442883233965038e-22, + 2.213175757988757e-22, + 5.1871306828169945e-23, + 1.2157337537886068e-23, + 2.849375985445737e-24, + 6.678224965892483e-25, + 1.565208976381492e-25, + 3.6684585383946044e-26, + 8.597949699362883e-27, + 2.0151444607882333e-27, + 4.722994829972485e-28, + 1.1069519132748082e-28, + 2.594418546737839e-29, + 6.0806684689168185e-30, + 1.4251566724023803e-30, + 3.3402109509430797e-31 + ], + "tail_bin_float": 1.022513556411147e-31, + "sum_dh_float": 0.03546892132675439, + "nu_total_float": 0.03546892132675439, + "certificate_bound": "0", + "tail_bound_eq9": "283387333428466483068181247517713927663862705230712890625/248661618204893321077691124073410420050228075398673858720231988446579748506266687766528", + "tail_bound_eq9_float": 1.1396504835537574e-30, + "delta": "49/64" + }, + { + "file": "/workspace/mospan/s3_m1.bin", + "label": "matching p=1/8", + "width": 3, + "matching": true, + "p": "1/8", + "states": 645, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 0.0008765533566474915, + 0.004603617140674032, + 0.0026245273589040607, + 0.0012042995335344586, + 0.0005006229275221088, + 0.00019670048431871354, + 7.452275738325662e-05, + 2.7525856254423855e-05, + 9.978783520809533e-06, + 3.566236532096116e-06, + 1.2602556087135642e-06, + 4.4133992304174315e-07, + 1.5341235518378573e-07, + 5.2997994629403515e-08, + 1.8213423725994955e-08, + 6.231486551621298e-09, + 2.1238811310327745e-09, + 7.21487546257027e-10, + 2.44383149773953e-10, + 8.256791728172016e-11, + 2.7834224486407825e-11, + 9.364519545326735e-12, + 3.1450360173197385e-12, + 1.0545853392707511e-12, + 3.5312242174996047e-13, + 1.180915353656514e-13, + 3.9447272570351266e-14, + 1.316340582391019e-14, + 4.3884931745090105e-15, + 1.4618286194085943e-15, + 4.865699040186002e-16, + 1.61842303750547e-16, + 5.3797738747677237e-17, + 1.7872509269416095e-17, + 5.9344234521974696e-18, + 1.9695310577547645e-18, + 6.533657166780943e-19, + 2.1665827251618657e-19, + 7.181817160220547e-20, + 2.3798353424922483e-20, + 7.883609920920502e-21, + 2.6108388516374353e-21, + 8.64414058623209e-22, + 2.8612750270541726e-22, + 9.46895019830781e-23, + 3.132969755965902e-23, + 1.0364056186068058e-23, + 3.427906384621641e-24 + ], + "tail_bin_float": 1.1335996369615003e-24, + "sum_dh_float": 0.01012385010033181, + "nu_total_float": 0.01012385010033181, + "certificate_bound": "8525/140737488355328", + "tail_bound_eq9": "260425241864707734341697372438100746077389566318575100642014190617221949494552945641779244032770090003029123/11090678776483259438313656736572334813745748301503266300681918322458485231222502492159897624416558312389564843845614287315896631296", + "tail_bound_eq9_float": 2.348145204754419e-23, + "delta": "343/512", + "float_residual_l1": 1.8934379670193354e-15 + }, + { + "file": "/workspace/mospan/s4_m1.bin", + "label": "matching p=1/8", + "width": 4, + "matching": true, + "p": "1/8", + "states": 11245, + "d_max": 48, + "mode": "float64(splu)", + "d_h_float": [ + 8.388889546040443e-05, + 0.0010027139728627785, + 0.0010276090133845774, + 0.0005936898909212868, + 0.00028541581044096544, + 0.000125628347672379, + 5.249549563203949e-05, + 2.1196566227555845e-05, + 8.353127635508006e-06, + 3.2326317907989444e-06, + 1.2335735591448404e-06, + 4.6549477603370893e-07, + 1.7406192452980932e-07, + 6.459574066251116e-08, + 2.3819403176279507e-08, + 8.73553050370576e-09, + 3.188616173199282e-09, + 1.1591295150698328e-09, + 4.198499800551524e-10, + 1.5158922216098622e-10, + 5.457648980766722e-11, + 1.9599015940015734e-11, + 7.022054753678021e-12, + 2.5106736704345583e-12, + 8.959728288603642e-13, + 3.1919051545330875e-13, + 1.1353219801543189e-13, + 4.0323484638844107e-14, + 1.430265821129129e-14, + 5.066867554686378e-15, + 1.792941834361374e-15, + 6.337711586771089e-16, + 2.238054429896492e-16, + 7.896051058561995e-17, + 2.783408384530352e-17, + 9.803830146889776e-18, + 3.450552028581746e-18, + 1.213599994503919e-18, + 4.2655526267487506e-19, + 1.4983210480493412e-19, + 5.2599309746516044e-20, + 1.8455055264606625e-20, + 6.471787738201547e-21, + 2.268398122486505e-21, + 7.947160688026073e-22, + 2.7829999852110226e-22, + 9.741659953222278e-23, + 3.40863630488017e-23 + ], + "tail_bin_float": 2.4983338408130232e-17, + "sum_dh_float": 0.00320619903724663, + "nu_total_float": 0.0032061990372466553, + "certificate_bound": "47855/140737488355328", + "tail_bound_eq9": "100033559332019239094061723727797186970352138998119164006345534090328380913525333672339759374896113978662437562878081097327509496608399786055088043212890625/61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174784", + "tail_bound_eq9_float": 1.617812589737735e-18, + "delta": "2401/4096", + "float_residual_l1": 5.559703137442946e-15, + "nu_ref": "578542977420046503529/180445122308089296453632", + "closure_exact": false, + "gap_float": -2.42861286636753e-17 + }, + { + "file": "/workspace/mospan/s5_m1.bin", + "label": "matching p=1/8", + "width": 5, + "matching": true, + "p": "1/8", + "states": 52061, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 8.028429448359029e-06, + 0.00019990735424605603, + 0.0003384651126414531, + 0.0002429965583396311, + 0.00013097663349182919, + 6.216996497097375e-05, + 2.7542171536617025e-05, + 1.1687180503680404e-05, + 4.8154222533537555e-06, + 1.942062721394257e-06, + 7.705995246663205e-07, + 3.018874658188092e-07, + 1.1705414990756433e-07, + 4.5003269937715744e-08, + 1.717967172099007e-08, + 6.5187258943807675e-09, + 2.4606748362384396e-09, + 9.246647401755834e-10, + 3.4609371668980477e-10, + 1.2908673852806686e-10, + 4.7997058750194626e-11, + 1.7796453501307182e-11, + 6.582004220530552e-12, + 2.4288005314874126e-12, + 8.943836398897646e-13, + 3.287244289081223e-13, + 1.2061032618856238e-13, + 4.41816114826464e-14, + 1.6160562736194696e-14, + 5.9030538486648455e-15, + 2.1534996082920945e-15, + 7.846911348278919e-16, + 2.8560968843673335e-16, + 1.0384806826506158e-16, + 3.7722753371595494e-17, + 1.3690315718821211e-17, + 4.96423193485643e-18, + 1.7986249035097106e-18, + 6.51176513055434e-19, + 2.3558330575468467e-19, + 8.51715617526509e-20, + 3.0772615638102793e-20, + 1.1111384060739666e-20, + 4.009766286346857e-21, + 1.4462034335487122e-21, + 5.213274192536891e-22, + 1.8783358489202933e-22, + 6.764370295609021e-23 + ], + "tail_bin_float": 3.8028757992801343e-23, + "sum_dh_float": 0.0010297930696989922, + "nu_total_float": 0.0010297930696989922, + "certificate_bound": "11086599/6896136929411072", + "tail_bound_eq9": "27916096372865122639212290832360183915072748396765500032063354999707729474027504537460959512979840516283320450097372837842299031338300522629802649585660919342770480750862376696436750865870578487098934405/5515652263101987298728728207430913795608113109085112352897269396216198887424215820128660001943808587833784893551335930816647064191168732319583111500951066614122648616177179922993422016587311577585463592732098692120576", + "tail_bound_eq9_float": 5.061250245889357e-15, + "delta": "16807/32768", + "float_residual_l1": 3.0993808422875406e-14 + }, + { + "file": "/workspace/mospan/s6_m1.bin", + "label": "matching p=1/8", + "width": 6, + "matching": true, + "p": "1/8", + "states": 668439, + "d_max": 48, + "mode": "float64(power)", + "d_h_float": [ + 7.68345787049979e-07, + 3.837762990256322e-05, + 0.00010005165454769263, + 9.164224530961195e-05, + 5.587854648308166e-05, + 2.8481850450082563e-05, + 1.3228131981816234e-05, + 5.813897200077859e-06, + 2.464467786091853e-06, + 1.0183673153077273e-06, + 4.1291694585353806e-07, + 1.64996045997702e-07, + 6.516827874164624e-08, + 2.549694099941863e-08, + 9.897541627105438e-09, + 3.816702441950372e-09, + 1.4634870550595515e-09, + 5.584215160406135e-10, + 2.1216698575939312e-10, + 8.030773516809722e-11, + 3.0295978846152407e-11, + 1.139502697901821e-11, + 4.274445076941624e-12, + 1.5995228522747017e-12, + 5.972337275534709e-13, + 2.2254890576910264e-13, + 8.277655515569915e-14, + 3.0736511466863125e-14, + 1.1395259457296136e-14, + 4.218586565301309e-15, + 1.559653160638678e-15, + 5.75901106882062e-16, + 2.124041701905605e-16, + 7.825395233185098e-17, + 2.880098971718468e-17, + 1.0589939501358737e-17, + 3.890354066770989e-18, + 1.4279627644704033e-18, + 5.237178481023974e-19, + 1.9193295749596998e-19, + 7.028956758519417e-20, + 2.5723936017829388e-20, + 9.408146827065283e-21, + 3.438782106673162e-21, + 1.2561801752573079e-21, + 4.586250998387253e-22, + 1.6735295964054473e-22, + 6.103641443165267e-23 + ], + "tail_bin_float": 3.5000074104833353e-23, + "sum_dh_float": 0.0003384097921186841, + "nu_total_float": 0.0003384097921186841, + "certificate_bound": "153794327/12068239626469376", + "tail_bound_eq9": "141272159255176962717311971334441282709836926766552632851580696234093050558544680388124869778388222686551006523713459560772627135259132600848946713566832883085282238520683424867652502219908851252184828605251974232725586944070528261363506317138671875/61501577861568104283923723841611832207865934590357532972465351809127477760976746151505184346770074671911354525161107149776344601938347976800349887747194103071045442949864673913541659442291879217725274258783458313456274137454056383441015716964266784080483319808", + "tail_bound_eq9_float": 2.2970493468177657e-12, + "delta": "117649/262144", + "float_residual_l1": 5.1463050555722344e-14 + }, + { + "file": "/workspace/mospan/s7_m1.bin", + "label": "matching w=7 p=1/8", + "width": 7, + "matching": true, + "p": "1/8", + "states": 389391, + "d_max": 20, + "mode": "float64(power) + cert:exact", + "d_h_float": [ + 7.353309290126311e-08, + 7.231066280574751e-06, + 2.7613234063806597e-05, + 3.2241241216765385e-05, + 2.2444895506304524e-05, + 1.2333860254864228e-05, + 6.000761234578661e-06, + 2.7216772246399263e-06, + 1.1806987270413874e-06, + 4.968440869373755e-07, + 2.0451135964495392e-07, + 8.278570500133135e-08, + 3.307540121684439e-08, + 1.30760842452234e-08, + 5.12492437237484e-09, + 1.994109777096702e-09, + 7.71148295963906e-10, + 2.9663966196224913e-10, + 1.135858898085151e-10, + 4.3318072247722354e-11 + ], + "tail_bin_float": 2.647344249057235e-11, + "sum_dh_float": 0.00011267960396459193, + "nu_total_float": 0.00011267963043803441, + "float_residual_l1": 1.206674414316291e-13, + "certificate_bound": "1867875509/6034119813234688", + "tail_bound_eq9": "882714838618621761515306205757964096040701836260884535475366105066812810234101881463175526756564787737799895865967328357607/2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232576", + "delta": "823543/2097152" + } + ], + "findings": { + "mean_span_sublinear": "E[L]/w strictly decreasing in EVERY family; local log-log exponent at NN p=1/4: 0.55-0.61 over w=2..6; at p=1/2 the exponent is 1.0 (E[L] proportional to w, non-diffusive dense regime)", + "moment_prediction_not_supported": "Var(L)/(E L)^2 strictly decreasing in every family, 0.09-0.17 at w=6-7 -- 2-4x the Brownian-bridge target pi/3-1=0.0472, no plateau", + "interpretation": "WITHDRAWN (2026-09-13 erratum): the piecewise-additive-span mechanism is not the right reading -- the span is max_i(y_i+upper_i)-min_i(y_i+lower_i)+1 of the whole component, and log-Hausdorff-close decorations (CIV eq (1.10)/Thm C) do not force an extensive span. What the data establishes is the measurement: no plateau at the largest accessible width, ratio 2.7x the Brownian-bridge target and still decreasing. The asymptotics remain open", + "what_survives": "the dilute joint limit (w p^2 -> 0) is already covered by the proved Bessel regime; the measured slopes s(p) = d(E[L]-1)/dw (NN: 0.24 at 1/8, 0.50 at 1/4, 1.75 at 1/2; matching: 0.41 at 1/8) are new micro-objects for the amplitude question of #740" + }, + "honesty": [ + "finite-width diagnostics only; no asymptotic claim either way", + "w=8 runs were still streaming at delivery time and are NOT included", + "the exact int64 certificate is reported for the 4 configurations where the scale fits; the other 26 are float64 splu/power solves with the float residual reported. Closure against a certified nu_w was verified at w=2,3,4 only, where certified references exist; w=5..7 have no certified nu_w reference, and no w=8 result is included" + ] +} \ No newline at end of file diff --git a/results/geometric-consistency/span-spectrum-20260913/validation-tables/w2_nn.bin b/results/geometric-consistency/span-spectrum-20260913/validation-tables/w2_nn.bin new file mode 100644 index 00000000..102b2610 Binary files /dev/null and b/results/geometric-consistency/span-spectrum-20260913/validation-tables/w2_nn.bin differ diff --git a/results/geometric-consistency/span-spectrum-20260913/validation-tables/w4_nn_D3.bin b/results/geometric-consistency/span-spectrum-20260913/validation-tables/w4_nn_D3.bin new file mode 100644 index 00000000..2ae1dcf9 Binary files /dev/null and b/results/geometric-consistency/span-spectrum-20260913/validation-tables/w4_nn_D3.bin differ diff --git a/results/geometric-consistency/tagged-span-crosscheck-20260913.json b/results/geometric-consistency/tagged-span-crosscheck-20260913.json new file mode 100644 index 00000000..3109845b --- /dev/null +++ b/results/geometric-consistency/tagged-span-crosscheck-20260913.json @@ -0,0 +1,1872 @@ +{ + "schema": "matching-one/tagged-span-crosscheck/1", + "date": "2026-09-13", + "pr": 739, + "inputs": { + "tagged": "results/geometric-consistency/tagged-span-resolvent.json", + "spectrum": "results/geometric-consistency/span-spectrum-20260913.json", + "certified": "results/geometric-consistency/winding-nu-certified-20260913.json" + }, + "density_containment": { + "what": "delivered certified density interval vs an independent exact rational nu_w", + "independent_engine": "scripts/cylinder_winding_intensity.py via scripts/winding_nu_certified.py", + "points_compared": 12, + "violations": 0, + "max_centre_rel_error": 5.242020777875865e-32, + "min_interval_rel_width": 4.971952188715685e-28, + "rows": [ + { + "graph": "NN", + "width": 6, + "p": "1/4", + "independent_nu_exact": "819723005411640549787242547857764155667138256185300068186293005600292987/1942573238628978313222461088409353686961900013425255337178118539303144390656", + "independent_nu_float": 0.0004219779152265999, + "interval_lo": "5173434187429186792332316774615481668972668792039933/12259964326927110866866776217202473468949912977468817408", + "interval_hi": "5173434187429186792332316779108980802082911084910083/12259964326927110866866776217202473468949912977468817408", + "interval_contains": true, + "interval_width": 3.66518124627897e-31, + "centre_minus_exact": -1.4283765973649394e-35, + "centre_rel_error": 3.384955813618608e-32, + "interval_width_rel": 8.685718171555939e-28 + }, + { + "graph": "NN", + "width": 6, + "p": "1/8", + "independent_nu_exact": "76700552664896137224991329058804271165107431484407523114320164650008697551594721877482120993218317624120761/16411995594597487864838419848460939092823898777072519330859024217650972459444997117790481493379894318400263946240", + "independent_nu_float": 4.673444629131175e-06, + "interval_lo": "160994252405939708179721132688995813822389180520219193649/34448734323802104031930812354563673291569726679218621406773248", + "interval_hi": "160994252405939708179721136699890878733271018275699830817/34448734323802104031930812354563673291569726679218621406773248", + "interval_contains": true, + "interval_width": 1.1643083972869165e-31, + "centre_minus_exact": -3.517447960577109e-38, + "centre_rel_error": 7.526456906436112e-33, + "interval_width_rel": 2.4913281095262902e-26 + }, + { + "graph": "NN", + "width": 7, + "p": "1/4", + "independent_nu_exact": "6683979278187325250485728998492567107141403426001479985373254631593984394074114734247311299072186720762098777435435882188234734267862958293547/49286180667639726007521026540179987215808935256967611886371374947251446023409795123975623810134695442709546215368323471234769113794838656194707456", + "independent_nu_float": 0.00013561568755470407, + "interval_lo": "2873047953471606514840430684852087904126422348541382123/21185218356930047577945789303325874154345449625066116481024", + "interval_hi": "2873047953471606514840430706476679360651856573274034593/21185218356930047577945789303325874154345449625066116481024", + "interval_contains": true, + "interval_width": 1.0207396068425068e-30, + "centre_minus_exact": -2.781791887764776e-36, + "centre_rel_error": 2.051231636931877e-32, + "interval_width_rel": 7.526707457282663e-27 + }, + { + "graph": "NN", + "width": 7, + "p": "1/8", + "independent_nu_exact": "53176018740648395848630904330985216329448161821258654969147449117152913837127550792037313894719557404155137704943371789649187601841900914668263730757303070881683030353750130047486290137922635411735132437902113487/82117728983762166101459511747050200581456433482488397098743447484328792439503830766572418374511333240613810463530391811724986054468169474492099573682983064103874811908213616535407985381316988031915279724128509645291520", + "independent_nu_float": 6.475583214334062e-07, + "interval_lo": "1427684132750505933054652408931075160404185650274307085103/2204718996723334658043571990692075090660462507469991770033487872", + "interval_hi": "1427684132750505933054653224528123632388496366723777752273/2204718996723334658043571990692075090660462507469991770033487872", + "interval_contains": true, + "interval_width": 3.699324266195053e-31, + "centre_minus_exact": -2.7419627972966163e-39, + "centre_rel_error": 4.234310187269511e-33, + "interval_width_rel": 5.712727554803703e-25 + }, + { + "graph": "NN", + "width": 8, + "p": "1/4", + "independent_nu_exact": "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + "independent_nu_float": 4.432636548604856e-05, + "interval_lo": "2504169951442737193838874308080478759300572492782333713/56493915618480126874522104808868997744921199000176310616064", + "interval_hi": "2504169951442737193838874538190465482263913748946784495/56493915618480126874522104808868997744921199000176310616064", + "interval_contains": true, + "interval_width": 4.073181761323877e-30, + "centre_minus_exact": 3.718858538694709e-37, + "centre_rel_error": 8.389721327062548e-33, + "interval_width_rel": 9.189072274842575e-26 + }, + { + "graph": "NN", + "width": 8, + "p": "1/8", + "independent_nu_exact": "3041789588567469724607236535321683512805356718319678588865809309728715850179118217605424994436540663363219478956632129899450330455947554587670272212339554455415137012495400324451366138715264922508312861196415863060403340731913841113345141672497020510560741106058702824275676773662222915410045422226964803397540810597000766344594853206043108836652978231969622245880882006548490758240272347145131228437834567258256148566063633433570930340254444836217245231354302330191953194172107539682435172556462679461/33454013548131292908656315204448064293618493618524359246967268530527759969931416495599592371029533087105189230089894466820034783749327268060418491435030070436770061455724006538269916660902222754937135643565971053498198692460261721380280842446332304877174577365982019012229927301860463353207292323688124267197114137749459979691283187243881488162345925652275615992822771078461615470055379684476975304104529555203549835082419908781686597154079495462319506370992054989626655232881058272016606446199834659159801856", + "independent_nu_float": 9.092450399684199e-08, + "interval_lo": "157162977283915689424706427780197529149470932548204393895063/1728499693431094371906160440702586871077802605856473547706254491648", + "interval_hi": "157162977283915689424707240719009261478008019610521109293929/1728499693431094371906160440702586871077802605856473547706254491648", + "interval_contains": true, + "interval_width": 4.703146982448313e-31, + "centre_minus_exact": -4.766281391695029e-39, + "centre_rel_error": 5.242020777875865e-32, + "interval_width_rel": 5.172584700172424e-24 + }, + { + "graph": "matching", + "width": 6, + "p": "1/16", + "independent_nu_exact": "139890792375272781772512784484733566114926316160458672473478387508485593271050393376963616261362091205695337795331764865504915649381045691403859375/20786397930708041666332633888833866295897049300282578029085146872604847803202168838492542457400728957315304996708987878795942717842223449189638249381888", + "independent_nu_float": 6.729919865943205e-06, + "interval_lo": "221482276196321283725622234699690727676870131431091566667463/32910091146424120843099383651147010099654717312671597266972180480", + "interval_hi": "221482276196321283725622236061005993059507021192999700426287/32910091146424120843099383651147010099654717312671597266972180480", + "interval_contains": true, + "interval_width": 4.1364676242488985e-32, + "centre_minus_exact": 1.4703929217537793e-37, + "centre_rel_error": 2.1848594798204215e-32, + "interval_width_rel": 6.1463846622922134e-27 + }, + { + "graph": "matching", + "width": 6, + "p": "1/8", + "independent_nu_exact": "20411421551988360233268972714766651128746109333709349054535295694727456280934810030060712682813589117979183581/60315694248094991185373056311915718771451363153122782220358457480373648971769314040179019725968868013270219358208", + "independent_nu_float": 0.00033840979211862483, + "interval_lo": "59478515414630639262764202774670464936786818292178851715/175758848590827061387402103849814659650865952444992966361088", + "interval_hi": "59478515414630639262764202804242898426520060525810182269/175758848590827061387402103849814659650865952444992966361088", + "interval_contains": true, + "interval_width": 1.6825573066070166e-31, + "centre_minus_exact": -1.1399351657226301e-35, + "centre_rel_error": 3.368505262764506e-32, + "interval_width_rel": 4.971952188715685e-28 + }, + { + "graph": "matching", + "width": 7, + "p": "1/16", + "independent_nu_exact": "71549218614785659329151049629042077974971174044627482075636967318114390350930645731904270160590153438567503079890120520849925950713922642489071790743427715937736326687202163532021178118379555854552141142053997305505999656022878011125053289079435837254583036129237284416614025228652265625/62396252278670907382797284336219244717463026302564408944818075645297712528510576087863400578659833616928719471580528206477902452489858991937589628261658851524221170128569747856238838820992389441746813243043445334067485476683067323427033298595899670094957425021118238829729004642729129318285312", + "independent_nu_float": 1.146690963028296e-06, + "interval_lo": "13585573479615147793352808065962101035113526685883278612079793/11847632812712683503515778114412923635875698232561775016109984972800", + "interval_hi": "13585573479615147793352809296423107449813066315787295467920207/11847632812712683503515778114412923635875698232561775016109984972800", + "interval_contains": true, + "interval_width": 1.0385711862156943e-31, + "centre_minus_exact": 1.0840343117966786e-39, + "centre_rel_error": 9.453587293771396e-34, + "interval_width_rel": 9.057114948154225e-26 + }, + { + "graph": "matching", + "width": 7, + "p": "1/8", + "independent_nu_exact": "19568425565241311468850463433028476646756874551390671492135154242237469692382839874311970778409228720396270240164602657209037439930310986303047210207417956418895705277398962483929194299097288254229622435040641563333/173664268237116498167318694149862906025738801388192018206400117330116304150583560527834354782498410921434269736847490610678483550170312968599416696131290455477145926702420234113498309802747965006035658826416962314174464", + "independent_nu_float": 0.00011267963043798458, + "interval_lo": "81118994863800650806712583176691073104773953553466187457807/719908243828027643442799017368840845929946941214691190215016448", + "interval_hi": "81118994863800650806712583277963097981644894939533117348593/719908243828027643442799017368840845929946941214691190215016448", + "interval_contains": true, + "interval_width": 1.4067351741712086e-31, + "centre_minus_exact": -4.743668294738297e-36, + "centre_rel_error": 4.2098720738608264e-32, + "interval_width_rel": 1.2484378664566464e-27 + }, + { + "graph": "matching", + "width": 8, + "p": "1/16", + "independent_nu_exact": "8051984822164592045488802260949484823528250500575681803312753241282857942612526506646918658254713756839443794476512000341931247669244408040357527713096766379493662521882629491725422188971230738606640753604378316064463186496455760424690111956112403643851041237548853552989556178476589841673744558746699883688392453531468502687543178928449809037034910670329307551557673713004540093981094629006193852740876720506573235473162366911897563214816874768427235235093877632414340519336674707192023580416953168319260259725807401897142812258359983099205228182419725970396215327162072915491776200976331033921817305889142333926929003926424854170495890075482216615748450812525780691015625/40793201785916379377519494024249186774041556000306219712898796529413804835707001249248891398059219210277391217528134370971053384228075111903712009913743665584077186004718342379883171423311236422964781813812857386529232335059149300642819897489017732312513683846255581629996975426635669473752002838391010195083948445669514704044395184586542294324251556390199097328116712600894650388095524340352595225208551658273621709416439064809299626750035781577371476880368017859936515724016764065507049612444872837605335558230479376323335847836271744139078963541480572900663176290078221706394628458234806005204068648680584237228944867352224571438226203243232018918281796050787234913537579024384", + "independent_nu_float": 1.9738545810700484e-07, + "interval_lo": "898003365204816065462556311700162865095323843935651867849074401/4549491000081670465350058795934562676176268121303721606186234229555200", + "interval_hi": "898003365204816065462559250769853342604971881083642729270925599/4549491000081670465350058795934562676176268121303721606186234229555200", + "interval_contains": true, + "interval_width": 6.46021651746261e-31, + "centre_minus_exact": -3.8316677547672214e-39, + "centre_rel_error": 1.9412107616813556e-32, + "interval_width_rel": 3.272893849130697e-24 + }, + { + "graph": "matching", + "width": 8, + "p": "1/8", + "independent_nu_exact": "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", + "independent_nu_float": 3.791735919415724e-05, + "interval_lo": "1337553953935050565373787414937726659844151098158399760978803/35275503947573354528697151851073201450567400119519868320535805952", + "interval_hi": "1337553953935050565373787438172253180224968401846391739690125/35275503947573354528697151851073201450567400119519868320535805952", + "interval_contains": true, + "interval_width": 6.5865895367255695e-31, + "centre_minus_exact": -9.287358818737481e-37, + "centre_rel_error": 2.4493685784342779e-32, + "interval_width_rel": 1.7370907881529127e-26 + } + ] + }, + "truncation_bias": { + "what": "depth-clamped span spectrum vs delivered all-height moments, same (graph,width,p)", + "points_compared": 30, + "material_bias_threshold_tail_fraction": 1e-06, + "material_bias_points": [ + { + "graph": "NN", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.5688639671749697e-06, + "censored_e_l": 7.087700333580904, + "all_height_e_l": 7.0877815465774985, + "censored_cv2": 0.30442221779055484, + "all_height_cv2": 0.3044763350821417, + "cv2_rel_bias": 0.00017773890891154532, + "R_w_censored": 1.0288986663758284, + "R_w_true": 1.029115135542176 + }, + { + "graph": "matching", + "width": 2, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.294449500404429e-06, + "censored_e_l": 4.7618374505307415, + "all_height_e_l": 4.761904761904762, + "censored_cv2": 0.5594890441899597, + "all_height_cv2": 0.5596, + "cv2_rel_bias": 0.00019827700150157392, + "R_w_censored": 1.024582985986724, + "R_w_true": 1.0248048976068045 + }, + { + "graph": "matching", + "width": 3, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.002113292317807632, + "censored_e_l": 9.558311480555812, + "all_height_e_l": 9.676655850353121, + "censored_cv2": 0.5916694791358947, + "all_height_cv2": 0.6250153769268254, + "cv2_rel_bias": 0.05335212383876227, + "R_w_censored": 1.6334157838178909, + "R_w_true": 1.7334534771906829 + }, + { + "graph": "matching", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.024106270415262452, + "censored_e_l": 13.909703382676245, + "all_height_e_l": 15.370127125329736, + "censored_cv2": 0.5239730271284714, + "all_height_cv2": 0.6375148797674687, + "cv2_rel_bias": 0.17810070986956617, + "R_w_censored": 1.9071019037274946, + "R_w_true": 2.3612693142834837 + } + ], + "clean_points_max_cv2_rel_bias": 2.4299339724040402e-05, + "worst_four": [ + { + "graph": "matching", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.024106270415262452, + "censored_e_l": 13.909703382676245, + "all_height_e_l": 15.370127125329736, + "censored_cv2": 0.5239730271284714, + "all_height_cv2": 0.6375148797674687, + "cv2_rel_bias": 0.17810070986956617, + "R_w_censored": 1.9071019037274946, + "R_w_true": 2.3612693142834837 + }, + { + "graph": "matching", + "width": 3, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.002113292317807632, + "censored_e_l": 9.558311480555812, + "all_height_e_l": 9.676655850353121, + "censored_cv2": 0.5916694791358947, + "all_height_cv2": 0.6250153769268254, + "cv2_rel_bias": 0.05335212383876227, + "R_w_censored": 1.6334157838178909, + "R_w_true": 1.7334534771906829 + }, + { + "graph": "matching", + "width": 2, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.294449500404429e-06, + "censored_e_l": 4.7618374505307415, + "all_height_e_l": 4.761904761904762, + "censored_cv2": 0.5594890441899597, + "all_height_cv2": 0.5596, + "cv2_rel_bias": 0.00019827700150157392, + "R_w_censored": 1.024582985986724, + "R_w_true": 1.0248048976068045 + }, + { + "graph": "NN", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.5688639671749697e-06, + "censored_e_l": 7.087700333580904, + "all_height_e_l": 7.0877815465774985, + "censored_cv2": 0.30442221779055484, + "all_height_cv2": 0.3044763350821417, + "cv2_rel_bias": 0.00017773890891154532, + "R_w_censored": 1.0288986663758284, + "R_w_true": 1.029115135542176 + } + ], + "all_rows": [ + { + "graph": "NN", + "width": 2, + "p": "1/2", + "d_max": 48, + "tail_fraction": 5.903949056644014e-11, + "censored_e_l": 3.6190476160648024, + "all_height_e_l": 3.619047619047619, + "censored_cv2": 0.3580332317125606, + "all_height_cv2": 0.35803324099722994, + "cv2_rel_bias": 2.5932422757202392e-08, + "R_w_censored": 0.6216713610319257, + "R_w_true": 0.6216713796012644 + }, + { + "graph": "NN", + "width": 3, + "p": "1/2", + "d_max": 48, + "tail_fraction": 5.2558704587322745e-08, + "censored_e_l": 5.416298128990781, + "all_height_e_l": 5.416300820767322, + "censored_cv2": 0.3326431312973978, + "all_height_cv2": 0.33264651870897305, + "cv2_rel_bias": 1.0183216672119412e-05, + "R_w_censored": 0.8563367403024003, + "R_w_true": 0.856346902537126 + }, + { + "graph": "NN", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.5688639671749697e-06, + "censored_e_l": 7.087700333580904, + "all_height_e_l": 7.0877815465774985, + "censored_cv2": 0.30442221779055484, + "all_height_cv2": 0.3044763350821417, + "cv2_rel_bias": 0.00017773890891154532, + "R_w_censored": 1.0288986663758284, + "R_w_true": 1.029115135542176 + }, + { + "graph": "NN", + "width": 2, + "p": "1/4", + "d_max": 48, + "tail_fraction": 8.718943895102197e-26, + "censored_e_l": 2.0773300773300774, + "all_height_e_l": 2.0773300773300774, + "censored_cv2": 0.2748652479830189, + "all_height_cv2": 0.27486524798301903, + "cv2_rel_bias": 4.039153850012153e-16, + "R_w_censored": 0.45533539357284236, + "R_w_true": 0.4553353935728426 + }, + { + "graph": "NN", + "width": 3, + "p": "1/4", + "d_max": 48, + "tail_fraction": 1.4402825224259634e-15, + "censored_e_l": 2.635980303738635, + "all_height_e_l": 2.635980303738639, + "censored_cv2": 0.2504038669456451, + "all_height_cv2": 0.25040386694564293, + "cv2_rel_bias": 8.645772624945182e-15, + "R_w_censored": 0.609618947247142, + "R_w_true": 0.6096189472471356 + }, + { + "graph": "NN", + "width": 4, + "p": "1/4", + "d_max": 48, + "tail_fraction": 3.007490044104292e-21, + "censored_e_l": 3.1371029435733466, + "all_height_e_l": 3.1371029435733466, + "censored_cv2": 0.21141536180098758, + "all_height_cv2": 0.21141536180098752, + "cv2_rel_bias": 2.625691470968527e-16, + "R_w_censored": 0.6568712424175593, + "R_w_true": 0.6568712424175591 + }, + { + "graph": "NN", + "width": 5, + "p": "1/4", + "d_max": 48, + "tail_fraction": 2.458703626294416e-20, + "censored_e_l": 3.565196705602, + "all_height_e_l": 3.565196705601972, + "censored_cv2": 0.18016478762042828, + "all_height_cv2": 0.1801647876204281, + "cv2_rel_bias": 1.0783962386630806e-15, + "R_w_censored": 0.6648361821191527, + "R_w_true": 0.6648361821191517 + }, + { + "graph": "NN", + "width": 6, + "p": "1/4", + "d_max": 48, + "tail_fraction": 6.277327552720931e-20, + "censored_e_l": 3.938018381762912, + "all_height_e_l": 3.9380183817628125, + "censored_cv2": 0.15705698243321062, + "all_height_cv2": 0.15705698243320937, + "cv2_rel_bias": 7.952533426741825e-15, + "R_w_censored": 0.6591565874196772, + "R_w_true": 0.6591565874196698 + }, + { + "graph": "NN", + "width": 7, + "p": "1/4", + "d_max": 20, + "tail_fraction": 1.8816482938072324e-07, + "censored_e_l": 4.26751956374612, + "all_height_e_l": 4.267523627258952, + "censored_cv2": 0.1400308129717512, + "all_height_cv2": 0.14003347019488627, + "cv2_rel_bias": 1.897562869331983e-05, + "R_w_censored": 0.6498328324260743, + "R_w_true": 0.6498514329880196 + }, + { + "graph": "NN", + "width": 2, + "p": "1/8", + "d_max": 48, + "tail_fraction": 5.418743143784332e-41, + "censored_e_l": 1.5164329610719558, + "all_height_e_l": 1.5164329610719558, + "censored_cv2": 0.22902231485587307, + "all_height_cv2": 0.22902231485587307, + "cv2_rel_bias": 0.0, + "R_w_censored": 0.36364952731855066, + "R_w_true": 0.36364952731855066 + }, + { + "graph": "NN", + "width": 3, + "p": "1/8", + "d_max": 48, + "tail_fraction": 0.0, + "censored_e_l": 1.76523139757859, + "all_height_e_l": 1.7652313975785898, + "censored_cv2": 0.23216341005648153, + "all_height_cv2": 0.23216341005648158, + "cv2_rel_bias": 2.3910378994585263e-16, + "R_w_censored": 0.5548975765796513, + "R_w_true": 0.5548975765796516 + }, + { + "graph": "NN", + "width": 4, + "p": "1/8", + "d_max": 48, + "tail_fraction": 1.5888454215555633e-37, + "censored_e_l": 2.008948582494948, + "all_height_e_l": 2.008948582494948, + "censored_cv2": 0.21433940151287031, + "all_height_cv2": 0.21433940151287037, + "cv2_rel_bias": 2.5898715233617263e-16, + "R_w_censored": 0.6685674012650903, + "R_w_true": 0.6685674012650905 + }, + { + "graph": "NN", + "width": 5, + "p": "1/8", + "d_max": 48, + "tail_fraction": 4.413109251957058e-37, + "censored_e_l": 2.2367226104165967, + "all_height_e_l": 2.23672261041658, + "censored_cv2": 0.19200612530175373, + "all_height_cv2": 0.1920061253017544, + "cv2_rel_bias": 3.4693362710601363e-15, + "R_w_censored": 0.72404287052578, + "R_w_true": 0.7240428705257833 + }, + { + "graph": "NN", + "width": 6, + "p": "1/8", + "d_max": 48, + "tail_fraction": 7.745728705528937e-37, + "censored_e_l": 2.4488348684900045, + "all_height_e_l": 2.44883486848998, + "censored_cv2": 0.17074226932317305, + "all_height_cv2": 0.1707422693231734, + "cv2_rel_bias": 2.1132580961555983e-15, + "R_w_censored": 0.7412683087594518, + "R_w_true": 0.741268308759454 + }, + { + "graph": "NN", + "width": 7, + "p": "1/8", + "d_max": 20, + "tail_fraction": 3.0981257236732594e-14, + "censored_e_l": 2.6449879468322894, + "all_height_e_l": 2.644987946832852, + "censored_cv2": 0.1522688706521326, + "all_height_cv2": 0.1522688706535528, + "cv2_rel_bias": 9.32690501351245e-12, + "R_w_censored": 0.735499236188744, + "R_w_true": 0.7354992361986854 + }, + { + "graph": "matching", + "width": 2, + "p": "1/16", + "d_max": 48, + "tail_fraction": 1.0122468658487711e-43, + "censored_e_l": 1.8449560283633522, + "all_height_e_l": 1.8449560283633522, + "censored_cv2": 0.132751578890288, + "all_height_cv2": 0.13275157889028785, + "cv2_rel_bias": 1.0453953108372227e-15, + "R_w_censored": 0.1711080553873805, + "R_w_true": 0.17110805538738022 + }, + { + "graph": "matching", + "width": 3, + "p": "1/16", + "d_max": 48, + "tail_fraction": 4.104574491322623e-35, + "censored_e_l": 2.2301275597303456, + "all_height_e_l": 2.2301275597303456, + "censored_cv2": 0.12237716088750261, + "all_height_cv2": 0.12237716088750232, + "cv2_rel_bias": 2.3814373683011797e-15, + "R_w_censored": 0.2255388290727146, + "R_w_true": 0.2255388290727137 + }, + { + "graph": "matching", + "width": 4, + "p": "1/16", + "d_max": 48, + "tail_fraction": 6.991787759404516e-34, + "censored_e_l": 2.626375354526811, + "all_height_e_l": 2.6263753545268105, + "censored_cv2": 0.11653378002048398, + "all_height_cv2": 0.11653378002048444, + "cv2_rel_bias": 3.929907684942298e-15, + "R_w_censored": 0.27734491529554495, + "R_w_true": 0.2773449152955467 + }, + { + "graph": "matching", + "width": 5, + "p": "1/16", + "d_max": 48, + "tail_fraction": 3.1719725442515245e-33, + "censored_e_l": 2.9347153979157974, + "all_height_e_l": 2.9347153979157863, + "censored_cv2": 0.1047731644182255, + "all_height_cv2": 0.10477316441822523, + "cv2_rel_bias": 2.516655575047307e-15, + "R_w_censored": 0.28787806610813876, + "R_w_true": 0.28787806610813743 + }, + { + "graph": "matching", + "width": 6, + "p": "1/16", + "d_max": 48, + "tail_fraction": 7.005036003062599e-33, + "censored_e_l": 3.218205996481426, + "all_height_e_l": 3.2182059964814007, + "censored_cv2": 0.09602414130550847, + "all_height_cv2": 0.09602414130550795, + "cv2_rel_bias": 5.491909946053329e-15, + "R_w_censored": 0.29295954065346436, + "R_w_true": 0.2929595406534612 + }, + { + "graph": "matching", + "width": 7, + "p": "1/16", + "d_max": 20, + "tail_fraction": 2.0291523235445125e-12, + "censored_e_l": 3.472165351569181, + "all_height_e_l": 3.4721653516121314, + "censored_cv2": 0.08859956037693212, + "all_height_cv2": 0.0885995604258875, + "cv2_rel_bias": 5.5254654966727e-10, + "R_w_censored": 0.2898140642623406, + "R_w_true": 0.28981406460502823 + }, + { + "graph": "matching", + "width": 2, + "p": "1/2", + "d_max": 48, + "tail_fraction": 1.294449500404429e-06, + "censored_e_l": 4.7618374505307415, + "all_height_e_l": 4.761904761904762, + "censored_cv2": 0.5594890441899597, + "all_height_cv2": 0.5596, + "cv2_rel_bias": 0.00019827700150157392, + "R_w_censored": 1.024582985986724, + "R_w_true": 1.0248048976068045 + }, + { + "graph": "matching", + "width": 3, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.002113292317807632, + "censored_e_l": 9.558311480555812, + "all_height_e_l": 9.676655850353121, + "censored_cv2": 0.5916694791358947, + "all_height_cv2": 0.6250153769268254, + "cv2_rel_bias": 0.05335212383876227, + "R_w_censored": 1.6334157838178909, + "R_w_true": 1.7334534771906829 + }, + { + "graph": "matching", + "width": 4, + "p": "1/2", + "d_max": 48, + "tail_fraction": 0.024106270415262452, + "censored_e_l": 13.909703382676245, + "all_height_e_l": 15.370127125329736, + "censored_cv2": 0.5239730271284714, + "all_height_cv2": 0.6375148797674687, + "cv2_rel_bias": 0.17810070986956617, + "R_w_censored": 1.9071019037274946, + "R_w_true": 2.3612693142834837 + }, + { + "graph": "matching", + "width": 2, + "p": "1/8", + "d_max": 48, + "tail_fraction": 2.8828436788120194e-30, + "censored_e_l": 2.0502312416713804, + "all_height_e_l": 2.0502312416713804, + "censored_cv2": 0.18389851299587207, + "all_height_cv2": 0.18389851299587207, + "cv2_rel_bias": 0.0, + "R_w_censored": 0.27340192359854865, + "R_w_true": 0.27340192359854865 + }, + { + "graph": "matching", + "width": 3, + "p": "1/8", + "d_max": 48, + "tail_fraction": 1.1197317480277058e-22, + "censored_e_l": 2.7012991211473216, + "all_height_e_l": 2.7012991211473216, + "censored_cv2": 0.19953812095503187, + "all_height_cv2": 0.199538120955032, + "cv2_rel_bias": 6.954955645263373e-16, + "R_w_censored": 0.4570217092753024, + "R_w_true": 0.45702170927530283 + }, + { + "graph": "matching", + "width": 4, + "p": "1/8", + "d_max": 48, + "tail_fraction": 7.792198212867294e-15, + "censored_e_l": 3.242220864673869, + "all_height_e_l": 3.2422208646738944, + "censored_cv2": 0.17781418252237205, + "all_height_cv2": 0.1778141825223629, + "cv2_rel_bias": 5.1510739037959544e-14, + "R_w_censored": 0.5224665253030972, + "R_w_true": 0.5224665253030606 + }, + { + "graph": "matching", + "width": 5, + "p": "1/8", + "d_max": 48, + "tail_fraction": 3.6928543327561054e-20, + "censored_e_l": 3.677303836310969, + "all_height_e_l": 3.677303836310904, + "censored_cv2": 0.15674596396208293, + "all_height_cv2": 0.15674596396208065, + "cv2_rel_bias": 1.4520037026485488e-14, + "R_w_censored": 0.547742063827426, + "R_w_true": 0.5477420638274145 + }, + { + "graph": "matching", + "width": 6, + "p": "1/8", + "d_max": 48, + "tail_fraction": 1.0342512220378788e-19, + "censored_e_l": 4.060109171060372, + "all_height_e_l": 4.060109171060249, + "censored_cv2": 0.1398612019890125, + "all_height_cv2": 0.13986120198900942, + "cv2_rel_bias": 2.2028045301490477e-14, + "R_w_censored": 0.5559819047544885, + "R_w_true": 0.5559819047544701 + }, + { + "graph": "matching", + "width": 7, + "p": "1/8", + "d_max": 20, + "tail_fraction": 2.3494434963674133e-07, + "censored_e_l": 4.401219614041603, + "all_height_e_l": 4.4012246904175445, + "censored_cv2": 0.12655830499608953, + "all_height_cv2": 0.1265613803540667, + "cv2_rel_bias": 2.4299339724040402e-05, + "R_w_censored": 0.5555252765964425, + "R_w_true": 0.5555468041022826 + } + ] + }, + "histogram_agreement": { + "what": "depth-clamped chain vs tagged resolvent, height by height", + "constructions": { + "spectrum": "span_spectrum_build.cpp: all component ages, then span histogram", + "tagged": "tagged_winding_span.py: one lineage, no age, no depth cutoff" + }, + "points_compared": 30, + "points_scored": 30, + "scoring_floor": "d_h > 1e-20 * nu", + "worst_rel_diff_over_all_heights": 3.0122211071095306e-12, + "total_heights_below_floor": 231, + "state_space_ratio_note": "at w=7 the tagged lumping is 71 states against 389391; at w=6, 36 against 668439", + "rows": [ + { + "graph": "NN", + "width": 2, + "p": "1/2", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 3, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 1.4583333333333333e-21, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 8.609925707605852e-12, + "tail_spectrum": 8.609925707605852e-12, + "tail_scored": true, + "tail_rel_diff": 0.0, + "d_h_tagged_head": [ + 0.015625, + 0.03515625, + 0.0341796875, + 0.023193359375 + ], + "d_h_spectrum_head": [ + 0.015625, + 0.03515625, + 0.0341796875, + 0.023193359375 + ] + }, + { + "graph": "NN", + "width": 3, + "p": "1/2", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 5, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 8.518145161290321e-22, + "max_rel_diff_d_h": 3.884146214910958e-16, + "max_rel_diff_at_height": 46, + "tail_exact": 4.4770266977653885e-09, + "tail_spectrum": 4.47702675164191e-09, + "tail_scored": true, + "tail_rel_diff": 1.2033996044601412e-08, + "d_h_tagged_head": [ + 0.001953125, + 0.009033203125, + 0.015228271484375, + 0.014057159423828125 + ], + "d_h_spectrum_head": [ + 0.0019531249999999998, + 0.009033203124999998, + 0.015228271484375, + 0.014057159423828123 + ] + }, + { + "graph": "NN", + "width": 4, + "p": "1/2", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 10, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 5.806909140463621e-22, + "max_rel_diff_d_h": 3.7894182489564264e-15, + "max_rel_diff_at_height": 15, + "tail_exact": 9.11025051349543e-08, + "tail_spectrum": 9.110250511132349e-08, + "tail_scored": true, + "tail_rel_diff": 2.593871188840601e-10, + "d_h_tagged_head": [ + 0.000244140625, + 0.0022125244140625, + 0.006209373474121094, + 0.007723748683929443 + ], + "d_h_spectrum_head": [ + 0.00024414062500000005, + 0.0022125244140625004, + 0.006209373474121094, + 0.007723748683929443 + ] + }, + { + "graph": "NN", + "width": 2, + "p": "1/4", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 3, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 39, + "heights_below_floor": 9, + "floor_abs": 5.679086538461538e-22, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 4.95156369042763e-27, + "tail_spectrum": 4.95156369042763e-27, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.019775390625, + 0.0210113525390625, + 0.010428428649902344, + 0.0037803053855895996 + ], + "d_h_spectrum_head": [ + 0.019775390625, + 0.0210113525390625, + 0.010428428649902344, + 0.0037803053855895996 + ] + }, + { + "graph": "NN", + "width": 3, + "p": "1/4", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 5, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 44, + "heights_below_floor": 4, + "floor_abs": 1.5188024270440518e-22, + "max_rel_diff_d_h": 2.6333694276667346e-16, + "max_rel_diff_at_height": 31, + "tail_exact": 2.4775553184847786e-24, + "tail_spectrum": 2.1875045906896858e-17, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.002780914306640625, + 0.005257666110992432, + 0.003968370147049427, + 0.0018771786853903905 + ], + "d_h_spectrum_head": [ + 0.002780914306640625, + 0.005257666110992432, + 0.003968370147049427, + 0.0018771786853903905 + ] + }, + { + "graph": "NN", + "width": 4, + "p": "1/4", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 10, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 47, + "heights_below_floor": 1, + "floor_abs": 4.429300954810662e-23, + "max_rel_diff_d_h": 2.532138404731174e-15, + "max_rel_diff_at_height": 42, + "tail_exact": 2.0422337200135552e-23, + "tail_spectrum": 1.33210785239347e-23, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.0003910660743713379, + 0.001223609084263444, + 0.0013529718989957473, + 0.0007909598441493415 + ], + "d_h_spectrum_head": [ + 0.0003910660743713379, + 0.001223609084263444, + 0.001352971898995747, + 0.0007909598441493415 + ] + }, + { + "graph": "NN", + "width": 5, + "p": "1/4", + "d_max": 48, + "tagged_states": 131, + "tagged_lumps": 17, + "spectrum_states": 52061, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 1.344316928849788e-23, + "max_rel_diff_d_h": 5.126211632619467e-13, + "max_rel_diff_at_height": 48, + "tail_exact": 3.3052769078503e-23, + "tail_spectrum": 3.3052769078520395e-23, + "tail_scored": true, + "tail_rel_diff": 5.263497394378615e-13, + "d_h_tagged_head": [ + 5.499366670846939e-05, + 0.0002685774679775932, + 0.00041920655475724544, + 0.00030116087922690913 + ], + "d_h_spectrum_head": [ + 5.499366670846921e-05, + 0.0002685774679775955, + 0.00041920655475725444, + 0.0003011608792269195 + ] + }, + { + "graph": "NN", + "width": 6, + "p": "1/4", + "d_max": 48, + "tagged_states": 411, + "tagged_lumps": 36, + "spectrum_states": 668439, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 4.219779152265999e-24, + "max_rel_diff_d_h": 1.7744092929560804e-12, + "max_rel_diff_at_height": 48, + "tail_exact": 2.648893593887095e-23, + "tail_spectrum": 2.648893593891943e-23, + "tail_scored": true, + "tail_rel_diff": 1.8303213315759855e-12, + "d_h_tagged_head": [ + 7.733484380878508e-06, + 5.712696213677759e-05, + 0.00012264919085896216, + 0.00010803343658327408 + ], + "d_h_spectrum_head": [ + 7.73348438087828e-06, + 5.712696213677894e-05, + 0.00012264919085897016, + 0.00010803343658328537 + ] + }, + { + "graph": "NN", + "width": 7, + "p": "1/4", + "d_max": 20, + "tagged_states": 1275, + "tagged_lumps": 71, + "spectrum_states": 389391, + "heights_total": 20, + "heights_scored": 20, + "heights_below_floor": 0, + "floor_abs": 1.3561568755470406e-24, + "max_rel_diff_d_h": 3.0122211071095306e-12, + "max_rel_diff_at_height": 20, + "tail_exact": 2.551810271000987e-11, + "tail_spectrum": 2.5518102710093005e-11, + "tail_scored": true, + "tail_rel_diff": 3.2578786785443937e-12, + "d_h_tagged_head": [ + 1.0875212410610402e-06, + 1.191341551921854e-05, + 3.446885208635159e-05, + 3.704115720288306e-05 + ], + "d_h_spectrum_head": [ + 1.0875212410608261e-06, + 1.1913415519219256e-05, + 3.44688520863608e-05, + 3.704115720290019e-05 + ] + }, + { + "graph": "NN", + "width": 2, + "p": "1/8", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 3, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 25, + "heights_below_floor": 23, + "floor_abs": 1.5320895010964912e-22, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 8.30199947973057e-43, + "tail_spectrum": 8.30199947973057e-43, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.009159088134765625, + 0.004722654819488525, + 0.0011784275993704796, + 0.00021798534726258367 + ], + "d_h_spectrum_head": [ + 0.009159088134765625, + 0.004722654819488525, + 0.0011784275993704796, + 0.00021798534726258367 + ] + }, + { + "graph": "NN", + "width": 3, + "p": "1/8", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 5, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 27, + "heights_below_floor": 21, + "floor_abs": 1.947858171614403e-23, + "max_rel_diff_d_h": 3.770334844032999e-16, + "max_rel_diff_at_height": 21, + "tail_exact": 5.131100001957982e-41, + "tail_spectrum": 0.0, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.0008765533566474915, + 0.000741303912946023, + 0.0002580098478404125, + 5.787874251345082e-05 + ], + "d_h_spectrum_head": [ + 0.0008765533566474916, + 0.0007413039129460233, + 0.00025800984784041253, + 5.787874251345083e-05 + ] + }, + { + "graph": "NN", + "width": 4, + "p": "1/8", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 10, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 28, + "heights_below_floor": 20, + "floor_abs": 2.55847450963324e-24, + "max_rel_diff_d_h": 1.4523043319094597e-15, + "max_rel_diff_at_height": 23, + "tail_exact": 4.81300983433908e-41, + "tail_spectrum": 4.065020510797389e-41, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 8.388889546040446e-05, + 0.00010619236400444265, + 4.958197905932573e-05, + 1.2770432894075622e-05 + ], + "d_h_spectrum_head": [ + 8.388889546040447e-05, + 0.00010619236400444267, + 4.958197905932574e-05, + 1.2770432894075624e-05 + ] + }, + { + "graph": "NN", + "width": 5, + "p": "1/8", + "d_max": 48, + "tagged_states": 131, + "tagged_lumps": 17, + "spectrum_states": 52061, + "heights_total": 48, + "heights_scored": 28, + "heights_below_floor": 20, + "floor_abs": 3.4262366660512023e-25, + "max_rel_diff_d_h": 4.205798754539549e-13, + "max_rel_diff_at_height": 28, + "tail_exact": 1.5120356730334393e-41, + "tail_spectrum": 1.5120356730345478e-41, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 8.02842944835902e-06, + 1.4289124568412671e-05, + 8.664835144575886e-06, + 2.547535393273625e-06 + ], + "d_h_spectrum_head": [ + 8.02842944835906e-06, + 1.428912456841301e-05, + 8.664835144576243e-06, + 2.547535393273768e-06 + ] + }, + { + "graph": "NN", + "width": 6, + "p": "1/8", + "d_max": 48, + "tagged_states": 411, + "tagged_lumps": 36, + "spectrum_states": 668439, + "heights_total": 48, + "heights_scored": 28, + "heights_below_floor": 20, + "floor_abs": 4.6734446291311745e-26, + "max_rel_diff_d_h": 6.70430045562673e-13, + "max_rel_diff_at_height": 28, + "tail_exact": 3.619923421751929e-42, + "tail_spectrum": 3.619923421756302e-42, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 7.683457870499844e-07, + 1.8521177084572615e-06, + 1.426148582298884e-06, + 4.78808560991858e-07 + ], + "d_h_spectrum_head": [ + 7.683457870499937e-07, + 1.8521177084573244e-06, + 1.426148582298968e-06, + 4.788085609918973e-07 + ] + }, + { + "graph": "NN", + "width": 7, + "p": "1/8", + "d_max": 20, + "tagged_states": 1275, + "tagged_lumps": 71, + "spectrum_states": 389391, + "heights_total": 20, + "heights_scored": 20, + "heights_below_floor": 0, + "floor_abs": 6.475583214334062e-27, + "max_rel_diff_d_h": 1.7124199910702867e-12, + "max_rel_diff_at_height": 20, + "tail_exact": 2.0062170932082477e-20, + "tail_spectrum": 2.006217093211884e-20, + "tail_scored": true, + "tail_rel_diff": 1.8125637990806848e-12, + "d_h_tagged_head": [ + 7.353309290126803e-08, + 2.341528262747578e-07, + 2.2494528974758463e-07, + 8.619742587121244e-08 + ], + "d_h_spectrum_head": [ + 7.353309290127088e-08, + 2.34152826274788e-07, + 2.2494528974763336e-07, + 8.619742587123842e-08 + ] + }, + { + "graph": "matching", + "width": 2, + "p": "1/16", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 2, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 23, + "heights_below_floor": 25, + "floor_abs": 1.0271191102340508e-22, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 1.0396981001877964e-45, + "tail_spectrum": 1.0396981001877964e-45, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.0030174851417541504, + 0.006023183232173324, + 0.0010608806633172208, + 0.00014789047986241144 + ], + "d_h_spectrum_head": [ + 0.0030174851417541504, + 0.006023183232173324, + 0.0010608806633172208, + 0.00014789047986241144 + ] + }, + { + "graph": "matching", + "width": 3, + "p": "1/16", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 3, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 29, + "heights_below_floor": 19, + "floor_abs": 1.4847040199716196e-23, + "max_rel_diff_d_h": 3.8388108790635743e-16, + "max_rel_diff_at_height": 19, + "tail_exact": 7.407469795613915e-38, + "tail_spectrum": 6.094078247539665e-38, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.00016575540939811617, + 0.000932414645493651, + 0.0002922774621204891, + 7.321752289781676e-05 + ], + "d_h_spectrum_head": [ + 0.00016575540939811617, + 0.000932414645493651, + 0.0002922774621204891, + 7.321752289781675e-05 + ] + }, + { + "graph": "matching", + "width": 4, + "p": "1/16", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 7, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 31, + "heights_below_floor": 17, + "floor_abs": 2.4302291372574715e-24, + "max_rel_diff_d_h": 2.302652859479019e-15, + "max_rel_diff_at_height": 30, + "tail_exact": 2.0855217463328354e-37, + "tail_spectrum": 1.6991646334424985e-37, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 9.105216580707065e-06, + 0.00011824319123167332, + 8.123338189128076e-05, + 2.578642567154763e-05 + ], + "d_h_spectrum_head": [ + 9.105216580707063e-06, + 0.00011824319123167332, + 8.123338189128075e-05, + 2.5786425671547625e-05 + ] + }, + { + "graph": "matching", + "width": 5, + "p": "1/16", + "d_max": 48, + "tagged_states": 131, + "tagged_lumps": 15, + "spectrum_states": 52061, + "heights_total": 48, + "heights_scored": 31, + "heights_below_floor": 17, + "floor_abs": 3.9940541362537995e-25, + "max_rel_diff_d_h": 3.7808841543817436e-13, + "max_rel_diff_at_height": 31, + "tail_exact": 1.2669030060444318e-37, + "tail_spectrum": 1.2669030060451703e-37, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 5.001644850241918e-07, + 1.3738573135018604e-05, + 1.676048041102892e-05, + 6.512419989340453e-06 + ], + "d_h_spectrum_head": [ + 5.001644850241958e-07, + 1.3738573135018877e-05, + 1.6760480411029502e-05, + 6.512419989340742e-06 + ] + }, + { + "graph": "matching", + "width": 6, + "p": "1/16", + "d_max": 48, + "tagged_states": 411, + "tagged_lumps": 33, + "spectrum_states": 668439, + "heights_total": 48, + "heights_scored": 32, + "heights_below_floor": 16, + "floor_abs": 6.729919865943204e-26, + "max_rel_diff_d_h": 7.9870332171344e-13, + "max_rel_diff_at_height": 32, + "tail_exact": 4.71433309586046e-38, + "tail_spectrum": 4.714333095866186e-38, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 2.74748557447371e-08, + 1.5377791418597447e-06, + 2.9739864620769945e-06, + 1.537210178932353e-06 + ], + "d_h_spectrum_head": [ + 2.747485574473748e-08, + 1.537779141859809e-06, + 2.9739864620772007e-06, + 1.5372101789324968e-06 + ] + }, + { + "graph": "matching", + "width": 7, + "p": "1/16", + "d_max": 20, + "tagged_states": 1275, + "tagged_lumps": 68, + "spectrum_states": 389391, + "heights_total": 20, + "heights_scored": 20, + "heights_below_floor": 0, + "floor_abs": 1.146690963028296e-26, + "max_rel_diff_d_h": 2.6178899438500307e-12, + "max_rel_diff_at_height": 20, + "tail_exact": 2.326810632010912e-18, + "tail_spectrum": 2.3268106320173644e-18, + "tail_scored": true, + "tail_rel_diff": 2.7730019843126872e-12, + "d_h_tagged_head": [ + 1.509238901993615e-09, + 1.6910016685446708e-07, + 4.831044001048296e-07, + 3.300256182257459e-07 + ], + "d_h_spectrum_head": [ + 1.5092389019937132e-09, + 1.6910016685450345e-07, + 4.831044001050075e-07, + 3.3002561822591373e-07 + ] + }, + { + "graph": "matching", + "width": 2, + "p": "1/2", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 2, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 1.4583333333333333e-21, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 1.8877388547564587e-07, + "tail_spectrum": 1.8877388547564587e-07, + "tail_scored": true, + "tail_rel_diff": 0.0, + "d_h_tagged_head": [ + 0.015625, + 0.02734375, + 0.0244140625, + 0.019287109375 + ], + "d_h_spectrum_head": [ + 0.015625, + 0.02734375, + 0.0244140625, + 0.019287109375 + ] + }, + { + "graph": "matching", + "width": 3, + "p": "1/2", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 3, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 8.518145161290321e-22, + "max_rel_diff_d_h": 4.034872550235758e-16, + "max_rel_diff_at_height": 46, + "tail_exact": 0.0001800133073132347, + "tail_spectrum": 0.00018001330731325094, + "tail_scored": true, + "tail_rel_diff": 9.019292948559005e-14, + "d_h_tagged_head": [ + 0.001953125, + 0.006103515625, + 0.007354736328125, + 0.007511138916015625 + ], + "d_h_spectrum_head": [ + 0.001953125, + 0.006103515625, + 0.007354736328125, + 0.007511138916015625 + ] + }, + { + "graph": "matching", + "width": 4, + "p": "1/2", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 7, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 5.806909140463621e-22, + "max_rel_diff_d_h": 1.0072430465846394e-14, + "max_rel_diff_at_height": 46, + "tail_exact": 0.001399829220168607, + "tail_spectrum": 0.0013998292201687535, + "tail_scored": true, + "tail_rel_diff": 1.0456082154644079e-13, + "d_h_tagged_head": [ + 0.000244140625, + 0.0014495849609375, + 0.0024728775024414062, + 0.0030283331871032715 + ], + "d_h_spectrum_head": [ + 0.00024414062499999967, + 0.0014495849609374985, + 0.0024728775024414028, + 0.003028333187103268 + ] + }, + { + "graph": "matching", + "width": 2, + "p": "1/8", + "d_max": 48, + "tagged_states": 5, + "tagged_lumps": 2, + "spectrum_states": 249, + "heights_total": 48, + "heights_scored": 33, + "heights_below_floor": 15, + "floor_abs": 3.5468921326754388e-22, + "max_rel_diff_d_h": 0.0, + "max_rel_diff_at_height": null, + "tail_exact": 1.022513556411147e-31, + "tail_spectrum": 1.022513556411147e-31, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.009159088134765625, + 0.018175065517425537, + 0.006012887693941593, + 0.0016010166000341997 + ], + "d_h_spectrum_head": [ + 0.009159088134765625, + 0.018175065517425537, + 0.006012887693941593, + 0.0016010166000341997 + ] + }, + { + "graph": "matching", + "width": 3, + "p": "1/8", + "d_max": 48, + "tagged_states": 13, + "tagged_lumps": 3, + "spectrum_states": 645, + "heights_total": 48, + "heights_scored": 44, + "heights_below_floor": 4, + "floor_abs": 1.012385010033181e-22, + "max_rel_diff_d_h": 3.360560117319889e-16, + "max_rel_diff_at_height": 11, + "tail_exact": 1.693528071692592e-24, + "tail_spectrum": 1.1335996369615003e-24, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 0.0008765533566474915, + 0.004603617140674032, + 0.0026245273589040607, + 0.0012042995335344586 + ], + "d_h_spectrum_head": [ + 0.0008765533566474915, + 0.004603617140674032, + 0.0026245273589040607, + 0.0012042995335344586 + ] + }, + { + "graph": "matching", + "width": 4, + "p": "1/8", + "d_max": 48, + "tagged_states": 43, + "tagged_lumps": 7, + "spectrum_states": 11245, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 3.2061990372466306e-23, + "max_rel_diff_d_h": 5.068003088960758e-15, + "max_rel_diff_at_height": 47, + "tail_exact": 1.8330494632335628e-23, + "tail_spectrum": 2.4983338408130232e-17, + "tail_scored": false, + "tail_rel_diff": null, + "d_h_tagged_head": [ + 8.388889546040446e-05, + 0.0010027139728627787, + 0.0010276090133845778, + 0.000593689890921287 + ], + "d_h_spectrum_head": [ + 8.388889546040443e-05, + 0.0010027139728627785, + 0.0010276090133845774, + 0.0005936898909212868 + ] + }, + { + "graph": "matching", + "width": 5, + "p": "1/8", + "d_max": 48, + "tagged_states": 131, + "tagged_lumps": 15, + "spectrum_states": 52061, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 1.0297930696989006e-23, + "max_rel_diff_d_h": 1.4239316136941811e-12, + "max_rel_diff_at_height": 48, + "tail_exact": 3.80287579927456e-23, + "tail_spectrum": 3.8028757992801343e-23, + "tail_scored": true, + "tail_rel_diff": 1.465783924014196e-12, + "d_h_tagged_head": [ + 8.02842944835902e-06, + 0.0001999073542460492, + 0.00033846511264142915, + 0.00024299655833960693 + ], + "d_h_spectrum_head": [ + 8.028429448359029e-06, + 0.00019990735424605603, + 0.0003384651126414531, + 0.0002429965583396311 + ] + }, + { + "graph": "matching", + "width": 6, + "p": "1/8", + "d_max": 48, + "tagged_states": 411, + "tagged_lumps": 33, + "spectrum_states": 668439, + "heights_total": 48, + "heights_scored": 48, + "heights_below_floor": 0, + "floor_abs": 3.384097921186248e-24, + "max_rel_diff_d_h": 2.3586377818236965e-12, + "max_rel_diff_at_height": 48, + "tail_exact": 3.500007410474815e-23, + "tail_spectrum": 3.5000074104833353e-23, + "tail_scored": true, + "tail_rel_diff": 2.434443646157721e-12, + "d_h_tagged_head": [ + 7.683457870499844e-07, + 3.8377629902561116e-05, + 0.00010005165454768037, + 9.16422453095959e-05 + ], + "d_h_spectrum_head": [ + 7.68345787049979e-07, + 3.837762990256322e-05, + 0.00010005165454769263, + 9.164224530961195e-05 + ] + }, + { + "graph": "matching", + "width": 7, + "p": "1/8", + "d_max": 20, + "tagged_states": 1275, + "tagged_lumps": 68, + "spectrum_states": 389391, + "heights_total": 20, + "heights_scored": 20, + "heights_below_floor": 0, + "floor_abs": 1.1267963043798457e-24, + "max_rel_diff_d_h": 2.2708736632168628e-12, + "max_rel_diff_at_height": 20, + "tail_exact": 2.6473442490507712e-11, + "tail_spectrum": 2.647344249057235e-11, + "tail_scored": true, + "tail_rel_diff": 2.4416787219954993e-12, + "d_h_tagged_head": [ + 7.353309290126803e-08, + 7.23106628057412e-06, + 2.761323406379945e-05, + 3.2241241216752266e-05 + ], + "d_h_spectrum_head": [ + 7.353309290126311e-08, + 7.231066280574751e-06, + 2.7613234063806597e-05, + 3.2241241216765385e-05 + ] + } + ] + }, + "model_discriminator": { + "what": "section 6.3 moment-limit reading, tested on uncensored all-height moments", + "target_T": "pi/3 - 1", + "T_float": 0.04719755119659775, + "definition": "R_w = (CV^2 - T)*w ; model A -> constant, model B -> slope exactly -T", + "families_tested": 4, + "families_favouring_model_A": 4, + "min_model_B_gap_at_w8": 0.1716465533404017, + "families": [ + { + "graph": "NN", + "p": "1/8", + "widths": [ + 4, + 5, + 6, + 7, + 8 + ], + "cv2": { + "4": 0.21433940151287037, + "5": 0.1920061253017544, + "6": 0.1707422693231734, + "7": 0.1522688706535528, + "8": 0.136853199191863 + }, + "R_w": { + "4": 0.6685674012650905, + "5": 0.7240428705257833, + "6": 0.741268308759454, + "7": 0.7354992361986854, + "8": 0.7172451839621221 + }, + "slope_R_w_vs_w": 0.01088119310669653, + "model_B_required_slope": -0.04719755119659775, + "rms_model_A_const": 0.025791566390400804, + "rms_model_B_slope_minus_T": 0.08470351379792275, + "verdict": "model A", + "rms_advantage": 0.058911947407521946, + "widths_4_to_8": [ + 4, + 8 + ], + "model_B_prediction_R_8": 0.47977719647869954, + "measured_R_8": 0.7172451839621221, + "model_B_gap_at_w8": 0.23746798748342257 + }, + { + "graph": "NN", + "p": "1/4", + "widths": [ + 4, + 5, + 6, + 7, + 8 + ], + "cv2": { + "4": 0.21141536180098752, + "5": 0.1801647876204281, + "6": 0.15705698243320937, + "7": 0.14003347019488627, + "8": 0.12716350006804397 + }, + "R_w": { + "4": 0.6568712424175591, + "5": 0.6648361821191517, + "6": 0.6591565874196698, + "7": 0.6498514329880196, + "8": 0.6397275909715698 + }, + "slope_R_w_vs_w": -0.004927205202311069, + "model_B_required_slope": -0.04719755119659775, + "rms_model_A_const": 0.008638637407828272, + "rms_model_B_slope_minus_T": 0.05999696371489131, + "verdict": "model A", + "rms_advantage": 0.05135832630706304, + "widths_4_to_8": [ + 4, + 8 + ], + "model_B_prediction_R_8": 0.46808103763116815, + "measured_R_8": 0.6397275909715698, + "model_B_gap_at_w8": 0.1716465533404017 + }, + { + "graph": "NN", + "p": "1/2", + "widths": [ + 4 + ], + "cv2": { + "4": 0.3044763350821417 + }, + "R_w": { + "4": 1.029115135542176 + } + }, + { + "graph": "matching", + "p": "1/16", + "widths": [ + 4, + 5, + 6, + 7, + 8 + ], + "cv2": { + "4": 0.11653378002048444, + "5": 0.10477316441822523, + "6": 0.09602414130550795, + "7": 0.0885995604258875, + "8": 0.0826964784684481 + }, + "R_w": { + "4": 0.2773449152955467, + "5": 0.28787806610813743, + "6": 0.2929595406534612, + "7": 0.28981406460502823, + "8": 0.28399141817480283 + }, + "slope_R_w_vs_w": 0.0015229004255403022, + "model_B_required_slope": -0.04719755119659775, + "rms_model_A_const": 0.005378919719952098, + "rms_model_B_slope_minus_T": 0.0690771969500186, + "verdict": "model A", + "rms_advantage": 0.0636982772300665, + "widths_4_to_8": [ + 4, + 8 + ], + "model_B_prediction_R_8": 0.08855471050915573, + "measured_R_8": 0.28399141817480283, + "model_B_gap_at_w8": 0.1954367076656471 + }, + { + "graph": "matching", + "p": "1/8", + "widths": [ + 4, + 5, + 6, + 7, + 8 + ], + "cv2": { + "4": 0.1778141825223629, + "5": 0.15674596396208065, + "6": 0.13986120198900942, + "7": 0.1265613803540667, + "8": 0.11600493483091046 + }, + "R_w": { + "4": 0.5224665253030606, + "5": 0.5477420638274145, + "6": 0.5559819047544701, + "7": 0.5555468041022826, + "8": 0.5504590690745017 + }, + "slope_R_w_vs_w": 0.006378982781775034, + "model_B_required_slope": -0.04719755119659775, + "rms_model_A_const": 0.012381902924366299, + "rms_model_B_slope_minus_T": 0.07624184325971883, + "verdict": "model A", + "rms_advantage": 0.06385994033535253, + "widths_4_to_8": [ + 4, + 8 + ], + "model_B_prediction_R_8": 0.3336763205166696, + "measured_R_8": 0.5504590690745017, + "model_B_gap_at_w8": 0.21678274855783208 + }, + { + "graph": "matching", + "p": "1/2", + "widths": [ + 4 + ], + "cv2": { + "4": 0.6375148797674687 + }, + "R_w": { + "4": 2.3612693142834837 + } + } + ] + }, + "honesty": [ + "This script verifies arithmetic and mutual consistency. It does not verify the tagged automaton's construction, the unique-anchor pathwise theorem, or any asymptotic claim.", + "The independent nu_w used in check 1 comes from a different exact engine but shares the same underlying cylinder model; it is an independent implementation, not an independent model.", + "Check 3 compares two constructions of the same object, but the tagged side is delivered code imported at run time, so a shared misreading of the span definition would not be caught by it. The two state spaces are structurally unrelated, which is the reason the agreement is meaningful.", + "Check 4 fits four widths at most. Model A beating model B on rms is a consistency statement about two one-parameter readings, not evidence for any particular correction exponent." + ] +} diff --git a/results/geometric-consistency/tagged-span-resolvent.json b/results/geometric-consistency/tagged-span-resolvent.json new file mode 100644 index 00000000..5af87d0b --- /dev/null +++ b/results/geometric-consistency/tagged-span-resolvent.json @@ -0,0 +1,2722 @@ +{ + "scope": "new one-tag construction; no age cutoff; finite state closures checked only at recorded widths", + "source_commit_reviewed": "7226a2c6d099535f34486eccb1bd996f7affda13", + "systems": [ + { + "width": 2, + "matching": false, + "tagged_states": 5, + "exit_lumps": 3, + "mask_transitions": 20, + "runs": [ + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "3577/233472", + "mean": "309184/203889", + "second": "117488075840/41570724321", + "variance": "21893329984/41570724321", + "cv2": "342083281/1493667904", + "d_h": [ + "2401/262144", + "79233/16777216", + "1265327/1073741824", + "14979839/68719476736", + "158814145/4398046511104", + "1586199041/281474976710656", + "15277080399/18014398509481984", + "143650559871/1152921504606846976" + ], + "tail": "1379906850553/65716525762590277632", + "tail_first": "90118927869545/468230246058455728128", + "tail_second": "10550373031695402193/5966687289913279997018112", + "delta": "49/64" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.40334090611361234, + "2": 0.18346971281419544, + "4": 0.044361516881161085 + } + }, + { + "p": "1/4", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "189/3328", + "mean": "5104/2457", + "second": "33211280/6036849", + "variance": "7160464/6036849", + "cv2": "447529/1628176", + "d_h": [ + "81/4096", + "1377/65536", + "10935/1048576", + "63423/16777216", + "333153/268435456", + "1662849/4294967296", + "8070759/68719476736", + "38531295/1099511627776" + ], + "tail": "209335293/14293651161088", + "tail_first": "3202357271/23227183136768", + "tail_second": "37279451702669/28534594483519488", + "delta": "9/16" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4119064042872805, + "2": 0.19873928227292623, + "4": 0.059233224946841814 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "7/48", + "mean": "76/21", + "second": "7844/441", + "variance": "2068/441", + "cv2": "517/1444", + "d_h": [ + "1/64", + "9/256", + "35/1024", + "95/4096", + "241/16384", + "593/65536", + "1443/262144", + "3495/1048576" + ], + "tail": "15991/3145728", + "tail_first": "126205/2359296", + "tail_second": "28856585/49545216", + "delta": "1/4" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4222040956225428, + "2": 0.2133996036671658, + "4": 0.07283419644033955 + } + } + ], + "elapsed_seconds": 0.07149218299991844 + }, + { + "width": 3, + "matching": false, + "tagged_states": 13, + "exit_lumps": 5, + "mask_transitions": 104, + "runs": [ + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "115380055/59234320384", + "mean": "46022040809984/26071392607855", + "second": "2609756899183485545949368832/679717512512916337807701025", + "variance": "491728658867652795155288576/679717512512916337807701025", + "cv2": "960407536850884365537673/4136773906866860841394688", + "d_h": [ + "117649/134217728", + "50942017/68719476736", + "9077914489/35184372088832", + "1042650732865/18014398509481984", + "106198708602721/9223372036854775808", + "10098589865512897/4722366482869645213696", + "920268247628841097/2417851639229258349412352", + "81452475870263259265/1237940039285380274899124224" + ], + "tail": "3735522611824858427336407/279726169216963812296481008779264", + "tail_first": "970555953221091583916343429167/7900900615304294998790643153096409088", + "tail_second": "29176600826565959454726393834599411453223273/25748435237155177214112827508297361118878530273280", + "delta": "343/512" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.40563557297952063, + "2": 0.18917530331126617, + "4": 0.05092416201413466 + } + }, + { + "p": "1/4", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "181467/11948032", + "mean": "1395327808/529339239", + "second": "2434460919309275456/280200029945099121", + "variance": "487521227531190592/280200029945099121", + "cv2": "7617519180174853/30420932684032576", + "d_h": [ + "729/262144", + "88209/16777216", + "4261005/1073741824", + "128998737/68719476736", + "3505761729/4398046511104", + "89067395313/281474976710656", + "2171747696517/18014398509481984", + "51482755895841/1152921504606846976" + ], + "tail": "84533336760385467/3363072028938172628992", + "tail_first": "294251989507959265199/1226260138551581194846208", + "tail_second": "93784034151399483101819001691/40569225534808034495412654047232", + "delta": "27/64" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4089748681729846, + "2": 0.19586024507420094, + "4": 0.0598603539230879 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "169/1984", + "mean": "28376/5239", + "second": "1073043480/27447121", + "variance": "267846104/27447121", + "cv2": "33480763/100649672", + "d_h": [ + "1/512", + "37/4096", + "499/32768", + "3685/262144", + "24565/2097152", + "153181/16777216", + "919795/134217728", + "5389273/1073741824" + ], + "tail": "405880465/33285996544", + "tail_first": "8897380009/64491618304", + "tail_second": "1116028490476611/675743176589312", + "delta": "1/8" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4190517974342922, + "2": 0.20877634862941324, + "4": 0.06867611449668744 + } + } + ], + "elapsed_seconds": 0.005099995999898965 + }, + { + "width": 4, + "matching": false, + "tagged_states": 43, + "exit_lumps": 10, + "mask_transitions": 688, + "runs": [ + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "57776215650857358543/225822909055051086430208", + "mean": "4686917078850144117275658661701996544/2333019928777560083563675794948501027", + "second": "56489548751505202592195835041678279779645804095744786138717961819123712/11526312126646634933295431645170503915386914825085860166443707123403551", + "variance": "239931331729088752625755566182181417804185903920960736372432138244129472959171474427904/277362222027583620751339114657837729570355360410585009295250824352106888289301599202993", + "cv2": "58576985285422058746522355024946635206100074199453304778425815001008172109172723249/273290794282192249528753118364965351617815670164063391854456130238879637715923177472", + "d_h": [ + "5764801/68719476736", + "29890493185/281474976710656", + "57164129898463/1152921504606846976", + "60306664270718719/4722366482869645213696", + "53182972628264717441/19342813113834066795298816", + "42874600478422991064577/79228162514264337593543950336", + "32788667519536346473768223/324518553658426726783156020576256", + "24218697274697851672718543103/1329227995784915872903807060280344576" + ], + "tail": "69289602741336598707235825783489800653057487/17891534138057523132611486098758900626170220682149888", + "tail_first": "3220219140543196272358295255279658598187192776879610715622691/90308151092691105798132872321172761917608612183332559589586610683904", + "tail_second": "18364473804710733480458092650243102876377467036684774087120883755502626346358220505313669638111/55771059016421271944514556307568776339332504565216765338984820153472334431823802752064791223042310144", + "delta": "2401/4096" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.40405009246951623, + "2": 0.1886250059066785, + "4": 0.053021717391596855 + } + }, + { + "p": "1/4", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "52135149017187/11770514026725376", + "mean": "29374797948537200220034816/9363670391726948309606217", + "second": "3654866893340593434626255541351855879511383643904/306563854504711731194698593277060003970656285047", + "variance": "410544869725399805700310558329714237880035288099553743000832/197317928862794818213037527094237114958068979468586254001269", + "cv2": "1603690897364842991016838118475446241718887844138881808597/7585498441094606457213600313303880614669344238821194020096", + "d_h": [ + "6561/16777216", + "5255361/4294967296", + "1487608335/1099511627776", + "222635403711/281474976710656", + "27650069335809/72057594037927936", + "3124976389617537/18446744073709551616", + "334391356798856559/4722366482869645213696", + "34523754896113910847/1208925819614629174706176" + ], + "tail": "3951602587501893773192638548387/217127659867011480575510105729007616", + "tail_first": "852877934645357027689224787060997339398121/4874618846997671356622241156238495478901112832", + "tail_second": "33907593942470563823966029812054678014896961595338065369161503123/19949201013862656179300660580909369948502422790709067309898807640064", + "delta": "81/256" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.40317389906048084, + "2": 0.18755959625157873, + "4": 0.05415729214868147 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "323849/5576960", + "mean": "50004656496/7055050465", + "second": "1467597217667401525488/22394946414187822775", + "variance": "110934537916059660911853936/7252581001288312217860975", + "cv2": "2311136206584576268996957/7590528196423138660748112", + "d_h": [ + "1/4096", + "145/65536", + "6511/1048576", + "129583/16777216", + "2066993/268435456", + "29728801/4294967296", + "403668335/68719476736", + "5285802927/1099511627776" + ], + "tail": "392247790248569/23952860811100160", + "tail_first": "12900459769416186127/65226634096227123200", + "tail_second": "267059084830189521835041942403/103524913295063353672073216000", + "delta": "1/16" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4152534613651919, + "2": 0.20321633211359863, + "4": 0.06381609743688416 + } + } + ], + "elapsed_seconds": 0.020198228000026575 + }, + { + "width": 5, + "matching": false, + "tagged_states": 131, + "exit_lumps": 17, + "mask_transitions": 4192, + "runs": [ + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "2634587424983645795735638047420411654266233379777521525/76894496258486839356988420434293913597253854194684422782976", + "658646856245911448933909512274089577529409088718692689/19223624064621709839247105108573478399313463548671105695744" + ], + "mean_interval": [ + "24760245775046001613571804829548371088097402713549685592064/11069877712925033722232217172790623529536778554095068024023", + "99040983100184006454287219490124431266628951856976829333504/44279510851700134888928868662994858673252584413920804270675" + ], + "second_interval": [ + "1109521612605395045697999738056098429119784972110397219881840640/186051434721131041769556874023092009660924637158675808279754561", + "192960280453112181860521694319302255021980977083742972643098624/32356771255848876829488151983432808248754616793250737277271075" + ], + "variance_interval": [ + "1240502352035278580915152491774533344204890293960373530628069395532143571234958611424375582593984178839170533164538652865467456826378976733181427686490009380882747506814976/1291392478395435883162521898634145432610968133334770877662668418059206541543649612648096450990777789712735217734254603078691404767210955309789280580301729973120848196925625", + "13483721217774767183860353889353618811147747293574542563954835885620417980841560565102543721589195220100300345734922588595930853821601784309579428732798313808662115631104/14036874765167781338723064124517849391582929601758816535640485272482935402117791102550504282881665670869012744728089641235468480321125679825729942202841848377994116195075" + ], + "cv2_interval": [ + "302857019539862934793738401312141929737522044423919319000993504768589739071034817242279194969234418661906868448373694547233265826752679866499371993771974946504577028031/1577329989154755688499685425765498558325810513268138493631346517014156465527919290010156666176521440877638525294864287846454274207817288432852881894711545081321575481344", + "822981031358323192374289177816993335641341997898836826413259026221949339650974155584872053319653028570574972273860021276607107777197374530613978804492084583048224831/4286222796616183936140449508928673246798939394507969639365579727630459731075564798992315482152587542361193867618491410073317324013494347914102158428238316917623475200" + ], + "raw_moment_intervals": [ + [ + "2634587424983645795735638047420411654266233379777521525/76894496258486839356988420434293913597253854194684422782976", + "658646856245911448933909512274089577529409088718692689/19223624064621709839247105108573478399313463548671105695744" + ], + [ + "6044981878673340237688428913463957785180029959362716209/78879748450707294254938011611277942250307954556278142926848", + "6044981878673340237688428923957789994301083487364308431/78879748450707294254938011611277942250307954556278142926848" + ], + [ + "270879299952489024828613217298852155546822502956639946260215/1325731932211037494542743161150748375400925792227366748171534336", + "270879299952489024828613218343747062103610990779180198412553/1325731932211037494542743161150748375400925792227366748171534336" + ] + ], + "residuals": [ + "1138729417355171208999/95780971304118053647396689196894323976171195136475136", + "262595/5316911983139663491615228241121378304", + "98883/2658455991569831745807614120560689152" + ], + "inverse_bound": "32768/16807", + "centres": { + "nu": "107534180611577379417781144826872856415997341523516169/3138550867693340381917894711603833208051177722232017256448", + "mean": "701236539844126353557349864689624242508477486858240/313510730645998190722394008241611826285706535053983", + "second": "1869627783074205846196446153006565893383459631529984/313510730645998190722394008241611826285706535053983", + "cv2": "1341727617828625471851908376319616713778933793168846642696795778459499648505654572265373/6987941742587551729670878089339237996795101697890973463432979521994569008066758862438400" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.40106846602711194, + "2": 0.1851615060724738, + "4": 0.05209565001971504 + } + }, + { + "p": "1/4", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "9270718645377719576325284471407793605491748385860501/6896229933896499862612561622176391326284326049826209792", + "9270718645377719576325284472113044635878509768955609/6896229933896499862612561622176391326284326049826209792" + ], + "mean_interval": [ + "8031620344254411730589634990054524615025595212975588352/2252784630826785857047044126723469846518477873856212987", + "8031620344254411730589634991283719189348952723451001856/2252784630826785857047044126552093846134494857764101743" + ], + "second_interval": [ + "8211747629585550869780792198300422315894716784711360351232/547426665290908963262431722793803172703990123347059755841", + "8211747629585550869780792201565005360432977063630855435264/547426665290908963262431722752158804610682250436676723549" + ], + "variance_interval": [ + "35914382407676147847481090441522393113517631897171073111326286367811351651550429528265372050464216172190943912290790437126248018503604614707977859810966573966336/15683084969703687005604408232364496405585521738646641163693565952787602609403674134476748948830001852305207156351623786150571779646809338002134694587423750788947", + "35914382407676147847481090647022702127326805781658771108399981048176813013223406642314450654089599935109516367288922612290879253353656272572253304315616346946560/15683084969703687005604408233557555137881459520359659594496828673733049605891773736991067600897214155856845248157372441846820679344524091163589863790433122962223" + ], + "cv2_interval": [ + "105217917209988714396917257152897636074758687198743378255838729593197319291651649008589957179094383316965655993039425108768304741709779144652278886164941134667/584009331677298915998543775559276752645411269453653512297234632130743441453588617520651077708971310774983847042999050326239672526301181585997408077699757106176", + "105217917209988714396917257754949322638652751313453430981640569477080506874677949147405617150653124809891161232291765465695935312559539861051523352487157266445/584009331677298915998543775336090708835341718790109488369459584350093453604933819814310555572660880865481832723650451372638296120425530066080727518392109290496" + ], + "raw_moment_intervals": [ + [ + "9270718645377719576325284471407793605491748385860501/6896229933896499862612561622176391326284326049826209792", + "9270718645377719576325284472113044635878509768955609/6896229933896499862612561622176391326284326049826209792" + ], + [ + "7843379242435948955653940419975121694360932825171473/1636507689391454557241066869325061613561612529402118144", + "7843379242435948955653940421175507020848586643995119/1636507689391454557241066869325061613561612529402118144" + ], + [ + "8019284794517139521270304881152756167865934360069687843/397671368522123457409579249245989972095471844644714708992", + "8019284794517139521270304884340825547297829163702007261/397671368522123457409579249245989972095471844644714708992" + ] + ], + "residuals": [ + "6988495683407600213/374144419156711147060143317175368453031918731001856", + "40381895752674427/730750818665451459101842416358141509827966271488", + "2089/20769187434139310514121985316880384" + ], + "inverse_bound": "1024/243", + "centres": { + "nu": "1030079849486413286258364941306713235631681008600895/766247770432944429179173513575154591809369561091801088", + "mean": "45338731924641183483714852583837840337049309151232/12717035178844608472325493102552015254712111217295", + "second": "190763603796571424564040364420154414041521232805888/12717035178844608472325493102552015254712111217295", + "cv2": "657868156021550170478034930293091897185562404710817479655669649578345143666526847603/3651480207150963568702372011947321565525060676762068860727449450683128812090112868352" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39824475340702975, + "2": 0.1801356688412203, + "4": 0.048321069834266574 + } + } + ], + "elapsed_seconds": 0.04970337099985045 + }, + { + "width": 6, + "matching": false, + "tagged_states": 411, + "exit_lumps": 36, + "mask_transitions": 26304, + "runs": [ + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "160994252405939708179721132688995813822389180520219193649/34448734323802104031930812354563673291569726679218621406773248", + "160994252405939708179721136699890878733271018275699830817/34448734323802104031930812354563673291569726679218621406773248" + ], + "mean_interval": [ + "46382922825380491738967576922249726195768699765313879899373568/18940812801306400727636012011605461992090602029117809395789233", + "46382922825380491738967578700135340960309273998514802418253824/18940812801306400727636011539727668500390264699023267913611201" + ], + "second_interval": [ + "15644696828077430926121743584381334648852714381217077790444212977664/2228367685260896739205649177153370997907467238123681157605207473217", + "15644696828077430926121745030606795133835501393573346985803377541120/2228367685260896739205649121637420471402414251575388446768444186449" + ], + "variance_interval": [ + "59138137892740515152890351848053283229356658745598258979039375448640754952634640155681717883761937951634835730548920236135019624848098427358657405365370989679796186648399495299072/57757394746836700241931113201222353011774752777691529749810538338439384148546529790384562511492080594009195564862570307297055910750629728499965250103894613634730749466607297011617", + "59138137892740515152890444718770650339659024001547802134935784733647294870645328138694954667891769948891711133672614018463698260171107395972137080997773802395760968980593538760704/57757394746836700241931114640148563669778408949928810133392188427919716754648473900132301793715174286229905883810643399121330732378723543555967975935132867424855382528822065436561" + ], + "cv2_interval": [ + "28199261614198930336423088001276628126791314480589990129012763714142205692593879773941859189873665786569040169977626913135061085151719297103241636927304739799402325939368961/165156886610336752455075916168222983945532941570853109864124740650794822809823948811754781585336406830901080897311152475895011577529639336637375574100777773664327445298282496", + "28199261614198930336423132285485577745275032044195080821483509413550994334528602666232564290948758100934844557606036195022439127049974153505390682696234608838921055307671327/165156886610336752455075899392495412506811168851020559766269109550218889930407754854001139791887320856367712544205172532564157114429486147166368778926487184123031480474533888" + ], + "raw_moment_intervals": [ + [ + "160994252405939708179721132688995813822389180520219193649/34448734323802104031930812354563673291569726679218621406773248", + "160994252405939708179721136699890878733271018275699830817/34448734323802104031930812354563673291569726679218621406773248" + ], + [ + "22117101109209295148357189618229735467800474054963054609/1932553837042328709245981284476309585132544886628814501707776", + "22117101109209295148357190465991659622339856147057915887/1932553837042328709245981284476309585132544886628814501707776" + ], + [ + "7459972776449885809956428329649607967783314886673487563345057/227363026374192930314080452137353346381258773366993397311418138624", + "7459972776449885809956429019263646666448355385576890461827935/227363026374192930314080452137353346381258773366993397311418138624" + ] + ], + "residuals": [ + "2217903390364475015929/47890485652059026823698344598447161988085597568237568", + "1516321/21267647932558653966460912964485513216", + "10820123/85070591730234615865843651857942052864" + ], + "inverse_bound": "262144/117649", + "centres": { + "nu": "469370998268045796442335669663100134920787461801631231/100433627766186892221372630771322662657637687111424552206336", + "mean": "3351055588386998873239230159024032347151567993962496/1368428566379142263680278920300583483734074232657817", + "second": "9607323869164703687231990731257315927497512696414208/1368428566379142263680278920300583483734074232657817", + "cv2": "62279691927526670647000539759933157795540730156527381725903817741170404433308128540166015/364758487598911000063897384744829072176899291265110018022597117086062079011061868917686272" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39783201764104853, + "2": 0.1807320717421352, + "4": 0.049639517910946486 + } + }, + { + "p": "1/4", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "5173434187429186792332316774615481668972668792039933/12259964326927110866866776217202473468949912977468817408", + "5173434187429186792332316779108980802082911084910083/12259964326927110866866776217202473468949912977468817408" + ], + "mean_interval": [ + "4950658179245520402134121494472508566131515490677288960/1257144507545292390536752977323482334906147393633150169", + "4950658179245520402134121502691965752273037583674511360/1257144507545292390536752976231562045560358516465703719" + ], + "second_interval": [ + "16444586442817051645399587449754729331361301946908963663872/916458346000518152701292920468818622146581449958566473201", + "16444586442817051645399587527252151219378663096947993055232/916458346000518152701292919672808731213501358503498011151" + ], + "variance_interval": [ + "2212684791505383824817741212576500447717498551075066503940149260701456206789846783933900085393256637803992697533143415340193199524546105703550504257932630216704/908462121059880532974067127572279477787342651435669284260957423793108984828721968643022114014169762116143703266804851984652601137795254590420799894088978253307", + "2212684791505383824817741376733235011539729483401126725456762858681537902342264183456628344396938940776873335972204543526763734925272446061501156461429230874624/908462121059880532974067128361344073093348244314295259725471121195030618305947713912338998445026097225834032609298773482760896390491695642140389830214848625157" + ], + "cv2_interval": [ + "1620618743778357293567681552180054038855589759088183474565539009302824370207407312451586976606389139016596214013532774907368066058017167263342654485790500647/10318667267579444526662564593748147660014058132318167237220576825746624697209926118935473805422621583203371301146613163100160720965926516930520555199087513600", + "1620618743778357293567681672412037361967575305225434613371652484385892018317088024992647713181351763264311525370266999653391407415971029830201042330148362457/10318667267579444526662564550521980239293202722045967668293532397637179344392857960332589036572224181433354680475845956416661152347576711384041842134478745600" + ], + "raw_moment_intervals": [ + [ + "5173434187429186792332316774615481668972668792039933/12259964326927110866866776217202473468949912977468817408", + "5173434187429186792332316779108980802082911084910083/12259964326927110866866776217202473468949912977468817408" + ], + [ + "1208656782042363379427275755486452286653202024091135/727336750840646469884918608588916272694050013067608064", + "1208656782042363379427275757493155701238534566326785/727336750840646469884918608588916272694050013067608064" + ], + [ + "4014791612015881749365133654725275715664380358132071207/530228491362831276546105665661319962793962459526286278656", + "4014791612015881749365133673645544731293618920153318617/530228491362831276546105665661319962793962459526286278656" + ] + ], + "residuals": [ + "125326140252230253915/2993155353253689176481146537402947624255349848014848", + "415/5192296858534827628530496329220096", + "72919/664613997892457936451903530140172288" + ], + "inverse_bound": "4096/729", + "centres": { + "nu": "73518921616215305794132700283146153247/174224571863520493293247799005065324265472", + "mean": "324936997454585036950169294678217880/82512818873417851620799888084339117", + "second": "16286371414244558407852924629590204224/907641007607596367828798768927730287", + "cv2": "2850153736655630564412820115913492849777545248843765116135227309893622/18147258991606422353172003087570546809212636386663803966419722816697475" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3945137563659469, + "2": 0.17446038453452475, + "4": 0.04378211692116404 + } + } + ], + "elapsed_seconds": 0.311566540000058 + }, + { + "width": 7, + "matching": false, + "tagged_states": 1275, + "exit_lumps": 71, + "mask_transitions": 163200, + "runs": [ + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "1427684132750505933054652408931075160404185650274307085103/2204718996723334658043571990692075090660462507469991770033487872", + "1427684132750505933054653224528123632388496366723777752273/2204718996723334658043571990692075090660462507469991770033487872" + ], + "mean_interval": [ + "3109869107413296260459910736243367574517630823477535869056843776/1175759273737749907625628280487564520588119463340800101440163239", + "3109869107413296260459913019731055393062490518122825625471287296/1175759273737749907625627608808324430824744262983853679786979929" + ], + "second_interval": [ + "7805593258392911048177091792237481143217781105632593459497243103985664/968288319571807772175732790997570347978701667198072537940336354335777", + "7805593258392911048177105445563625927121978219291253418702694801997824/968288319571807772175732237840833926734702364570511811012808811668447" + ], + "variance_interval": [ + "2102458731384522766786315921139597397248602604002799436447786199770474845351353001703720702767245108984800807744907877852178152380757027617665476988392042950793543946300167504640606208/1973644636043057597551839871262744435806061627593960611623221180252713006975251070435488308824990110823978341096937827293263498255205813398956484735249048535883592452113803618462528193", + "2102458731384522766786390093202890849213139985712859839736617711434148842465482009921916996013634381057044644902101880544278981525616093506680080172008303797980069364761337500971040768/1973644636043057597551840998752154007176144810428344439273338447076477256637358534490748615024812885388901454461764728923493514559010925258270518570430791171959481105103918842290310463" + ], + "cv2_interval": [ + "1002530446712743171113164864129828165649701406480216711257832622418630049396206379749164916404364161007309345123723925520028186979654802140076387876697560763737461064481815101929/6583948790122268425487116850806926612571562676690107025876271227946447737700852740860212690148538750942601123649751070935496793840716656322420656954481741872585267268967186038784", + "1002530446712743171113200232125707077604837410789899749630268912999224110825291638337095735556428137329599688006449642440928927195365950349178352437976982020368609125500363111959/6583948790122268425487103420766849874413342212759101355117902210774110151823237428398698807692335522203597758800405975047304335343882633892832735022105906719957812362112887947264" + ], + "raw_moment_intervals": [ + [ + "1427684132750505933054652408931075160404185650274307085103/2204718996723334658043571990692075090660462507469991770033487872", + "1427684132750505933054653224528123632388496366723777752273/2204718996723334658043571990692075090660462507469991770033487872" + ], + [ + "1482901147562645082693057411309894358881774341334121641663/865784118994963261742199615445386694139380109209708896765083648", + "1482901147562645082693058500161674210101361521779454052673/865784118994963261742199615445386694139380109209708896765083648" + ], + [ + "3721996907421546482170625587576618739708796074692055444477674057/713010450709469029464956297902740094251627513278891293968607282724864", + "3721996907421546482170632097989857638894070729871393880225512887/713010450709469029464956297902740094251627513278891293968607282724864" + ] + ], + "residuals": [ + "338252033851181809113231/3064991081731777716716694054300618367237478244367204352", + "8600549482157999/91343852333181432387730302044767688728495783936", + "9314157/42535295865117307932921825928971026432" + ], + "inverse_bound": "2097152/823543", + "centres": { + "nu": "30285041505349576261419865709210871662744753/46768052394588893382517914646921056628989841375232", + "mean": "33362586318609862238461960992099056013487/12613511664035641924789615039238180617553", + "second": "101680397893259429039609787718447848185361/12613511664035641924789615039238180617553", + "cv2": "169484718963718959993464381182749729680961876676370310175507196723476336668342464/1113062165866693960269923678266809178285787888536098224100329851892015936725899169" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39481879095298184, + "2": 0.17630215068671032, + "4": 0.04664562716351659 + } + }, + { + "p": "1/4", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "2873047953471606514840430684852087904126422348541382123/21185218356930047577945789303325874154345449625066116481024", + "2873047953471606514840430706476679360651856573274034593/21185218356930047577945789303325874154345449625066116481024" + ], + "mean_interval": [ + "26814369651805786238990129870136666233289710063946221731840/6283355874242403447956021955064497761745610325750313654891", + "26814369651805786238990130296373017747657474886073883574272/6283355874242403447956021907771516246324485676260002703001" + ], + "second_interval": [ + "285305347245390613970847931052732339228717851120683763489390592/13741699296968136340679820015726056604937649782415935963246617", + "285305347245390613970847946711864465491141891054045272905793536/13741699296968136340679819912296306030711650173980625911463187" + ], + "variance_interval": [ + "96424779743446790571963808080217298787663820899953160663000584635569738319934525738962700614805781979475854880343425768229886530227834870099693569286218939076800523517952/37809848368236897158374140725092189409675127275238382692856916400612593270770009334855578949123721129358252675923577672579628294537707303467912470927388873596684073597531", + "96424779743446790571963890056856174551998642561455152534202588498910996740591109018217108969590876819465208530212086919758104110094153158906164441293542896738396524658688/37809848368236897158374141009675857081610509256063620116446661552656494133698548123925528290017685397241124269017752645578823182484145481565290028280611751805598703611121" + ], + "cv2_interval": [ + "2522272070577047046908930526651889442339141520471710048034683261602863551198064114963100776405703699937461326738894019467508890125239821169599964319359103107826464587/18011922914334485975649999616638891616786172291417315609342734870757662374481070773903428796043434933159436919168654195390893425666828413252287704439624532486827393024", + "17655904494039329328362528696934113992675532695578946386877915374556456922715657168862996027146766995751686132240982712358051289690091520795806477287636028455516941771/126083460400341401829549992359079330566521794593780452005226942409643315131645102140428974316106471287789379848849065089526623318547654961546441738813053834227575603200" + ], + "raw_moment_intervals": [ + [ + "2873047953471606514840430684852087904126422348541382123/21185218356930047577945789303325874154345449625066116481024", + "2873047953471606514840430706476679360651856573274034593/21185218356930047577945789303325874154345449625066116481024" + ], + [ + "1636619241443224257750862418831583632402936405270155135/2827885287268433474912563550193706468234466450806860152832", + "1636619241443224257750862444846985946512297051151970433/2827885287268433474912563550193706468234466450806860152832" + ], + [ + "17413656448082923215994136416792745314252798530315171111413/6184585123256064009633776484273636046028778127914603154243584", + "17413656448082923215994137372550321380074578311404130426379/6184585123256064009633776484273636046028778127914603154243584" + ] + ], + "residuals": [ + "3590478296142173488005/47890485652059026823698344598447161988085597568237568", + "166674954522373063/1461501637330902918203684832716283019655932542976", + "183077/664613997892457936451903530140172288" + ], + "inverse_bound": "16384/2187", + "centres": { + "nu": "53204591730955676200748716586377474673872952979772377/392318858461667547739736838950479151006397215279002157056", + "mean": "8409327862611837826773536505229756451632947801358336/1970540434479839859286989503199165728661961221473051", + "second": "40912387236154584077314727392905186161513097678815232/1970540434479839859286989503199165728661961221473051", + "cv2": "35181522474089376549577280297814310958200690583235238885023699454721400923652918593106881/251236525275898901596600885432324770876148495258152634467563346332931779324328656729276416" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39173974622219837, + "2": 0.17025955516623656, + "4": 0.04049207306986061 + } + } + ], + "elapsed_seconds": 1.683933082999829 + }, + { + "width": 8, + "matching": false, + "tagged_states": 3963, + "exit_lumps": 161, + "mask_transitions": 1014528, + "runs": [ + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "157162977283915689424706427780197529149470932548204393895063/1728499693431094371906160440702586871077802605856473547706254491648", + "157162977283915689424707240719009261478008019610521109293929/1728499693431094371906160440702586871077802605856473547706254491648" + ], + "mean_interval": [ + "2560266401079526063489719204460033516767142011927937836979108970496/906013288609294450311241726004185309577682109458751701378751193129", + "2560266401079526063489748091701077474236127041266071818663203176448/906013288609294450311237039573710496238399181424821238130653077463" + ], + "second_interval": [ + "47415949820749351737531661869241662527379991856260759060763588399506391040/5222986312188149256448696613310653476838731402289921266859926256901252329", + "15805316606916450579177654726488969229508220116068665988022238194631180288/1740995437396049752149556532323855280808539946492330299465608997203926621" + ], + "variance_interval": [ + "140985846285635022420345160571367073149234741876543453471551517849376364891958427090800466740220540521844559200859568718200087486439291364781537181768232072415102768666832062251403599354527744/129008813970623208530118466311412241637319156280073335071897814623638816483215201833087699176001803258776403445780660222832780419889930707109707370034885190041530617016958759581826776858823801", + "46995282095211674140139340005433772244800805509567630500152807701094309051868003861190750019908477556337876591404698362278257900408816732728043638736738237667605346099085771133494062294761472/43002937990207736176706377873476524491135499703844406975043817737922091579130836848158069098558931115296560615232335177664940450201231374514991944561988657941584727553788433004817859338588461" + ], + "cv2_interval": [ + "8403411286213101292869160209379617759539767615589109270069093576036474996325875943350819751037391455283436727575037999045854061033683500574918817387117867017692492524792674914086079559/61404565884001274639952430904541627034151276054244985224050416801691483809121254067552781565129641427448369216074739614383260488591472850063112168571327825105229467440520978037185970176", + "2801137095404367097624500990237818494129228920314766794452238541906732860318899384807989002460746619483105933153909347193137282157469793124678351803823604444718679553215847678988818067/20468188628000424879983575880176777081631763897786684073874949670103680099339445807484741948177863334551988564405820611070781978353798998015032522885029711494818455122729125362003869696" + ], + "raw_moment_intervals": [ + [ + "157162977283915689424706427780197529149470932548204393895063/1728499693431094371906160440702586871077802605856473547706254491648", + "157162977283915689424707240719009261478008019610521109293929/1728499693431094371906160440702586871077802605856473547706254491648" + ], + [ + "152603769366712931602580499914886565015741706605430712519831/593927905630544797555148936195535272179614754917860303180847382528", + "152603769366712931602582221728627531184919300154809464136553/593927905630544797555148936195535272179614754917860303180847382528" + ], + [ + "2826210845753511890025833956554035098992585650459573212907528185815/3423876184306870279490720142528957932596315318765235993637252171644796928", + "2826210845753511890025911580292398195774832984698176262621087705129/3423876184306870279490720142528957932596315318765235993637252171644796928" + ] + ], + "residuals": [ + "658495616654128297829039/6129982163463555433433388108601236734474956488734408704", + "951491583/2722258935367507707706996859454145691648", + "225260223/680564733841876926926749214863536422912" + ], + "inverse_bound": "16777216/5764801", + "centres": { + "nu": "544302331760168101995866940796614004386082417/5986310706507378352962293074805895248510699696029696", + "mean": "4484320701421964341317288286011145941246958/1586887264606904087451507116025113715411319", + "second": "14406273042340041538297956278367602544353778/1586887264606904087451507116025113715411319", + "cv2": "1375999534068796202905340128548981538138993561732593304318497928702025455575188679709/10054566076600789131441972422816256944129912156650600725318844122537128319827972126882" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3921979842200847, + "2": 0.17229846153086634, + "4": 0.04368098757764885 + } + }, + { + "p": "1/4", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "2504169951442737193838874308080478759300572492782333713/56493915618480126874522104808868997744921199000176310616064", + "2504169951442737193838874538190465482263913748946784495/56493915618480126874522104808868997744921199000176310616064" + ], + "mean_interval": [ + "74975098128040716662147217071961693150145944398459229765632/16429859051415798728776855845067644029133538106839853071695", + "74975098128040716662147236292198682560142610741454403469312/16429859051415798728776854335316021139771056125144891490993" + ], + "second_interval": [ + "506042739712347149523177483751543541448366017471813636750114816/21559261047267811091900990239897762495029028703795255200678179", + "2530213698561735747615890130173374131342346624240800241571004416/107796305236339055459504941294008414698037899237075633072405073" + ], + "variance_interval": [ + "119335346809862629088148310791391409514669050178787407689339039295034182618985832117852043826907830365116481358997957576477544340029633933240341350350491994652115830767616/45065087262356501454405108586842515840049180944034440149933834024263604618045313064871371961250923551265826772709407920879538545086738995964578788039348922976921349254017", + "596676734049313145440751030504781139367210079984188031378595785429893440379776847993206490097031338135798532807335042336896403689334235612334461384090056238482451959709696/225325436311782507272025563639529775494316704529492368539612104678109498711627943268139056207887849943907658114969237346610738129917082378767136439744929890720669606897275" + ], + "cv2_interval": [ + "5462738654015928455573195379244601875976671608526034897888444791947975888930625859887025932017875535512534241897489513083383682557508877559219727341483703368474540593/42958385472976678408304364917884636214485349042392992053829358471561260590451248590929619210159128447704340806105052259952017541031397750919648025371050239425250000896", + "27313693270079642277866410698155874909998020018807435518429372501978764665822304443048392796189789038198785376312334091349627854431193646804861208378145884940297788683/214791927364883392041521694726093242992206487764321496108496518703331388413250860336861044996969761725889791375781404149834647124207678375338879468669345510744830574592" + ], + "raw_moment_intervals": [ + [ + "2504169951442737193838874308080478759300572492782333713/56493915618480126874522104808868997744921199000176310616064", + "2504169951442737193838874538190465482263913748946784495/56493915618480126874522104808868997744921199000176310616064" + ], + [ + "1144029207276011911959033463622462358858428106665942837/5655770574536866949825127100387412936468932901613720305664", + "1144029207276011911959033756900004311525613567221899467/5655770574536866949825127100387412936468932901613720305664" + ], + [ + "38607997109401485406736563396571620288724213979477969112405/37107510739536384057802658905641816276172668767487618925461504", + "38607997109401485406736604769491182424047037113049320092331/37107510739536384057802658905641816276172668767487618925461504" + ] + ], + "residuals": [ + "18805310611523934349527/95780971304118053647396689196894323976171195136475136", + "196702139387636287/365375409332725729550921208179070754913983135744", + "1740901/2658455991569831745807614120560689152" + ], + "inverse_bound": "65536/6561", + "centres": { + "nu": "253058811464015605637832214004798325911931/5708990770823839524233143877797980545530986496", + "mean": "42770162954657507794894111698203943242064/9372548572741318727327119037214752811553", + "second": "219994096617617205272178460062560495661616/9372548572741318727327119037214752811553", + "cv2": "14538657318562904616357081071112282285625713678679127956932172845246607475279347/114330427447997339823670315594679197527139966705584909785911783060957973456186256" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3896353955407482, + "2": 0.16710206750424692, + "4": 0.03810339549770598 + } + } + ], + "elapsed_seconds": 11.434432719000142 + }, + { + "width": 2, + "matching": true, + "tagged_states": 5, + "exit_lumps": 2, + "mask_transitions": 20, + "runs": [ + { + "p": "1/16", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "162225/15794176", + "mean": "72130816/39096225", + "second": "8174121750272/2119992800625", + "variance": "690687165120256/1528514809250625", + "cv2": "2697996738751/20323650846976", + "d_h": [ + "50625/16777216", + "25869375/4294967296", + "1166450625/1099511627776", + "41627469375/281474976710656", + "1372464050625/72057594037927936", + "43776573069375/18446744073709551616", + "1375526577650625/4722366482869645213696", + "42918116094669375/1208925819614629174706176" + ], + "tail": "1429796121525666225/291351122527125631104188416", + "tail_first": "393596779034156395457/8776952566129659637013676032", + "tail_second": "24424586275132280116672493/59491281612297599227133322854400", + "delta": "225/256" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3912942972769184, + "2": 0.1706429952585481, + "4": 0.04143941953534187 + } + }, + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "8281/233472", + "mean": "967744/472017", + "second": "6560678336/1318343481", + "variance": "172226189248/222800048289", + "cv2": "2691034207/14633257024", + "d_h": [ + "2401/262144", + "304927/16777216", + "6456289/1073741824", + "110021023/68719476736", + "1742552161/4398046511104", + "26783940127/281474976710656", + "406278705889/18014398509481984", + "6125817816223/1152921504606846976" + ], + "tail": "107178524713561/65716525762590277632", + "tail_first": "7106845481381465/468230246058455728128", + "tail_second": "1449854514719052653/10216930290947397255168", + "delta": "49/64" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39854015244106483, + "2": 0.1802740582240641, + "4": 0.04756006767131081 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "7/48", + "mean": "100/21", + "second": "2228/63", + "variance": "5596/441", + "cv2": "1399/2500", + "d_h": [ + "1/64", + "7/256", + "25/1024", + "79/4096", + "241/16384", + "727/65536", + "2185/262144", + "6559/1048576" + ], + "tail": "59047/3145728", + "tail_first": "531427/2359296", + "tail_second": "20725805/7077888", + "delta": "1/4" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4467093477038178, + "2": 0.2479102845766199, + "4": 0.1015047536279385 + } + } + ], + "elapsed_seconds": 0.0025295290001849935 + }, + { + "width": 3, + "matching": true, + "tagged_states": 13, + "exit_lumps": 3, + "mask_transitions": 104, + "runs": [ + { + "p": "1/16", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "347423583375/234001914658816", + "mean": "10806586026598076416/4845725518904733375", + "second": "1273298808305584832557558403072/228103580564553976174856390625", + "variance": "14291486505629567600597091957103661056/23481055804564547529266068979838890625", + "cv2": "268394803666420665576117261814597/2193177237647701343817781344489472", + "d_h": [ + "11390625/68719476736", + "262451390625/281474976710656", + "336972971390625/1152921504606846976", + "345759976091390625/4722366482869645213696", + "320725283853611390625/19342813113834066795298816", + "280878203326790531390625/79228162514264337593543950336", + "237002607580952859851390625/324518553658426726783156020576256", + "194844100972310100214571390625/1329227995784915872903807060280344576" + ], + "tail": "663439254960351743004493652950623375/18539541723237688413829012257773194288562176", + "tail_first": "10686679052248483526145025598489185899718847/32322766334821463269801243149441207804043011817472", + "tail_second": "582980761068529257655848409111706108126638031816606753/190191817147917167967660365567414252563120455047599620096000", + "delta": "3375/4096" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.38830241584807385, + "2": 0.16486985801209103, + "4": 0.03689804980499016 + } + }, + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "485540167/47960031232", + "mean": "239959183737344/88831030173151", + "second": "48793027148203971273216/5574402887901093751729", + "variance": "11489486787263530207674925568/7890951921623263381041268801", + "cv2": "22440403881374082436865089/112461738007602377350742528", + "d_h": [ + "117649/134217728", + "316358161/68719476736", + "92342347153/35184372088832", + "21694731721873/18014398509481984", + "4617431510715793/9223372036854775808", + "928891774310918929/4722366482869645213696", + "180184971098991290257/2417851639229258349412352", + "34075359572965193526673/1237940039285380274899124224" + ], + "tail": "3506140548475562018907918151/226484844007378177433619474153472", + "tail_first": "765510033870521491092230135784479/5179510208210232462001622956850020352", + "tail_second": "57852951227214392773559752737876386226873/40628647171885190531232492901853943537074176", + "delta": "343/512" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3997279165087855, + "2": 0.18050547955499852, + "4": 0.046624253341510415 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "169/1984", + "mean": "50696/5239", + "second": "1900968/12493", + "variance": "1606342280/27447121", + "cv2": "200792785/321260552", + "d_h": [ + "1/512", + "25/4096", + "241/32768", + "1969/262144", + "14977/2097152", + "109897/16777216", + "790705/134217728", + "5625697/1073741824" + ], + "tail": "1246108681/33285996544", + "tail_first": "9671151835/16122904576", + "tail_second": "46823633397225/3998480334848", + "delta": "1/8" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.4549887016872101, + "2": 0.26073519629510966, + "4": 0.11464804009708819 + } + } + ], + "elapsed_seconds": 0.0029992899999342626 + }, + { + "width": 4, + "matching": true, + "tagged_states": 43, + "exit_lumps": 7, + "mask_transitions": 688, + "runs": [ + { + "p": "1/16", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "64984928857471788229617350625/267402476010174408710179275145216", + "mean": "10626127076144366726540587465199201897112897847361536/4045928567609049030334031577917192232787518714050625", + "second": "3417166521823996196784719209879651717198258677820867222691534882118012521600253362176/443691069267105767850326023677330705498853142332366134583314637124713950148841015625", + "variance": "457818904203799569461645695710503266295915388055357512597588349905260844461449123631953987597691561864265728/569545334736167025740530401778089677234793753041487361961407780839763850734035907434412972639207623153515625", + "cv2": "6985762088070672141443568354957630406126638611684532357751287077411817084677873590575469781458916654423/59946241225872081302787651776128203631429059547294545309873926060511088450298874176723213319938427650048", + "d_h": [ + "2562890625/281474976710656", + "2181201887109375/18446744073709551616", + "98205132782984765625/1208925819614629174706176", + "2043011123767373340234375/79228162514264337593543950336", + "34550323664262561362562890625/5192296858534827628530496329220096", + "531053681839006588786394012109375/340282366920938463463374607431768211456", + "7723693317039276890251314913391015625/22300745198530623141535718272648361505980416", + "108354981713444383144153537092909371484375/1461501637330902918203684832716283019655932542976" + ], + "tail": "1768861753792445181324472278838158965612756572002592872859775625/90992347457261613251662721697562791611100974670383785420680426994794496", + "tail_first": "127409414273724479542959124599885918833525852601233511415542325970015349813819819635177/708142150194903745309503413613056984147167905175580909260835278034323753177310471421849239552", + "tail_second": "16224648438345603930966196846660417399893355273229081948856056980227886925557868651143224193320617446707915729652270129/9707176688946071841448251587784071333553857674870958288509414634587703193961911965549313760483686262650905614057859973120000", + "delta": "50625/65536" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.38745326329480567, + "2": 0.1633530523441811, + "4": 0.03502383487063295 + } + }, + { + "p": "1/8", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "578542977420046503529/180445122308089296453632", + "mean": "60523596650633405457897526663093497856/18667326865383345268338108127806483699", + "second": "41056963317516474279278091197428527183879135765423481221853184/3316078879609209678526423029216706432281831561659686646973717", + "variance": "1493550490729432445188389329327225386628717562766971633938395729926432243724288/799039628641750979940900463080567023710538060478293017165594095039811992924093", + "cv2": "364636350275740343063571613605279635407401748722405184066991145001570372003/2050659543031004726853451440052398127379822659461179854250677899708335116288", + "d_h": [ + "5764801/68719476736", + "282238892159/281474976710656", + "1184752529858905/1152921504606846976", + "2803621242105221447/4722366482869645213696", + "5520744681093083507681/19342813113834066795298816", + "9953303145785741763807807/79228162514264337593543950336", + "17035762316091712641626564841/324518553658426726783156020576256", + "28175069244176270946475420961815/1329227995784915872903807060280344576" + ], + "tail": "193873243633059515770550926719012864290642548177/14296335475131603985649944075513510787311732734820352", + "tail_first": "7519660726168542446610710434176104319786007607516078728031020523/57660877779892046428725578819449197170454237010643060378812928753664", + "tail_second": "1622712199724079557372687082712079220676463881915771309124492164715650479943015743670301/1280365557723504124299886522327376742004052143817657481543851172519328676709156338389745664", + "delta": "2401/4096" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39684153167782765, + "2": 0.17658060631795672, + "4": 0.043600283818573 + } + }, + { + "p": "1/2", + "mode": "exact Fraction, all heights", + "moments": { + "nu": "323849/5576960", + "mean": "325311067568/21165151395", + "second": "535106679895975792/1383248469420225", + "variance": "67466472495400002828784/447963633573270446025", + "cv2": "4216654530962500176799/6614205667639491339664", + "d_h": [ + "1/4096", + "95/65536", + "2593/1048576", + "50807/16777216", + "874985/268435456", + "14152623/4294967296", + "221080449/68719476736", + "3382305559/1099511627776" + ], + "tail": "910833514889009/23952860811100160", + "tail_first": "153932704638905951041/195679902288681369600", + "tail_second": "139604333713736434034293027/6394330007038385455104000", + "delta": "1/16" + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.45620905542418094, + "2": 0.26224668312186467, + "4": 0.11567474090451331 + } + } + ], + "elapsed_seconds": 0.013975038000126005 + }, + { + "width": 5, + "matching": true, + "tagged_states": 131, + "exit_lumps": 15, + "mask_transitions": 4192, + "runs": [ + { + "p": "1/16", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "256727901695048461177039094525653726951445339849762207949/6427752177035961102167848369364650410088811975131171341205504", + "256727901695048461177039094527304504125107458731792992051/6427752177035961102167848369364650410088811975131171341205504" + ], + "mean_interval": [ + "190710279439076830825536998640997229947351652741761713814110208/64984250116559141735438020802223952606667825491485101112909375", + "190710279439076830825536998655949743308236324186535246185889792/64984250116559141735438020801806099634584601649471058887090625" + ], + "second_interval": [ + "469536658504508552872311091262700988627434679850100385660598790127616/49347414932262098255348247046688814010688379982596498657615556640625", + "469536658504508552872311091349659348286953970919151966339401209872384/49347414932262098255348247046371506910012681877567085342384443359375" + ], + "variance_interval": [ + "108699820694975905742800710097963153620345641816226291968933322779228514624182454014859214556227485644244545313094028814431617634116960300526285843533983637629301019920884026048512/120461089095177728168585075082665452800524378561555883097528351757027028405627796571362408799814079645252420626768732745911739815191082059224526030094323817622255496162173623046875", + "108699820694975905742800710494332191552082390413308963161239547828654040574725157541608163670225423973756503209081426600715828218231380137694747029202224503255281365019048031551488/120461089095177728168585075083440025470186927773765829961505219344335719369320584962479116185931844478913964078827748991072867516039162252396299660293037314884257911837826376953125" + ], + "cv2_interval": [ + "310992681584289281109239702505006275998150754402808071047592132890401405212924348873689311665232140476926456393510900920195439245558625127390725641824675476920989093554164961/2968247483133116934746013234034705953152159454710798007017845902802785588457689416499162279804643720888326783335125688598761345412718477085573155729055898987897244082936741888", + "310992681584289281109239703639027189880606814613272561534613269315683480953383896469902506838489791795033940913433341791293606428808346188625565612417863378301471800858635039/2968247483133116934746013233550172965400872049846578439002693361631777009665286224371615257221158472787202842637046829025262667114255946159921365535776704667636216215200858112" + ], + "raw_moment_intervals": [ + [ + "256727901695048461177039094525653726951445339849762207949/6427752177035961102167848369364650410088811975131171341205504", + "256727901695048461177039094527304504125107458731792992051/6427752177035961102167848369364650410088811975131171341205504" + ], + [ + "181875495375706511331116675034520368525840428106080735983/1551651735126712469087826364989688048413973361210897203200000", + "181875495375706511331116675048780196483837436853919264017/1551651735126712469087826364989688048413973361210897203200000" + ], + [ + "447785051826962044594107714903546322467264823770618806515311041/1178285536361847281213568145914044361764361021169525063680000000000", + "447785051826962044594107714986476276671365710181381193484688959/1178285536361847281213568145914044361764361021169525063680000000000" + ] + ], + "residuals": [ + "2371254354104531534371/6129982163463555433433388108601236734474956488734408704", + "141517/10633823966279326983230456482242756608", + "36709933/1361129467683753853853498429727072845824" + ], + "inverse_bound": "1048576/759375", + "centres": { + "nu": "58373166597231934514875114138357984197290625/1461501637330902918203684832716283019655932542976", + "mean": "902366450504691307076124716610077752419/307480054503937762053663152662955636924", + "second": "2925647828700659338073457321599116178997/307480054503937762053663152662955636924", + "cv2": "9479238092418932886666848669683137974883813602951476679202683020201185125963/90473912332937278497666488445287889532923150895433298991091582222735406705729" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3857566847190193, + "2": 0.16109447459250473, + "4": 0.03351311237703896 + } + }, + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "404007241556009213682590005802430598727283493144827107/392318858461667547739736838950479151006397215279002157056", + "404007241556009213682590005807554358643342550875428559/392318858461667547739736838950479151006397215279002157056" + ], + "mean_interval": [ + "3567063367630388168786331272936713909440103717317825986560/970021386975978122051898603943938015102665464651903970159", + "3567063367630388168786331272984849500559009352365409894400/970021386975978122051898603931635867544207667040729883907" + ], + "second_interval": [ + "255016647576629121432993069148017468456620549946575707548483584/16303149450905264297326259836485766219830498464404550026462313", + "255016647576629121432993069152325990859080991224422229826273280/16303149450905264297326259836279004025815498259953547158824949" + ], + "variance_interval": [ + "115108958809546358534561263573326393730420439908618477515305877791531081553025091580861113713017766616990829946176825223681816785698149063536267225682865806731317673984/54306739474513310246305620250080155796149370076836948518185325795998240693130333427464684275403578928957960772958644997647130851869303769580603175888765025502436370113", + "115108958809546358534561263638358254453893239731722793536305018878796904402753228466649164904704156228935415918874473403667503676918281369390831666706308827782079774720/54306739474513310246305620250768892695566550011884425975691034605930115274519718334450646579515641744128636940823456772458400925580420391449036559539188282898511044581" + ], + "cv2_interval": [ + "1756423321678868996193866936848852443396307982004066124195951504387376122330094781202104396255764261123517302645520404414090221949739823357181811915326931865407069/11205540973953089581024625443917624566901694218580212572109686660016174686497655709300029381421980272832346899218151186146108038278399587425836280934969069445120000", + "351284664335773799238773387568231977703531615392220439258743343746328443611917811482693984694531726772874194088362040416465770498407841093111668904743374108221679/2241108194790617916204925088694617315964214484274895949824800469270441922548748724538502444677531472158793179594758005097992230153910183704138436721331795653099520" + ], + "raw_moment_intervals": [ + [ + "404007241556009213682590005802430598727283493144827107/392318858461667547739736838950479151006397215279002157056", + "404007241556009213682590005807554358643342550875428559/392318858461667547739736838950479151006397215279002157056" + ], + [ + "54429067499242983532506275526988432456056270100674835/14373132006324215425462465672608954491674189970167300096", + "54429067499242983532506275527722923287338399541708525/14373132006324215425462465672608954491674189970167300096" + ], + [ + "3891245232797685568740738970154075141244820403237544365669/241569229630291088655747660559538698141568110828601812713472", + "3891245232797685568740738970219817975755020007696872403355/241569229630291088655747660559538698141568110828601812713472" + ] + ], + "residuals": [ + "55690621234501301363/5986310706507378352962293074805895248510699696029696", + "48551/2658455991569831745807614120560689152", + "20627/2658455991569831745807614120560689152" + ], + "inverse_bound": "32768/16807", + "centres": { + "nu": "404007241556009213682590005804992478685313022010127833/392318858461667547739736838950479151006397215279002157056", + "mean": "88395155546575753904386571266374817621620702576640/24038034245017505425274588314689860099084489915519", + "second": "376007036306484052504760717685566851879088703930368/24038034245017505425274588314689860099084489915519", + "cv2": "278479658618262388414980632454473603891523883956985345993727137151325898808753101309023/1776630489099107369380650891382185542954361162956422602047379135589908349588794140262400" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3938271269162223, + "2": 0.17250564952479883, + "4": 0.040944989663719934 + } + } + ], + "elapsed_seconds": 0.05342001700000765 + }, + { + "width": 6, + "matching": true, + "tagged_states": 411, + "exit_lumps": 33, + "mask_transitions": 26304, + "runs": [ + { + "p": "1/16", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "221482276196321283725622234699690727676870131431091566667463/32910091146424120843099383651147010099654717312671597266972180480", + "221482276196321283725622236061005993059507021192999700426287/32910091146424120843099383651147010099654717312671597266972180480" + ], + "mean_interval": [ + "8118959447660263188883931530533464621259826622733376983850714923008/2522821552298722122437165782632396389693447163276512212668175359375", + "8118959447660263188883931566017573011537991676162581032149285076992/2522821552298722122437165767126164694944348840832277376571570734375" + ], + "second_interval": [ + "326198444992062508624293880359499889596304739561281946579006301705345171456/28736514244152631675885841492797140126351921594196521922423434952880859375", + "326198444992062508624293882365349892496122087730771917868993698294654828544/28736514244152631675885841316171469728350473515105159492510547896240234375" + ], + "variance_interval": [ + "467303356060423553169347077343820392721500860097866466205164140853875386160362872953907267433577998591524571020667793568304989004074818961502569864338591875273294960574677500210602581407301632/469884142031011977991104345919017200109149678043150859126642783699733562893098022137697635382558930426861479189183191826825214640766861171645925535905766138615935976831494180506274594970703125", + "467303356060423553169347248159845808095693881699523943469572262666016284456847825465884783189661998263290159873017418938899990407005498578750617241211149088724234860818265069881283043936698368/469884142031011977991104348807105883742897589356395798638511453868847157072878514061416085851293225599999105252329120701868473207718874322541596064118161491699006946274242976249775514892578125" + ], + "cv2_interval": [ + "1305630494077942017007657542854045683671257067745178377829019373805845303909004310948515126761732619045836583768952061147349855873942800689961490773610561737622958497818589676759958029/13596898408328189114743924443076307151803057970639295115234808257352770289248361778213800030210628255642412898487592619906038031558997576689479506086106550405056781429300226126650540032", + "30363499862277721325759488839732730464166888947632679897874177628436079321787443020611792403619519733539467972444505903278585159956553295433431424625769068382435772447885711734634697/316206939728562537552184284666357986756544915880953056638819846971196780204508559365056807587638853786940197580218431229483007905795262178631036167150925150432811559684070606400126976" + ], + "raw_moment_intervals": [ + [ + "221482276196321283725622234699690727676870131431091566667463/32910091146424120843099383651147010099654717312671597266972180480", + "221482276196321283725622236061005993059507021192999700426287/32910091146424120843099383651147010099654717312671597266972180480" + ], + [ + "7561370215993619699854339967047297043036508022559226475517/349121640403510305544760932122679810893144006272451870720000000", + "7561370215993619699854340000094448227005071636440773524483/349121640403510305544760932122679810893144006272451870720000000" + ], + [ + "303795975625573199823772423304151640828982684352697754818020669469/3976713685221234574095792492459899720954718446447147089920000000000000", + "303795975625573199823772425172245029822105623530942870181979330531/3976713685221234574095792492459899720954718446447147089920000000000000" + ] + ], + "residuals": [ + "4774143714803971044800809/98079714615416886934934209737619787751599303819750539264", + "232054034547991783/5846006549323611672814739330865132078623730171904", + "616707577/10889035741470030830827987437816582766592" + ], + "inverse_bound": "16777216/11390625", + "centres": { + "nu": "44296455239264256745124447076069672073637715262409126709375/6582018229284824168619876730229402019930943462534319453394436096", + "mean": "62575634732014349705176272853875642022293974074523648/19444260187331360985514160582088196246315595176914843", + "second": "220718747696380183601510283664608948027058447873736704/19444260187331360985514160582088196246315595176914843", + "cv2": "5515684841155295545970906263688868747130200048836532756106510431405247704095712633489764389/57440605728581674767761105693537962663633847056931282954873208433677876650988600892055355392" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3844574795535388, + "2": 0.15938702327630755, + "4": 0.03255646826028524 + } + }, + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "59478515414630639262764202774670464936786818292178851715/175758848590827061387402103849814659650865952444992966361088", + "59478515414630639262764202804242898426520060525810182269/175758848590827061387402103849814659650865952444992966361088" + ], + "mean_interval": [ + "28410970645750338532466328574665447848924659994661461393408000/6997587860015880078624945695716372756981658600801042133765581", + "28410970645750338532466328586177446056442948762938739266945024/6997587860015880078624945692237205529348032385256549725418035" + ], + "second_interval": [ + "1406278410118389170657198905650220822052361331039761547379786121216/74841746740273479579104203286848685316921377520512891454126076279", + "3093812502260456175445837594122222795188813750768307199489299709952/164651842828601655074029247149202998664453332418609563729141279943" + ], + "variance_interval": [ + "610431356097057993610519566870649211691831269379236832312789805892763376972610513157586667582167530161587334237716550607516077163175728280318862395735016504855945414926561181696/264767183119514126769918034051205442709919769336064314841743080559884961147061609644462782520248404697738861323312188065544688993452303192422385780890210139758725376958288201775", + "1342948983413527585943143076539300040914442327393675791524176219399080749258552373748286350394023557995785085948606990155751454852941535316351313760755044674916318655667427868672/582487802862931078893819675202262124596277561832490274862079901899815929657355368624661858977189971101292096439057018263618096550096793411804005376626174999381074266821528743423" + ], + "cv2_interval": [ + "2328610824955207800333097712977024885909390523449847535372885917254498966112558415060373945549650307318066918326250269346298512127592957612300347884121004123138219508844609/16649440958888619236845523096553395770480240459967118847647067250676775184408580975143877364695956753366942507433381716458908515400973600003729756898409973939287838749884416", + "5122943814901457160732815080792617953927773770880416074845032575222323414835175986283440972877592308028354972643306694624906367694631711259274725955028704356827997801465713/36628770109554962321060150764522193748549726002400006614691905864206662135671356005261590377781013527357182457889412124482027536154701913737189539925867128196754731008000000" + ], + "raw_moment_intervals": [ + [ + "59478515414630639262764202774670464936786818292178851715/175758848590827061387402103849814659650865952444992966361088", + "59478515414630639262764202804242898426520060525810182269/175758848590827061387402103849814659650865952444992966361088" + ], + [ + "108379252036095956926217378901159087558458938578267903875/78879748450707294254938011611277942250307954556278142926848", + "108379252036095956926217378945073875642558856059794385021/78879748450707294254938011611277942250307954556278142926848" + ], + [ + "59009790463647006520191909645662037058166407171010501942358579/9280123525477262461799202128055238627806480545591567237200740352", + "59009790463647006520191909677929359344269061103216308584009165/9280123525477262461799202128055238627806480545591567237200740352" + ] + ], + "residuals": [ + "8372379561674825710187/95780971304118053647396689196894323976171195136475136", + "4017947/42535295865117307932921825928971026432", + "1213457/10633823966279326983230456482242756608" + ], + "inverse_bound": "262144/117649", + "centres": { + "nu": "15455827039693145255702725155699144172013787/45671926166590716193865151022383844364247891968", + "mean": "3733702927957346492879835295496652463624/919606535353908803219059032290066292141", + "second": "17279431237219805467964625051355708278064/919606535353908803219059032290066292141", + "cv2": "121858771169284314630357782555181610640639103872293719644143586984818477667603/871283597139828883447110231973552686025406066855304360809553830486486790200836" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.39132057183097524, + "2": 0.16906817843421945, + "4": 0.038780735475981674 + } + } + ], + "elapsed_seconds": 0.3285251709999102 + }, + { + "width": 7, + "matching": true, + "tagged_states": 1275, + "exit_lumps": 68, + "mask_transitions": 163200, + "runs": [ + { + "p": "1/16", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "13585573479615147793352808065962101035113526685883278612079793/11847632812712683503515778114412923635875698232561775016109984972800", + "13585573479615147793352809296423107449813066315787295467920207/11847632812712683503515778114412923635875698232561775016109984972800" + ], + "mean_interval": [ + "8059668663375837583908657636062164045967661625645980887414134022340608/2321222593743619392504890150881041874432904377548969936589179117890625", + "732697151215985234900787108364068886215412380307014152344169634332672/211020235794874490227717267331385759686031838508712573328256443828125" + ], + "second_interval": [ + "5205045798007347623849764630685709549733733248050769226294382313087582911594496/396602641602913719641265215623190514014434521382781035259416775845843505859375", + "5205045798007347623849765087615723326232721573793070751177617686912417088405504/396602641602913719641265179702433376622411557734695185668583224154156494140625" + ], + "variance_interval": [ + "215395831461608631620320934962280445761624400470236931552345626460849799435115977944041116345765180276943887694372387850474177304098509923691784860640135655661449153873590158734498082871286916186112/201653112175887162732111186477811269709636242418542910381987920353394762719635080297326785128567502816597932163029279168818328381883869767731244272627954893800398630092476404688791459960382080078125", + "26062895606854644426058986473695008265093046847866999328333335452067426832056046752393470486091987736321683845308286800088897770650118435684556585276372806977610296548865273747991923949066192261480448/24400026573282346690585455773753617757224352530524786991599423353337102544092079615134835841129648540440970814807438366836168215423411958900468134394391875144620396723806744638032233344793768310546875" + ], + "cv2_interval": [ + "2407236003819204475212703663434242223519359534273709336880731878364642703180566183597308952500282007570682701033045215723747506410984433334601501308085050310881240150409826920194529923103231/27169841388014889538819387574731209924084177948654518525031650614583297621390615925766717135346639946374533641913627693390011317400418305340435249327978735098935201738615596397777639648002048", + "291275556462123741500738857020009401423033850429955862406641268567004354656369016532526952990427476201076252519804464281598826169782710474184415324885839301842566168481841017469673498895759049/3287550807949801634197145145245602819524156038602658304702232726294456626766472812624395472926002495719398934732322944200492427357757990650259930008908414505707796607693992788196794990111752192" + ], + "raw_moment_intervals": [ + [ + "13585573479615147793352808065962101035113526685883278612079793/11847632812712683503515778114412923635875698232561775016109984972800", + "13585573479615147793352809296423107449813066315787295467920207/11847632812712683503515778114412923635875698232561775016109984972800" + ], + [ + "30024605480491509973662561312549427322922876572780239907704793/7541027432715822599766836133849883915291910535484960407552000000000", + "30024605480491509973662563383596978144234181133572592123545207/7541027432715822599766836133849883915291910535484960407552000000000" + ], + [ + "19390306614366723685897009934059193543097873211096112528049879942415591/1288455234011680002007036767557007509589328776648875657134080000000000000000", + "19390306614366723685897011636256140940758293769482786771571702088834409/1288455234011680002007036767557007509589328776648875657134080000000000000000" + ] + ], + "residuals": [ + "19264467605533456626771391/196159429230833773869868419475239575503198607639501078528", + "9182118137/87112285931760246646623899502532662132736", + "7558542501/87112285931760246646623899502532662132736" + ], + "inverse_bound": "268435456/170859375", + "centres": { + "nu": "14058390300736605079381839145795136113199194790625/12259964326927110866866776217202473468949912977468817408", + "mean": "128561134358275398452427619097790345700272837/37026213137742498974503609272876078652047262", + "second": "485935076805890759357735044471650000121701963/37026213137742498974503609272876078652047262", + "cv2": "162707828603738175807648979816237714355899590451569488405574039581396045655218834905193/1836440585276282127450348962723304697395047182597251367979317588972119571011064026669841" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3832986078973109, + "2": 0.15780566997872233, + "4": 0.03166327561496271 + } + }, + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "81118994863800650806712583176691073104773953553466187457807/719908243828027643442799017368840845929946941214691190215016448", + "81118994863800650806712583277963097981644894939533117348593/719908243828027643442799017368840845929946941214691190215016448" + ], + "mean_interval": [ + "1084958410046670969572924185378395428966446815871205741695074304/246512842756896602831411442695511304801098825509918531588975369", + "294023729122647832754262454617307229477478986076218293199183020032/66804980387118979367312500887081696417924856031282204417564750201" + ], + "second_interval": [ + "1200596467822114512279391709837552547451168597592395870756768940313018368/55016773962949125625094638986734945418738870445423920897562855966651457", + "63189287780111290119967984858772153219242427561710061715380267640684544/2895619682260480296057612574634206395426688932135275814350238267093797" + ], + "variance_interval": [ + "887541208613875059790990019219756295086011983123069370294002045497166667979790620120576380400470125640157668203615105532140360711993336142746494829759948424777233815058088712905537775206400/362026400587157915972115551572307672227777857747644080791735481808291559905392817318695453227743260387438684588818433945261433618944374217590139293826023467571355655749264544642392994005793", + "636057450064731560236315783833198202436624560597518353742967089193994156836924685978872942793499861023731942693151842471005474614218524639766326836697748499773242070583684252479520768/259446645382478821862816877725890341891191197970026199183182527572501402603969543798122055723387738958911222317036057403647250748869238228030749735810958989325928636936216154823805733" + ], + "cv2_interval": [ + "423212627703607110877509126291158816855436317025694546839715025662024816503424940166748228264079153843001207448775818601675205570217769690869567313079809391392342479256672245457428825/3343931825961696984180991771249906096051926521321184521106112056574351831780753553099331242893031232674211053460075607313411096896681333129257144471969062720352214950706751530824892416", + "303295826942792682760389224926566220491707115458258797523006004902836874407255499829708548924207621108880969378066941485884415919408094711192286890362619638334866557399599195709/2396432672386281421879641128637558036143849546743982524917466855933125928327269874051649773446513263026886177785560017339234804046915136931877008055652684970511483179514487373824" + ], + "raw_moment_intervals": [ + [ + "81118994863800650806712583176691073104773953553466187457807/719908243828027643442799017368840845929946941214691190215016448", + "81118994863800650806712583277963097981644894939533117348593/719908243828027643442799017368840845929946941214691190215016448" + ], + [ + "140201439439128795983439662092945652604058784056232812881167/282705018447334942609697833614820145025103709129700864249823232", + "140201439439128795983439662274030318011035435712918421363441/282705018447334942609697833614820145025103709129700864249823232" + ], + [ + "572489007865006691112228255194450639463028239055822310808548422009/232819739007173560641618382988649826694408983927801238846892173950976", + "572489007865006691112228256376586394865801870189900957389938871943/232819739007173560641618382988649826694408983927801238846892173950976" + ] + ], + "residuals": [ + "2688024435685966600207503/49039857307708443467467104868809893875799651909875269632", + "18716269/170141183460469231731687303715884105728", + "77873171/340282366920938463463374607431768211456" + ], + "inverse_bound": "2097152/823543", + "centres": { + "nu": "164681464378955514264671899182756495794644025/1461501637330902918203684832716283019655932542976", + "mean": "24642797714516104452238956545106729425387/5599077404107319714223559883475643508900", + "second": "122185145914970016577190484578816824926621/5599077404107319714223559883475643508900", + "cv2": "76856610411504259068906086621284506705675297901328070693840630777724558260327131/607267479198560141027905124868623772917471938304288609460340016786073439200099769" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.38928477986012655, + "2": 0.1662251868002355, + "4": 0.03696831528141248 + } + } + ], + "elapsed_seconds": 2.055350806999968 + }, + { + "width": 8, + "matching": true, + "tagged_states": 3963, + "exit_lumps": 152, + "mask_transitions": 1014528, + "runs": [ + { + "p": "1/16", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "898003365204816065462556311700162865095323843935651867849074401/4549491000081670465350058795934562676176268121303721606186234229555200", + "898003365204816065462559250769853342604971881083642729270925599/4549491000081670465350058795934562676176268121303721606186234229555200" + ], + "mean_interval": [ + "8530668214925994780336874916174568826054776036617005032236991115685789696/2301484405901874299023379392305081164387195512417882791697868302749609375", + "8530668214925994780336892749659805058929721476596915428563008884314210304/2301484405901874299023371859790925217925945210961645275374131697250390625" + ], + "second_interval": [ + "87739440855213689422234878018735937553803294888421125116081227959577439570107564032/5898452807469608310895465700356889656072027248817862889191294505601635589599609375", + "87739440855213689422235113590732268749436463800818294121377972040422560429892435968/5898452807469608310895446395346976701098486925437247910831905494398364410400390625" + ], + "variance_interval": [ + "1801398628784694048283134295060345887148877652316049126784777897087592111819687870130570882768029971334196852990587934113201153187911399184758866785085306386789455425377804957722583093978468153415408671522816/1585523862508914512028072838267790819150537514122036150542091085650358539313166501540521263797752007934849194129265956482699129842661440800830454276826247818130549524582084619695198844585903632918243408203125", + "1801398628784694048283514368463077689386453793858378035430356824035691537091500287864504476918481415559568438991544583636945142448313676775983481085721673971733299716200959797514203416541603808993633248477184/1585523862508914512028078027519088074522075285218317619148178515691831074442716446091828319273117734514471423370668717312639224030488168442636547755440457978254564166062731684363399761014096367081756591796875" + ], + "cv2_interval": [ + "20132198506422646883314113636244228711152944553450298981198421460623951015841452816097857983053065516064280863746120789422107709809147557445900888574331697673977785841127540443717499382553266213261433/243446865927959163770779842504022229402198465009332139379986204613731488912562340490294719486710564859915331217841358271207117158560256375737611371206482740019477239763029852066404219239244674382168064", + "20132198506422646883318361287523929283616547962930553057384008437793979835787791250621949995888189400280659336502230729575587165895629787176662844632435671669244390534620282771224566733929557453769817/243446865927959163770778027869886387374621980621539769431439810125192629026735274527612037606096408070209284518971637264551244768480813832736931923389041138683505025009294382506912477041490741937831936" + ], + "raw_moment_intervals": [ + [ + "898003365204816065462556311700162865095323843935651867849074401/4549491000081670465350058795934562676176268121303721606186234229555200", + "898003365204816065462559250769853342604971881083642729270925599/4549491000081670465350058795934562676176268121303721606186234229555200" + ], + [ + "31779215540461222754183690682703885533119648831401039035011049791/43436318012443138174656976130975331352081404684393371947499520000000000", + "31779215540461222754183757117613423835224365728337002652000668959/43436318012443138174656976130975331352081404684393371947499520000000000" + ], + [ + "326854887810400461488347046147048240727943535478491802200977608410930035897/111322532218609152173407976716925448828518006302462856776384512000000000000000000", + "326854887810400461488347923721120762636648356172510587131149962695026995353/111322532218609152173407976716925448828518006302462856776384512000000000000000000" + ] + ], + "residuals": [ + "786388502217360372529438165/1569275433846670190958947355801916604025588861116008628224", + "966247151721/2787593149816327892691964784081045188247552", + "1327015448097/2787593149816327892691964784081045188247552" + ], + "inverse_bound": "4294967296/2562890625", + "centres": { + "nu": "39648275251954399456031136214071207746317998679021875/200867255532373784442745261542645325315275374222849104412672", + "mean": "193527648218285122754709658793365245485889312600/52211720496400855250740590899188421723546335709", + "second": "776648947100440939719121294406467159545023628904/52211720496400855250740590899188421723546335709", + "cv2": "387153390616489867941103968249592373930888685047492129021494225349950757384431598051312621617/4681618828112539605983609649295456548227053948815239520960727627660949237956199762362564845000" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3823480523105695, + "2": 0.15647019655771624, + "4": 0.030869048597567877 + } + }, + { + "p": "1/8", + "mode": "rational centres + exact residual enclosures, all heights", + "moments": { + "density_interval": [ + "1337553953935050565373787414937726659844151098158399760978803/35275503947573354528697151851073201450567400119519868320535805952", + "1337553953935050565373787438172253180224968401846391739690125/35275503947573354528697151851073201450567400119519868320535805952" + ], + "mean_interval": [ + "36331470526027517607788887079315107400515859391556096277124745265152/7710732371198733434317375197362843305614078067932480947357372290125", + "36331470526027517607788887629215741037789653569872451940195453894656/7710732371198733434317375063420421586396222094814641100490364513203" + ], + "second_interval": [ + "367112780055119154288519016797328637106114417675511570262261062187821826048/14816945894739609900295412951710838817015780953365078032602242378494963375", + "367112780055119154288519025784538370623763272164249386670088230583050174464/14816945894739609900295412694327036593892842509469845943582651278692389201" + ], + "variance_interval": [ + "1197726383702801274876246714051307329980946403978881176842190877134397913822533129860948106670534251935303126687948005835656754368313550534520853755588884776249102269266803446502150014108696576/465057291968053893316700314242158469533961854833201997923454551510719699556773068042397461633223726725700515221448536979880065529316525281858077915663741210816093216760697667694288905379357375", + "3593179151108403824628743665021312572356254396228669544660850538745434656243094837023967587304417759006495056013811976748723236035333732780141095792782710101910811623042687836462477352510685184/1395171875904161679950100966961877543833265389461565343062385926227843403442567760186675921174866534197067672397963024388093484459166060063462361018396229334037326187045469646206306987189671875" + ], + "cv2_interval": [ + "71390055638718681030049724224287708400544309853248666336666993924045438398273773781117684046657934900242276590344190945366427562732312115104249343609147356525010005788016524702438712961/615405333771164876594523785916781165929192318823721761396012717162532302656353468473768259997374015340545425448435111202816673411752263732260920085802193088968365099470687358431526912000", + "214170166916156043090149382652122531673684978260318609753897818252172151580041339220045065123106107652574482918608902499003603222092016505011385428475303059930253721656959523943810305149/1846216001313494629783571269792515446442112906320272613783099023844088340268807759569146214814444704519026312731817393367284233630566163563927055247930510013952444558069847995820305022976" + ], + "raw_moment_intervals": [ + [ + "1337553953935050565373787414937726659844151098158399760978803/35275503947573354528697151851073201450567400119519868320535805952", + "1337553953935050565373787438172253180224968401846391739690125/35275503947573354528697151851073201450567400119519868320535805952" + ], + [ + "2165524394871444559561543886620706760914078914615875260658547/12120977665929485664390794616235413717951321528935924554711171072", + "2165524394871444559561543919397338690626004551045444723379341/12120977665929485664390794616235413717951321528935924554711171072" + ], + [ + "65644880543074456624123874330042952973743871034773272918867062721459/69875024169527964887565717194468529236659496301331346808923513707036672", + "65644880543074456624123875937081284038501370936199913025514167055437/69875024169527964887565717194468529236659496301331346808923513707036672" + ] + ], + "residuals": [ + "1204505310292854066171259/6129982163463555433433388108601236734474956488734408704", + "9989527/42535295865117307932921825928971026432", + "28900433/42535295865117307932921825928971026432" + ], + "inverse_bound": "16777216/5764801", + "centres": { + "nu": "56746273326617367141962715372795411509247187443/1496577676626844588240573268701473812127674924007424", + "mean": "15908692677866622395879601080318393050455214/3376347553199105559705046431415208633857749", + "second": "27884746413390470010209446102684282591079046/1125449184399701853235015477138402877952583", + "cv2": "14679641627239129313613394030264352669843316714809779404620315123995484865263058048283/126543251359403542527929521868662558357941516656453373468013117793320208223966309892898" + } + }, + "laplace_mean_scaled_float_diagnostic": { + "1": 0.3876363857266373, + "2": 0.16389845016002438, + "4": 0.035470116521653265 + } + } + ], + "elapsed_seconds": 13.77206153200018 + } + ], + "physical_activity_controls": [ + { + "width": 2, + "height": 1, + "matching": false, + "p": "1/4", + "density": "81/4096" + }, + { + "width": 2, + "height": 1, + "matching": false, + "p": "1/2", + "density": "1/64" + }, + { + "width": 2, + "height": 1, + "matching": false, + "p": "3/4", + "density": "9/4096" + }, + { + "width": 2, + "height": 2, + "matching": false, + "p": "1/4", + "density": "1377/65536" + }, + { + "width": 2, + "height": 2, + "matching": false, + "p": "1/2", + "density": "9/256" + }, + { + "width": 2, + "height": 2, + "matching": false, + "p": "3/4", + "density": "513/65536" + }, + { + "width": 2, + "height": 3, + "matching": false, + "p": "1/4", + "density": "10935/1048576" + }, + { + "width": 2, + "height": 3, + "matching": false, + "p": "1/2", + "density": "35/1024" + }, + { + "width": 2, + "height": 3, + "matching": false, + "p": "3/4", + "density": "11583/1048576" + }, + { + "width": 2, + "height": 4, + "matching": false, + "p": "1/4", + "density": "63423/16777216" + }, + { + "width": 2, + "height": 4, + "matching": false, + "p": "1/2", + "density": "95/4096" + }, + { + "width": 2, + "height": 4, + "matching": false, + "p": "3/4", + "density": "168399/16777216" + }, + { + "width": 3, + "height": 1, + "matching": false, + "p": "1/4", + "density": "729/262144" + }, + { + "width": 3, + "height": 1, + "matching": false, + "p": "1/2", + "density": "1/512" + }, + { + "width": 3, + "height": 1, + "matching": false, + "p": "3/4", + "density": "27/262144" + }, + { + "width": 3, + "height": 2, + "matching": false, + "p": "1/4", + "density": "88209/16777216" + }, + { + "width": 3, + "height": 2, + "matching": false, + "p": "1/2", + "density": "37/4096" + }, + { + "width": 3, + "height": 2, + "matching": false, + "p": "3/4", + "density": "14337/16777216" + }, + { + "width": 3, + "height": 3, + "matching": false, + "p": "1/4", + "density": "4261005/1073741824" + }, + { + "width": 3, + "height": 3, + "matching": false, + "p": "1/2", + "density": "499/32768" + }, + { + "width": 3, + "height": 3, + "matching": false, + "p": "3/4", + "density": "2483703/1073741824" + }, + { + "width": 3, + "height": 4, + "matching": false, + "p": "1/4", + "density": "128998737/68719476736" + }, + { + "width": 3, + "height": 4, + "matching": false, + "p": "1/2", + "density": "3685/262144" + }, + { + "width": 3, + "height": 4, + "matching": false, + "p": "3/4", + "density": "182472345/68719476736" + }, + { + "width": 4, + "height": 1, + "matching": false, + "p": "1/4", + "density": "6561/16777216" + }, + { + "width": 4, + "height": 1, + "matching": false, + "p": "1/2", + "density": "1/4096" + }, + { + "width": 4, + "height": 1, + "matching": false, + "p": "3/4", + "density": "81/16777216" + }, + { + "width": 4, + "height": 2, + "matching": false, + "p": "1/4", + "density": "5255361/4294967296" + }, + { + "width": 4, + "height": 2, + "matching": false, + "p": "1/2", + "density": "145/65536" + }, + { + "width": 4, + "height": 2, + "matching": false, + "p": "3/4", + "density": "387585/4294967296" + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/4", + "density": "1487608335/1099511627776" + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "1/2", + "density": "6511/1048576" + }, + { + "width": 4, + "height": 3, + "matching": false, + "p": "3/4", + "density": "488201823/1099511627776" + }, + { + "width": 2, + "height": 1, + "matching": true, + "p": "1/4", + "density": "81/4096" + }, + { + "width": 2, + "height": 1, + "matching": true, + "p": "1/2", + "density": "1/64" + }, + { + "width": 2, + "height": 1, + "matching": true, + "p": "3/4", + "density": "9/4096" + }, + { + "width": 2, + "height": 2, + "matching": true, + "p": "1/4", + "density": "2511/65536" + }, + { + "width": 2, + "height": 2, + "matching": true, + "p": "1/2", + "density": "7/256" + }, + { + "width": 2, + "height": 2, + "matching": true, + "p": "3/4", + "density": "207/65536" + }, + { + "width": 2, + "height": 3, + "matching": true, + "p": "1/4", + "density": "23409/1048576" + }, + { + "width": 2, + "height": 3, + "matching": true, + "p": "1/2", + "density": "25/1024" + }, + { + "width": 2, + "height": 3, + "matching": true, + "p": "3/4", + "density": "3321/1048576" + }, + { + "width": 2, + "height": 4, + "matching": true, + "p": "1/4", + "density": "181359/16777216" + }, + { + "width": 2, + "height": 4, + "matching": true, + "p": "1/2", + "density": "79/4096" + }, + { + "width": 2, + "height": 4, + "matching": true, + "p": "3/4", + "density": "50463/16777216" + }, + { + "width": 3, + "height": 1, + "matching": true, + "p": "1/4", + "density": "729/262144" + }, + { + "width": 3, + "height": 1, + "matching": true, + "p": "1/2", + "density": "1/512" + }, + { + "width": 3, + "height": 1, + "matching": true, + "p": "3/4", + "density": "27/262144" + }, + { + "width": 3, + "height": 2, + "matching": true, + "p": "1/4", + "density": "210681/16777216" + }, + { + "width": 3, + "height": 2, + "matching": true, + "p": "1/2", + "density": "25/4096" + }, + { + "width": 3, + "height": 2, + "matching": true, + "p": "3/4", + "density": "3321/16777216" + }, + { + "width": 3, + "height": 3, + "matching": true, + "p": "1/4", + "density": "12597849/1073741824" + }, + { + "width": 3, + "height": 3, + "matching": true, + "p": "1/2", + "density": "241/32768" + }, + { + "width": 3, + "height": 3, + "matching": true, + "p": "3/4", + "density": "237411/1073741824" + }, + { + "width": 3, + "height": 4, + "matching": true, + "p": "1/4", + "density": "615160089/68719476736" + }, + { + "width": 3, + "height": 4, + "matching": true, + "p": "1/2", + "density": "1969/262144" + }, + { + "width": 3, + "height": 4, + "matching": true, + "p": "3/4", + "density": "15508017/68719476736" + }, + { + "width": 4, + "height": 1, + "matching": true, + "p": "1/4", + "density": "6561/16777216" + }, + { + "width": 4, + "height": 1, + "matching": true, + "p": "1/2", + "density": "1/4096" + }, + { + "width": 4, + "height": 1, + "matching": true, + "p": "3/4", + "density": "81/16777216" + }, + { + "width": 4, + "height": 2, + "matching": true, + "p": "1/4", + "density": "16579647/4294967296" + }, + { + "width": 4, + "height": 2, + "matching": true, + "p": "1/2", + "density": "95/65536" + }, + { + "width": 4, + "height": 2, + "matching": true, + "p": "3/4", + "density": "58239/4294967296" + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/4", + "density": "6364543977/1099511627776" + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "1/2", + "density": "2593/1048576" + }, + { + "width": 4, + "height": 3, + "matching": true, + "p": "3/4", + "density": "19305945/1099511627776" + } + ], + "finite_word_controls": [ + { + "width": 2, + "height": 1, + "matching": false, + "words": 64, + "density": "1/64" + }, + { + "width": 2, + "height": 2, + "matching": false, + "words": 256, + "density": "9/256" + }, + { + "width": 2, + "height": 3, + "matching": false, + "words": 1024, + "density": "35/1024" + }, + { + "width": 3, + "height": 1, + "matching": false, + "words": 512, + "density": "1/512" + }, + { + "width": 3, + "height": 2, + "matching": false, + "words": 4096, + "density": "37/4096" + }, + { + "width": 2, + "height": 1, + "matching": true, + "words": 64, + "density": "1/64" + }, + { + "width": 2, + "height": 2, + "matching": true, + "words": 256, + "density": "7/256" + }, + { + "width": 2, + "height": 3, + "matching": true, + "words": 1024, + "density": "25/1024" + }, + { + "width": 3, + "height": 1, + "matching": true, + "words": 512, + "density": "1/512" + }, + { + "width": 3, + "height": 2, + "matching": true, + "words": 4096, + "density": "25/4096" + } + ], + "samples": [ + { + "matching": false, + "p": "1/4", + "seed": 0, + "sample": { + "rows": [ + 0, + 15, + 8, + 0 + ], + "anchor": 0, + "span": 2, + "path_probability": "392793490241217/42181841061609472", + "unconditioned_row_weight": "177147/4294967296", + "nu": "52135149017187/11770514026725376" + }, + "physical_check": { + "sites": [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 1 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "occupation": 5, + "span": 2 + } + }, + { + "matching": false, + "p": "1/4", + "seed": 1, + "sample": { + "rows": [ + 2, + 12, + 5, + 15, + 0 + ], + "anchor": 2, + "span": 3, + "path_probability": "392793490241217/10798551311772024832", + "unconditioned_row_weight": "177147/1099511627776", + "nu": "52135149017187/11770514026725376" + }, + "physical_check": { + "sites": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 1, + 3 + ], + [ + 2, + 1 + ], + [ + 2, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 1 + ], + [ + 3, + 3 + ] + ], + "occupation": 8, + "span": 3 + } + }, + { + "matching": false, + "p": "1/4", + "seed": 2, + "sample": { + "rows": [ + 0, + 4, + 6, + 15, + 1, + 4 + ], + "anchor": 2, + "span": 4, + "path_probability": "31816272709538577/2764429135813638356992", + "unconditioned_row_weight": "14348907/281474976710656", + "nu": "52135149017187/11770514026725376" + }, + "physical_check": { + "sites": [ + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 2, + 1 + ], + [ + 2, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 3 + ] + ], + "occupation": 8, + "span": 4 + } + }, + { + "matching": false, + "p": "1/4", + "seed": 3, + "sample": { + "rows": [ + 4, + 1, + 9, + 15, + 12, + 0 + ], + "anchor": 0, + "span": 4, + "path_probability": "10605424236512859/2764429135813638356992", + "unconditioned_row_weight": "4782969/281474976710656", + "nu": "52135149017187/11770514026725376" + }, + "physical_check": { + "sites": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 1, + 3 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 3, + 2 + ], + [ + 3, + 3 + ], + [ + 3, + 4 + ] + ], + "occupation": 9, + "span": 4 + } + }, + { + "matching": true, + "p": "1/8", + "seed": 0, + "sample": { + "rows": [ + 0, + 1, + 10, + 13, + 1, + 8, + 2 + ], + "anchor": 0, + "span": 5, + "path_probability": "51061768372466667503993612111/277807013747124161154513740134088704", + "unconditioned_row_weight": "11398895185373143/19342813113834066795298816", + "nu": "578542977420046503529/180445122308089296453632" + }, + "physical_check": { + "sites": [ + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 2 + ], + [ + 3, + 3 + ], + [ + 3, + 5 + ] + ], + "occupation": 8, + "span": 5 + } + }, + { + "matching": true, + "p": "1/8", + "seed": 1, + "sample": { + "rows": [ + 0, + 1, + 2, + 13, + 8, + 8, + 3, + 0 + ], + "anchor": 0, + "span": 6, + "path_probability": "122599305862292468677088662678511/1137897528308220564088888279589227331584", + "unconditioned_row_weight": "27368747340080916343/79228162514264337593543950336", + "nu": "578542977420046503529/180445122308089296453632" + }, + "physical_check": { + "sites": [ + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 6 + ], + [ + 1, + 2 + ], + [ + 1, + 6 + ], + [ + 2, + 3 + ], + [ + 3, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 5 + ] + ], + "occupation": 9, + "span": 6 + } + }, + { + "matching": true, + "p": "1/8", + "seed": 2, + "sample": { + "rows": [ + 0, + 2, + 5, + 8, + 1, + 0 + ], + "anchor": 1, + "span": 4, + "path_probability": "51061768372466667503993612111/67823977965606484656863706087424", + "unconditioned_row_weight": "11398895185373143/4722366482869645213696", + "nu": "578542977420046503529/180445122308089296453632" + }, + "physical_check": { + "sites": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 3, + 3 + ] + ], + "occupation": 5, + "span": 4 + } + }, + { + "matching": true, + "p": "1/8", + "seed": 3, + "sample": { + "rows": [ + 0, + 11, + 4, + 8, + 0 + ], + "anchor": 0, + "span": 3, + "path_probability": "21266875623684576219905711/16558588370509395668179615744", + "unconditioned_row_weight": "4747561509943/1152921504606846976", + "nu": "578542977420046503529/180445122308089296453632" + }, + "physical_check": { + "sites": [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 3, + 1 + ], + [ + 3, + 3 + ] + ], + "occupation": 5, + "span": 3 + } + } + ], + "direct_activity_joint": [ + { + "width": 2, + "matching": false, + "states": 12, + "blocks": 3, + "p": "1/4", + "moments": { + "nu": "189/3328", + "mean_span": "5104/2457", + "mean_occupation": "7808/2457", + "variance_span": "7160464/6036849", + "variance_occupation": "1383328/862407", + "covariance_span_occupation": "8087936/6036849", + "correlation_squared": "127763103008/135423617987" + } + }, + { + "width": 3, + "matching": false, + "states": 68, + "blocks": 5, + "p": "1/4", + "moments": { + "nu": "181467/11948032", + "mean_span": "1395327808/529339239", + "mean_occupation": "908901376/176446413", + "variance_span": "487521227531190592/280200029945099121", + "variance_occupation": "120521944390369792/31133336660566569", + "covariance_span_occupation": "229951588996971520/93400009981699707", + "correlation_squared": "1613700356513431195785514272800/1793121529346892424599804471173" + } + }, + { + "width": 4, + "matching": false, + "states": 340, + "blocks": 13, + "p": "1/4", + "moments": { + "nu": "52135149017187/11770514026725376", + "mean_span": "29374797948537200220034816/9363670391726948309606217", + "mean_occupation": "67780808536658223903305728/9363670391726948309606217", + "variance_span": "410544869725399805700310558329714237880035288099553743000832/197317928862794818213037527094237114958068979468586254001269", + "variance_occupation": "1273377918127210297342554220557863337102733510537433481313792/197317928862794818213037527094237114958068979468586254001269", + "covariance_span_occupation": "673397680123058208214180764846700724003203201797496120692736/197317928862794818213037527094237114958068979468586254001269", + "correlation_squared": "494237012149392944170178945166094439547115728067237518444303076550920637894020304563059548361997601989566197911424/569783642914620940345212975964139391838329645523221818882662673440492029652952584164406949907063598688585222276861" + } + }, + { + "width": 5, + "matching": false, + "states": 1672, + "blocks": 24, + "p": "1/4", + "moments": { + "nu": "16327374621800647110206127633/12145480185071033447986748194816", + "mean_span": "674240181057195593505610298234676068884296766478623744/189117245620070856297630179574391690718374714281582303", + "mean_occupation": "1767878831963159662799070249804809736943767056098304000/189117245620070856297630179574391690718374714281582303", + "variance_span": "148159364531301233103821473071693928452850088107715947944222406913406210512872997029863735228891741720905431737941937480704/64698200198065134159030192552935330241080023697519057234194543024623579793597662761372263422595304949675258486552133441809", + "variance_occupation": "583225099135779744253833174859115729042094040077503212128029521284728174108748411609249123745165901593242745887220161036800/64698200198065134159030192552935330241080023697519057234194543024623579793597662761372263422595304949675258486552133441809", + "covariance_span_occupation": "269132978983351179309479512893533853124653482257646422259424669205967442102212483057939733731471738120491238907064762408960/64698200198065134159030192552935330241080023697519057234194543024623579793597662761372263422595304949675258486552133441809", + "correlation_squared": "5526165800205455595529476296951023447165465895846690957326576092849119448560787921175286591862571407314975896879866269240465649487007836430357487613484387427105357854675097928646874337948720331674978599018977691454552107955062025684684928/6592579655964835426381597840299605207639237150927259551482711735925028779877269667014652225190620122521269659916900025780497277671627151017900511861740511793258158175032274621446824290580450163427155155936566034592607392570568902465864001" + } + }, + { + "width": 2, + "matching": true, + "states": 14, + "blocks": 3, + "p": "1/8", + "moments": { + "nu": "8281/233472", + "mean_span": "967744/472017", + "mean_occupation": "1175680/472017", + "variance_span": "172226189248/222800048289", + "variance_occupation": "145168101376/222800048289", + "covariance_span_occupation": "129238124416/222800048289", + "correlation_squared": "21690196978065647/32467779801201776" + } + }, + { + "width": 3, + "matching": true, + "states": 80, + "blocks": 5, + "p": "1/8", + "moments": { + "nu": "485540167/47960031232", + "mean_span": "239959183737344/88831030173151", + "mean_occupation": "362954453730816/88831030173151", + "variance_span": "11489486787263530207674925568/7890951921623263381041268801", + "variance_occupation": "14135207475340250550736949760/7890951921623263381041268801", + "covariance_span_occupation": "11560184807185185730979268096/7890951921623263381041268801", + "correlation_squared": "169929342621199531296429624310399832152564883122563/206510263472430535880363761822207461152419851882115" + } + }, + { + "width": 4, + "matching": true, + "states": 386, + "blocks": 12, + "p": "1/8", + "moments": { + "nu": "578542977420046503529/180445122308089296453632", + "mean_span": "60523596650633405457897526663093497856/18667326865383345268338108127806483699", + "mean_occupation": "314688206489341096272382186086976061440/56001980596150035805014324383419451097", + "variance_span": "1493550490729432445188389329327225386628717562766971633938395729926432243724288/799039628641750979940900463080567023710538060478293017165594095039811992924093", + "variance_occupation": "21262781014364886021391570531340047846897811823738963645951083319675816387067904/7191356657775758819468104167725103213394842544304637154490346855358307936316837", + "covariance_span_occupation": "4997801413231481667931013107029120412074166677591748183241706596632090741964800/2397118885925252939822701389241701071131614181434879051496782285119435978772279", + "correlation_squared": "372201486916819146025061785403660539941750627616829208950194352752582468035863298188128067541960938266727698185949275566522072546529636170256307360000/473216727648334725243702093312298154687609298609246214518697829975313814616844227268347087007587212141788656808403769934784958724763017749053957989593" + } + }, + { + "width": 5, + "matching": true, + "states": 1832, + "blocks": 23, + "p": "1/8", + "moments": { + "nu": "58820960016230288070081990989486962414450433/57119203602165271503240368296745625648434774016", + "mean_span": "11506517354190033501545445215247799732552500338969614597932931087517419327634833408/3129063538500927833167881580290891687199690488880820716284607639132322256544676847", + "mean_occupation": "22378033648694470167542033497037410620815636267884160079372410638632841650427985920/3129063538500927833167881580290891687199690488880820716284607639132322256544676847", + "variance_span": "75051754831816585473866443964923654952724432456190112063738882297202665035532822229818082609659269053886893357164199579062197451534837710121874219281592389796619653438668177408/35408330845040083942474070573687864903820294218594464287327212316924792923439959767669011666824811643333897186579018101168217956507513159361058362223198071429735464009642237309", + "variance_occupation": "145609283097813725450284557506887701875034453694108828264583714149667136275998313948424772907230885549667558560156475551744460771978818048356357032124698810355405021500425502720/35408330845040083942474070573687864903820294218594464287327212316924792923439959767669011666824811643333897186579018101168217956507513159361058362223198071429735464009642237309", + "covariance_span_occupation": "91516255735618931918383158420597225144383651720978596916937341501868392171161737856048493038733958831552015153613906906047744870949238587630363246968382674540352553430744104960/35408330845040083942474070573687864903820294218594464287327212316924792923439959767669011666824811643333897186579018101168217956507513159361058362223198071429735464009642237309", + "correlation_squared": "390001808473244544755481072896736774228794320142080878880090474382652728872538857713922385479707578266219828246165952924939314300240521793712726958489117986832622721477255900539545427819814608442807844386599797516103773237863414053973544087281512172319790043060957233067166008341146192669684245933199998993945350677947637668256129846554702045/508885468183722828516703243368860790871976143146883422040420822880053457616232260190035166137313271577585935587262256487966743504316725797630741881918902383021255854515107133849796912176795269050721122187216986180065283717001917440960300949302797999907475553636041587622397270000484330323280829800425101428699911855386818252907083947195901287" + } + } + ], + "nonempty_shape_masks_checked": 18754, + "joint_activity_coefficient_checks": 18, + "full_source_word_controls": 11904, + "width_two_symbolic_pgf": [ + { + "matching": false, + "density_pgf": "p**2*z*(p - 1)**4*(p**2*z + p*z + 1)**2/((p**2*z - p*z + 1)*(p**4*z**2 - p**3*z**2 - p*z + 1))", + "p_half": "z*(3*z + 4)**2/(16*(z - 4)*(z**2 + 8*z - 16))" + }, + { + "matching": true, + "density_pgf": "p**2*z*(p - 1)**4*(p**2*z - 3*p*z + 2*z + 1)/((p**2*z - 2*p*z + 1)*(p**2*z - p*z + 1))", + "p_half": "z*(3*z + 4)/(16*(z - 4)*(3*z - 4))" + } + ], + "brownian_range_laplace_mean_scaled": { + "1": "0.37628408784104478664791708", + "2": "0.14757968939467544997933219", + "4": "0.025216436252613651495711849" + }, + "note": "Exact certificates bound arithmetic on the newly constructed finite operator. No fixed-p Brownian claim or global repository CI is inferred." +} diff --git a/results/geometric-consistency/two-birth-reduction.json b/results/geometric-consistency/two-birth-reduction.json new file mode 100644 index 00000000..5b8d7cc7 --- /dev/null +++ b/results/geometric-consistency/two-birth-reduction.json @@ -0,0 +1,238 @@ +{ + "schema": "matching-one.two-birth-reduction.v1", + "scope": "Existing width-two exact oracle; no new width, no Monte Carlo", + "precision": { + "working_decimal_digits": 80, + "reported_digits": 24, + "quadrature_status": "high precision numerical control, not interval certification" + }, + "universal_constant": "Friedgut--Kalai constant left unspecified; not fitted or priced", + "exact_controls": { + "censuses": [ + { + "width": 2, + "length": 2, + "configurations": 16, + "counts_by_rank_and_occupation": [ + [ + 1, + 4, + 2, + 0, + 0 + ], + [ + 0, + 0, + 4, + 0, + 0 + ], + [ + 0, + 0, + 0, + 4, + 1 + ] + ], + "mean_first_birth": "7/15", + "mean_second_birth": "3/5", + "integral_P1_exact": "2/15" + }, + { + "width": 2, + "length": 3, + "configurations": 64, + "counts_by_rank_and_occupation": [ + [ + 1, + 6, + 12, + 6, + 0, + 0, + 0 + ], + [ + 0, + 0, + 3, + 14, + 9, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 6, + 6, + 1 + ] + ], + "mean_first_birth": "31/70", + "mean_second_birth": "23/35", + "integral_P1_exact": "3/14" + }, + { + "width": 2, + "length": 4, + "configurations": 256, + "counts_by_rank_and_occupation": [ + [ + 1, + 8, + 24, + 32, + 14, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 4, + 24, + 56, + 48, + 12, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 8, + 16, + 8, + 1 + ] + ], + "mean_first_birth": "127/315", + "mean_second_birth": "44/63", + "integral_P1_exact": "31/105" + } + ], + "total_configurations": 336, + "permutation_control": { + "width": 2, + "length": 3, + "permutations": 720, + "normalized_mean_birth_rank_gap": "3/14", + "birth_time_covariance": "1123/58800" + } + }, + "finite_length_controls": [ + { + "width": 2, + "length": 2, + "sites": 4, + "first_birth_median": "0.458803899853803015600277", + "matching_root": "0.541196100146196984399723", + "second_birth_median": "0.614272431867610451724497", + "median_separation": "0.15546853201380743612422", + "mixture_q25": "0.366025403784438646763723", + "mixture_q75": "0.707106781186547524400844", + "mixture_IQR": "0.341081377402108877637121", + "integral_P1": "0.133333333333333333333333", + "first_birth_MAD": "0.184916542699632925904895", + "second_birth_MAD": "0.165533413388540059841259", + "mixture_W1_to_two_median_atoms": "0.125640559792018812765218", + "component_coupling_W1_upper": "0.175224978044086492873077" + }, + { + "width": 2, + "length": 4, + "sites": 8, + "first_birth_median": "0.395436722146492579302221", + "matching_root": "0.563864986818845832313288", + "second_birth_median": "0.717504182456928314943545", + "median_separation": "0.322067460310435735641324", + "mixture_q25": "0.37580635877208387452519", + "mixture_q75": "0.735662455380684050167617", + "mixture_IQR": "0.359856096608600175642427", + "integral_P1": "0.295238095238095238095238", + "first_birth_MAD": "0.152731960470947226955025", + "second_birth_MAD": "0.132186922221715014370339", + "mixture_W1_to_two_median_atoms": "0.104585785998960442820658", + "component_coupling_W1_upper": "0.142459441346331120662682" + }, + { + "width": 2, + "length": 8, + "sites": 16, + "first_birth_median": "0.288087697543491088866109", + "matching_root": "0.565186915007972908279838", + "second_birth_median": "0.8062743570534467506602", + "median_separation": "0.518186659509955661794091", + "mixture_q25": "0.288020678659088142104401", + "mixture_q75": "0.806342683005338318960378", + "mixture_IQR": "0.518322004346250176855977", + "integral_P1": "0.490331890331890331890332", + "first_birth_MAD": "0.119169122112798731672424", + "second_birth_MAD": "0.0936880608925678662934832", + "mixture_W1_to_two_median_atoms": "0.100715347015863140545303", + "component_coupling_W1_upper": "0.106428591502683298982954" + }, + { + "width": 2, + "length": 16, + "sites": 32, + "first_birth_median": "0.205904636425127329663174", + "matching_root": "0.565197715825889906165507", + "second_birth_median": "0.867138698438055207434922", + "median_separation": "0.661234062012927877771749", + "mixture_q25": "0.205904636399435486977378", + "mixture_q75": "0.867138698480686033844308", + "mixture_IQR": "0.66123406208125054686693", + "integral_P1": "0.638967532846024539955863", + "first_birth_MAD": "0.088236907821274692877401", + "second_birth_MAD": "0.0641893702225797165224883", + "mixture_W1_to_two_median_atoms": "0.0760701055702370555700931", + "component_coupling_W1_upper": "0.0762131390219272046999447" + }, + { + "width": 2, + "length": 32, + "sites": 64, + "first_birth_median": "0.146382847056271813348706", + "matching_root": "0.56519771738363933134003", + "second_birth_median": "0.908410478436269182496879", + "median_separation": "0.762027631379997369148173", + "mixture_q25": "0.146382847056271813348706", + "mixture_q75": "0.908410478436269182496879", + "mixture_IQR": "0.762027631379997369148173", + "integral_P1": "0.745727145682731652042279", + "first_birth_MAD": "0.0638725762471686157164193", + "second_birth_MAD": "0.0437352250473570618738386", + "mixture_W1_to_two_median_atoms": "0.053803742027170950798523", + "component_coupling_W1_upper": "0.053803900647262838795129" + }, + { + "width": 2, + "length": 128, + "sites": 256, + "first_birth_median": "0.0734886148758215767986785", + "matching_root": "0.565197717383639396437528", + "second_birth_median": "0.955781733111481641066709", + "median_separation": "0.88229311823566006426803", + "mixture_q25": "0.0734886148758215767986785", + "mixture_q75": "0.955781733111481641066709", + "mixture_IQR": "0.88229311823566006426803", + "integral_P1": "0.874239684305420680243789", + "first_birth_MAD": "0.0325092171535030132257381", + "second_birth_MAD": "0.0205388473568717407670128", + "mixture_W1_to_two_median_atoms": "0.0265240322551873769963718", + "component_coupling_W1_upper": "0.0265240322551873769963755" + } + ], + "interpretation": "Fixed width 2 does not approach the infinite square-site critical point" +} diff --git a/results/geometric-consistency/winding-nu-certified-20260913.json b/results/geometric-consistency/winding-nu-certified-20260913.json new file mode 100644 index 00000000..c9445edd --- /dev/null +++ b/results/geometric-consistency/winding-nu-certified-20260913.json @@ -0,0 +1,317 @@ +{ + "rows": [ + { + "graph": "NN", + "width": 6, + "p": "1/8", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "76700552664896137224991329058804271165107431484407523114320164650008697551594721877482120993218317624120761/16411995594597487864838419848460939092823898777072519330859024217650972459444997117790481493379894318400263946240", + "nu_float": 4.673444629131175e-06, + "certificate_estimate": "76700552664896137224991329058804271165107431484407523114320164650008697551594721877482120993218317624120761/16411995594597487864838419848460939092823898777072519330859024217650972459444997117790481493379894318400263946240", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "117649/262144", + "variance_rate_float": 4.673344530405293e-06, + "seconds_build": 0.08296091598458588, + "seconds_lump": 0.006618209008593112, + "seconds_solve": 0.06505362500320189 + }, + { + "graph": "NN", + "width": 6, + "p": "1/4", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "819723005411640549787242547857764155667138256185300068186293005600292987/1942573238628978313222461088409353686961900013425255337178118539303144390656", + "nu_float": 0.0004219779152265999, + "certificate_estimate": "819723005411640549787242547857764155667138256185300068186293005600292987/1942573238628978313222461088409353686961900013425255337178118539303144390656", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "729/4096", + "variance_rate_float": 0.0004208684070373467, + "seconds_build": 0.08101691599586047, + "seconds_lump": 0.006709959008730948, + "seconds_solve": 0.04669024999020621 + }, + { + "graph": "NN", + "width": 6, + "p": "1/16", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "1519395522906892003290929851742292752003841474509777777139081943868988086894889230396942536833116732336600738823180872292147925987012682213859375/23990607503208341355357536461475678952710024474625543217665787678377341374181589819118670070491327561122235297539781294468857219381145234755127657627648", + "nu_float": 6.333293238629736e-08, + "certificate_estimate": "1519395522906892003290929851742292752003841474509777777139081943868988086894889230396942536833116732336600738823180872292147925987012682213859375/23990607503208341355357536461475678952710024474625543217665787678377341374181589819118670070491327561122235297539781294468857219381145234755127657627648", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "11390625/16777216", + "variance_rate_float": 6.333291719266068e-08, + "seconds_build": 0.08177716698264703, + "seconds_lump": 0.006986041000345722, + "seconds_solve": 0.08735487499507144 + }, + { + "graph": "NN", + "width": 7, + "p": "1/8", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "53176018740648395848630904330985216329448161821258654969147449117152913837127550792037313894719557404155137704943371789649187601841900914668263730757303070881683030353750130047486290137922635411735132437902113487/82117728983762166101459511747050200581456433482488397098743447484328792439503830766572418374511333240613810463530391811724986054468169474492099573682983064103874811908213616535407985381316988031915279724128509645291520", + "nu_float": 6.475583214334062e-07, + "certificate_estimate": "53176018740648395848630904330985216329448161821258654969147449117152913837127550792037313894719557404155137704943371789649187601841900914668263730757303070881683030353750130047486290137922635411735132437902113487/82117728983762166101459511747050200581456433482488397098743447484328792439503830766572418374511333240613810463530391811724986054468169474492099573682983064103874811908213616535407985381316988031915279724128509645291520", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "823543/2097152", + "variance_rate_float": 6.475562960434026e-07, + "seconds_build": 0.5220576660067309, + "seconds_lump": 0.042804791999515146, + "seconds_solve": 0.8168176659964956 + }, + { + "graph": "NN", + "width": 7, + "p": "1/4", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "6683979278187325250485728998492567107141403426001479985373254631593984394074114734247311299072186720762098777435435882188234734267862958293547/49286180667639726007521026540179987215808935256967611886371374947251446023409795123975623810134695442709546215368323471234769113794838656194707456", + "nu_float": 0.00013561568755470407, + "certificate_estimate": "6683979278187325250485728998492567107141403426001479985373254631593984394074114734247311299072186720762098777435435882188234734267862958293547/49286180667639726007521026540179987215808935256967611886371374947251446023409795123975623810134695442709546215368323471234769113794838656194707456", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "2187/16384", + "variance_rate_float": 0.00013549325851772108, + "seconds_build": 0.5292567909928039, + "seconds_lump": 0.03484191698953509, + "seconds_solve": 0.5132938330061734 + }, + { + "graph": "NN", + "width": 7, + "p": "1/16", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "297866864817696208444269120099516680261383031116710016066731983703126197191978380052655136427376850537844556860386248410420957163725455924076375709502383905242428016548814446210053037222494286108008238347176508653188935501202194910373035342713834099723212746427661915092141193518515625/72828998724650103507893584077225384977585666069959925277510677828728459220087686343640652889925157982937665720583655954584474910591213075110268675707560045638929537703960099282409976021154210918594251215666718382297355194145557218510141917235780236116861133283750786632767661395173822747901952", + "nu_float": 4.089948647294509e-09, + "certificate_estimate": "297866864817696208444269120099516680261383031116710016066731983703126197191978380052655136427376850537844556860386248410420957163725455924076375709502383905242428016548814446210053037222494286108008238347176508653188935501202194910373035342713834099723212746427661915092141193518515625/72828998724650103507893584077225384977585666069959925277510677828728459220087686343640652889925157982937665720583655954584474910591213075110268675707560045638929537703960099282409976021154210918594251215666718382297355194145557218510141917235780236116861133283750786632767661395173822747901952", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "170859375/268435456", + "variance_rate_float": 4.08994858164823e-09, + "seconds_build": 0.5259018339856993, + "seconds_lump": 0.034969458007253706, + "seconds_solve": 1.1875034160038922 + }, + { + "graph": "NN", + "width": 8, + "p": "1/8", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "3041789588567469724607236535321683512805356718319678588865809309728715850179118217605424994436540663363219478956632129899450330455947554587670272212339554455415137012495400324451366138715264922508312861196415863060403340731913841113345141672497020510560741106058702824275676773662222915410045422226964803397540810597000766344594853206043108836652978231969622245880882006548490758240272347145131228437834567258256148566063633433570930340254444836217245231354302330191953194172107539682435172556462679461/33454013548131292908656315204448064293618493618524359246967268530527759969931416495599592371029533087105189230089894466820034783749327268060418491435030070436770061455724006538269916660902222754937135643565971053498198692460261721380280842446332304877174577365982019012229927301860463353207292323688124267197114137749459979691283187243881488162345925652275615992822771078461615470055379684476975304104529555203549835082419908781686597154079495462319506370992054989626655232881058272016606446199834659159801856", + "nu_float": 9.092450399684199e-08, + "certificate_estimate": "3041789588567469724607236535321683512805356718319678588865809309728715850179118217605424994436540663363219478956632129899450330455947554587670272212339554455415137012495400324451366138715264922508312861196415863060403340731913841113345141672497020510560741106058702824275676773662222915410045422226964803397540810597000766344594853206043108836652978231969622245880882006548490758240272347145131228437834567258256148566063633433570930340254444836217245231354302330191953194172107539682435172556462679461/33454013548131292908656315204448064293618493618524359246967268530527759969931416495599592371029533087105189230089894466820034783749327268060418491435030070436770061455724006538269916660902222754937135643565971053498198692460261721380280842446332304877174577365982019012229927301860463353207292323688124267197114137749459979691283187243881488162345925652275615992822771078461615470055379684476975304104529555203549835082419908781686597154079495462319506370992054989626655232881058272016606446199834659159801856", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "5764801/16777216", + "variance_rate_float": 9.092446215726535e-08, + "seconds_build": 3.3370667079871055, + "seconds_lump": 0.19091375000425614, + "seconds_solve": 28.828574542014394 + }, + { + "graph": "NN", + "width": 8, + "p": "1/4", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + "nu_float": 4.432636548604856e-05, + "certificate_estimate": "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "6561/65536", + "variance_rate_float": 4.43125314820572e-05, + "seconds_build": 3.3844333330052905, + "seconds_lump": 0.18594475000281818, + "seconds_solve": 15.336836915987078, + "reference_741": "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + "matches_reference_741": true, + "reference_gap": "0" + }, + { + "graph": "NN", + "width": 8, + "p": "1/16", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "12783060906876013776867079520730734003427184816109784957305792897337051941894834660701717738587760085049380853056097430818292286529421950607781704497740475847754898648757718434200688026093300323977743284850126032073617670945738044437870130785765037257806005319839308206552307581912166976819741637567374556593796597293417412894826926721476676397198781079720767896685236731649189178237835852854251121659738676323189630187021222873518356143987654305123185523501046367063724826070671600715522961833211375690232131061244112353986170002319547246937640227521613070659146276260242057306112964839152828620835607697443459092406866499265214970609128831368817924351378433576403515625/48122961436120739799182806727155746236757831151441655407944944027999624184201586994148182229626687063430409228253211544209299939294965475037603425477070805682770678384197483594730826672294819299254750726395320800978043990734428369826775412989937615584070392642557046484288067917683921719187960888864465136379534627181616962341067205347117983751204663047449540050758886687642566563122934000382110249623677581454849882115465151986621096491598162887228586121768455300390717305473345786634059589501772843190776705933463989255155299956342099325227631190513935865682696625572935793175560831229990085198441886588560473006476936911693975335944053063380425285241782338491264819929142001664", + "nu_float": 2.656332969832805e-10, + "certificate_estimate": "12783060906876013776867079520730734003427184816109784957305792897337051941894834660701717738587760085049380853056097430818292286529421950607781704497740475847754898648757718434200688026093300323977743284850126032073617670945738044437870130785765037257806005319839308206552307581912166976819741637567374556593796597293417412894826926721476676397198781079720767896685236731649189178237835852854251121659738676323189630187021222873518356143987654305123185523501046367063724826070671600715522961833211375690232131061244112353986170002319547246937640227521613070659146276260242057306112964839152828620835607697443459092406866499265214970609128831368817924351378433576403515625/48122961436120739799182806727155746236757831151441655407944944027999624184201586994148182229626687063430409228253211544209299939294965475037603425477070805682770678384197483594730826672294819299254750726395320800978043990734428369826775412989937615584070392642557046484288067917683921719187960888864465136379534627181616962341067205347117983751204663047449540050758886687642566563122934000382110249623677581454849882115465151986621096491598162887228586121768455300390717305473345786634059589501772843190776705933463989255155299956342099325227631190513935865682696625572935793175560831229990085198441886588560473006476936911693975335944053063380425285241782338491264819929142001664", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "2562890625/4294967296", + "variance_rate_float": 2.656332966969069e-10, + "seconds_build": 3.405393124994589, + "seconds_lump": 0.18782741701579653, + "seconds_solve": 46.55123645902495 + }, + { + "graph": "matching", + "width": 6, + "p": "1/8", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "20411421551988360233268972714766651128746109333709349054535295694727456280934810030060712682813589117979183581/60315694248094991185373056311915718771451363153122782220358457480373648971769314040179019725968868013270219358208", + "nu_float": 0.00033840979211862483, + "certificate_estimate": "20411421551988360233268972714766651128746109333709349054535295694727456280934810030060712682813589117979183581/60315694248094991185373056311915718771451363153122782220358457480373648971769314040179019725968868013270219358208", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "117649/262144", + "variance_rate_float": 0.0003375770243369031, + "seconds_build": 0.10444724999251775, + "seconds_lump": 0.00660125000285916, + "seconds_solve": 0.06565395800862461 + }, + { + "graph": "matching", + "width": 6, + "p": "1/4", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "2473860480461591803391496856703911325728348087915958373650132601735720927/209537634989896755839028838651815286881347508128532451696993479978857267200", + "nu_float": 0.011806282344366793, + "certificate_estimate": "2473860480461591803391496856703911325728348087915958373650132601735720927/209537634989896755839028838651815286881347508128532451696993479978857267200", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "729/4096", + "variance_rate_float": 0.01043757516755455, + "seconds_build": 0.10409099998651072, + "seconds_lump": 0.006759250012692064, + "seconds_solve": 0.046286750002764165 + }, + { + "graph": "matching", + "width": 6, + "p": "1/16", + "raw_states": 282, + "lumped_states": 24, + "nu_exact": "139890792375272781772512784484733566114926316160458672473478387508485593271050393376963616261362091205695337795331764865504915649381045691403859375/20786397930708041666332633888833866295897049300282578029085146872604847803202168838492542457400728957315304996708987878795942717842223449189638249381888", + "nu_float": 6.729919865943205e-06, + "certificate_estimate": "139890792375272781772512784484733566114926316160458672473478387508485593271050393376963616261362091205695337795331764865504915649381045691403859375/20786397930708041666332633888833866295897049300282578029085146872604847803202168838492542457400728957315304996708987878795942717842223449189638249381888", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "11390625/16777216", + "variance_rate_float": 6.729626661494466e-06, + "seconds_build": 0.10423370799981058, + "seconds_lump": 0.006782499986002222, + "seconds_solve": 0.08660191699163988 + }, + { + "graph": "matching", + "width": 7, + "p": "1/8", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "19568425565241311468850463433028476646756874551390671492135154242237469692382839874311970778409228720396270240164602657209037439930310986303047210207417956418895705277398962483929194299097288254229622435040641563333/173664268237116498167318694149862906025738801388192018206400117330116304150583560527834354782498410921434269736847490610678483550170312968599416696131290455477145926702420234113498309802747965006035658826416962314174464", + "nu_float": 0.00011267963043798458, + "certificate_estimate": "19568425565241311468850463433028476646756874551390671492135154242237469692382839874311970778409228720396270240164602657209037439930310986303047210207417956418895705277398962483929194299097288254229622435040641563333/173664268237116498167318694149862906025738801388192018206400117330116304150583560527834354782498410921434269736847490610678483550170312968599416696131290455477145926702420234113498309802747965006035658826416962314174464", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "823543/2097152", + "variance_rate_float": 0.00011258158809523933, + "seconds_build": 0.6690087500028312, + "seconds_lump": 0.0351192920061294, + "seconds_solve": 0.8225397090136539 + }, + { + "graph": "matching", + "width": 7, + "p": "1/4", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "173373848619212084870088628326858308137628449466481063676788041327632441918634608149831180150924028807536919097256742949779227692503696980691839/23225984399140408912616411443157016436096937202809993487273668620373756486441270648362727478379694847025465866353733105316874899182241391732326400", + "nu_float": 0.007464650179719773, + "certificate_estimate": "173373848619212084870088628326858308137628449466481063676788041327632441918634608149831180150924028807536919097256742949779227692503696980691839/23225984399140408912616411443157016436096937202809993487273668620373756486441270648362727478379694847025465866353733105316874899182241391732326400", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "2187/16384", + "variance_rate_float": 0.0068665894065685785, + "seconds_build": 0.6731247499992605, + "seconds_lump": 0.03509708301862702, + "seconds_solve": 0.5109989579941612 + }, + { + "graph": "matching", + "width": 7, + "p": "1/16", + "raw_states": 786, + "lumped_states": 43, + "nu_exact": "71549218614785659329151049629042077974971174044627482075636967318114390350930645731904270160590153438567503079890120520849925950713922642489071790743427715937736326687202163532021178118379555854552141142053997305505999656022878011125053289079435837254583036129237284416614025228652265625/62396252278670907382797284336219244717463026302564408944818075645297712528510576087863400578659833616928719471580528206477902452489858991937589628261658851524221170128569747856238838820992389441746813243043445334067485476683067323427033298595899670094957425021118238829729004642729129318285312", + "nu_float": 1.146690963028296e-06, + "certificate_estimate": "71549218614785659329151049629042077974971174044627482075636967318114390350930645731904270160590153438567503079890120520849925950713922642489071790743427715937736326687202163532021178118379555854552141142053997305505999656022878011125053289079435837254583036129237284416614025228652265625/62396252278670907382797284336219244717463026302564408944818075645297712528510576087863400578659833616928719471580528206477902452489858991937589628261658851524221170128569747856238838820992389441746813243043445334067485476683067323427033298595899670094957425021118238829729004642729129318285312", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "170859375/268435456", + "variance_rate_float": 1.146681988668008e-06, + "seconds_build": 0.6824090839945711, + "seconds_lump": 0.03560237499186769, + "seconds_solve": 1.2036302500055172 + }, + { + "graph": "matching", + "width": 8, + "p": "1/8", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", + "nu_float": 3.791735919415724e-05, + "certificate_estimate": "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "5764801/16777216", + "variance_rate_float": 3.790566826468656e-05, + "seconds_build": 4.282535624981392, + "seconds_lump": 0.19498962501529604, + "seconds_solve": 29.788341000006767, + "reference_741": "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", + "matches_reference_741": true, + "reference_gap": "0" + }, + { + "graph": "matching", + "width": 8, + "p": "1/4", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "157413927345982395745224538762672868753558202769513590486981935420331225324662702404131516450170671422998080966021895134702292755647775453275189490275722564882502960833027824512128302017639440126207753227250979354810994718278428471065975437803134186643122462131447687755675571063926474819243330762918224980698592069957839156816262450917/32964040989403063395478888677752264000406388251069710309771258987705883213231241466667952904466292528120119136138942848763352768310383713889015262997539336674329455444755878382160051011071450300984765953186273730684019607784567632499780272992900600861213010237353407937998622372015883104803850756519884794845583152667226302851385405734912", + "nu_float": 0.004775322521792343, + "certificate_estimate": "157413927345982395745224538762672868753558202769513590486981935420331225324662702404131516450170671422998080966021895134702292755647775453275189490275722564882502960833027824512128302017639440126207753227250979354810994718278428471065975437803134186643122462131447687755675571063926474819243330762918224980698592069957839156816262450917/32964040989403063395478888677752264000406388251069710309771258987705883213231241466667952904466292528120119136138942848763352768310383713889015262997539336674329455444755878382160051011071450300984765953186273730684019607784567632499780272992900600861213010237353407937998622372015883104803850756519884794845583152667226302851385405734912", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "6561/65536", + "variance_rate_float": 0.004511815439834479, + "seconds_build": 4.47475462500006, + "seconds_lump": 0.2030991250067018, + "seconds_solve": 15.934083125001052 + }, + { + "graph": "matching", + "width": 8, + "p": "1/16", + "raw_states": 2214, + "lumped_states": 90, + "nu_exact": "8051984822164592045488802260949484823528250500575681803312753241282857942612526506646918658254713756839443794476512000341931247669244408040357527713096766379493662521882629491725422188971230738606640753604378316064463186496455760424690111956112403643851041237548853552989556178476589841673744558746699883688392453531468502687543178928449809037034910670329307551557673713004540093981094629006193852740876720506573235473162366911897563214816874768427235235093877632414340519336674707192023580416953168319260259725807401897142812258359983099205228182419725970396215327162072915491776200976331033921817305889142333926929003926424854170495890075482216615748450812525780691015625/40793201785916379377519494024249186774041556000306219712898796529413804835707001249248891398059219210277391217528134370971053384228075111903712009913743665584077186004718342379883171423311236422964781813812857386529232335059149300642819897489017732312513683846255581629996975426635669473752002838391010195083948445669514704044395184586542294324251556390199097328116712600894650388095524340352595225208551658273621709416439064809299626750035781577371476880368017859936515724016764065507049612444872837605335558230479376323335847836271744139078963541480572900663176290078221706394628458234806005204068648680584237228944867352224571438226203243232018918281796050787234913537579024384", + "nu_float": 1.9738545810700484e-07, + "certificate_estimate": "8051984822164592045488802260949484823528250500575681803312753241282857942612526506646918658254713756839443794476512000341931247669244408040357527713096766379493662521882629491725422188971230738606640753604378316064463186496455760424690111956112403643851041237548853552989556178476589841673744558746699883688392453531468502687543178928449809037034910670329307551557673713004540093981094629006193852740876720506573235473162366911897563214816874768427235235093877632414340519336674707192023580416953168319260259725807401897142812258359983099205228182419725970396215327162072915491776200976331033921817305889142333926929003926424854170495890075482216615748450812525780691015625/40793201785916379377519494024249186774041556000306219712898796529413804835707001249248891398059219210277391217528134370971053384228075111903712009913743665584077186004718342379883171423311236422964781813812857386529232335059149300642819897489017732312513683846255581629996975426635669473752002838391010195083948445669514704044395184586542294324251556390199097328116712600894650388095524340352595225208551658273621709416439064809299626750035781577371476880368017859936515724016764065507049612444872837605335558230479376323335847836271744139078963541480572900663176290078221706394628458234806005204068648680584237228944867352224571438226203243232018918281796050787234913537579024384", + "certificate_agrees": true, + "certificate_abs_error_bound": "0", + "empty_row_reset": "2562890625/4294967296", + "variance_rate_float": 1.9738517959119806e-07, + "seconds_build": 4.328327708994038, + "seconds_lump": 0.19117329100845382, + "seconds_solve": 48.569794124981854 + } + ], + "failures": 0 +} \ No newline at end of file diff --git a/results/geometric-consistency/winding-poisson-controls.json b/results/geometric-consistency/winding-poisson-controls.json new file mode 100644 index 00000000..2427d714 --- /dev/null +++ b/results/geometric-consistency/winding-poisson-controls.json @@ -0,0 +1,774 @@ +{ + "closed_boundary_contact": { + "bk_applies_to_disjoint_increasing_winding_witnesses_not_anchors": true, + "length_at_least": 5, + "p": "1/4", + "product_of_marginals": "531441/68719476736", + "ratio": "64/27", + "single_anchor_probability": "729/262144", + "two_anchors_two_rows_apart": "19683/1073741824", + "width": 3 + }, + "component_activities": [ + { + "activity_terms": [ + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 2 + } + ], + "cases": [ + { + "curvature_lower_bound": "-225/4", + "log_nu_derivative": "5", + "log_nu_second_derivative": "-225/4", + "logit_log_nu_second_derivative": "-24/25", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "256/15625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-27", + "log_nu_derivative": "0", + "log_nu_second_derivative": "-27", + "logit_log_nu_second_derivative": "-4/3", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "16/729", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-425/18", + "log_nu_derivative": "-5/3", + "log_nu_second_derivative": "-425/18", + "logit_log_nu_second_derivative": "-36/25", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "324/15625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 1, + "cutoff_rows": 1, + "interior_subsets": 4, + "matching": false, + "surrounding_window_configurations": 64, + "width": 2 + }, + { + "activity_terms": [ + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 2 + } + ], + "cases": [ + { + "curvature_lower_bound": "-225/4", + "log_nu_derivative": "5", + "log_nu_second_derivative": "-225/4", + "logit_log_nu_second_derivative": "-24/25", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "256/15625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-27", + "log_nu_derivative": "0", + "log_nu_second_derivative": "-27", + "logit_log_nu_second_derivative": "-4/3", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "16/729", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-425/18", + "log_nu_derivative": "-5/3", + "log_nu_second_derivative": "-425/18", + "logit_log_nu_second_derivative": "-36/25", + "mean_component_volume": "2", + "mean_distinct_boundary_volume": "4", + "nu": "324/15625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 1, + "cutoff_rows": 1, + "interior_subsets": 4, + "matching": true, + "surrounding_window_configurations": 64, + "width": 2 + }, + { + "activity_terms": [ + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 2 + }, + { + "boundary_volume": 4, + "multiplicity": 4, + "volume": 3 + }, + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 4 + } + ], + "cases": [ + { + "curvature_lower_bound": "-6275/92", + "log_nu_derivative": "170/23", + "log_nu_second_derivative": "-128825/2116", + "logit_log_nu_second_derivative": "-11228/13225", + "mean_component_volume": "57/23", + "mean_distinct_boundary_volume": "4", + "nu": "11776/390625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-360/11", + "log_nu_derivative": "21/11", + "log_nu_second_derivative": "-3609/121", + "logit_log_nu_second_derivative": "-1450/1089", + "mean_component_volume": "29/11", + "mean_distinct_boundary_volume": "4", + "nu": "352/6561", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-11575/414", + "log_nu_derivative": "5/69", + "log_nu_second_derivative": "-246725/9522", + "logit_log_nu_second_derivative": "-19692/13225", + "mean_component_volume": "62/23", + "mean_distinct_boundary_volume": "4", + "nu": "22356/390625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 6, + "cutoff_rows": 2, + "interior_subsets": 16, + "matching": false, + "surrounding_window_configurations": 256, + "width": 2 + }, + { + "activity_terms": [ + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 2 + }, + { + "boundary_volume": 6, + "multiplicity": 2, + "volume": 2 + }, + { + "boundary_volume": 5, + "multiplicity": 4, + "volume": 3 + }, + { + "boundary_volume": 4, + "multiplicity": 1, + "volume": 4 + } + ], + "cases": [ + { + "curvature_lower_bound": "-9475/148", + "log_nu_derivative": "180/37", + "log_nu_second_derivative": "-311825/5476", + "logit_log_nu_second_derivative": "-33908/34225", + "mean_component_volume": "83/37", + "mean_distinct_boundary_volume": "188/37", + "nu": "18944/390625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-423/13", + "log_nu_derivative": "-3/13", + "log_nu_second_derivative": "-4689/169", + "logit_log_nu_second_derivative": "-2110/1521", + "mean_component_volume": "31/13", + "mean_distinct_boundary_volume": "64/13", + "nu": "416/6561", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-36775/1278", + "log_nu_derivative": "-415/213", + "log_nu_second_derivative": "-2213525/90738", + "logit_log_nu_second_derivative": "-188868/126025", + "mean_component_volume": "174/71", + "mean_distinct_boundary_volume": "344/71", + "nu": "23004/390625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 8, + "cutoff_rows": 2, + "interior_subsets": 16, + "matching": true, + "surrounding_window_configurations": 256, + "width": 2 + }, + { + "activity_terms": [ + { + "boundary_volume": 6, + "multiplicity": 1, + "volume": 3 + }, + { + "boundary_volume": 6, + "multiplicity": 6, + "volume": 4 + }, + { + "boundary_volume": 6, + "multiplicity": 6, + "volume": 5 + }, + { + "boundary_volume": 6, + "multiplicity": 1, + "volume": 6 + } + ], + "cases": [ + { + "curvature_lower_bound": "-41525/408", + "log_nu_derivative": "560/51", + "log_nu_second_derivative": "-1895525/20808", + "logit_log_nu_second_derivative": "-83098/65025", + "mean_component_volume": "377/102", + "mean_distinct_boundary_volume": "6", + "nu": "1253376/244140625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-4887/100", + "log_nu_derivative": "279/100", + "log_nu_second_derivative": "-445041/10000", + "logit_log_nu_second_derivative": "-14933/7500", + "mean_component_volume": "393/100", + "mean_distinct_boundary_volume": "6", + "nu": "6400/531441", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-277325/6636", + "log_nu_derivative": "55/1106", + "log_nu_second_derivative": "-141881225/3669708", + "logit_log_nu_second_derivative": "-17007498/7645225", + "mean_component_volume": "2223/553", + "mean_distinct_boundary_volume": "6", + "nu": "3225096/244140625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 14, + "cutoff_rows": 2, + "interior_subsets": 64, + "matching": false, + "surrounding_window_configurations": 4096, + "width": 3 + }, + { + "activity_terms": [ + { + "boundary_volume": 6, + "multiplicity": 1, + "volume": 3 + }, + { + "boundary_volume": 9, + "multiplicity": 6, + "volume": 3 + }, + { + "boundary_volume": 8, + "multiplicity": 12, + "volume": 4 + }, + { + "boundary_volume": 7, + "multiplicity": 6, + "volume": 5 + }, + { + "boundary_volume": 6, + "multiplicity": 1, + "volume": 6 + } + ], + "cases": [ + { + "curvature_lower_bound": "-93025/968", + "log_nu_derivative": "785/121", + "log_nu_second_derivative": "-9978525/117128", + "logit_log_nu_second_derivative": "-570318/366025", + "mean_component_volume": "807/242", + "mean_distinct_boundary_volume": "986/121", + "nu": "2973696/244140625", + "p": "1/5", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-3375/68", + "log_nu_derivative": "-9/8", + "log_nu_second_derivative": "-45009/1088", + "logit_log_nu_second_derivative": "-1735/816", + "mean_component_volume": "483/136", + "mean_distinct_boundary_volume": "267/34", + "nu": "8704/531441", + "p": "1/3", + "two_differentiation_routes_agree": true + }, + { + "curvature_lower_bound": "-309575/6996", + "log_nu_derivative": "-4295/1166", + "log_nu_second_derivative": "-148067225/4078668", + "logit_log_nu_second_derivative": "-19270458/8497225", + "mean_component_volume": "2133/583", + "mean_distinct_boundary_volume": "408/53", + "nu": "3400056/244140625", + "p": "2/5", + "two_differentiation_routes_agree": true + } + ], + "component_shapes": 26, + "cutoff_rows": 2, + "interior_subsets": 64, + "matching": true, + "surrounding_window_configurations": 4096, + "width": 3 + } + ], + "geometry": { + "deterministic_row_masks_both_graphs": 8192, + "nonoverlap_neighbourhoods_checked": true + }, + "local_window_controls": [ + { + "cases": [ + { + "agg_process_tv_bound": "64304361/20000000000", + "anchored_count_law": { + "0": "1934921441/2000000000", + "1": "32273559/1000000000", + "2": "531441/2000000000" + }, + "b1": "43046721/40000000000", + "b2": "531441/1000000000", + "lambda": "6561/200000", + "localization_failure_probability": "879940999/10000000000", + "nu_per_row": "6561/1000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 0.0005272666292066575, + "rank_void_poisson_error_float_diagnostic": 0.016749007904674484, + "rank_zero_probability": "9509782401/10000000000", + "void_mismatch_probability": "41206201/2500000000" + }, + { + "agg_process_tv_bound": "280665/8388608", + "anchored_count_law": { + "0": "948541/1048576", + "1": "48195/524288", + "2": "3645/1048576" + }, + "b1": "164025/16777216", + "b2": "3645/524288", + "lambda": "405/4096", + "localization_failure_probability": "435487/1048576", + "nu_per_row": "81/4096", + "p": "1/4", + "poisson_tv_float_diagnostic": 0.0023565676771045707, + "rank_void_poisson_error_float_diagnostic": 0.18212121538709725, + "rank_zero_probability": "758889/1048576", + "void_mismatch_probability": "47413/262144" + } + ], + "configurations": 1024, + "cutoff_rows": 1, + "length": 5, + "local_configurations": 64, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "matching": false, + "max_anchored_count": 2, + "width": 2 + }, + { + "cases": [ + { + "agg_process_tv_bound": "64304361/20000000000", + "anchored_count_law": { + "0": "1934921441/2000000000", + "1": "32273559/1000000000", + "2": "531441/2000000000" + }, + "b1": "43046721/40000000000", + "b2": "531441/1000000000", + "lambda": "6561/200000", + "localization_failure_probability": "1464526099/10000000000", + "nu_per_row": "6561/1000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 0.0005272666292066575, + "rank_void_poisson_error_float_diagnostic": 0.08760780790467448, + "rank_zero_probability": "8801194401/10000000000", + "void_mismatch_probability": "218353201/2500000000" + }, + { + "agg_process_tv_bound": "280665/8388608", + "anchored_count_law": { + "0": "948541/1048576", + "1": "48195/524288", + "2": "3645/1048576" + }, + "b1": "164025/16777216", + "b2": "3645/524288", + "lambda": "405/4096", + "localization_failure_probability": "581287/1048576", + "nu_per_row": "81/4096", + "p": "1/4", + "poisson_tv_float_diagnostic": 0.0023565676771045707, + "rank_void_poisson_error_float_diagnostic": 0.40459435991834725, + "rank_zero_probability": "525609/1048576", + "void_mismatch_probability": "105733/262144" + } + ], + "configurations": 1024, + "cutoff_rows": 1, + "length": 5, + "local_configurations": 64, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "matching": true, + "max_anchored_count": 2, + "width": 2 + }, + { + "cases": [ + { + "agg_process_tv_bound": "11356062031809/1250000000000000", + "anchored_count_law": { + "0": "59076476761/62500000000", + "1": "5404774653/100000000000", + "2": "181890603/250000000000", + "3": "531441/500000000000" + }, + "b1": "7702306741809/2500000000000000", + "b2": "365375529/250000000000", + "lambda": "2775303/50000000", + "localization_failure_probability": "11560109833/1000000000000", + "nu_per_row": "925101/100000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 0.0015386645894280848, + "rank_void_poisson_error_float_diagnostic": 0.00452720433594167, + "rank_zero_probability": "941479086519/1000000000000", + "void_mismatch_probability": "3744541657/1000000000000" + }, + { + "agg_process_tv_bound": "99327465/536870912", + "anchored_count_law": { + "0": "404489/524288", + "1": "1781433/8388608", + "2": "67311/4194304", + "3": "729/8388608" + }, + "b1": "64304361/1073741824", + "b2": "136809/4194304", + "lambda": "8019/32768", + "localization_failure_probability": "2532313/16777216", + "nu_per_row": "2673/65536", + "p": "1/4", + "poisson_tv_float_diagnostic": 0.02076599662773526, + "rank_void_poisson_error_float_diagnostic": 0.10407611352518165, + "rank_zero_probability": "11389167/16777216", + "void_mismatch_probability": "1554481/16777216" + } + ], + "configurations": 4096, + "cutoff_rows": 2, + "length": 6, + "local_configurations": 256, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 1, + 6, + 6, + 0, + 0, + 0, + 0 + ], + "matching": false, + "max_anchored_count": 3, + "width": 2 + }, + { + "cases": [ + { + "agg_process_tv_bound": "47118540907089/1250000000000000", + "anchored_count_law": { + "0": "27649723421/31250000000", + "1": "56357211969/500000000000", + "2": "623340927/250000000000", + "3": "531441/500000000000" + }, + "b1": "34635779137089/2500000000000000", + "b2": "1248276177/250000000000", + "lambda": "5885217/50000000", + "localization_failure_probability": "33381785881/1000000000000", + "nu_per_row": "1961739/100000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 0.008080109995976081, + "rank_void_poisson_error_float_diagnostic": 0.031023344898971406, + "rank_zero_probability": "857935498437/1000000000000", + "void_mismatch_probability": "5371130207/200000000000" + }, + { + "agg_process_tv_bound": "206519625/536870912", + "anchored_count_law": { + "0": "1440323/2097152", + "1": "2331585/8388608", + "2": "147501/4194304", + "3": "729/8388608" + }, + "b1": "130439241/1073741824", + "b2": "297189/4194304", + "lambda": "11421/32768", + "localization_failure_probability": "4859281/16777216", + "nu_per_row": "3807/65536", + "p": "1/4", + "poisson_tv_float_diagnostic": 0.03197517001294048, + "rank_void_poisson_error_float_diagnostic": 0.26889599164081057, + "rank_zero_probability": "7328637/16777216", + "void_mismatch_probability": "4193947/16777216" + } + ], + "configurations": 4096, + "cutoff_rows": 2, + "length": 6, + "local_configurations": 256, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 3, + 6, + 2, + 0, + 0, + 0, + 0 + ], + "matching": true, + "max_anchored_count": 3, + "width": 2 + }, + { + "cases": [ + { + "agg_process_tv_bound": "437397732081/20000000000000000", + "anchored_count_law": { + "0": "199468946420489/200000000000000", + "1": "265333079511/100000000000000", + "2": "387420489/200000000000000" + }, + "b1": "282429536481/40000000000000000", + "b2": "387420489/100000000000000", + "lambda": "531441/200000000", + "localization_failure_probability": "129043485463501/1000000000000000", + "nu_per_row": "531441/1000000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 3.1771609108055543e-06, + "rank_void_poisson_error_float_diagnostic": 0.0023671823893616217, + "rank_zero_probability": "994979139854949/1000000000000000", + "void_mismatch_probability": "295699030937/125000000000000" + }, + { + "agg_process_tv_bound": "25883145/34359738368", + "anchored_count_law": { + "0": "1058910319/1073741824", + "1": "7366545/536870912", + "2": "98415/1073741824" + }, + "b1": "13286025/68719476736", + "b2": "98415/536870912", + "lambda": "3645/262144", + "localization_failure_probability": "593693137/1073741824", + "nu_per_row": "729/262144", + "p": "1/4", + "poisson_tv_float_diagnostic": 8.68696060285501e-06, + "rank_void_poisson_error_float_diagnostic": 0.06482164808865176, + "rank_zero_probability": "989313507/1073741824", + "void_mismatch_probability": "17399203/268435456" + } + ], + "configurations": 32768, + "cutoff_rows": 1, + "length": 5, + "local_configurations": 512, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "matching": false, + "max_anchored_count": 2, + "width": 3 + }, + { + "cases": [ + { + "agg_process_tv_bound": "437397732081/20000000000000000", + "anchored_count_law": { + "0": "199468946420489/200000000000000", + "1": "265333079511/100000000000000", + "2": "387420489/200000000000000" + }, + "b1": "282429536481/40000000000000000", + "b2": "387420489/100000000000000", + "lambda": "531441/200000000", + "localization_failure_probability": "269154105310351/1000000000000000", + "nu_per_row": "531441/1000000000", + "p": "1/10", + "poisson_tv_float_diagnostic": 3.1771609108055543e-06, + "rank_void_poisson_error_float_diagnostic": 0.02615049574186168, + "rank_zero_probability": "971195826502449/1000000000000000", + "void_mismatch_probability": "6537226399999/250000000000000" + }, + { + "agg_process_tv_bound": "25883145/34359738368", + "anchored_count_law": { + "0": "1058910319/1073741824", + "1": "7366545/536870912", + "2": "98415/1073741824" + }, + "b1": "13286025/68719476736", + "b2": "98415/536870912", + "lambda": "3645/262144", + "localization_failure_probability": "826346197/1073741824", + "nu_per_row": "729/262144", + "p": "1/4", + "poisson_tv_float_diagnostic": 8.68696060285501e-06, + "rank_void_poisson_error_float_diagnostic": 0.29115113863106357, + "rank_zero_probability": "746294067/1073741824", + "void_mismatch_probability": "78154063/268435456" + } + ], + "configurations": 32768, + "cutoff_rows": 1, + "length": 5, + "local_configurations": 512, + "local_global_anchor_failures": 0, + "local_intensity_bernstein_counts": [ + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "matching": true, + "max_anchored_count": 2, + "width": 3 + } + ], + "nonclaims": [ + "no numerical mass kappa", + "no prefactor A or beta determination", + "no proof by finite enumeration", + "no full repository CI" + ], + "probability_accuracy": "all probabilities, intensities and b1/b2 are exact fractions; TV against exp is a float diagnostic", + "schema": "matching-one.winding-poisson-controls.v1", + "scope": "finite exact anchoring and dependency controls; not asymptotic simulations", + "total_graph_configurations": 75776, + "two_colour": { + "agg_process_tv_bound": "14849/131072", + "b1": "6561/262144", + "b2": "259/8192", + "categorical_configurations": 6561, + "count_covariance": "4831/1048576", + "count_law": { + "0,0": "28067/32768", + "0,1": "1063/16384", + "0,2": "1/512", + "1,0": "1063/16384", + "1,1": "9/1024", + "1,2": "1/2048", + "2,0": "1/512", + "2,1": "1/2048", + "2,2": "1/32768" + }, + "cutoff_rows": 1, + "high_probability": "1/4", + "joint_poisson_tv_float_diagnostic": 0.00688426799249664, + "lambda_high": "81/1024", + "lambda_low": "81/1024", + "length": 4, + "low_probability": "1/4", + "opposite_monotone_joint": "143/2048", + "opposite_monotone_product": "420099583/4294967296", + "width": 2 + } +} diff --git a/results/geometric-consistency/winding-prefactor-contrast.json b/results/geometric-consistency/winding-prefactor-contrast.json new file mode 100644 index 00000000..920c56b7 --- /dev/null +++ b/results/geometric-consistency/winding-prefactor-contrast.json @@ -0,0 +1,174 @@ +{ + "schema": "matching-one.winding-prefactor-contrast.v1", + "issue": 741, + "pr": 739, + "date": "2026-09-13", + "definition": "nu_w = expected number of complete horizontally winding components retired per vertical row, pi.g on the reward-preserving lumped chain", + "graph_inputs": [ + { + "graph": "NN", + "p": "1/4", + "why_subcritical": "3p<1" + }, + { + "graph": "matching NN+NNN", + "p": "1/8", + "why_subcritical": "7p<1" + } + ], + "engine": { + "python_reference": "scripts/cylinder_winding_intensity.py", + "fast_builder": "scripts/cylinder_winding_intensity_fast.cpp", + "note": "allocation-free C++ port of advance()/empty_state()/reward_lump(); validated against every published control of the Python reference" + }, + "validation": { + "points": 18, + "source": "results/geometric-consistency/cylinder-winding-intensity.json", + "agreement": "exact rational equality at every (graph,width,p) control, plus identical frontier-state and reward-lump counts" + }, + "runs": [ + { + "graph": "NN", + "p": "1/4", + "widths": [ + { + "w": 4, + "frontier_states": 38, + "reward_lumps": 7, + "log_nu": -5.419513505387646, + "nu": "52135149017187/11770514026725376", + "certificate_bound": 0.0, + "log_nu_abs_error_bound": 0.0, + "mode": "exact-rational solve" + }, + { + "w": 8, + "frontier_states": 2214, + "reward_lumps": 90, + "log_nu": -10.023930900250674, + "nu": "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + "certificate_bound": 0.0, + "log_nu_abs_error_bound": 0.0, + "mode": "exact-rational solve" + }, + { + "w": 12, + "frontier_states": 147578, + "reward_lumps": 2105, + "log_nu": -14.400335955876589, + "nu": "379212808133946169010962655969307/680564733841878484886207429475057875728", + "certificate_bound": 3.0907075957690434e-16, + "log_nu_abs_error_bound": 5.546825221358631e-10, + "mode": "float64 solve + exact-rational residual correction + exact certification" + } + ] + }, + { + "graph": "matching NN+NNN", + "p": "1/8", + "widths": [ + { + "w": 4, + "frontier_states": 38, + "reward_lumps": 7, + "log_nu": -5.742669143987384, + "nu": "578542977420046503529/180445122308089296453632", + "certificate_bound": 0.0, + "log_nu_abs_error_bound": 0.0, + "mode": "exact-rational solve" + }, + { + "w": 8, + "frontier_states": 2214, + "reward_lumps": 90, + "log_nu": -10.180101524506828, + "nu": "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", + "certificate_bound": 0.0, + "log_nu_abs_error_bound": 0.0, + "mode": "exact-rational solve" + }, + { + "w": 12, + "frontier_states": 147578, + "reward_lumps": 2105, + "log_nu": -14.471261214034028, + "nu": "2825989450032982531722048546838021/5444517870735033276005206910959493898816", + "certificate_bound": 7.541392155565239e-17, + "log_nu_abs_error_bound": 1.4529177860822529e-10, + "mode": "float64 solve + exact-rational residual correction + exact certification" + } + ] + } + ], + "contrast": { + "NN": { + "log_nu_by_width": { + "2": -2.868379786881457, + "4": -5.419513505387646, + "8": -10.023930900250674, + "12": -14.400335955876589 + }, + "effective_kappa_4_8": 1.151104348715757, + "effective_kappa_8_12": 1.0941012639064787, + "R_window_4_8_12": 1.2561008246626348, + "log_R": 0.2280123392371145, + "log_R_error_bound": 5.546825221358631e-10, + "beta_eff_4_8_12": 0.7925844571886983, + "beta_eff_error_bound": 1.9281094487694742e-09, + "R_window_2_4_8": 0.128312873113551, + "beta_eff_2_4_8": -7.137336222788077, + "deviation_from_one_half": 0.2925844571886983 + }, + "matching": { + "log_nu_by_width": { + "2": -3.3390984215201938, + "4": -5.742669143987384, + "8": -10.180101524506828, + "12": -14.471261214034028 + }, + "effective_kappa_4_8": 1.109358095129861, + "effective_kappa_8_12": 1.0727899223818, + "R_window_4_8_12": 1.157511788056221, + "log_R": 0.1462726909922445, + "log_R_error_bound": 1.4529177860822529e-10, + "beta_eff_4_8_12": 0.5084525766434808, + "beta_eff_error_bound": 5.050428668354995e-10, + "R_window_2_4_8": 0.13082932628049532, + "beta_eff_2_4_8": -7.069824131613746, + "deviation_from_one_half": 0.008452576643480758 + } + }, + "resource_report": { + "w12_NN": { + "frontier_states": 147578, + "reward_lumps": 2105, + "transitions": 604479488, + "bfs_seconds": 234.2, + "table_cache_seconds": 237.8, + "table_gigabytes": 2.25, + "total_seconds": 504.1, + "peak_rss_gigabytes": 2.4, + "exit": "0" + }, + "w12_matching": { + "frontier_states": 147578, + "reward_lumps": 2105, + "transitions": 604479488, + "bfs_seconds": 261.4, + "table_cache_seconds": 263.3, + "total_seconds": 560.9, + "peak_rss_gigabytes": 2.4, + "exit": "0" + }, + "host": "Huawei Cloud EulerOS 2.0 aarch64 container, 16 vCPU, 30 GiB visible, g++ 10.3.1 -O2/-O3, single-process single-thread", + "naive_python_estimate": "the Python builder is capped at width<=10 and its builder took 6.7 s at w=8 against 0.5 s here; a w=12 build in pure Python was not attempted" + }, + "interpretation": [ + "3-width window (4,8,12) gives beta_eff = 0.792584457 +- 1.9e-9 for NN at p=1/4 and 0.508452577 +- 5.1e-10 for matching at p=1/8.", + "The 1/2 sewing hypothesis is therefore numerically close on the matching graph at p=1/8 (deviation +0.00845) but not on NN at p=1/4 (deviation +0.29258). An identical construction cannot have two different true exponents, so at least one of these is not asymptotic.", + "The (2,4,8) window returns beta_eff = -7.137 (NN) and -7.070 (matching), i.e. the assumed form nu_w = A w^-beta exp(-kappa w) does not hold at those widths at all. This is direct evidence that the (4,8,12) values are finite-window effective exponents.", + "The adjacent-window effective kappa is still decreasing in magnitude over 4->8->12 for both graphs (-1.2756,-1.1511,-1.0941 for NN; -1.2018,-1.1094,-1.0728 for matching), so the amplitude has not settled either.", + "Three widths cannot establish an asymptote. The contrast is reported as an effective finite-width diagnostic, not as a determination of beta, and not as a refutation of the sewing hypothesis.", + "Exact rational values are available at w=4 and w=8 (certificate bound zero); the w=12 values carry the certificate bounds listed above, all below 6e-10 on log nu." + ] +} \ No newline at end of file diff --git a/results/geometric-consistency/winding-rate-centres.json b/results/geometric-consistency/winding-rate-centres.json new file mode 100644 index 00000000..c7f92344 --- /dev/null +++ b/results/geometric-consistency/winding-rate-centres.json @@ -0,0 +1,524 @@ +{ + "schema": "matching-one.winding-rate-centres.v1", + "date": "2026-09-13", + "claim_boundary": "Finite deterministic controls only; no infinite correlation length numerically computed.", + "seed_bounds": { + "NN": { + "conditional_origin": true, + "seed_vertex_count": 9, + "independent_remaining_sites": 8, + "source": [ + 0, + 1 + ], + "target": [ + 2, + 1 + ], + "conditional_connection_counts_by_occupied_other_sites": [ + 0, + 0, + 1, + 6, + 17, + 26, + 21, + 7, + 1 + ], + "q_at_one_quarter": { + "numerator": "4477", + "denominator": "65536" + }, + "seed_root_target": "1/16", + "seed_root_interval": [ + { + "numerator": "276476994980459069", + "denominator": "1152921504606846976" + }, + { + "numerator": "4423631919687345105", + "denominator": "18446744073709551616" + } + ], + "seed_root_midpoint_decimal": "0.239805566880062101731879", + "strict_upper_bound_on_first_centre_at_d_log4": "0.239805566880062101758984", + "cluster_comparison": { + "cap": 5, + "p": "1/5", + "q": "1/4", + "lhs": { + "numerator": "1809", + "denominator": "131072" + }, + "rhs": { + "numerator": "16621", + "denominator": "640000" + }, + "passed": true + } + }, + "matching": { + "conditional_origin": true, + "seed_vertex_count": 9, + "independent_remaining_sites": 8, + "source": [ + 0, + 1 + ], + "target": [ + 2, + 1 + ], + "conditional_connection_counts_by_occupied_other_sites": [ + 0, + 0, + 3, + 15, + 31, + 34, + 21, + 7, + 1 + ], + "q_at_one_quarter": { + "numerator": "37", + "denominator": "256" + }, + "seed_root_target": "1/16", + "seed_root_interval": [ + { + "numerator": "1442483380047527557", + "denominator": "9223372036854775808" + }, + { + "numerator": "2884966760095055115", + "denominator": "18446744073709551616" + } + ], + "seed_root_midpoint_decimal": "0.156394361442176291779544", + "strict_upper_bound_on_first_centre_at_d_log4": "0.156394361442176291806649", + "cluster_comparison": { + "cap": 5, + "p": "1/5", + "q": "1/4", + "lhs": { + "numerator": "8343", + "denominator": "262144" + }, + "rhs": { + "numerator": "61", + "denominator": "1024" + }, + "passed": true + } + }, + "certified_d_log4_centre_brackets": { + "a_lower": "1/12", + "a_upper": { + "numerator": "4423631919687345105", + "denominator": "18446744073709551616" + }, + "b_lower": { + "numerator": "15561777313614496501", + "denominator": "18446744073709551616" + }, + "b_upper": "27/28", + "warning": "Seed roots bound the infinite centres; they are NOT centre estimates." + } + }, + "censuses": [ + { + "width": 3, + "height": 3, + "graph": "NN", + "configurations": 512, + "nonzero_winding_configurations": 253, + "first_span_cut_witnesses_checked": 253, + "winding_counts": [ + 0, + 0, + 0, + 6, + 36, + 81, + 84, + 36, + 9, + 1 + ], + "ring_counts": [ + 0, + 0, + 0, + 1, + 6, + 17, + 26, + 21, + 7, + 1 + ], + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "1199820000179", + "denominator": "200000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "729", + "denominator": "500000" + }, + "conditional_harris_lower": { + "numerator": "1000197999901", + "denominator": "100000000000000000000" + }, + "ring_probability": { + "numerator": "1000197999901", + "denominator": "1000000000000000000" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "22303", + "denominator": "262144" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "729", + "denominator": "32" + }, + "conditional_harris_lower": { + "numerator": "4477", + "denominator": "1048576" + }, + "ring_probability": { + "numerator": "4477", + "denominator": "262144" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "253", + "denominator": "512" + }, + "conditional_harris_lower": { + "numerator": "79", + "denominator": "1024" + }, + "ring_probability": { + "numerator": "79", + "denominator": "512" + } + } + ] + }, + { + "width": 3, + "height": 3, + "graph": "matching", + "configurations": 512, + "nonzero_winding_configurations": 421, + "first_span_cut_witnesses_checked": 421, + "winding_counts": [ + 0, + 0, + 0, + 48, + 117, + 126, + 84, + 36, + 9, + 1 + ], + "ring_counts": [ + 0, + 0, + 0, + 3, + 15, + 31, + 34, + 21, + 7, + 1 + ], + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "46315890898201", + "denominator": "1000000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "3969", + "denominator": "500000" + }, + "conditional_harris_lower": { + "numerator": "29701", + "denominator": "1000000000000" + }, + "ring_probability": { + "numerator": "29701", + "denominator": "10000000000" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "76249", + "denominator": "262144" + }, + "conditional_harris_lower": { + "numerator": "37", + "denominator": "4096" + }, + "ring_probability": { + "numerator": "37", + "denominator": "1024" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "421", + "denominator": "512" + }, + "conditional_harris_lower": { + "numerator": "7", + "denominator": "64" + }, + "ring_probability": { + "numerator": "7", + "denominator": "32" + } + } + ] + }, + { + "width": 3, + "height": 4, + "graph": "NN", + "configurations": 4096, + "nonzero_winding_configurations": 2031, + "first_span_cut_witnesses_checked": 2031, + "winding_counts": [ + 0, + 0, + 0, + 4, + 39, + 168, + 414, + 612, + 495, + 220, + 66, + 12, + 1 + ], + "ring_counts": null, + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "4029993759210863599", + "denominator": "1000000000000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "243", + "denominator": "125000" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "1199215", + "denominator": "16777216" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "243", + "denominator": "8" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "2031", + "denominator": "4096" + } + } + ] + }, + { + "width": 3, + "height": 4, + "graph": "matching", + "configurations": 4096, + "nonzero_winding_configurations": 3495, + "first_span_cut_witnesses_checked": 3495, + "winding_counts": [ + 0, + 0, + 0, + 28, + 273, + 696, + 912, + 792, + 495, + 220, + 66, + 12, + 1 + ], + "ring_counts": null, + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "28163313903045558799", + "denominator": "1000000000000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "1323", + "denominator": "125000" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "4768399", + "denominator": "16777216" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "3495", + "denominator": "4096" + } + } + ] + }, + { + "width": 4, + "height": 4, + "graph": "NN", + "configurations": 65536, + "nonzero_winding_configurations": 28977, + "first_span_cut_witnesses_checked": 28977, + "winding_counts": [ + 0, + 0, + 0, + 0, + 8, + 96, + 560, + 2000, + 4788, + 7456, + 7216, + 4336, + 1820, + 560, + 120, + 16, + 1 + ], + "ring_counts": null, + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "8003121011311886033740849", + "denominator": "100000000000000000000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "54", + "denominator": "390625" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "147889201", + "denominator": "4294967296" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "54", + "denominator": "1" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "28977", + "denominator": "65536" + } + } + ] + }, + { + "width": 4, + "height": 4, + "graph": "matching", + "configurations": 65536, + "nonzero_winding_configurations": 56491, + "first_span_cut_witnesses_checked": 56491, + "winding_counts": [ + 0, + 0, + 0, + 0, + 160, + 1504, + 5496, + 10352, + 12662, + 11424, + 8008, + 4368, + 1820, + 560, + 120, + 16, + 1 + ], + "ring_counts": null, + "rational_probability_checks": [ + { + "p": "1/100", + "winding_probability": { + "numerator": "155794089847908319405147243", + "denominator": "100000000000000000000000000000000" + }, + "cut_upper_using_path_mass_lower": { + "numerator": "686", + "denominator": "390625" + } + }, + { + "p": "1/4", + "winding_probability": { + "numerator": "994873963", + "denominator": "4294967296" + } + }, + { + "p": "1/2", + "winding_probability": { + "numerator": "56491", + "denominator": "65536" + } + } + ] + } + ], + "total_graph_configuration_checks": 140288, + "total_cut_witnesses": 91668 +} diff --git a/results/research-control-20260913/oblique-corridor-controls.json b/results/research-control-20260913/oblique-corridor-controls.json new file mode 100644 index 00000000..79b61c4c --- /dev/null +++ b/results/research-control-20260913/oblique-corridor-controls.json @@ -0,0 +1,296 @@ +{ + "schema": "matching-one.oblique-corridor.v1", + "date": "2026-09-13", + "scope": "deterministic NN staircase gluing and finite-group packing; not an RSW computation", + "tiny_exhaustive": [ + { + "u": [ + 4, + 0 + ], + "v": [ + 1, + 3 + ], + "scale": 1, + "N": 12, + "rectangles": 12, + "all_rectangles_inject": true, + "configurations": 4096, + "ring_configurations": 279, + "ring_counts_by_occupation": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 76, + 124, + 66, + 12, + 1 + ], + "implication_failures": [] + }, + { + "u": [ + 4, + 1 + ], + "v": [ + 0, + 4 + ], + "scale": 1, + "N": 16, + "rectangles": 15, + "all_rectangles_inject": true, + "configurations": 65536, + "ring_configurations": 3282, + "ring_counts_by_occupation": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 31, + 210, + 619, + 974, + 870, + 440, + 120, + 16, + 1 + ], + "implication_failures": [] + }, + { + "u": [ + 4, + 2 + ], + "v": [ + 0, + 4 + ], + "scale": 1, + "N": 16, + "rectangles": 18, + "all_rectangles_inject": true, + "configurations": 65536, + "ring_configurations": 2365, + "ring_counts_by_occupation": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 10, + 90, + 332, + 656, + 724, + 416, + 120, + 16, + 1 + ], + "implication_failures": [] + } + ], + "geometry": [ + { + "u": [ + 64, + 0 + ], + "v": [ + 17, + 83 + ], + "scale": 1, + "ell_squared": 4096, + "N": 5312, + "ambient_gcd_u": 64, + "events": 192, + "lifted_support_size": 201, + "max_distance_squared_to_segment": "2", + "rank_of_full_corridor_support": 1 + }, + { + "u": [ + 63, + 16 + ], + "v": [ + -33, + 127 + ], + "scale": 1, + "ell_squared": 4225, + "N": 8529, + "ambient_gcd_u": 1, + "events": 237, + "lifted_support_size": 246, + "max_distance_squared_to_segment": "24649/4225", + "rank_of_full_corridor_support": 1 + }, + { + "u": [ + 32, + 57 + ], + "v": [ + -130, + 85 + ], + "scale": 1, + "ell_squared": 4273, + "N": 10130, + "ambient_gcd_u": 1, + "events": 267, + "lifted_support_size": 276, + "max_distance_squared_to_segment": "21025/4273", + "rank_of_full_corridor_support": 1 + }, + { + "u": [ + 48, + 48 + ], + "v": [ + -80, + 112 + ], + "scale": 1, + "ell_squared": 4608, + "N": 9216, + "ambient_gcd_u": 48, + "events": 288, + "lifted_support_size": 297, + "max_distance_squared_to_segment": "9/2", + "rank_of_full_corridor_support": 1 + }, + { + "u": [ + 128, + 33 + ], + "v": [ + -50, + 263 + ], + "scale": 2, + "ell_squared": 17473, + "N": 35314, + "ambient_gcd_u": 1, + "events": 291, + "lifted_support_size": 830, + "max_distance_squared_to_segment": "264196/17473", + "rank_of_full_corridor_support": 1 + }, + { + "u": [ + -65, + 17 + ], + "v": [ + -35, + -188 + ], + "scale": 1, + "ell_squared": 4514, + "N": 12815, + "ambient_gcd_u": 1, + "events": 246, + "lifted_support_size": 255, + "max_distance_squared_to_segment": "26569/4514", + "rank_of_full_corridor_support": 1 + } + ], + "packing": [ + { + "group_order": 23, + "pattern": [ + 0, + 1, + 4 + ], + "difference_size": 7, + "centers": [ + 0, + 2, + 7, + 9, + 14, + 16 + ], + "cover_inequality": true + }, + { + "group_order": 64, + "pattern": [ + 0, + 2, + 5, + 11 + ], + "difference_size": 13, + "centers": [ + 0, + 1, + 8, + 15, + 16, + 23, + 30, + 31, + 38, + 45, + 46 + ], + "cover_inequality": true + }, + { + "group_order": 101, + "pattern": [ + 0, + 1, + 2, + 8, + 9 + ], + "difference_size": 13, + "centers": [ + 0, + 3, + 13, + 16, + 26, + 29, + 39, + 42, + 52, + 55, + 65, + 68, + 78, + 81, + 91 + ], + "cover_inequality": true + } + ], + "total_exhaustive_configurations": 135168, + "all_implications_hold": true +} diff --git a/scripts/cluster_sewing_identity.py b/scripts/cluster_sewing_identity.py new file mode 100644 index 00000000..a243dc1f --- /dev/null +++ b/scripts/cluster_sewing_identity.py @@ -0,0 +1,332 @@ +#!/usr/bin/env python3 +"""Exact site-cluster sewing, Palm debiasing, and readout of #741 values. + +This is a small finite control, not a re-run of the width-12 builder. +Coordinates are (column,row); horizontal edges retain their integer lift. +Only complete components with minimum row zero are counted. Boundary sites +outside the occupied window are present and carry their correct void weight. +Python standard library only; source logarithms are pinned decimal inputs. +""" +from __future__ import annotations +import argparse +from collections import Counter +from decimal import Decimal, localcontext +from fractions import Fraction +from itertools import product +import json +from pathlib import Path + +Point = tuple[int, int] +STEPS4 = ((1,0),(-1,0),(0,1),(0,-1)) +STEPS8 = tuple((dx,dy) for dx in (-1,0,1) for dy in (-1,0,1) if dx or dy) +SOURCE = '3745b13b8e1126017a1e88567a6af44881b8a1ff' +# Reported values, not recomputed stationary distributions. The original +# certificate bounds are imported, not independently validated here. +RETURNED = { + 'NN': {'p':'1/4', 'logs': {'2':'-2.868379786881457','4':'-5.419513505387646', + '8':'-10.023930900250674','12':'-14.400335955876589'}, 'err12':'5.546825221358631e-10'}, + 'matching': {'p':'1/8', 'logs': {'2':'-3.3390984215201938','4':'-5.742669143987384', + '8':'-10.180101524506828','12':'-14.471261214034028'}, 'err12':'1.4529177860822529e-10'} +} + +def steps(matching: bool): + return STEPS8 if matching else STEPS4 + +def vertices(mask: int, width: int, height: int) -> frozenset[Point]: + return frozenset((i % width, i // width) for i in range(width*height) if mask >> i & 1) + +def components(sites: frozenset[Point], width: int, matching: bool): + """Independent BFS with full horizontal displacement, no vertical seam.""" + unseen = set(sites) + out = [] + while unseen: + root = min(unseen) + unseen.remove(root) + potential = {root:0} + todo = [root] + winding = False + for a in todo: + for dx,dy in steps(matching): + b = ((a[0]+dx) % width, a[1]+dy) + if b not in sites: + continue + value = potential[a]+dx + if b in potential: + residual = value-potential[b] + assert residual % width == 0 + winding |= residual != 0 + else: + potential[b] = value + unseen.remove(b) + todo.append(b) + out.append((frozenset(potential),winding)) + return out + +def dsu_winding(sites: frozenset[Point], width: int, matching: bool) -> bool: + """Independent weighted union/find, with seam gains rather than dx.""" + items = sorted(sites) + index = {v:i for i,v in enumerate(items)} + parent=list(range(len(items))); delta=[0]*len(items); wind=[False]*len(items) + def find(i): + if parent[i]!=i: + old=parent[i]; r,d=find(old) + delta[i]+=d; parent[i]=r + return parent[i],delta[i] + for a in items: + for dx,dy in steps(matching): + b=((a[0]+dx)%width,a[1]+dy) + if b not in index: + continue + i,j=index[a],index[b] + ri,di=find(i); rj,dj=find(j) + gain=(a[0]+dx)//width + if ri==rj: + wind[ri] |= dj-di != gain + else: + parent[rj]=ri; delta[rj]=gain+di-dj + wind[ri] |= wind[rj] + return any(wind[find(i)[0]] for i in range(len(items))) + +def boundary_direct(sites: frozenset[Point], width: int, matching: bool) -> frozenset[Point]: + return frozenset(((x+dx)%width,y+dy) for x,y in sites for dx,dy in steps(matching))-sites + +def boundary_columns(sites: frozenset[Point], width: int, matching: bool): + cols=[{y for x,y in sites if x==i} for i in range(width)] + out=[] + for i,s in enumerate(cols): + b={y+d for y in s for d in (-1,1)} + for neighbor in (cols[(i-1)%width],cols[(i+1)%width]): + b.update(y+d for y in neighbor for d in ((-1,0,1) if matching else (0,))) + out.append(frozenset(b-s)) + return cols,out + +def seam_marks(sites: frozenset[Point], width: int, matching: bool): + # Mark every oriented edge crossing the *fixed* seam w-1 -> 0. + # The row convention for a diagonal is its tail's row. + edges=tuple(((width-1,y),(0,y+dy)) for x,y in sorted(sites) if x==width-1 + for dy in ((-1,0,1) if matching else (0,)) if (0,y+dy) in sites) + return edges + +def shape_table(width: int, height: int, matching: bool): + """All complete candidate shapes, min row 0, contained in rows [0,H).""" + table=Counter(); masks=0; connected_winding=0 + for mask in range(1,1 << (width*height)): + c=vertices(mask,width,height) + cols,bs=boundary_columns(c,width,matching) + direct=boundary_direct(c,width,matching) + assert direct==frozenset((i,y) for i,b in enumerate(bs) for y in b) + parts=components(c,width,matching) + assert any(w for _,w in parts)==dsu_winding(c,width,matching) + masks+=1 + if len(parts)!=1 or not parts[0][1] or min(y for _,y in c)!=0: + continue + marks=seam_marks(c,width,matching) + assert marks + table[(len(c),len(direct),len(marks),len({a[1] for a,b in marks}))]+=1 + connected_winding+=1 + return table,{'nonempty_masks':masks,'anchored_winding_shapes':connected_winding} + +def evaluate_table(table, p: Fraction, mode: str='edges'): + """A component-Palm law and its c-size-biased marked law.""" + weights=Counter() + for (n,b,ce,cr),multiplicity in table.items(): + c=ce if mode=='edges' else cr + weights[c]+=multiplicity*p**n*(1-p)**b + nu=sum(weights.values(),Fraction()) + mu=sum((c*a for c,a in weights.items()),Fraction()) + if not nu: + raise ValueError('no winding shape in this window') + e_c=mu/nu + e_inv_component=sum((a/c for c,a in weights.items()),Fraction())/nu + # Mark-Palm probability is c*a/mu, NOT a/nu. + e_inv_mark=sum((c*a/mu/Fraction(c) for c,a in weights.items()),Fraction()) + assert mu*e_inv_mark==nu and e_inv_mark==1/e_c + return {'nu_truncated':str(nu),'marked_intensity':str(mu), + 'component_mean_c':str(e_c), + 'component_mean_inverse_c':str(e_inv_component), + 'mark_mean_inverse_c':str(e_inv_mark), + 'wrong_component_reciprocal_estimate':str(mu*e_inv_component), + 'c_weights':{str(c):str(a) for c,a in sorted(weights.items())}} + +def guard_enumeration(width: int, height: int, matching: bool, p: Fraction): + """Enumerate H+2 actual rows; require target component min row 1, + max row <= H. Guards are random; unrelated guard sites are NOT forced shut. + Returns a direct product-measure expectation and the number enumerated. + """ + n=width*(height+2) + by_k=Counter() + for mask in range(1 << n): + s=vertices(mask,width,height+2) + count=sum(w and min(y for _,y in c)==1 and max(y for _,y in c)<=height + for c,w in components(s,width,matching)) + by_k[mask.bit_count()]+=count + val=sum((Fraction(c)*p**k*(1-p)**(n-k) for k,c in by_k.items()),Fraction()) + return val,1 << n + +def exact_marking_counterexample(): + # C=[full bottom ring]+two separated teeth in the upper row. + c=frozenset([(x,0) for x in range(4)]+[(0,1),(2,1)]) + cols,bs=boundary_columns(c,4,False) + sum_contacts=0 + for x,y in c: + sum_contacts+=sum(((x+dx)%4,y+dy) not in c for dx,dy in STEPS4) + return {'sites':sorted(c),'occupied':len(c),'external_void_sites':len(boundary_direct(c,4,False)), + 'open_to_void_incidences':sum_contacts,'void_rows_by_column':[sorted(b) for b in bs], + 'overcount_if_weighted_per_incidence':sum_contacts-len(boundary_direct(c,4,False))} + + +def matmul(a, b): + n=len(a) + return [[sum((a[i][k]*b[k][j] for k in range(n)),Fraction()) + for j in range(n)] for i in range(n)] + +def two_row_transfer_trace(width: int, matching: bool, p: Fraction) -> Fraction: + """Exact complete winding-component activity inside a two-row strip. + + Column symbols 1,2,3 are nonempty subsets of the two rows. For NN, + consecutive symbols must overlap; for matching they all communicate. + Pair states retain the external-boundary overlap memory exactly. + """ + alphabet=(1,2,3) + def compatible(a,b): return matching or bool(a&b) + states=[(a,b) for a in alphabet for b in alphabet if compatible(a,b)] + ix={s:i for i,s in enumerate(states)} + k=[[Fraction() for _ in states] for _ in states] + def rows(a): return {r for r in (0,1) if a>>r&1} + for i,(a,b) in enumerate(states): + sb=rows(b) + for c in alphabet: + if not compatible(b,c): continue + void={y+d for y in sb for d in (-1,1)} + for t in (rows(a),rows(c)): + void.update(y+d for y in t for d in ((-1,0,1) if matching else (0,))) + void-=sb + k[i][ix[b,c]]=p**len(sb)*(1-p)**len(void) + result=[[Fraction(i==j) for j in range(len(states))] for i in range(len(states))] + power=k + t=width + while t: + if t&1: result=matmul(result,power) + t//=2 + if t: power=matmul(power,power) + return sum((result[i][i] for i in range(len(states))),Fraction()) + +def range_cdf(h: Decimal) -> Decimal: + """Brownian-bridge RANGE CDF, not a proven site-cluster limit. + + Spectral series for small h, Poisson-dual series for large h. + 65-digit Decimal with an 60-digit internal truncation threshold. + """ + if h<=0: return Decimal(0) + with localcontext() as ctx: + ctx.prec=65 + pi=Decimal('3.1415926535897932384626433832795028841971693993751058209749445923078') + eps=Decimal('1e-60') + if h<=Decimal('1.4'): + answer=Decimal(0) + for n in range(1,10000): + term=pi*pi*n*n/h**3 * (-pi*pi*n*n/(2*h*h)).exp() + answer+=term + if termb.""" + def __init__(self, n: int) -> None: + self.parent = list(range(n)) + self.delta = [0] * n + self.winding = [False] * n + + def find(self, a: int) -> tuple[int, int]: + if self.parent[a] != a: + root, shift = self.find(self.parent[a]) + self.delta[a] += shift + self.parent[a] = root + return self.parent[a], self.delta[a] + + def join(self, a: int, b: int, gain: int) -> None: + ra, da = self.find(a) + rb, db = self.find(b) + if ra == rb: + self.winding[ra] |= db - da != gain + else: + self.parent[rb] = ra + self.delta[rb] = gain + da - db + self.winding[ra] |= self.winding[rb] + + +def empty_state(width: int) -> State: + if width < 2: + raise ValueError('width must be at least two; retain lifted parallel edges') + return State((-1,) * width, (0,) * width, ()) + + +def advance(state: State, mask: int, matching: bool = False) -> tuple[State, int]: + """Append one spatial row; reward every retired winding component once.""" + width = len(state.labels) + if not 0 <= mask < 1 << width: + raise ValueError('row mask outside width') + dsu = GainDSU(2 * width) + old = [i for i, k in enumerate(state.labels) if k >= 0] + new = [i for i in range(width) if mask >> i & 1] + representatives: dict[int, int] = {} + for i in old: + k = state.labels[i] + if k in representatives: + dsu.join(representatives[k], i, state.gains[i]) + else: + representatives[k] = i + for k, i in representatives.items(): + dsu.winding[dsu.find(i)[0]] = bool(state.winding[k]) + for i in new: + j = (i + 1) % width + if mask >> j & 1: + dsu.join(width + i, width + j, (i + 1) // width) + for dx in ((-1, 0, 1) if matching else (0,)): + j = (i + dx) % width + if state.labels[j] >= 0: + dsu.join(width + i, j, (i + dx) // width) + all_roots = {dsu.find(i)[0] for i in old + [width + i for i in new]} + kept_roots = {dsu.find(width + i)[0] for i in new} + reward = sum(dsu.winding[r] for r in all_roots - kept_roots) + labels = [-1] * width + gains = [0] * width + flags: list[int] = [] + root_map: dict[int, tuple[int, int]] = {} + for i in new: + root, potential = dsu.find(width + i) + if root not in root_map: + root_map[root] = (len(flags), potential) + flags.append(int(dsu.winding[root])) + k, origin = root_map[root] + labels[i] = k + gains[i] = 0 if dsu.winding[root] else potential - origin + return State(tuple(labels), tuple(gains), tuple(flags)), int(reward) + + +def build_transfer(width: int, matching: bool = False, + state_cap: int = 5000) -> tuple[list[State], list[list[tuple[int, int]]]]: + """BFS exhausts every row successor; fail explicitly at the chosen cap.""" + if width > 10: + raise ValueError('reference Python builder limited to width <=10') + states = [empty_state(width)] + index = {states[0]: 0} + transfer: list[list[tuple[int, int]]] = [] + for state in states: + row = [] + for mask in range(1 << width): + nxt, reward = advance(state, mask, matching) + if nxt not in index: + if len(states) >= state_cap: + raise RuntimeError('state cap reached; no incomplete closure returned') + index[nxt] = len(states) + states.append(nxt) + row.append((index[nxt], reward)) + transfer.append(row) + return states, transfer + + +def reward_lump(transfer: list[list[tuple[int, int]]]) -> tuple[list[list[tuple[int, int]]], list[int]]: + """Common all-p stochastic lumping retaining the joint next-class/reward law. + + This is not a claimed minimal positive/linear realization. Coefficients are + grouped by the new row's number of occupied sites, not numeric p samples. + """ + blocks = [0] * len(transfer) + while True: + classes: dict[tuple, int] = {} + refined = [] + for row in transfer: + counts = Counter((mask.bit_count(), reward, blocks[j]) + for mask, (j, reward) in enumerate(row)) + signature = tuple(sorted(counts.items())) + if signature not in classes: + classes[signature] = len(classes) + refined.append(classes[signature]) + if refined == blocks: + break + blocks = refined + reduced = [[(blocks[j], reward) for j, reward in transfer[blocks.index(k)]] + for k in range(max(blocks) + 1)] + return reduced, blocks + + +def row_weights(width: int, p: Fraction) -> list[Fraction]: + if not 0 <= p <= 1: + raise ValueError('p outside [0,1]') + return [p ** mask.bit_count() * (1 - p) ** (width - mask.bit_count()) + for mask in range(1 << width)] + + +def solve_fraction(a: list[list[Fraction]], b: list[Fraction]) -> list[Fraction]: + """Exact Gauss-Jordan solve with explicit singularity checking.""" + n = len(b) + if len(a) != n or any(len(row) != n for row in a): + raise ValueError('matrix must be square') + mat = [[Fraction(x) for x in row] + [Fraction(rhs)] for row, rhs in zip(a, b)] + for j in range(n): + pivot = next((i for i in range(j, n) if mat[i][j]), None) + if pivot is None: + raise ValueError('singular exact linear system') + mat[j], mat[pivot] = mat[pivot], mat[j] + v = mat[j][j] + mat[j] = [x / v for x in mat[j]] + for i in range(n): + if i != j and mat[i][j]: + v = mat[i][j] + mat[i] = [x - v * y for x, y in zip(mat[i], mat[j])] + return [row[-1] for row in mat] + + +def stationary_reward(transfer: list[list[tuple[int, int]]], p: Fraction) -> dict: + if not 0 < p < 1: + raise ValueError('stationary pressure calculation requires 0= 0 + return {'mean': mean, 'variance_rate': variance, 'stationary': stationary} + + +def stationary_certificate(transfer: list[list[tuple[int, int]]], p: Fraction, + candidate: list[Fraction]) -> dict: + """A rigorous forward-error bound, via the common empty-row reset. + + Candidate must be a probability vector. All arithmetic here is rational; + floating residuals supplied without outward rounding are not certificates. + """ + n = len(transfer) + if len(candidate) != n or min(candidate) < 0 or sum(candidate) != 1: + raise ValueError('candidate must be a normalized nonnegative vector') + if not 0 < p < 1: + raise ValueError('requires interior probability') + if any(row[0][0] != 0 for row in transfer): + raise ValueError('empty-row reset must lead to state zero') + width = (len(transfer[0])-1).bit_length() + weights = row_weights(width, p) + pushed = [Fraction(0)]*n + rewards = [Fraction(0)]*n + for i, row in enumerate(transfer): + for weight, (j, reward) in zip(weights, row): + pushed[j] += candidate[i]*weight + rewards[i] += weight*reward + residual = sum(abs(a-b) for a,b in zip(pushed, candidate)) + reset = (1-p)**width + estimate = sum(a*b for a,b in zip(candidate, rewards)) + error = max(rewards)*residual/reset + return {'estimate': estimate, 'absolute_error_bound': error, + 'lower': max(Fraction(0), estimate-error), 'upper': estimate+error, + 'stationarity_l1_residual': residual, 'empty_row_reset': reset} + + +def symbolic_intensity(transfer: list[list[tuple[int, int]]]) -> dict: + import sympy as sp + from sympy.polys.matrices import DomainMatrix + p = sp.Symbol('p') + width = (len(transfer[0]) - 1).bit_length() + n = len(transfer) + k = sp.zeros(n) + g = sp.zeros(n, 1) + for i, row in enumerate(transfer): + for mask, (j, reward) in enumerate(row): + probability = p ** mask.bit_count() * (1-p) ** (width-mask.bit_count()) + k[i, j] += probability + g[i] += probability * reward + eq = (k.T - sp.eye(n)).applyfunc(sp.expand) + eq[-1, :] = sp.ones(1, n) + rhs = sp.zeros(n, 1) + rhs[-1] = 1 + dm = DomainMatrix.from_Matrix(eq).to_field() + solution = dm.inv().matmul(DomainMatrix.from_Matrix(rhs).convert_to(dm.domain)).to_Matrix() + expression = sp.factor((solution.T * g)[0]) + num, den = sp.fraction(expression) + return {'expression': str(expression), + 'numerator_descending': [int(x) for x in sp.Poly(num, p).all_coeffs()], + 'denominator_descending': [int(x) for x in sp.Poly(den, p).all_coeffs()], + 'low_p_through_8': str(sp.series(expression, p, 0, 9))} + + +def evaluate_polynomial(coefficients: list[int], p: Fraction) -> Fraction: + out = Fraction(0) + for x in coefficients: + out = out * p + x + return out + + +def graph_components(mask: int, width: int, height: int, + matching: bool = False, torus: bool = False) -> tuple[int, int]: + """Independent BFS, raw (dx,dy) potentials. Return rank and essential count. + + No production DSU, frontier state, reward, or reduction is used here. + In a free cylinder only horizontal winding can occur. Parallel lifted + edges on width two are deliberately retained. + """ + steps = [(1, 0), (-1, 0), (0, 1), (0, -1)] + if matching: + steps += [(1, 1), (1, -1), (-1, 1), (-1, -1)] + potential: dict[int, tuple[int, int]] = {} + generators: list[tuple[int, int]] = [] + count = 0 + for start in range(width * height): + if not (mask >> start & 1) or start in potential: + continue + potential[start] = (0, 0) + todo = [start] + essential = False + while todo: + v = todo.pop() + x, y = v % width, v // width + vx, vy = potential[v] + for dx, dy in steps: + ny = y + dy + if not torus and not 0 <= ny < height: + continue + j = (ny % height) * width + (x + dx) % width + if not (mask >> j & 1): + continue + proposed = (vx + dx, vy + dy) + if j not in potential: + potential[j] = proposed + todo.append(j) + else: + gx, gy = proposed[0] - potential[j][0], proposed[1] - potential[j][1] + if gx or gy: + essential = True + generators.append((gx, gy)) + count += essential + if not generators: + return 0, int(count) + x, y = generators[0] + rank = 2 if any(x*b-y*a for a, b in generators) else 1 + return rank, int(count) + + +def reward_count(mask: int, width: int, height: int, + transfer: list[list[tuple[int, int]]]) -> int: + state = 0 + count = 0 + for y in range(height): + row_mask = mask >> (width*y) & ((1 << width)-1) + state, reward = transfer[state][row_mask] + count += reward + _, final_reward = transfer[state][0] # a deliberate EMPTY closing row + return count + final_reward + + +def reward_histogram(width: int, height: int, transfer: list[list[tuple[int, int]]]) -> Counter: + """Count law by total occupancy, not a false configurationwise lumping claim.""" + current = Counter({(0, 0, 0): 1}) + for _ in range(height): + nxt = Counter() + for (state, occupied, count), coefficient in current.items(): + for mask, (j, reward) in enumerate(transfer[state]): + nxt[j, occupied+mask.bit_count(), count+reward] += coefficient + current = nxt + histogram = Counter() + for (state, occupied, count), coefficient in current.items(): + reward = transfer[state][0][1] + histogram[occupied, count+reward] += coefficient + return histogram + + +def central_trinomial(n: int) -> int: + return sum(comb(n, k) * comb(n-k, k) for k in range(n//2+1)) + + +def renewal_controls() -> dict: + """Exactly solvable directed renewal LOOP; not a site-cluster theorem.""" + controls = [] + for w in (8, 16, 32, 64, 128): + c = [central_trinomial(k*w) for k in (1, 2, 3)] + ratio = Fraction(c[0]*c[2], c[1]**2) # 3 powers and exponential fugacity cancel + beta_eff = log(float(ratio)) / log(4/3) + amplitude_ratio = float(Fraction(c[0], 3**w)) * sqrt(w) / sqrt(3/(4*pi)) + controls.append({'width': w, 'exact_tripling_ratio': str(ratio), + 'effective_beta': beta_eff, + 'normalized_amplitude': amplitude_ratio}) + return {'model': 'X=1, Y=-1,0,1 with equal probabilities; distinct from site percolation', + 'predicted_beta': '1/2', 'transverse_diffusion': '2/3', + 'predicted_amplitude_squared_times_pi': '3/4', 'controls': controls} + + +def centering_counterexample() -> list[dict]: + """C1/semiconcave mass is insufficient for an o(1/w) linearized centre. + + Exact model on h>0: kappa(a+h)=d-h-h/log(e/h). The intensity is + w^{-1} exp(-w*kappa) and log m=dw. At intensity level one, solve + h+h/log(e/h)=log(w)/w. Then w*(h-log(w)/w) -> -1, not zero. + Numbers below are Decimal diagnostics; the limit has a direct proof. + """ + from decimal import Decimal, localcontext + result=[] + with localcontext() as ctx: + ctx.prec=80 + for exponent in (4,8,16,32): + w=Decimal(10)**exponent + linear=w.ln()/w + lo,hi=Decimal(0),linear + for _ in range(400): + h=(lo+hi)/2 + if h+h/(1-h.ln()) dict: + import sympy as sp + start = perf_counter() + tables = {} + generators = [] + physical_checks = 0 + symbolic_checks = 0 + for width in (2, 3, 4): + for matching in (False, True): + states, transfer = build_transfer(width, matching) + reduced, blocks = reward_lump(transfer) + tables[width, matching] = transfer + expression = symbolic_intensity(reduced) + point_controls = [] + for p in (Fraction(1, 4), Fraction(1, 2), Fraction(3, 4)): + exact = stationary_reward(reduced, p) + rational = evaluate_polynomial(expression['numerator_descending'], p) / evaluate_polynomial(expression['denominator_descending'], p) + assert exact['mean'] == rational + point_controls.append({'p': str(p), 'intensity': str(exact['mean']), + 'variance_per_row': str(exact['variance_rate']), + 'fano_rate': str(exact['variance_rate']/exact['mean'])}) + truncated = [Fraction(int(x*(1 << 20)), 1 << 20) for x in exact['stationary']] + truncated[0] += 1-sum(truncated) + certificate = stationary_certificate(reduced, p, truncated) + assert certificate['lower'] <= exact['mean'] <= certificate['upper'] + point_controls[-1]['rounded_stationary_certificate'] = {k: str(v) for k,v in certificate.items()} + symbolic_checks += 1 + height = 4 + histogram = Counter() + for mask in range(1 << (width*height)): + _, observed = graph_components(mask, width, height, matching, torus=False) + assert reward_count(mask, width, height, transfer) == observed + histogram[mask.bit_count(), observed] += 1 + physical_checks += 1 + assert reward_histogram(width, height, reduced) == histogram + generators.append({'width': width, 'graph': 'matching' if matching else 'NN', + 'frontier_states': len(states), 'reward_lumps': len(reduced), + 'max_absolute_gain': max(abs(v) for state in states for v in state.gains), + 'transition_entries': len(states)*(1 << width), + 'symbolic_intensity': expression, + 'point_controls': point_controls, + 'states': [list(state) for state in states], + 'transition_table': transfer, 'reward_lump_map': blocks, + 'reduced_table': reduced}) + p = sp.Symbol('p') + for w in (2, 3, 4): + g4 = next(g for g in generators if g['width']==w and g['graph']=='NN') + g8 = next(g for g in generators if g['width']==w and g['graph']=='matching') + e4 = sp.sympify(g4['symbolic_intensity']['expression']) + e8 = sp.sympify(g8['symbolic_intensity']['expression']) + assert sp.cancel(e4-e8.subs(p,1-p)) == 0 + for point in g4['point_controls']: + paired = next(v for v in g8['point_controls'] if Fraction(v['p'])==1-Fraction(point['p'])) + assert paired['intensity'] == point['intensity'] + assert paired['variance_per_row'] == point['variance_per_row'] + duality_checks = 0 + joint_support = set() + for width, height in ((2,2), (3,3), (4,4)): + full = (1 << (width*height)) - 1 + for mask in range(full+1): + rank4, n4 = graph_components(mask, width, height, False, torus=True) + rank8, n8 = graph_components(full^mask, width, height, True, torus=True) + assert rank4+rank8 == 2 + assert n4-n8 == rank4-1 + assert (n4,n8) in ((1,0),(0,1)) or n4==n8>=1 + joint_support.add((n4,n8)) + duality_checks += 1 + return {'schema': 'matching-one.cylinder-winding-intensity.v1', + 'scope': 'two graphs; exact fixed-width component rewards, not a large-width prefactor proof', + 'models': generators, + 'checks': {'open_cylinder_graph_configurations': physical_checks, + 'torus_complement_pairs': duality_checks, + 'symbolic_point_controls': symbolic_checks, + 'all_p_duality_identities': 3, + 'joint_torus_support_observed': sorted(joint_support)}, + 'renewal': renewal_controls(), + 'centering_counterexample': centering_counterexample(), + 'elapsed_seconds': perf_counter()-start} + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output', type=Path) + parser.add_argument('--probe-width', type=int) + parser.add_argument('--state-cap', type=int, default=5000) + args = parser.parse_args() + if args.probe_width is not None: + start = perf_counter() + states, transfer = build_transfer(args.probe_width, state_cap=args.state_cap) + print(json.dumps({'width': args.probe_width, 'states': len(states), + 'transition_entries': sum(map(len,transfer)), + 'elapsed_seconds': perf_counter()-start}, indent=2)) + return + if args.output is None: + parser.error('--output is required unless --probe-width is used') + if args.output.exists(): + raise FileExistsError(f'refusing to overwrite {args.output}') + result = run_report() + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(result, indent=2)+'\n', encoding='utf-8') + print(json.dumps(result['checks'], indent=2)) + print(f'elapsed_seconds={result["elapsed_seconds"]:.3f}') + + +if __name__ == '__main__': + main() diff --git a/scripts/cylinder_winding_intensity_fast.cpp b/scripts/cylinder_winding_intensity_fast.cpp new file mode 100644 index 00000000..1fa02227 --- /dev/null +++ b/scripts/cylinder_winding_intensity_fast.cpp @@ -0,0 +1,292 @@ +// Faithful, allocation-free C++ port of the supplied one-frontier winding-component +// transfer (scripts/cylinder_winding_intensity.py). advance()/empty_state()/ +// reward_lump() semantics are reproduced exactly; only the width limit and the +// dense Fraction linear algebra of the Python reference are changed. +// +// Output: the reward-preserving lumped chain aggregated by row popcount, i.e. all +// that is needed to evaluate nu_w(p) as an exact rational downstream. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +static inline int floordiv(int a, int b) { // Python // semantics; C++ / truncates + return (a >= 0) ? (a / b) : -(((-a) + b - 1) / b); +} + +static const int MAXW = 16; +static const int MAXN = 4 * MAXW; // 2*width DSU nodes + +struct DSU { + int parent[MAXN], delta[MAXN]; + uint8_t wind[MAXN]; + void init(int n) { + for (int i = 0; i < n; ++i) { parent[i] = i; delta[i] = 0; wind[i] = 0; } + } + inline int find(int a, int &pot) { + // iterative path compression + int root = a, acc = 0; + while (parent[root] != root) { acc += delta[root]; root = parent[root]; } + // second pass: compress, accumulating potential relative to root + int cur = a, run = 0; + while (parent[cur] != cur) { + int nxt = parent[cur]; + int d = delta[cur]; + parent[cur] = root; + delta[cur] = acc - run; + run += d; + cur = nxt; + } + pot = (a == root) ? 0 : delta[a]; + return root; + } + inline void join(int a, int b, int gain) { + int da, db; + int ra = find(a, da), rb = find(b, db); + if (ra == rb) { wind[ra] |= (uint8_t)(db - da != gain); } + else { parent[rb] = ra; delta[rb] = gain + da - db; wind[ra] |= wind[rb]; } + } +}; + +struct State { + int16_t labels[MAXW]; // -1 when unoccupied + int16_t gains[MAXW]; + uint8_t flags[MAXW]; + int nflags; +}; + +static inline void pack_state(const State &s, int W, string &out) { + out.resize((size_t)W * 2 + s.nflags); + size_t p = 0; + for (int i = 0; i < W; ++i) out[p++] = (char)(s.labels[i] & 0xFF); + for (int i = 0; i < W; ++i) out[p++] = (char)(s.gains[i] & 0xFF); + for (int i = 0; i < s.nflags; ++i) out[p++] = (char)s.flags[i]; +} + +struct KeyHash { + inline size_t operator()(const string &k) const { + size_t h = 1469598103934665603ULL; + const unsigned char *p = (const unsigned char *)k.data(); + size_t n = k.size(); + for (size_t i = 0; i < n; ++i) { h ^= p[i]; h *= 1099511628211ULL; } + return h; + } +}; + +// Returns reward; writes the successor into `nx`. +static inline int advance(const State &st, int mask, int W, bool matching, State &nx) { + static DSU dsu; + static int oldv[MAXW], newv[MAXW]; + static int rep_of[MAXW]; // label -> first site + static int root_of[MAXW]; // label -> root + static int allroots[MAXN], keptroots[MAXN]; + int nold = 0, nnew = 0; + for (int i = 0; i < W; ++i) if (st.labels[i] >= 0) oldv[nold++] = i; + for (int i = 0; i < W; ++i) if ((mask >> i) & 1) newv[nnew++] = i; + + dsu.init(2 * W); + for (int t = 0; t < W; ++t) rep_of[t] = -1; + for (int t = 0; t < nold; ++t) { + int i = oldv[t], k = st.labels[i]; + if (rep_of[k] < 0) rep_of[k] = i; + else dsu.join(rep_of[k], i, st.gains[i]); + } + for (int k = 0; k < W; ++k) if (rep_of[k] >= 0) { + int pot; int r = dsu.find(rep_of[k], pot); + dsu.wind[r] = (uint8_t)(st.flags[k] != 0); + root_of[k] = r; + } + (void)root_of; + for (int t = 0; t < nnew; ++t) { + int i = newv[t]; + int j = i + 1; if (j == W) j = 0; + if ((mask >> j) & 1) dsu.join(W + i, W + j, (i + 1) / W); + int lo = matching ? -1 : 0, hi = matching ? 1 : 0; + for (int dx = lo; dx <= hi; ++dx) { + int jj = (i + dx) % W; if (jj < 0) jj += W; + if (st.labels[jj] >= 0) dsu.join(W + i, jj, floordiv(i + dx, W)); + } + } + int na = 0, nk = 0; + for (int t = 0; t < nold; ++t) { int p2; allroots[na++] = dsu.find(oldv[t], p2); } + for (int t = 0; t < nnew; ++t) { int p2; keptroots[nk++] = dsu.find(W + newv[t], p2); } + sort(allroots, allroots + na); na = (int)(unique(allroots, allroots + na) - allroots); + sort(keptroots, keptroots + nk); nk = (int)(unique(keptroots, keptroots + nk) - keptroots); + int reward = 0; + for (int a = 0, b = 0; a < na; ++a) { + while (b < nk && keptroots[b] < allroots[a]) ++b; + if (b >= nk || keptroots[b] != allroots[a]) reward += dsu.wind[allroots[a]] ? 1 : 0; + } + // build successor + nx.nflags = 0; + for (int i = 0; i < W; ++i) { nx.labels[i] = -1; nx.gains[i] = 0; } + static int tag[MAXN], origin[MAXN]; + for (int i = 0; i < 2 * W; ++i) tag[i] = -1; + for (int t = 0; t < nnew; ++t) { + int i = newv[t]; + int pot; int r = dsu.find(W + i, pot); + if (tag[r] < 0) { tag[r] = nx.nflags; origin[r] = pot; nx.flags[nx.nflags++] = dsu.wind[r] ? 1 : 0; } + nx.labels[i] = (int16_t)tag[r]; + nx.gains[i] = (int16_t)(dsu.wind[r] ? 0 : pot - origin[r]); + } + return reward; +} + +int main(int argc, char **argv) { + if (argc < 3) { fprintf(stderr, "usage: %s WIDTH 0|1(matching) [out.json]\n", argv[0]); return 2; } + int W = atoi(argv[1]); + bool matching = atoi(argv[2]) != 0; + const char *outpath = (argc > 3) ? argv[3] : nullptr; + if (W < 2 || W > MAXW) { fprintf(stderr, "width out of range\n"); return 2; } + auto t0 = chrono::steady_clock::now(); + + State empty; for (int i = 0; i < W; ++i) { empty.labels[i] = -1; empty.gains[i] = 0; } + empty.nflags = 0; + + vector states; states.push_back(empty); + unordered_map index; + index.reserve(1 << 20); + { string k; pack_state(empty, W, k); index[k] = 0; } + + string kb; + State nxt, cur; + size_t cursor = 0; + while (cursor < states.size()) { + cur = states[cursor]; + for (int mask = 0; mask < (1 << W); ++mask) { + advance(cur, mask, W, matching, nxt); + pack_state(nxt, W, kb); + auto it = index.find(kb); + if (it == index.end()) { + index.emplace(kb, (int)states.size()); + states.push_back(nxt); + } + } + ++cursor; + if ((cursor & 32767) == 0) + fprintf(stderr, " bfs states=%zu t=%.1fs\n", states.size(), + chrono::duration(chrono::steady_clock::now() - t0).count()); + } + size_t nstates = states.size(); + double tBFS = chrono::duration(chrono::steady_clock::now() - t0).count(); + fprintf(stderr, "BFS width=%d matching=%d states=%zu transitions=%zu t=%.1fs\n", + W, (int)matching, nstates, nstates * (size_t)(1 << W), tBFS); + + // ---- cache the transition table so refinement/aggregation do not recompute ---- + const size_t MASKS = (size_t)1 << W; + fprintf(stderr, "caching transition table: %zu entries (%.2f GB)\n", + nstates * MASKS, (double)nstates * MASKS * 4 / 1073741824.0); + vector tab(nstates * MASKS); + for (size_t i = 0; i < nstates; ++i) { + cur = states[i]; + uint32_t *rowp = &tab[i * MASKS]; + for (int mask = 0; mask < (int)MASKS; ++mask) { + int rw = advance(cur, mask, W, matching, nxt); + pack_state(nxt, W, kb); + int j = index.find(kb)->second; + rowp[mask] = ((uint32_t)j << 3) | (uint32_t)(rw & 7); + } + } + fprintf(stderr, "table cached t=%.1fs\n", chrono::duration(chrono::steady_clock::now() - t0).count()); + + vector blocks(nstates, 0); + static vector cnt, stamp, touched; + int curstamp = 0; + int iter = 0; + for (;;) { + map classes; + vector refined(nstates); + int maxblock = *max_element(blocks.begin(), blocks.end()) + 1; + size_t sz = (size_t)(W + 1) * 8 * maxblock; + if ((int)cnt.size() < (int)sz) { cnt.assign(sz, 0); stamp.assign(sz, 0); curstamp = 0; } + for (size_t i = 0; i < nstates; ++i) { + ++curstamp; + touched.clear(); + cur = states[i]; + const uint32_t *rowp = &tab[i * MASKS]; + for (int mask = 0; mask < (int)MASKS; ++mask) { + uint32_t v = rowp[mask]; + int j = (int)(v >> 3), rw = (int)(v & 7); + int pc = __builtin_popcount((unsigned)mask); + size_t idx = ((size_t)pc * 8 + (size_t)rw) * maxblock + blocks[j]; + if (stamp[idx] != curstamp) { stamp[idx] = curstamp; cnt[idx] = 0; touched.push_back((int)idx); } + cnt[idx] += 1; + } + sort(touched.begin(), touched.end()); + string sig; + char buf[48]; + for (int idx : touched) { + int b = idx % maxblock; int rest = idx / maxblock; + int rw = rest % 8; int pc = rest / 8; + snprintf(buf, sizeof buf, "%d.%d.%d=%d;", pc, rw, b, cnt[idx]); + sig += buf; + } + auto it = classes.find(sig); + if (it == classes.end()) { int id = (int)classes.size(); classes.emplace(sig, id); refined[i] = id; } + else refined[i] = it->second; + } + ++iter; + bool same = (refined == blocks); + blocks = refined; + int nb = *max_element(blocks.begin(), blocks.end()) + 1; + fprintf(stderr, " lump iter %d -> %d classes t=%.1fs\n", iter, nb, + chrono::duration(chrono::steady_clock::now() - t0).count()); + if (same) break; + if (iter > 40) { fprintf(stderr, "no stabilisation\n"); return 3; } + } + int nblocks = *max_element(blocks.begin(), blocks.end()) + 1; + + // one REPRESENTATIVE state per block, matching reward_lump's blocks.index(k) + vector first_of_block(nblocks, -1); + for (size_t i = 0; i < nstates; ++i) { int b = blocks[i]; if (first_of_block[b] < 0) first_of_block[b] = (int)i; } + vector, long long>> flat((size_t)nblocks * (W + 1)); + for (int b = 0; b < nblocks; ++b) { + const uint32_t *rowp = &tab[(size_t)first_of_block[b] * MASKS]; + for (int mask = 0; mask < (int)MASKS; ++mask) { + uint32_t v = rowp[mask]; + int j = (int)(v >> 3), rw = (int)(v & 7); + int pc = __builtin_popcount((unsigned)mask); + flat[(size_t)b * (W + 1) + pc][make_pair(blocks[j], rw)] += 1; + } + } + + string js; + char buf[256]; + snprintf(buf, sizeof buf, + "{\"width\":%d,\"matching\":%s,\"states\":%zu,\"lump_blocks\":%d,\"bfs_seconds\":%.3f,\"rows\":[", + W, matching ? "true" : "false", nstates, nblocks, tBFS); + js += buf; + for (int b = 0; b < nblocks; ++b) { + js += "["; + for (int m = 0; m <= W; ++m) { + js += "["; + bool first = true; + for (auto &kv : flat[(size_t)b * (W + 1) + m]) { + if (!first) js += ","; + first = false; + snprintf(buf, sizeof buf, "[%d,%d,%lld]", kv.first.first, kv.first.second, kv.second); + js += buf; + } + js += "]"; + if (m < W) js += ","; + } + js += "]"; + if (b + 1 < nblocks) js += ","; + } + js += "]}"; + if (outpath) { FILE *f = fopen(outpath, "w"); fputs(js.c_str(), f); fclose(f); } + else fputs(js.c_str(), stdout); + fprintf(stderr, "DONE width=%d matching=%d states=%zu blocks=%d total=%.1fs\n", W, (int)matching, + nstates, nblocks, chrono::duration(chrono::steady_clock::now() - t0).count()); + return 0; +} diff --git a/scripts/oblique_winding_corridor.py b/scripts/oblique_winding_corridor.py new file mode 100644 index 00000000..e5698dd0 --- /dev/null +++ b/scripts/oblique_winding_corridor.py @@ -0,0 +1,327 @@ +#!/usr/bin/env python3 +"""Finite controls for a staircase of NN crossings around an integer period. + +The probability theorem is in docs/manuscripts/geometric-balance/manuscript.md. +This script does not estimate p_c or prove the imported RSW/sharpness inputs. +All geometry and graph calculations below use integers / Fraction. +""" +from __future__ import annotations + +import argparse +import json +from collections import deque +from dataclasses import dataclass +from fractions import Fraction +from math import gcd, isqrt +from pathlib import Path +from typing import Iterable + +Point = tuple[int, int] +NN: tuple[Point, ...] = ((1, 0), (-1, 0), (0, 1), (0, -1)) + + +def det(a: Point, b: Point) -> int: + return a[0] * b[1] - a[1] * b[0] + + +def add(a: Point, b: Point) -> Point: + return a[0] + b[0], a[1] + b[1] + + +def sub(a: Point, b: Point) -> Point: + return a[0] - b[0], a[1] - b[1] + + +@dataclass(frozen=True) +class Torus: + u: Point + v: Point + + def __post_init__(self) -> None: + if det(self.u, self.v) <= 0: + raise ValueError("The ordered integer period basis must have positive determinant") + + @property + def n(self) -> int: + return det(self.u, self.v) + + def reduce(self, z: Point) -> Point: + # Half-open fundamental parallelogram; floor is correct also at negative z. + i = det(z, self.v) // self.n + j = det(self.u, z) // self.n + return z[0] - i*self.u[0] - j*self.v[0], z[1] - i*self.u[1] - j*self.v[1] + + def vertices(self) -> tuple[Point, ...]: + seen = {(0, 0)} + queue = deque([(0, 0)]) + while queue: + z = queue.popleft() + for d in ((1, 0), (0, 1)): + nxt = self.reduce(add(z, d)) + if nxt not in seen: + seen.add(nxt) + queue.append(nxt) + if len(seen) != self.n: + raise AssertionError("Quotient cardinality mismatch") + return tuple(sorted(seen)) + + def period_coordinates(self, z: Point) -> Point: + a, b = det(z, self.v), det(self.u, z) + if a % self.n or b % self.n: + raise AssertionError("Graph cycle displacement is not a period") + return a // self.n, b // self.n + + +@dataclass(frozen=True) +class Rectangle: + x0: int + x1: int + y0: int + y1: int + direction: str + + def __post_init__(self) -> None: + if self.x0 >= self.x1 or self.y0 >= self.y1 or self.direction not in ("h", "v"): + raise ValueError("Nondegenerate h/v crossing rectangle required") + + def points(self) -> tuple[Point, ...]: + return tuple((x, y) for x in range(self.x0, self.x1+1) + for y in range(self.y0, self.y1+1)) + + def translated(self, z: Point) -> Rectangle: + return Rectangle(self.x0+z[0], self.x1+z[0], self.y0+z[1], self.y1+z[1], self.direction) + + +def staircase(u: Point, scale: int) -> tuple[Point, ...]: + """Exact-endpoint integer staircase; zero steps omitted, signs allowed.""" + if scale < 1 or u == (0, 0): + raise ValueError("Positive scale and nonzero period required") + k = (max(abs(u[0]), abs(u[1])) + scale - 1) // scale + centers: list[Point] = [(0, 0)] + for j in range(k): + x0, y0 = (j*u[0])//k, (j*u[1])//k + x1, y1 = ((j+1)*u[0])//k, ((j+1)*u[1])//k + for z in ((x1, y0), (x1, y1)): + if z != centers[-1]: + centers.append(z) + assert centers[-1] == u + assert all((a[0] == b[0]) ^ (a[1] == b[1]) for a, b in zip(centers, centers[1:])) + assert all(max(abs(a[0]-b[0]), abs(a[1]-b[1])) <= scale + for a, b in zip(centers, centers[1:])) + return tuple(centers) + + +def corridor(u: Point, scale: int) -> tuple[Rectangle, ...]: + """Two crossing directions in each hub; one connector per cyclic step.""" + z = staircase(u, scale) + events: list[Rectangle] = [] + for x, y in z[:-1]: + for d in ("h", "v"): + events.append(Rectangle(x-scale, x+scale, y-scale, y+scale, d)) + for a, b in zip(z, z[1:]): + if a[1] == b[1]: + events.append(Rectangle(min(a[0], b[0])-scale, max(a[0], b[0])+scale, + a[1]-scale, a[1]+scale, "h")) + else: + events.append(Rectangle(a[0]-scale, a[0]+scale, + min(a[1], b[1])-scale, max(a[1], b[1])+scale, "v")) + return tuple(events) + + +def support(events: Iterable[Rectangle]) -> set[Point]: + return {z for r in events for z in r.points()} + + +def rectangle_crossing(torus: Torus, rect: Rectangle, occupied: set[Point]) -> bool: + """Planar-lift BFS. Periodic occupancy, but no extra edges across box sides.""" + allowed = {z for z in rect.points() if torus.reduce(z) in occupied} + starts = [z for z in allowed if (z[0] == rect.x0 if rect.direction == "h" else z[1] == rect.y0)] + seen = set(starts) + queue = deque(starts) + while queue: + z = queue.popleft() + if z[0] == rect.x1 if rect.direction == "h" else z[1] == rect.y1: + return True + for d in NN: + nxt = add(z, d) + if nxt in allowed and nxt not in seen: + seen.add(nxt) + queue.append(nxt) + return False + + +def compiled_crossing(torus: Torus, rect: Rectangle, ids: dict[Point, int]): + """Compile box incidence, retaining a distinct planar vertex per box point.""" + pts = rect.points() + pos = {z: i for i, z in enumerate(pts)} + weights = [1 << ids[torus.reduce(z)] for z in pts] + starts = [i for i, z in enumerate(pts) + if (z[0] == rect.x0 if rect.direction == "h" else z[1] == rect.y0)] + ends = {i for i, z in enumerate(pts) + if (z[0] == rect.x1 if rect.direction == "h" else z[1] == rect.y1)} + adjacency = [[pos[add(z, d)] for d in NN if add(z, d) in pos] for z in pts] + + def check(mask: int) -> bool: + queue = [i for i in starts if mask & weights[i]] + seen = set(queue) + for i in queue: + if i in ends: + return True + for j in adjacency[i]: + if j not in seen and mask & weights[j]: + seen.add(j) + queue.append(j) + return False + return check + + +def winding_vectors(torus: Torus, occupied: set[Point]) -> list[Point]: + """Independent spanning-forest detector on the physical quotient NN graph.""" + potential: dict[Point, Point] = {} + gains: list[Point] = [] + for start in sorted(occupied): + if start in potential: + continue + potential[start] = (0, 0) + queue = deque([start]) + while queue: + z = queue.popleft() + for d in NN: + nxt = torus.reduce(add(z, d)) + if nxt not in occupied: + continue + proposed = add(potential[z], d) + if nxt not in potential: + potential[nxt] = proposed + queue.append(nxt) + else: + gain = sub(proposed, potential[nxt]) + if gain != (0, 0): + gains.append(torus.period_coordinates(gain)) + return gains + + +def rank(torus: Torus, occupied: set[Point]) -> int: + gains = winding_vectors(torus, occupied) + if not gains: + return 0 + return 2 if any(det(gains[0], z) for z in gains[1:]) else 1 + + +def squared_distance_to_segment(z: Point, u: Point) -> Fraction: + length2 = u[0]**2 + u[1]**2 + dot = z[0]*u[0] + z[1]*u[1] + if dot < 0: + return Fraction(z[0]**2+z[1]**2) + if dot > length2: + d = sub(z, u) + return Fraction(d[0]**2+d[1]**2) + return Fraction(det(u, z)**2, length2) + + +def circle_packing(modulus: int, pattern: set[int]) -> tuple[list[int], set[int]]: + """Greedy disjoint translates, used only to check the finite-group lemma.""" + if modulus < 1 or not pattern: + raise ValueError("Positive group order and nonempty pattern required") + pattern = {x % modulus for x in pattern} + differences = {(x-y) % modulus for x in pattern for y in pattern} + available = set(range(modulus)) + centers: list[int] = [] + while available: + c = min(available) + centers.append(c) + available.difference_update((c+d) % modulus for d in differences) + return centers, differences + + +def exhaustive_case(u: Point, v: Point, scale: int = 1) -> dict: + torus = Torus(u, v) + if torus.n > 16: + raise ValueError("Exhaustive control limited to 16 sites; no implicit large census") + vertices = torus.vertices() + ids = {z: i for i, z in enumerate(vertices)} + events = corridor(u, scale) + injective = all(len({torus.reduce(z) for z in r.points()}) == len(r.points()) for r in events) + if not injective: + raise ValueError("These test rectangles do not inject; choose a different control geometry") + checks = [compiled_crossing(torus, r, ids) for r in events] + ring_counts = [0]*(torus.n+1) + failures: list[int] = [] + for mask in range(1 << torus.n): + if all(f(mask) for f in checks): + occ = {vertices[i] for i in range(torus.n) if mask >> i & 1} + ring_counts[mask.bit_count()] += 1 + if rank(torus, occ) == 0: + failures.append(mask) + return {"u": u, "v": v, "scale": scale, "N": torus.n, + "rectangles": len(events), "all_rectangles_inject": injective, + "configurations": 1 << torus.n, "ring_configurations": sum(ring_counts), + "ring_counts_by_occupation": ring_counts, "implication_failures": failures} + + +def execute_controls() -> dict: + # Tiny controls verify the geometric gluing, not the asymptotic ell>=64s constants. + small = [exhaustive_case((4, 0), (1, 3)), + exhaustive_case((4, 1), (0, 4)), + exhaustive_case((4, 2), (0, 4))] + geometry = [] + for u, v, s in [((64,0),(17,83),1), ((63,16),(-33,127),1), + ((32,57),(-130,85),1), ((48,48),(-80,112),1), + ((128,33),(-50,263),2), ((-65,17),(-100,-171),1)]: + # Require a reduced basis with shortest u; this criterion is exact in dimension two. + uu = u[0]**2+u[1]**2 + vv = v[0]**2+v[1]**2 + dot = u[0]*v[0]+u[1]*v[1] + if uu > vv or 2*abs(dot) > uu: + q = (2*dot+uu)//(2*uu) + v = v[0]-q*u[0], v[1]-q*u[1] + vv = v[0]**2+v[1]**2 + dot = u[0]*v[0]+u[1]*v[1] + assert uu <= vv and 2*abs(dot) <= uu + torus = Torus(u,v) + ev = corridor(u,s) + pts = support(ev) + maxdist = max(squared_distance_to_segment(z,u) for z in pts) + assert maxdist <= 16*s*s + assert uu >= (64*s)**2 + assert all(len({torus.reduce(z) for z in r.points()}) == len(r.points()) for r in ev) + occ = {torus.reduce(z) for z in pts} + assert all(rectangle_crossing(torus,r,occ) for r in ev) + assert rank(torus,occ) > 0 + # No floating square roots enter these diameter/area inequalities. + assert len(ev)**2 * s*s <= 64*uu # event count <= 8 ell/s + geometry.append({"u":u,"v":v,"scale":s,"ell_squared":uu,"N":torus.n, + "ambient_gcd_u":gcd(abs(u[0]),abs(u[1])), + "events":len(ev),"lifted_support_size":len(pts), + "max_distance_squared_to_segment":str(maxdist), + "rank_of_full_corridor_support":rank(torus,occ)}) + packing = [] + for n, pattern in [(23,{0,1,4}), (64,{0,2,5,11}), (101,{0,1,2,8,9})]: + centers, diff = circle_packing(n,pattern) + packed = [{(x+c)%n for x in pattern} for c in centers] + assert all(not(a & b) for i,a in enumerate(packed) for b in packed[i+1:]) + assert len(centers)*len(diff) >= n + packing.append({"group_order":n,"pattern":sorted(pattern),"difference_size":len(diff), + "centers":centers,"cover_inequality":len(centers)*len(diff)>=n}) + return {"schema":"matching-one.oblique-corridor.v1", "date":"2026-09-13", + "scope":"deterministic NN staircase gluing and finite-group packing; not an RSW computation", + "tiny_exhaustive":small,"geometry":geometry,"packing":packing, + "total_exhaustive_configurations":sum(c["configurations"] for c in small), + "all_implications_hold":not any(c["implication_failures"] for c in small)} + + +def main() -> None: + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--output", type=Path, required=True) + args = p.parse_args() + if args.output.exists(): + raise SystemExit("Refusing to replace an existing result; use a new --output path") + result = execute_controls() + args.output.parent.mkdir(parents=True,exist_ok=True) + args.output.write_text(json.dumps(result,indent=2,ensure_ascii=False)+"\n",encoding="utf-8") + print(json.dumps({"configurations":result["total_exhaustive_configurations"], + "all_implications_hold":result["all_implications_hold"]})) + + +if __name__ == "__main__": + main() diff --git a/scripts/oblique_winding_necklace.py b/scripts/oblique_winding_necklace.py new file mode 100644 index 00000000..3ba8d5d9 --- /dev/null +++ b/scripts/oblique_winding_necklace.py @@ -0,0 +1,354 @@ +#!/usr/bin/env python3 +"""Finite geometry controls for the oblique RSW necklace construction. + +Only integer arithmetic is used. This tests geometric supports, the periodic +seam, winding of explicit witnesses and disjoint translates. It does not +compute a near-critical probability, prove RSW, or independently prove the +all-size theorem. No old Matching-One implementation is imported. +""" +from __future__ import annotations + +import argparse +from collections import deque +from dataclasses import dataclass +from fractions import Fraction +from math import gcd, isqrt +import json +from pathlib import Path +import unittest + +Point = tuple[int, int] + + +def det(a: Point, b: Point) -> int: + return a[0] * b[1] - a[1] * b[0] + + +def dot(a: Point, b: Point) -> int: + return a[0] * b[0] + a[1] * b[1] + + +def add(a: Point, b: Point) -> Point: + return a[0] + b[0], a[1] + b[1] + + +def nearest(num: int, den: int) -> int: + """Nearest integer, with ties upwards; commutes with integer translation.""" + if den <= 0: + raise ValueError("denominator must be positive") + return (2 * num + den) // (2 * den) + + +def ceil_scaled_sqrt(square: int, multiplier: int, divisor: int) -> int: + """ceil(multiplier * sqrt(square) / divisor), exactly.""" + if square < 0 or multiplier <= 0 or divisor <= 0: + raise ValueError("invalid square-root arguments") + n = isqrt(multiplier * multiplier * square) // divisor + return n + (n * n * divisor * divisor < multiplier * multiplier * square) + + +def reduced_basis(u: Point, v: Point) -> tuple[Point, Point]: + """Two-dimensional Lagrange reduction; u is a shortest lattice vector.""" + if det(u, v) == 0: + raise ValueError("periods must be independent") + for _ in range(256): + if dot(v, v) < dot(u, u): + u, v = v, u + q = nearest(dot(u, v), dot(u, u)) + if q == 0: + break + v = v[0] - q * u[0], v[1] - q * u[1] + else: + raise RuntimeError("reduction did not terminate") + if u[0] < 0 or (u[0] == 0 and u[1] < 0): + u = -u[0], -u[1] + if det(u, v) < 0: + v = -v[0], -v[1] + return u, v + + +def bezout(a: int, b: int) -> tuple[int, int, int]: + """Return g>=0, x, y with ax+by=g=gcd(a,b).""" + r0, r1, x0, x1, y0, y1 = abs(a), abs(b), 1, 0, 0, 1 + while r1: + q = r0 // r1 + r0, r1 = r1, r0 - q * r1 + x0, x1 = x1, x0 - q * x1 + y0, y1 = y1, y0 - q * y1 + return r0, x0 * (1 if a >= 0 else -1), y0 * (1 if b >= 0 else -1) + + +@dataclass(frozen=True) +class Rectangle: + x0: int + x1: int + y0: int + y1: int + direction: str + + def corners(self) -> tuple[Point, ...]: + return ((self.x0, self.y0), (self.x0, self.y1), + (self.x1, self.y0), (self.x1, self.y1)) + + def vertices(self): + for y in range(self.y0, self.y1 + 1): + for x in range(self.x0, self.x1 + 1): + yield x, y + + +def necklace(u: Point, s: int) -> tuple[list[Point], list[Rectangle]]: + """Return n centres plus their translated endpoint, and exactly 5n boxes.""" + if s < 8 or s % 2: + raise ValueError("s must be even and at least 8") + S = dot(u, u) + if S < (64 * s) ** 2: + raise ValueError("this control uses the theorem regime ell >= 64s") + n = ceil_scaled_sqrt(S, 4, s) + centres = [(nearest(i * u[0], n), nearest(i * u[1], n)) + for i in range(n + 1)] + boxes: list[Rectangle] = [] + for i, (x, y) in enumerate(centres[:-1]): + boxes.extend(( + Rectangle(x - 2*s, x + 2*s, y + s, y + 2*s, 'H'), + Rectangle(x - 2*s, x + 2*s, y - 2*s, y - s, 'H'), + Rectangle(x - 2*s, x - s, y - 2*s, y + 2*s, 'V'), + Rectangle(x + s, x + 2*s, y - 2*s, y + 2*s, 'V'), + )) + X, Y = centres[i + 1] + boxes.append(Rectangle(min(x, X) - 3*s, max(x, X) + 3*s, + max(y, Y) - s//2, min(y, Y) + s//2, 'H')) + return centres, boxes + + +def coset_key(x: Point, u: Point, v: Point) -> Point: + N = det(u, v) + if N <= 0: + raise ValueError("basis must be positively oriented") + return det(x, v) % N, det(u, x) % N + + +def crossing_path(box: Rectangle, salt: int) -> set[Point]: + """A deterministic, sometimes backtracking, crossing inside one box.""" + if box.direction == 'H': + y = box.y0 + (salt % (box.y1 - box.y0 + 1)) + pts = {(x, y) for x in range(box.x0, box.x1 + 1)} + if box.y0 < y < box.y1: + # Add a spur; it does not impose any stochastic model. + xm = (box.x0 + box.x1) // 2 + pts.update((xm, yy) for yy in range(y, min(y + 3, box.y1) + 1)) + return pts + x = box.x0 + (salt % (box.x1 - box.x0 + 1)) + return {(x, y) for y in range(box.y0, box.y1 + 1)} + + +def has_crossing(box: Rectangle, occupied, key) -> bool: + """Free-boundary NN crossing BFS, restricted to this one lifted rectangle.""" + if box.direction == 'H': + starts = [(box.x0, y) for y in range(box.y0, box.y1 + 1)] + finish = lambda z: z[0] == box.x1 + else: + starts = [(x, box.y0) for x in range(box.x0, box.x1 + 1)] + finish = lambda z: z[1] == box.y1 + seen = {z for z in starts if key(z) in occupied} + todo = deque(seen) + while todo: + z = todo.popleft() + if finish(z): + return True + for e in ((1, 0), (-1, 0), (0, 1), (0, -1)): + t = add(z, e) + if (box.x0 <= t[0] <= box.x1 and box.y0 <= t[1] <= box.y1 + and t not in seen and key(t) in occupied): + seen.add(t) + todo.append(t) + return False + + +def winding_gcd(occupied: dict[Point, Point], u: Point, v: Point) -> tuple[int, int]: + """Independent graph-potential traversal. Return gcd of u,v windings.""" + N = det(u, v) + visited: set[Point] = set() + all_a = all_b = 0 + for initial in occupied: + if initial in visited: + continue + pot = {initial: (0, 0)} + visited.add(initial) + todo = deque([initial]) + while todo: + k = todo.popleft() + r = occupied[k] + for e in ((1, 0), (-1, 0), (0, 1), (0, -1)): + nb = coset_key(add(r, e), u, v) + if nb not in occupied: + continue + guess = add(pot[k], e) + if nb not in pot: + pot[nb] = guess + visited.add(nb) + todo.append(nb) + else: + c = guess[0] - pot[nb][0], guess[1] - pot[nb][1] + aN, bN = det(c, v), det(u, c) + if aN % N or bN % N: + raise AssertionError("non-period cycle gain") + all_a = gcd(all_a, abs(aN // N)) + all_b = gcd(all_b, abs(bN // N)) + return all_a, all_b + + +def control(u0: Point, v0: Point, s: int = 8, seed: int = 0) -> dict: + u, v = reduced_basis(u0, v0) + S, N = dot(u, u), det(u, v) + centres, boxes = necklace(u, s) + n = len(centres) - 1 + assert centres[0] == (0, 0) and centres[-1] == u + assert 4*N*N >= 3*S*S # h >= sqrt(3)*ell/2 + assert (n*s)**2 >= 16*S and (n-1)**2*s*s < 16*S + assert n*n*s*s <= 25*S + for i in range(n): + assert max(abs(centres[i+1][j]-centres[i][j]) for j in (0, 1)) <= s//2 + for box in boxes: + width, height = box.x1-box.x0, box.y1-box.y0 + assert width > 0 and height > 0 and width*width + height*height < S + long, short = (width, height) if box.direction == 'H' else (height, width) + assert long <= 14*short + assert all(det(u, z)**2 <= 36*s*s*S for z in box.corners()) + + occupied: dict[Point, Point] = {} + key = lambda x: coset_key(x, u, v) + for j, box in enumerate(boxes): + for z in crossing_path(box, seed + 17*j): + occupied.setdefault(key(z), z) + assert all(has_crossing(box, occupied, key) for box in boxes) + ga, gb = winding_gcd(occupied, u, v) + assert (ga, gb) == (1, 0) + + # Check WHOLE event supports for a few translates, not just occupied paths. + support = {key(z): z for box in boxes for z in box.vertices()} + g, a, b = bezout(*u) + transverse_unit = -b, a + assert det(u, transverse_unit) == g and N % g == 0 + D = ceil_scaled_sqrt(S, 12*s+2, g) + gap, bands = D*g, N//(D*g) + assert gap*gap > 144*s*s*S + assert gap < (12*s+3) * (isqrt(S)+1) + assert (30*s*bands)**2*S >= N*N + shifts = sorted(set([0, 1, max(0, bands-1)])) + supports = [] + for j in shifts: + shift = j*D*transverse_unit[0], j*D*transverse_unit[1] + here = {key(add(z, shift)) for z in support.values()} + assert len(here) == len(support) + for previous in supports: + assert not (here & previous) + supports.append(here) + return dict(input_basis=[list(u0), list(v0)], reduced_basis=[list(u), list(v)], + N=N, squared_shortest_period=S, ambient_gcd=g, block_scale=s, + blocks=n, crossing_events=len(boxes), support_vertices=len(support), + occupied_witness_vertices=len(occupied), winding_gcd=[ga, gb], + packed_bands=bands, checked_translates=shifts, + conditions_pass=True) + + +def finite_harris_control() -> dict: + """Independent tiny overlapping-increasing-event Harris arithmetic.""" + # Three overlapping clauses, not a model for the RSW constant. + events = [lambda m: bool(m & 3), lambda m: bool(m & 6), + lambda m: bool(m & 5)] + rows = [] + for p in (Fraction(1, 3), Fraction(1, 2), Fraction(2, 3)): + probs = [Fraction(0)]*3 + joint = Fraction(0) + for m in range(8): + k = bin(m).count('1') + w = p**k * (1-p)**(3-k) + vals = [e(m) for e in events] + for i, ok in enumerate(vals): + probs[i] += w*ok + joint += w*all(vals) + product = probs[0]*probs[1]*probs[2] + assert joint >= product + rows.append(dict(p=str(p), joint=str(joint), product=str(product))) + return dict(scope="toy Harris inequality, not a percolation/RSW estimate", rows=rows) + + +CASES = [ + ((512, 0), (37, 900)), + ((0, 512), (-1200, 51)), + ((384, 512), (-1536, 1152)), + ((511, 129), (-387, 1533)), + ((357, -407), (1221, 1071)), + ((900, 0), (271, 711)), + ((1100, 0), (473, 853)), + ((1024, 0), (517, 515)), +] + + +class GeometryTests(unittest.TestCase): + def test_integer_rounding_and_endpoints(self): + for den in range(1, 16): + for num in range(-40, 41): + k = nearest(num, den) + self.assertLessEqual(abs(k*den-num)*2, den) + self.assertEqual(nearest(num+7*den, den), k+7) + + def test_lagrange_reduction(self): + for u, v in CASES: + a, b = reduced_basis(u, v) + self.assertEqual(det(a, b), abs(det(u, v))) + self.assertLessEqual(dot(a, a), dot(b, b)) + self.assertLessEqual(2*abs(dot(a, b)), dot(a, a)) + for i in range(-5, 6): + for j in range(-5, 6): + if i or j: + x = i*a[0]+j*b[0], i*a[1]+j*b[1] + self.assertGreaterEqual(dot(x, x), dot(a, a)) + + def test_seam_and_nonprimitive_period(self): + r = control((384, 512), (-1536, 1152), seed=3) + self.assertEqual(r['ambient_gcd'], 128) + self.assertEqual(r['winding_gcd'], [1, 0]) + + def test_oblique_primitive_and_packing(self): + r = control((511, 129), (-387, 1533), seed=11) + self.assertEqual(r['ambient_gcd'], 1) + self.assertGreaterEqual(r['packed_bands'], 3) + + def test_reject_too_small_support_regime(self): + with self.assertRaises(ValueError): + necklace((4, 4), 8) + + def test_harris_control(self): + self.assertEqual(len(finite_harris_control()['rows']), 3) + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--output', type=Path) + ap.add_argument('--tests', action='store_true') + args = ap.parse_args() + if args.tests: + suite = unittest.defaultTestLoader.loadTestsFromTestCase(GeometryTests) + result = unittest.TextTestRunner(verbosity=2).run(suite) + raise SystemExit(not result.wasSuccessful()) + if not args.output: + ap.error('--output PATH or --tests is required') + if args.output.exists(): + raise FileExistsError(f"refusing to overwrite {args.output}") + rows = [control(u, v, seed=i*19) for i, (u, v) in enumerate(CASES)] + out = dict(schema='matching-one.oblique-necklace-controls.v1', + nature='deterministic geometric controls, not production evidence', + cases=rows, cases_count=len(rows), + crossing_event_checks=sum(r['crossing_events'] for r in rows), + harris_control=finite_harris_control(), + no_probability_or_novelty_estimate=True, + full_repository_ci_run=False) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(out, indent=2)+'\n', encoding='utf-8') + print(json.dumps(dict(cases=len(rows), crossing_checks=out['crossing_event_checks'], + output=str(args.output)))) + + +if __name__ == '__main__': + main() diff --git a/scripts/sewing_multiplicity.py b/scripts/sewing_multiplicity.py new file mode 100644 index 00000000..0bf57528 --- /dev/null +++ b/scripts/sewing_multiplicity.py @@ -0,0 +1,132 @@ +"""Exact multiplicity probe for the #740 sewing question, at small width. + +The renewal object of eq. (5.1) is a closed chain carrying ONE marked cut. For +the identification with the actual complete winding-COMPONENT count to hold, +each complete winding component must admit exactly one marking, beyond the +circumferential offsets that the factor w supplies. This script measures the +geometric quantity that any such marking has to be built from: + + c(C) = the number of distinct rows at which C crosses a FIXED reference seam, + +where "crosses" means the component contains an edge whose union-find lift gain +is non-zero: for NN that is a horizontal edge from column w-1 to column 0 inside +one row; for NN+NNN it also includes the wrapping diagonals (x,w-1)-(x+1,0) and +(x,0)-(x+1,w-1). + +Every occupied configuration of (Z/wZ) x {0..L-1} is visited exactly once with +weight p^|A| (1-p)^(wL-|A|). The histogram is normalised by the total weighted +count of WINDING COMPONENTS, not by the number of configurations. +""" +from __future__ import annotations + +import json +from collections import Counter +from fractions import Fraction + + +class DSU: + __slots__ = ("p", "d", "w") + + def __init__(self, n): + self.p = list(range(n)) + self.d = [0] * n + self.w = [0] * n + + def find(self, a): + if self.p[a] == a: + return a, 0 + r, g = self.find(self.p[a]) + self.d[a] += g + self.p[a] = r + return r, self.d[a] + + def join(self, a, b, gain): + ra, da = self.find(a) + rb, db = self.find(b) + if ra == rb: + if db - da != gain: + self.w[ra] = 1 + else: + self.p[rb] = ra + self.d[rb] = gain + da - db + self.w[ra] |= self.w[rb] + + +def analyse(w: int, L: int, matching: bool, p: Fraction): + hist = Counter() + wind_mass = Fraction(0) + idx = lambda x, y: x * w + y + for mask in range(1 << (w * L)): + occ = [(mask >> idx(x, y)) & 1 for x in range(L) for y in range(w)] + n = bin(mask).count("1") + wt = p ** n * (1 - p) ** (w * L - n) + uf = DSU(w * L) + seam_edges = [] + for x in range(L): + for y in range(w): + if not occ[idx(x, y)]: + continue + yn = (y + 1) % w + if occ[idx(x, yn)]: + g = 1 if y + 1 == w else 0 + uf.join(idx(x, y), idx(x, yn), g) + if g: + seam_edges.append((idx(x, y), idx(x, yn), x)) + if x + 1 < L: + for dy in ([0] if not matching else (-1, 0, 1)): + yv = (y + dy) % w + if occ[idx(x + 1, yv)]: + g = 1 if y + dy >= w else (-1 if y + dy < 0 else 0) + uf.join(idx(x, y), idx(x + 1, yv), g) + if g: + seam_edges.append((idx(x, y), idx(x + 1, yv), x)) + rows_of_root = {} + for u, v, x in seam_edges: + ru, _ = uf.find(u) + rv, _ = uf.find(v) + if ru != rv: + continue + rows_of_root.setdefault(ru, set()).add(x) + seen = set() + for x in range(L): + for y in range(w): + if occ[idx(x, y)]: + r, _ = uf.find(idx(x, y)) + if uf.w[r] and r not in seen: + seen.add(r) + wind_mass += wt + hist[len(rows_of_root.get(r, ()))] += wt + return hist, wind_mass + + +def main(): + p = Fraction(1, 2) + out = {} + for w, Lmax in ((2, 9), (3, 6), (4, 5)): + for matching in (False, True): + agg = Counter() + mass = Fraction(0) + for L in range(2, Lmax + 1): + h, m = analyse(w, L, matching, p) + agg.update(h) + mass += m + norm = {k: Fraction(v) / mass for k, v in sorted(agg.items())} + E = sum(k * pr for k, pr in norm.items()) + pge2 = sum(pr for k, pr in norm.items() if k >= 2) + pge3 = sum(pr for k, pr in norm.items() if k >= 3) + key = f"w{w}-{'matching' if matching else 'NN'}" + out[key] = { + "p": "1/2", "lengths": [2, Lmax], "width": w, "matching": matching, + "c_definition": "rows at which the component contains a non-zero-gain edge relative to a fixed seam", + "distribution_of_c": {str(k): str(v) for k, v in norm.items()}, + "E_c": str(E), "P_c_ge_2": str(pge2), "P_c_ge_3": str(pge3), + "winding_component_weight": str(mass), + } + print(f"{key:<12} E[c] = {float(E):.6f} P(c>=2) = {float(pge2):.6f} " + f"P(c>=3) = {float(pge3):.6f} c=0 占比 {float(norm.get(0, 0)):.6f}") + with open("/tmp/mo568/sewing_multiplicity.json", "w") as fh: + json.dump(out, fh, indent=1) + + +if __name__ == "__main__": + main() diff --git a/scripts/span_moment_limits.py b/scripts/span_moment_limits.py new file mode 100644 index 00000000..7ac7dfc7 --- /dev/null +++ b/scripts/span_moment_limits.py @@ -0,0 +1,124 @@ +"""span_moment_limits.py — does Var(L)/(E L)^2 approach pi/3 - 1, or 0? + +Reads the committed span-spectrum results JSON and tests the two readings of the +section-6.3 conjecture that the finite-width data can actually separate: + + model A: Var/(E L)^2 = (pi/3 - 1) + c/w [the conjectured constant] + model B: Var/(E L)^2 = c/w [limit 0, "ratio decays away"] + +Model A fixes the limit a priori (one free parameter, c); model B also has one +free parameter. The discriminating statistic is the stability of +R*w = (Var/(E L)^2 - (pi/3 - 1)) * w: constant under model A, divergent under B. + +The w=8 columns for NN p=1/4 and matching p=1/8 are the owner's one-lineage +tagged resolvent (PR #739 comment 5653178247), not this delivery's bin chain; +they are marked in the output. Run: + + python scripts/span_moment_limits.py [results.json] +""" +from __future__ import annotations +import json +import math +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / "scripts")) +import span_spectrum_solve as S # noqa: E402 + +TARGET = math.pi / 3 - 1 # 0.04719755119659763 + +FAMILIES = { + "NN p=1/4": (("NN p=1/4", "NN w=7 p=1/4"), "1/4", (8, 4.56334396378038, 0.127163500068044)), + "NN p=1/8": (("NN p=1/8", "NN w=7 p=1/8"), "1/8", None), + "matching p=1/8": (("matching p=1/8", "matching w=7 p=1/8"), "1/8", + (8, 4.711805413158092, 0.116004934830910)), + "matching p=1/16": (("matching p=1/16", "matching w=7 p=1/16"), "1/16", None), +} + + +def family_series(runs, labels, p, extra_w8=None): + rows = sorted([r for r in runs if r["label"] in labels and r["p"] == p], + key=lambda r: r["width"]) + ws = [r["width"] for r in rows] + E = [S.spectrum_moments(r["d_h_float"], r["tail_bin_float"], r["d_max"])["E_L"] for r in rows] + V = [S.spectrum_moments(r["d_h_float"], r["tail_bin_float"], r["d_max"])["var_over_E2"] for r in rows] + if extra_w8: + ws.append(extra_w8[0]); E.append(extra_w8[1]); V.append(extra_w8[2]) + return ws, E, V + + +def fit(w, V): + """Return (c_A, rms_A, c_B, rms_B) for the two models.""" + n = len(w) + cA = sum((v - TARGET) * wi for v, wi in zip(V, w)) / n + rmsA = math.sqrt(sum((v - (TARGET + cA / wi)) ** 2 for v, wi in zip(V, w)) / n) + s1 = sum(v / wi for v, wi in zip(V, w)) + s2 = sum(1.0 / (wi ** 2) for wi in w) + cB = s1 / s2 + rmsB = math.sqrt(sum((v - cB / wi) ** 2 for v, wi in zip(V, w)) / n) + return cA, rmsA, cB, rmsB + + +def slope(w, V, w_min=4): + """Least-squares slope of R*w = (V - TARGET)*w against w, for w >= w_min. + + Discriminator: under model A (limit TARGET) this slope is 0; under model B + (limit 0) it is exactly -TARGET per unit width, since R*w = c - TARGET*w. + """ + pts = [(wi, (v - TARGET) * wi) for wi, v in zip(w, V) if wi >= w_min] + n = len(pts) + mx = sum(x for x, _ in pts) / n + my = sum(y for _, y in pts) / n + num = sum((x - mx) * (y - my) for x, y in pts) + den = sum((x - mx) ** 2 for x, _ in pts) + return num / den, n + + +def report(results_path=None, verbose=True): + path = Path(results_path) if results_path else ROOT / "results" / "geometric-consistency" / "span-spectrum-20260913.json" + with open(path) as fh: + runs = json.load(fh)["runs"] + out = [] + if verbose: + print("target pi/3 - 1 = %.15f" % TARGET) + print("model A: V = TARGET + c/w model B: V = c/w (limit 0)\n") + for name, (labels, p, w8) in FAMILIES.items(): + w, E, V = family_series(runs, labels, p, w8) + cA, rmsA, cB, rmsB = fit(w, V) + sl, npt = slope(w, V) + rw = [(v - TARGET) * wi for v, wi in zip(V, w)] + late = [r for wi, r in zip(w, rw) if wi >= 4] + spread = (max(late) - min(late)) / (sum(late) / len(late)) + src = "bin chain w<=7 + tagged w=8" if w8 else "bin chain w<=6 + w=7" + row = { + "family": name, "source": src, + "w": w, "E_L": E, "var_over_E2": V, + "R_w": rw, "R_w_spread_w_ge_4": spread, + "model_A": {"c": cA, "rms": rmsA, "limit": TARGET}, + "model_B": {"c": cB, "rms": rmsB, "limit": 0.0}, + "slope_Rw_w_ge_4": sl, "slope_points": npt, + "model_B_required_slope": -TARGET, + "excludes_limit_zero": bool(sl > -0.5 * TARGET), + } + out.append(row) + if not verbose: + continue + print("%-16s [%s]" % (name, src)) + print(" w : " + " ".join("%7d" % wi for wi in w)) + print(" V : " + " ".join("%7.4f" % v for v in V)) + print(" R*w : " + " ".join("%7.4f" % r for r in rw)) + print(" [A] c=%.4f rms=%.5f | [B] c=%.4f rms=%.5f | rms ratio %.2fx | R*w spread(w>=4) %.1f%%" + % (cA, rmsA, cB, rmsB, rmsB / rmsA, 100 * spread)) + print(" slope(R*w) for w>=%d = %+.5f (model B requires %+.5f) -> limit 0 %s" + % (4, sl, -TARGET, "EXCLUDED" if row["excludes_limit_zero"] else "not excluded")) + print() + return out + + +if __name__ == "__main__": + import json as _json + res = report(sys.argv[1] if len(sys.argv) > 1 else None) + if len(sys.argv) > 2: + with open(sys.argv[2], "w") as fh: + _json.dump({"target": TARGET, "families": res}, fh, indent=1) diff --git a/scripts/span_spectrum_build.cpp b/scripts/span_spectrum_build.cpp new file mode 100644 index 00000000..c7ccaaad --- /dev/null +++ b/scripts/span_spectrum_build.cpp @@ -0,0 +1,245 @@ +// span_build.cpp — one-frontier winding-component transfer with VERTICAL SPAN tracking. +// +// Port of the validated winding_build.cpp engine (same advance()/DSU/gain semantics, +// including the floordiv fix for the matching diagonal), extended with a per-component +// min-row offset so that each retiring winding component reports its vertical span. +// +// State = frontier labels + horizontal-lift gains + winding flags + per-component +// DEPTH = (own row) - (min row of the component), clamped at D_MAX+1. +// +// Transition r -> r+1, per old component (depth d, all its sites at rows <= r): +// mo := d + 1 (its min row relative to the NEW row r+1) +// merge rule: mo_merged = max(mo_a, mo_b) [min_row of the union] +// retiring: span = mo [last row r, first row r+1-mo] +// persisting: new depth = mo +// newborn: depth = 0 +// Retiring WINDING components are binned by span: bins 1..D_MAX exact, bin D_MAX+1 +// collects span >= D_MAX+1 (the tail). The manuscript's bound (9), +// 0 <= nu_w - nu_(w,<=H) <= w [1-(1-p)^w]^H, +// bounds the omitted tail rigorously. +// +// Output (binary): header, then one fixed record per (state, mask): +// uint32 next_state; uint8 nret; uint8 bins[8]; uint8 cnts[8] (24 bytes) +// Record index = state * 2^W + mask, so popcount(mask) is known to the reader. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +static inline int floordiv(int a, int b) { // Python // semantics + return (a >= 0) ? (a / b) : -(((-a) + b - 1) / b); +} + +static const int MAXW = 12; +static const int MAXN = 4 * MAXW; +static int D_MAX = 40; // runtime + +struct DSU { + int parent[MAXN], delta[MAXN]; + uint8_t wind[MAXN]; + int16_t mo[MAXN]; + void init(int n) { + for (int i = 0; i < n; ++i) { parent[i] = i; delta[i] = 0; wind[i] = 0; mo[i] = 0; } + } + inline int find(int a, int &pot) { + int root = a, acc = 0; + while (parent[root] != root) { acc += delta[root]; root = parent[root]; } + int cur = a, run = 0; + while (parent[cur] != cur) { + int nxt = parent[cur]; + int d = delta[cur]; + parent[cur] = root; + delta[cur] = acc - run; + run += d; + cur = nxt; + } + pot = (a == root) ? 0 : delta[a]; + return root; + } + inline void join(int a, int b, int gain) { + int da, db; + int ra = find(a, da), rb = find(b, db); + if (ra == rb) { wind[ra] |= (uint8_t)(db - da != gain); } + else { + parent[rb] = ra; delta[rb] = gain + da - db; + wind[ra] |= wind[rb]; + if (mo[rb] > mo[ra]) mo[ra] = mo[rb]; // min_row of the union + } + } +}; + +struct State { + int16_t labels[MAXW]; + int16_t gains[MAXW]; + uint8_t flags[MAXW]; + uint8_t depths[MAXW]; + int nflags; +}; + +static inline void pack_state(const State &s, int W, string &out) { + out.resize((size_t)W * 2 + s.nflags * 2); + size_t p = 0; + for (int i = 0; i < W; ++i) out[p++] = (char)(s.labels[i] & 0xFF); + for (int i = 0; i < W; ++i) out[p++] = (char)(s.gains[i] & 0xFF); + for (int i = 0; i < s.nflags; ++i) { out[p++] = (char)s.flags[i]; out[p++] = (char)s.depths[i]; } +} + +struct KeyHash { + inline size_t operator()(const string &k) const { + size_t h = 1469598103934665603ULL; + const unsigned char *p = (const unsigned char *)k.data(); + for (size_t i = 0; i < k.size(); ++i) { h ^= p[i]; h *= 1099511628211ULL; } + return h; + } +}; + +static inline int advance(const State &st, int mask, int W, bool matching, State &nx, + uint8_t *ret_bins, uint8_t *ret_cnts, int &nret) { + static DSU dsu; + static int oldv[MAXW], newv[MAXW]; + static int rep_of[MAXW]; + static int allroots[MAXN], keptroots[MAXN]; + int nold = 0, nnew = 0; + for (int i = 0; i < W; ++i) if (st.labels[i] >= 0) oldv[nold++] = i; + for (int i = 0; i < W; ++i) if ((mask >> i) & 1) newv[nnew++] = i; + + dsu.init(2 * W); + for (int t = 0; t < W; ++t) rep_of[t] = -1; + for (int t = 0; t < nold; ++t) { + int i = oldv[t], k = st.labels[i]; + if (rep_of[k] < 0) rep_of[k] = i; + else dsu.join(rep_of[k], i, st.gains[i]); + } + for (int k = 0; k < W; ++k) if (rep_of[k] >= 0) { + int pot; int r = dsu.find(rep_of[k], pot); + dsu.wind[r] = (uint8_t)(st.flags[k] != 0); + dsu.mo[r] = (int16_t)(st.depths[k] + 1); // min row relative to the NEW row + } + for (int t = 0; t < nnew; ++t) { + int i = newv[t]; + int j = i + 1; if (j == W) j = 0; + if ((mask >> j) & 1) dsu.join(W + i, W + j, (i + 1) / W); + int lo = matching ? -1 : 0, hi = matching ? 1 : 0; + for (int dx = lo; dx <= hi; ++dx) { + int jj = (i + dx) % W; if (jj < 0) jj += W; + if (st.labels[jj] >= 0) dsu.join(W + i, jj, floordiv(i + dx, W)); + } + } + int na = 0, nk = 0; + for (int t = 0; t < nold; ++t) { int p2; allroots[na++] = dsu.find(oldv[t], p2); } + for (int t = 0; t < nnew; ++t) { int p2; keptroots[nk++] = dsu.find(W + newv[t], p2); } + sort(allroots, allroots + na); na = (int)(unique(allroots, allroots + na) - allroots); + sort(keptroots, keptroots + nk); nk = (int)(unique(keptroots, keptroots + nk) - keptroots); + + nret = 0; + for (int a = 0, b = 0; a < na; ++a) { + while (b < nk && keptroots[b] < allroots[a]) ++b; + if (b >= nk || keptroots[b] != allroots[a]) { + if (dsu.wind[allroots[a]]) { + int bin = dsu.mo[allroots[a]]; + if (bin > D_MAX + 1) bin = D_MAX + 1; // tail bin + int found = -1; + for (int q = 0; q < nret; ++q) if (ret_bins[q] == bin) { found = q; break; } + if (found < 0 && nret < 8) { ret_bins[nret] = (uint8_t)bin; ret_cnts[nret] = 0; found = nret++; } + if (found >= 0) ret_cnts[found] += 1; + } + } + } + // successor + nx.nflags = 0; + for (int i = 0; i < W; ++i) { nx.labels[i] = -1; nx.gains[i] = 0; } + static int tag[MAXN], origin[MAXN]; + for (int i = 0; i < 2 * W; ++i) tag[i] = -1; + for (int t = 0; t < nnew; ++t) { + int i = newv[t]; + int pot; int r = dsu.find(W + i, pot); + if (tag[r] < 0) { + tag[r] = nx.nflags; origin[r] = pot; + nx.flags[nx.nflags] = dsu.wind[r] ? 1 : 0; + nx.depths[nx.nflags] = (uint8_t)min(dsu.mo[r], (int16_t)(D_MAX + 1)); + nx.nflags++; + } + nx.labels[i] = (int16_t)tag[r]; + nx.gains[i] = (int16_t)(dsu.wind[r] ? 0 : pot - origin[r]); + } + return nret; +} + +int main(int argc, char **argv) { + if (argc < 5) { fprintf(stderr, "usage: %s WIDTH 0|1(matching) D_MAX out.bin\n", argv[0]); return 2; } + int W = atoi(argv[1]); + bool matching = atoi(argv[2]) != 0; + D_MAX = atoi(argv[3]); + const char *outpath = argv[4]; + if (W < 2 || W > 8) { fprintf(stderr, "width must be 2..8 (8 retire-bin slots)\n"); return 2; } + auto t0 = chrono::steady_clock::now(); + + State empty; for (int i = 0; i < W; ++i) { empty.labels[i] = -1; empty.gains[i] = 0; } + empty.nflags = 0; + + vector states; states.push_back(empty); + unordered_map index; + index.reserve(1 << 22); + { string k; pack_state(empty, W, k); index[k] = 0; } + + string kb; + State nxt, cur; + size_t cursor = 0; + while (cursor < states.size()) { + cur = states[cursor]; + for (int mask = 0; mask < (1 << W); ++mask) { + uint8_t rb[8], rc[8]; int nr; + advance(cur, mask, W, matching, nxt, rb, rc, nr); + pack_state(nxt, W, kb); + auto it = index.find(kb); + if (it == index.end()) { + index.emplace(kb, (int)states.size()); + states.push_back(nxt); + } + } + ++cursor; + if ((cursor & 16383) == 0) + fprintf(stderr, " bfs states=%zu t=%.1fs\n", states.size(), + chrono::duration(chrono::steady_clock::now() - t0).count()); + } + size_t nstates = states.size(); + fprintf(stderr, "BFS W=%d matching=%d D_MAX=%d states=%zu t=%.1fs\n", W, (int)matching, D_MAX, + nstates, chrono::duration(chrono::steady_clock::now() - t0).count()); + + // transition table + binary output in one pass + FILE *f = fopen(outpath, "wb"); + if (!f) { fprintf(stderr, "cannot open output\n"); return 3; } + int32_t hdr[4] = { W, matching ? 1 : 0, D_MAX, (int32_t)nstates }; + fwrite(hdr, 4, 4, f); + const size_t MASKS = (size_t)1 << W; + vector rec(24); + for (size_t s = 0; s < nstates; ++s) { + cur = states[s]; + for (int mask = 0; mask < (int)MASKS; ++mask) { + uint8_t rb[8], rc[8]; int nr; + advance(cur, mask, W, matching, nxt, rb, rc, nr); + pack_state(nxt, W, kb); + uint32_t nj = (uint32_t)index.find(kb)->second; + memset(rec.data(), 0, 24); + memcpy(rec.data(), &nj, 4); + rec[4] = (uint8_t)nr; + for (int q = 0; q < nr && q < 8; ++q) { rec[5 + q] = rb[q]; rec[13 + q] = rc[q]; } + fwrite(rec.data(), 1, 24, f); + } + if ((s & 8191) == 0) + fprintf(stderr, " table %zu/%zu t=%.1fs\n", s, nstates, + chrono::duration(chrono::steady_clock::now() - t0).count()); + } + fclose(f); + fprintf(stderr, "DONE W=%d matching=%d D_MAX=%d states=%zu total=%.1fs -> %s\n", W, (int)matching, + D_MAX, nstates, chrono::duration(chrono::steady_clock::now() - t0).count(), outpath); + return 0; +} diff --git a/scripts/span_spectrum_solve.py b/scripts/span_spectrum_solve.py new file mode 100644 index 00000000..a58cdf32 --- /dev/null +++ b/scripts/span_spectrum_solve.py @@ -0,0 +1,382 @@ +#!/usr/bin/env python3 +"""span_solve.py — stationary analysis of the span-binned retirement chain (v2). + +v2: vectorised sparse construction (chunked COO aggregation), power-iteration +path for large chains, adaptive integer scale for the exact int64 certificate. + +Precision policy + n <= 300 : exact Fraction stationary solve, exact everything. + 300 < n : float64 stationary solve (splu for moderate n, power + iteration for large), pi_hat = round(pi * 2^k) with + k chosen so the exact int64 residual fits, exact + residual ||pi_hat K - pi_hat||_1 in int64, certificate + |pi_hat.g - nu| <= ||g||_inf * ||pi_hat K - pi_hat||_1/delta. + If the rounding mass is too large at this k the + certificate is reported as None (float residual only). +Closure check (strongest validation): sum(d_h) + tail_bin == nu_w EXACTLY, +because the depth-clamped chain is an exact lumping: bins 1..D_MAX are the +exact span spectrum and the tail bin is the exact mass of span >= D_MAX+1. +""" +import json +import struct +import sys +from fractions import Fraction + +import numpy as np +from scipy import sparse +from scipy.sparse.linalg import splu + + +def load_header(path): + dt = np.dtype([("next", ">= 1 + return pc + + +def build_sparse(W, d_max, n, f, dt, p_num, p_den, chunk_states=50000, out_dtype=np.int64): + """K (n x n row-stochastic) and G (n x d_max+2). + + Streams the binary table with sequential read() in state-chunks: peak RSS is + one chunk (~100 MB), never the 15 GB table, and no page cache accumulates. + """ + q_num = p_den - p_num + P = p_den + masks = 1 << W + pc = _popcounts(masks) + mw = (p_num ** pc.astype(object) * q_num ** (W - pc).astype(object)).astype(np.int64) + assert mw.max() * masks < (1 << 62) + K_blocks, G_blocks = [], [] + for s0 in range(0, n, chunk_states): + s1 = min(s0 + chunk_states, n) + m = s1 - s0 + buf = f.read(m * masks * 24) + rec = np.frombuffer(buf, dtype=dt) + nx_ = rec["next"].astype(np.int64) + nr_ = rec["nret"] + bins_ch = rec["bins"] + cnts_ch = rec["cnts"] + rows_all = np.repeat(np.arange(m, dtype=np.int64), masks) + mw_all = np.tile(mw, m) + Kb = sparse.coo_matrix((mw_all, (rows_all, nx_)), shape=(m, n), dtype=np.int64).tocsr().astype(out_dtype) + K_blocks.append(Kb) + Gd = np.zeros((m, d_max + 2), dtype=np.int64) + for q in range(8): + sel = nr_ > q + if not sel.any(): + continue + rows_local = np.nonzero(sel)[0] // masks + bcol = bins_ch[:, q][sel] + cval = mw_all[sel] * cnts_ch[:, q][sel].astype(np.int64) + np.add.at(Gd, (rows_local, bcol), cval) + G_blocks.append(Gd) + K = K_blocks[0] if len(K_blocks) == 1 else sparse.vstack(K_blocks, format="csr", dtype=out_dtype) + G = np.vstack(G_blocks) + assert (np.asarray(K.sum(axis=1)).ravel() == P ** W).all(), "rows not stochastic" + return K.tocsr(), G + + +def stationary(K_float, mode="auto"): + n = K_float.shape[0] + if mode == "splu" or (mode == "auto" and n <= 50000): + A = K_float.T.tocsr() - sparse.eye(n, dtype=np.float64) + A = A.tolil() + A[n - 1, :] = 1.0 + A = A.tocsr() + rhs = np.zeros(n); rhs[n - 1] = 1.0 + lu = splu(A.tocsc()) + x = lu.solve(rhs) + x = x - lu.solve(A @ x - rhs) # one refinement + return x + # power iteration: pi_{t+1} = pi_t K (row vector) + pi = np.full(n, 1.0 / n) + KT = K_float.T.tocsr() + tol = 1e-13 if K_float.dtype == np.float64 else 1e-7 + for it in range(20000): + nxt_pi = KT @ pi + d = np.abs(nxt_pi - pi).sum() + pi = nxt_pi + if d < tol: + break + return pi + + +CENSOR_TOL = 1e-6 + + +def spectrum_moments(dh, tail_bin, d_max): + """Binned moments of the span spectrum d_1..d_{d_max} plus the tail bin. + + The tail bin collects span >= d_max+1 and is EXCLUDED from the moments, so + E[L] and Var/E^2 are censored readouts. `censored` flags any configuration + whose tail fraction is not negligible; at such a width the moments are a + lower bound and must be quoted as censored (see the 2026-09-13 erratum). + """ + n = len(dh) + tot = float(sum(dh)) + m1 = float(sum((i + 1) * dh[i] for i in range(n))) + m2 = float(sum(float(i + 1) ** 2 * dh[i] for i in range(n))) + E = m1 / tot if tot else float("nan") + E2 = m2 / tot if tot else float("nan") + V = E2 - E * E + tail = float(tail_bin) + return { + "d_max": d_max, + "sum_dh": tot, + "tail_bin": tail, + "nu_total": tot + tail, + "tail_fraction": tail / (tot + tail) if (tot + tail) else 0.0, + "E_L": E, + "E_L2": E2, + "var_over_E2": V / (E * E) if E else float("nan"), + "censored": bool(tail / (tot + tail) > CENSOR_TOL if (tot + tail) else False), + } + + +def analyse(path, p_num, p_den, nu_ref=None, label="", light=False, d_max_override=None): + W, matching, d_max, n, f, dt = load_header(path) + if d_max_override is not None: + d_max = d_max_override + K_int, Gd = build_sparse(W, d_max, n, f, dt, p_num, p_den, + out_dtype=(np.float32 if light else np.int64)) + f.close() + P = p_den + P_W = P ** W + delta = Fraction(P - p_num, P) ** W + eq9 = Fraction(W) * (1 - (1 - Fraction(p_num, p_den)) ** W) ** d_max + ginf_num = int(np.abs(Gd).max()) if Gd.size else 0 + + exact = (n <= 300) and not light + if exact: + Kf = K_int.toarray().astype(object) + A = [[Fraction(int(Kf[j, i]), P_W) - (1 if i == j else 0) for j in range(n)] for i in range(n)] + A[-1] = [Fraction(1)] * n + M = [A[i][:] + [Fraction(0)] for i in range(n)] + M[n - 1][n] = Fraction(1) + for c in range(n): + piv = next(r for r in range(c, n) if M[r][c] != 0) + M[c], M[piv] = M[piv], M[c] + pv = M[c][c] + M[c] = [x / pv for x in M[c]] + for r_ in range(n): + if r_ != c and M[r_][c] != 0: + f = M[r_][c] + M[r_] = [x - f * y for x, y in zip(M[r_], M[c])] + pi_f = [M[i][n] for i in range(n)] + nu = [sum(pi_f[s] * int(Gd[s, h]) for s in range(n)) / P_W for h in range(d_max + 2)] + resid = sum(abs(sum(pi_f[s] * Fraction(int(Kf[s, j]), P_W) for s in range(n)) - pi_f[j]) + for j in range(n)) + ginf = max(Fraction(int(Gd[s, h]), P_W) for s in range(n) for h in range(d_max + 2)) if Gd.size else Fraction(0) + cert = str(ginf * resid / delta) + mode = "exact-rational" + dh = nu[1:d_max + 1] + tail = nu[d_max + 1] + dh_f = [float(x) for x in dh] + exact_sum = sum(dh) + exact_tail = tail + tail_f = float(nu[d_max + 1]) + total_f = float(sum(nu[1:d_max + 1])) + nu_total_f = float(sum(nu)) + fres = None + else: + if light: + # memory-light: float64 chain only, no int64 certificate. + # Validation rests on the exact closure against the independently + # certified nu_w of the winding_build engine (#741). + # + # FIX (erratum 2026-09-13, PR #739 issuecomment-5653178247): this + # branch used to hand the RAW integer-weight float32 chain to + # stationary(). The stationary distribution is scale invariant, but + # neither solver is: with K unscaled, (K^T - I) is nonsingular so the + # splu path returns a non-stationary vector whose residual is O(p_den**W) + # (measured: residual 255.0, nu total x84 wrong at w=4), and the power + # iteration grows by p_den**W per sweep and overflows to inf/nan + # (measured: nan at w=5 NN p=1/4). Divide exactly as the normal branch. + Kf = K_int.astype(np.float64) / P_W + pi = stationary(Kf) + pi = np.maximum(pi, 0.0) + pi /= pi.sum() + nu_f = (pi @ Gd) / P_W + dh_f = [float(x) for x in nu_f[1:d_max + 1]] + tail_f = float(nu_f[d_max + 1]) + total_f = float(sum(dh_f)) + nu_total_f = total_f + tail_f + fres = float(np.abs(Kf.T @ pi - pi).sum()) + cert = "skipped(light; closure vs certified nu_w)" + mode = f"float64(light/{'splu' if n <= 50000 else 'power'})" + out = { + "file": path, "label": label, "width": W, "matching": matching, + "p": f"{p_num}/{p_den}", "states": n, "d_max": d_max, "mode": mode, + "d_h_float": dh_f, "tail_bin_float": tail_f, + "sum_dh_float": total_f, "nu_total_float": nu_total_f, + "certificate_bound": cert, "float_residual_l1": fres, + "tail_bound_eq9": str(eq9), "tail_bound_eq9_float": float(eq9), + "delta": str(delta), + "ginf_num": ginf_num, + "moments": spectrum_moments(dh_f, tail_f, d_max), + "cert_candidate": None, + } + if nu_ref is not None: + ref = Fraction(nu_ref) + out["nu_ref"] = nu_ref + out["closure_exact"] = False + out["gap_float"] = float(ref) - nu_total_f + return out + Kf = K_int.astype(np.float64) / P_W + pi = stationary(Kf) + pi = np.maximum(pi, 0.0) + pi /= pi.sum() + nu_f = (pi @ Gd) / P_W + dh_f = [float(x) for x in nu_f[1:d_max + 1]] + tail_f = float(nu_f[d_max + 1]) + total_f = float(sum(dh_f)) + nu_total_f = total_f + tail_f + fres = float(np.abs(Kf.T @ pi - pi).sum()) + cert = None + pi_cert = None + k = None + # The precision claim has two separate parts (erratum 2026-09-13): + # bound_cert bounds |observable(pi_cert) - observable(pi_exact)|, where + # pi_cert = a/2^k is the RATIONAL candidate, not the float pi; + # bound_float bounds |observable(pi_float) - observable(pi_exact)| by the + # same lemma, using the reported float residual. + # Reporting bound_cert alone certifies the candidate, not the printed value; + # we therefore emit the certified candidate's observables and the float-side + # bound as well, so no gap is left implicit. + bound_float = float(Fraction(ginf_num, P_W) * Fraction(fres) / delta) + # exact int64 certificate where the scale fits + try: + k = min(40, max(20, 62 - int(P_W).bit_length() - 4)) + a = np.round(pi * (1 << k)).astype(np.int64) + a = np.maximum(a, 0) + a[int(np.argmax(a))] -= int(a.sum()) - (1 << k) + assert (a >= 0).all() and int(a.sum()) == (1 << k) + r_num = np.zeros(n, dtype=np.int64) + cbits = max(4, 58 - int(n).bit_length() - int(P_W).bit_length()) + for t in range(0, k, cbits): + ch = ((a >> t) & ((1 << cbits) - 1)).astype(np.int64) + if not ch.any(): + continue + c = K_int.T @ ch + if np.abs(c).max() >= (1 << (60 - t)): + raise OverflowError + r_num += c << t + r_num -= a * P_W + assert (np.abs(r_num) < (1 << 62)).all() + l1 = int(np.abs(r_num).sum()) + bound = Fraction(ginf_num, P_W) * Fraction(l1, (1 << k) * P_W) / delta + cert = str(bound) if bound < Fraction(1, 10 ** 6) else f"WEAK({float(bound):.2e})" + pi_cert = a.astype(np.float64) / float(1 << k) + except (OverflowError, AssertionError): + cert = None + pi_cert = None + k = None + run_bound_cert = None + if pi_cert is not None: + nu_c = (pi_cert @ Gd) / P_W + dh_c = [float(x) for x in nu_c[1:d_max + 1]] + tail_c = float(nu_c[d_max + 1]) + mc = spectrum_moments(dh_c, tail_c, d_max) + mf = spectrum_moments(dh_f, tail_f, d_max) + run_bound_cert = float(cert.split("(")[1].rstrip(")")) if cert.startswith("WEAK") else float( + Fraction(cert) if cert else 0.0) + _cert_block = { + "k": k, + "d_h_float": dh_c, + "sum_dh_float": mc["sum_dh"], + "tail_bin_float": tail_c, + "moments": mc, + "max_abs_diff_dh_vs_float": max(abs(dh_c[i] - dh_f[i]) for i in range(len(dh_f))), + "rel_diff_sum_dh_vs_float": abs(mc["sum_dh"] - mf["sum_dh"]) / mf["sum_dh"], + "observable_bound_cert": run_bound_cert, + "observable_bound_float": bound_float, + "observable_bound_sum": ( + run_bound_cert + bound_float if run_bound_cert is not None else None), + } + else: + _cert_block = None + mode = f"float64({'splu' if n <= 50000 else 'power'})" + + out = { + "file": path, "label": label, "width": W, "matching": matching, + "p": f"{p_num}/{p_den}", "states": n, "d_max": d_max, "mode": mode, + "d_h": ([str(x) for x in dh] if exact else None), + "tail_bin": (str(tail) if exact else None), + "sum_dh": (str(exact_sum) if exact else None), + "d_h_float": dh_f, + "tail_bin_float": tail_f, + "sum_dh_float": total_f, + "nu_total_float": nu_total_f, + "certificate_bound": cert, + "tail_bound_eq9": str(eq9), "tail_bound_eq9_float": float(eq9), + "delta": str(delta), + "ginf_num": ginf_num, + "moments": spectrum_moments(dh_f, tail_f, d_max), + "cert_candidate": (_cert_block if not exact else None), + } + if exact: + out["moments_exact_denominator"] = str(Fraction(P_W) ** 2) + if fres is not None: + out["float_residual_l1"] = fres + if nu_ref is not None: + ref = Fraction(nu_ref) + out["nu_ref"] = nu_ref + if exact: + got = exact_sum + exact_tail + out["closure_exact"] = bool(ref == got) + out["gap_to_ref"] = str(ref - got) + out["gap_float"] = float(ref) - (total_f + tail_f) + else: + out["closure_exact"] = False + out["gap_float"] = float(ref) - (total_f + tail_f) + return out + + +def run_jobs(spec_path, out_path): + """Rerun a list of configurations from a small JSON job spec. + + spec: [{"table":..., "p":"1/4", "d_max":48, "light":false, + "nu_ref":"...", "label":"NN w4 p=1/4"}, ...] + Written so that any delivered spectrum can be regenerated from the committed + scripts without the ad-hoc driver used on 2026-09-13 (erratum note, §5). + """ + import json + with open(spec_path) as fh: + jobs = json.load(fh) + rows = [] + for j in jobs: + pn, pd = j["p"].split("/") + r = analyse(j["table"], int(pn), int(pd), nu_ref=j.get("nu_ref"), + label=j.get("label", ""), light=bool(j.get("light", False)), + d_max_override=j.get("d_max")) + rows.append(r) + m = r["moments"] + print("%-24s W=%d %-6s n=%-8d mode=%-28s E[L]=%.6f var/E^2=%.6f tail=%.2e%s" + % (r["label"], r["width"], r["p"], r["states"], r["mode"], m["E_L"], + m["var_over_E2"], m["tail_fraction"], " CENSORED" if m["censored"] else "")) + with open(out_path, "w") as fh: + json.dump(rows, fh, indent=1) + return rows + + +if __name__ == "__main__": + import argparse + ap = argparse.ArgumentParser(description="span-spectrum solver / moment reporter") + ap.add_argument("spec", help="job-spec JSON (list of configurations)") + ap.add_argument("out", help="where to write the result JSON") + args = ap.parse_args() + run_jobs(args.spec, args.out) + + diff --git a/scripts/tagged_span_controls.py b/scripts/tagged_span_controls.py new file mode 100644 index 00000000..decdfc40 --- /dev/null +++ b/scripts/tagged_span_controls.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python3 +"""Independent physical controls and deterministic report for tagged span law.""" +from __future__ import annotations +import argparse +from collections import Counter +from fractions import Fraction as F +from itertools import product +import json +from pathlib import Path +from time import perf_counter +import tagged_winding_span as T + + +def components(width, rows, matching=False): + occ={(x,y) for y,mask in enumerate(rows) for x in range(width) if mask>>x&1} + steps=[(1,0),(-1,0),(0,1),(0,-1)] + if matching:steps += [(a,b) for a in (-1,1) for b in (-1,1)] + unseen=set(occ); out=[] + while unseen: + root=min(unseen); potentials={root:0}; stack=[root]; unseen.remove(root); winding=False + while stack: + x,y=stack.pop() + for dx,dy in steps: + v=((x+dx)%width,y+dy) + if v not in occ:continue + q=potentials[(x,y)]+dx + if v in potentials: + if potentials[v]!=q: + assert (potentials[v]-q)%width==0 + winding=True + else: + potentials[v]=q;unseen.discard(v);stack.append(v) + out.append((frozenset(potentials),winding)) + return out + + +def external_boundary(width, C, matching=False): + steps=[(1,0),(-1,0),(0,1),(0,-1)] + if matching:steps += [(a,b) for a in (-1,1) for b in (-1,1)] + return {((x+dx)%width,y+dy) for x,y in C for dx,dy in steps}-set(C) + + +def shape_activity_counts(width,height,matching=False): + counts=Counter(); checked=0 + for mask in range(1,1<<(width*height)): + checked+=1 + rows=[(mask>>(width*y))&((1<=0:R[i,j]+=wt + elif j==-1:b[i]+=wt + for (i,k),c in src.items():a[i]+=c*p**k*(1-p)**(4-k) + pgf=sp.factor((z*a*(sp.eye(n)-z*R).inv()*b)[0]) + # First coefficient is the exact isolated full-row activity. + assert sp.simplify(sp.diff(pgf,z).subs(z,0)-p**2*(1-p)**4)==0 + out.append({'matching':g,'density_pgf':str(pgf),'p_half':str(sp.factor(pgf.subs(p,sp.Rational(1,2))))}) + return out + + +def laplace_diagnostic(tr,src,p,mean,scales=(1,2,4)): + import numpy as np + from scipy.linalg import solve + alpha,R,b,delta=T.numeric_system(tr,src,p,False) + R=np.array(R);alpha=np.array(alpha);b=np.array(b);I=np.eye(len(b)) + nu=float(alpha@solve(I-R,b));out={} + for s in scales: + z=float(np.exp(-s/mean)) + out[str(s)]=float(z*alpha@solve(I-z*R,b)/nu) + return out + + +def brownian_laplace(scales=(1,2,4)): + import mpmath as mp + mp.mp.dps=50 + mean=mp.sqrt(mp.pi/2) + def cdf(x): + if x<=0:return mp.mpf(0) + if x pi/3 - 1. Put R_w = (CV^2 - T)*w with + T = pi/3 - 1. Model A (CV^2 = T + c/w) makes R_w a constant; model B + (CV^2 = c/w) forces R_w to fall at slope exactly -T per unit width. The + delivered all-height moments reach w=8 without truncation, so both models + can be tested on clean numbers for the first time. + +Run: python scripts/tagged_span_crosscheck.py [--write] +""" +from __future__ import annotations + +import argparse +import json +import sys +from fractions import Fraction +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +RESULTS = ROOT / "results" / "geometric-consistency" + +TAGGED = RESULTS / "tagged-span-resolvent.json" +SPECTRUM = RESULTS / "span-spectrum-20260913.json" +CERTIFIED = RESULTS / "winding-nu-certified-20260913.json" +OUT = RESULTS / "tagged-span-crosscheck-20260913.json" + +# pi/3 - 1 to 100 significant digits, assembled as an exact rational so that +# nothing in this script depends on a floating-point constant. +PI = Fraction( + "3.141592653589793238462643383279502884197169399375105820974944592307816406" + "2862089986280348253421170679821480865132823066470938446095505822317253594" +) +T = PI / 3 - 1 + + +def _centre(moments: dict) -> tuple[Fraction, Fraction, Fraction]: + """(nu, E[L], CV^2) as exact rationals from either report shape.""" + if "centres" in moments: + c = moments["centres"] + return Fraction(c["nu"]), Fraction(c["mean"]), Fraction(c["cv2"]) + return Fraction(moments["nu"]), Fraction(moments["mean"]), Fraction(moments["cv2"]) + + +def _interval(moments: dict) -> tuple[Fraction, Fraction] | None: + iv = moments.get("density_interval") + if not iv: + return None + return Fraction(iv[0]), Fraction(iv[1]) + + +def load_tagged() -> dict[tuple[str, int, str], dict]: + data = json.loads(TAGGED.read_text()) + out: dict[tuple[str, int, str], dict] = {} + for system in data["systems"]: + graph = "matching" if system["matching"] else "NN" + for run in system["runs"]: + key = (graph, system["width"], run["p"]) + nu, e_l, cv2 = _centre(run["moments"]) + out[key] = { + "graph": graph, + "width": system["width"], + "p": run["p"], + "tagged_states": system["tagged_states"], + "exit_lumps": system["exit_lumps"], + "mode": run["mode"], + "nu": nu, + "e_l": e_l, + "cv2": cv2, + "density_interval": _interval(run["moments"]), + } + return out + + +def check_density_containment(tagged: dict, certified: dict) -> dict: + rows = [] + for (graph, w, p), rec in sorted(tagged.items()): + mine = certified.get((graph, w, p)) + if mine is None or rec["density_interval"] is None: + continue + exact = Fraction(mine["nu_exact"]) + lo, hi = rec["density_interval"] + rows.append({ + "graph": graph, "width": w, "p": p, + "independent_nu_exact": str(exact), + "independent_nu_float": float(exact), + "interval_lo": str(lo), "interval_hi": str(hi), + "interval_contains": bool(lo <= exact <= hi), + "interval_width": float(hi - lo), + "centre_minus_exact": float(rec["nu"] - exact), + "centre_rel_error": float(abs(rec["nu"] - exact) / exact), + "interval_width_rel": float((hi - lo) / exact), + }) + return { + "what": "delivered certified density interval vs an independent exact rational nu_w", + "independent_engine": "scripts/cylinder_winding_intensity.py via scripts/winding_nu_certified.py", + "points_compared": len(rows), + "violations": sum(1 for r in rows if not r["interval_contains"]), + "max_centre_rel_error": max((r["centre_rel_error"] for r in rows), default=None), + "min_interval_rel_width": min((r["interval_width_rel"] for r in rows), default=None), + "rows": rows, + } + + +def check_truncation_bias(tagged: dict, spectrum: dict) -> dict: + rows = [] + for run in spectrum["runs"]: + graph = "matching" if run["matching"] else "NN" + key = (graph, run["width"], run["p"]) + rec = tagged.get(key) + if rec is None: + continue + dh = run["d_h_float"] + tail = run["tail_bin_float"] + mass = sum(dh) + tail + e1 = sum((h + 1) * v for h, v in enumerate(dh)) / mass + e2 = sum((h + 1) ** 2 * v for h, v in enumerate(dh)) / mass + cv2 = e2 - e1 * e1 + cv2 /= e1 * e1 + exact_cv2 = float(rec["cv2"]) + rows.append({ + "graph": graph, "width": run["width"], "p": run["p"], + "d_max": run["d_max"], + "tail_fraction": tail / mass, + "censored_e_l": e1, "all_height_e_l": float(rec["e_l"]), + "censored_cv2": cv2, "all_height_cv2": exact_cv2, + "cv2_rel_bias": abs(cv2 - exact_cv2) / exact_cv2, + "R_w_censored": (cv2 - float(T)) * run["width"], + "R_w_true": (exact_cv2 - float(T)) * run["width"], + }) + worst = sorted(rows, key=lambda r: -r["cv2_rel_bias"])[:4] + return { + "what": "depth-clamped span spectrum vs delivered all-height moments, same (graph,width,p)", + "points_compared": len(rows), + "material_bias_threshold_tail_fraction": 1e-6, + "material_bias_points": [r for r in rows if r["tail_fraction"] > 1e-6], + "clean_points_max_cv2_rel_bias": max( + (r["cv2_rel_bias"] for r in rows if r["tail_fraction"] <= 1e-6), default=None), + "worst_four": worst, + "all_rows": rows, + } + + +def check_spectrum_vs_tagged_histogram(tagged: dict, spectrum: dict, + floor_rel: float = 1e-20) -> dict: + """Compare the two constructions height by height, not just in their moments. + + The depth-clamped chain (span_spectrum_build.cpp) tracks the ages of every + active component and then projects onto a span histogram. The tagged + resolvent tracks one lineage and never stores an age. If they are both + computing the span of the same object, they must agree on d_h for every + h <= D_MAX, and on the mass sitting above the cutoff. Comparing only the + first two moments would not catch a compensating error; this does. + + Only heights whose value exceeds `floor_rel * nu` are scored. Below that the + committed file stores denormal-scale float64 numbers (d_h ~ 1e-40, tail bins + ~ 1e-45) whose relative difference is meaningless, and they are counted + separately rather than used to characterise agreement. + + Requires importing the delivered tagged module, so it is the one check here + that consumes delivered code rather than a committed artifact. + """ + sys.path.insert(0, str(ROOT / "scripts")) + import tagged_winding_span as T # noqa: E402 + + rows = [] + for run in spectrum["runs"]: + if run["width"] > 7: + continue # width 8 has no committed truncated row to compare against + graph = "matching" if run["matching"] else "NN" + states, trans, source = T.build(run["width"], bool(run["matching"])) + trans, source, _ = T.lump(trans, source) + res = T.moments(trans, source, Fraction(run["p"]), bins=run["d_max"], exact=True) + dh_exact = res["d_h"] + dh_spec = run["d_h_float"] + if len(dh_exact) != len(dh_spec): + rows.append({"graph": graph, "width": run["width"], "p": run["p"], + "error": f"length mismatch {len(dh_exact)} vs {len(dh_spec)}"}) + continue + nu = float(res["nu"]) + cut = floor_rel * nu + worst_h, worst_rel = None, 0.0 + scored = below = 0 + for h, (a, b) in enumerate(zip(dh_exact, dh_spec), start=1): + fa = float(a) + if fa <= cut: + below += 1 + continue + scored += 1 + rel = abs(fa - b) / fa + if rel > worst_rel: + worst_h, worst_rel = h, rel + tail_exact = float(res["tail"]) + tail_spec = run["tail_bin_float"] + tail_scored = tail_exact > cut + tail_rel = (abs(tail_exact - tail_spec) / tail_exact) if tail_scored else None + rows.append({ + "graph": graph, "width": run["width"], "p": run["p"], + "d_max": run["d_max"], + "tagged_states": len(states), "tagged_lumps": len(trans), + "spectrum_states": run["states"], + "heights_total": len(dh_exact), + "heights_scored": scored, "heights_below_floor": below, + "floor_abs": cut, + "max_rel_diff_d_h": (worst_rel if scored else None), + "max_rel_diff_at_height": worst_h, + "tail_exact": tail_exact, "tail_spectrum": tail_spec, + "tail_scored": tail_scored, "tail_rel_diff": tail_rel, + "d_h_tagged_head": [float(x) for x in dh_exact[:4]], + "d_h_spectrum_head": dh_spec[:4], + }) + scored_rows = [r for r in rows if r.get("max_rel_diff_d_h") is not None] + worst = max((r["max_rel_diff_d_h"] for r in scored_rows), default=None) + return { + "what": "depth-clamped chain vs tagged resolvent, height by height", + "constructions": { + "spectrum": "span_spectrum_build.cpp: all component ages, then span histogram", + "tagged": "tagged_winding_span.py: one lineage, no age, no depth cutoff", + }, + "points_compared": len(rows), + "points_scored": len(scored_rows), + "scoring_floor": f"d_h > {floor_rel:g} * nu", + "worst_rel_diff_over_all_heights": worst, + "total_heights_below_floor": sum(r.get("heights_below_floor", 0) for r in rows), + "state_space_ratio_note": "at w=7 the tagged lumping is 71 states against 389391; " + "at w=6, 36 against 668439", + "rows": rows, + } + + +def _slope(xs: list[float], ys: list[float]) -> float: + n = len(xs) + mx, my = sum(xs) / n, sum(ys) / n + return sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / sum((x - mx) ** 2 for x in xs) + + +def check_model_discriminator(tagged: dict, w_min: int = 4) -> dict: + fams: dict[tuple[str, str], dict[int, tuple[float, float]]] = {} + for (graph, w, p), rec in tagged.items(): + fams.setdefault((graph, p), {})[w] = (float(rec["e_l"]), float(rec["cv2"])) + + tv = float(T) + families = [] + for (graph, p), by_w in sorted(fams.items(), key=lambda kv: (kv[0][0], float(Fraction(kv[0][1])))): + ws = sorted(w for w in by_w if w >= w_min) + r_w = {w: (by_w[w][1] - tv) * w for w in ws} + row = { + "graph": graph, "p": p, "widths": ws, + "cv2": {w: by_w[w][1] for w in ws}, + "R_w": {w: r_w[w] for w in ws}, + } + if len(ws) >= 3: + xs = [float(w) for w in ws] + ys = [r_w[w] for w in ws] + n = len(xs) + my = sum(ys) / n + row["slope_R_w_vs_w"] = _slope(xs, ys) + row["model_B_required_slope"] = -tv + row["rms_model_A_const"] = (sum((y - my) ** 2 for y in ys) / n) ** 0.5 + b0 = my + tv * (sum(xs) / n) + row["rms_model_B_slope_minus_T"] = ( + sum((y - (b0 - tv * x)) ** 2 for x, y in zip(xs, ys)) / n) ** 0.5 + row["verdict"] = ("model A" if row["rms_model_A_const"] < row["rms_model_B_slope_minus_T"] + else "model B") + row["rms_advantage"] = row["rms_model_B_slope_minus_T"] - row["rms_model_A_const"] + row["widths_4_to_8"] = [w for w in ws if w in (4, 8)] + if 4 in r_w and 8 in r_w: + row["model_B_prediction_R_8"] = r_w[4] - 4 * tv + row["measured_R_8"] = r_w[8] + row["model_B_gap_at_w8"] = abs(row["model_B_prediction_R_8"] - r_w[8]) + families.append(row) + + testable = [f for f in families if "verdict" in f] + return { + "what": "section 6.3 moment-limit reading, tested on uncensored all-height moments", + "target_T": "pi/3 - 1", + "T_float": tv, + "definition": "R_w = (CV^2 - T)*w ; model A -> constant, model B -> slope exactly -T", + "families_tested": len(testable), + "families_favouring_model_A": sum(1 for f in testable if f["verdict"] == "model A"), + "min_model_B_gap_at_w8": min( + (f["model_B_gap_at_w8"] for f in testable if "model_B_gap_at_w8" in f), default=None), + "families": families, + } + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--write", action="store_true", help=f"write {OUT.name}") + args = ap.parse_args() + + tagged = load_tagged() + spectrum = json.loads(SPECTRUM.read_text()) + certified = {(r["graph"], r["width"], r["p"]): r + for r in json.loads(CERTIFIED.read_text())["rows"]} + + report = { + "schema": "matching-one/tagged-span-crosscheck/1", + "date": "2026-09-13", + "pr": 739, + "inputs": { + "tagged": str(TAGGED.relative_to(ROOT)), + "spectrum": str(SPECTRUM.relative_to(ROOT)), + "certified": str(CERTIFIED.relative_to(ROOT)), + }, + "density_containment": check_density_containment(tagged, certified), + "truncation_bias": check_truncation_bias(tagged, spectrum), + "histogram_agreement": check_spectrum_vs_tagged_histogram(tagged, spectrum), + "model_discriminator": check_model_discriminator(tagged), + "honesty": [ + "This script verifies arithmetic and mutual consistency. It does not " + "verify the tagged automaton's construction, the unique-anchor pathwise " + "theorem, or any asymptotic claim.", + "The independent nu_w used in check 1 comes from a different exact engine " + "but shares the same underlying cylinder model; it is an independent " + "implementation, not an independent model.", + "Check 3 compares two constructions of the same object, but the tagged " + "side is delivered code imported at run time, so a shared misreading of " + "the span definition would not be caught by it. The two state spaces are " + "structurally unrelated, which is the reason the agreement is meaningful.", + "Check 4 fits four widths at most. Model A beating model B on rms is a " + "consistency statement about two one-parameter readings, not evidence " + "for any particular correction exponent.", + ], + } + + d = report["density_containment"] + print(f"[1] density containment: {d['points_compared']} points, " + f"{d['violations']} violations, worst centre rel.err {d['max_centre_rel_error']:.2e}") + t = report["truncation_bias"] + print(f"[2] truncation bias: {t['points_compared']} points; " + f"{len(t['material_bias_points'])} exceed 1e-6 tail and are materially biased; " + f"clean points max CV^2 rel.bias {t['clean_points_max_cv2_rel_bias']:.2e}") + h = report["histogram_agreement"] + print(f"[3] histogram agreement: {h['points_compared']} points, " + f"worst d_h rel.diff over all heights {h['worst_rel_diff_over_all_heights']:.2e}") + m = report["model_discriminator"] + print(f"[4] model discriminator: {m['families_favouring_model_A']}/{m['families_tested']} " + f"families favour model A; smallest model-B gap at w=8 {m['min_model_B_gap_at_w8']:.4f}") + + if args.write: + if OUT.exists(): + raise FileExistsError(f"{OUT} exists; refusing to overwrite") + OUT.write_text(json.dumps(report, indent=1) + "\n") + print(f"wrote {OUT.relative_to(ROOT)}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/tagged_winding_span.py b/scripts/tagged_winding_span.py new file mode 100644 index 00000000..52f36119 --- /dev/null +++ b/scripts/tagged_winding_span.py @@ -0,0 +1,406 @@ +#!/usr/bin/env python3 +"""All-height winding-component span by a single tagged lineage. + +Only colours, connectivity and winding are stored. No age/depth cutoff. +The source is a finite two-row Bernoulli experiment, not a stationary solve. +For a finite closed state set, d_h = alpha R**(h-1) b is exact. +""" +from __future__ import annotations +import argparse +from collections import Counter +from fractions import Fraction +import json +from pathlib import Path +from time import perf_counter +from typing import NamedTuple + +NEUTRAL, TAG, FORBIDDEN = 0, 1, 2 + +class State(NamedTuple): + labels: tuple[int, ...] + gains: tuple[int, ...] + winding: tuple[int, ...] + colours: tuple[int, ...] + +class DSU: + def __init__(self, n: int): + self.par=list(range(n)); self.delta=[0]*n + self.wind=[False]*n; self.col=[0]*n + def find(self, a): + if self.par[a] != a: + r,g=self.find(self.par[a]); self.delta[a]+=g; self.par[a]=r + return self.par[a],self.delta[a] + def join(self,a,b,gain): + ra,da=self.find(a); rb,db=self.find(b) + if ra==rb: self.wind[ra] |= (db-da!=gain) + else: + self.par[rb]=ra; self.delta[rb]=gain+da-db + self.wind[ra] |= self.wind[rb]; self.col[ra] |= self.col[rb] + +def empty(width): + if width < 2: raise ValueError('width must be >=2; lifted parallel edges retained') + return State((-1,)*width,(0,)*width,(),()) + +def step(state: State, mask: int, matching=False, tagged=True, connected=False): + """Return (next state, outcome). outcome=0 continue,1 accept,-1 reject. + + In source mode tagged=False, colours propagate but retirement is ignored. + """ + w=len(state.labels) + if not 0 <= mask < 1<=0] + new=[i for i in range(w) if mask>>i&1] + for i in old: + k=state.labels[i] + if k in reps: d.join(reps[k],i,state.gains[i]) + else: reps[k]=i + for k,i in reps.items(): + root,_=d.find(i); d.wind[root]=bool(state.winding[k]); d.col[root]=state.colours[k] + for i in new: + j=(i+1)%w + if mask>>j&1: d.join(w+i,w+j,(i+1)//w) + for dx in ((-1,0,1) if matching else (0,)): + j=(i+dx)%w + if state.labels[j]>=0: d.join(w+i,j,(i+dx)//w) + roots={d.find(i)[0] for i in old+[w+i for i in new]} + kept={d.find(w+i)[0] for i in new} + if connected and (roots-kept or not kept): + return None, 1 if (not kept and len(roots)==1 and d.wind[next(iter(roots))]) else -1 + if tagged: + marked=[r for r in roots if d.col[r]&TAG] + if len(marked)!=1: raise AssertionError('exactly one live tag required') + r=marked[0] + if d.col[r]&FORBIDDEN: return None,-1 + if r not in kept: return None,1 if d.wind[r] else -1 + labels=[-1]*w; gains=[0]*w; wind=[]; colours=[]; canon={} + for i in new: + r,g=d.find(w+i) + if r not in canon: + canon[r]=(len(wind),g); wind.append(int(d.wind[r])); colours.append(d.col[r]) + k,g0=canon[r]; labels[i]=k; gains[i]=0 if d.wind[r] else g-g0 + return State(tuple(labels),tuple(gains),tuple(wind),tuple(colours)),0 + +def source_entries(width, matching=False): + """Integer multiplicities indexed by state and occupancy of two source rows. + + All old row (-1) components are forbidden. A row-zero candidate is tagged; + smaller row-zero candidate components are also forbidden (tie breaking). + """ + out=Counter() + for prev in range(1<8: raise ValueError('reference source enumeration limited to width <=8') + sources=source_entries(width,matching) + states=[]; index={} + def add(s): + if s not in index: + if len(states)>=state_cap: raise RuntimeError('state cap reached') + index[s]=len(states); states.append(s) + return index[s] + for s,k in sources: add(s) + transitions=[] + for s in states: + row=[] + for mask in range(1<=0 else j) + for mask,(j,_) in enumerate(row)).items())) + if sig not in lookup: lookup[sig]=len(lookup) + nxt.append(lookup[sig]) + if nxt==blocks: break + blocks=nxt + reps=[blocks.index(i) for i in range(max(blocks)+1)] + reduced=[[(blocks[j] if j>=0 else j,o) for j,o in transitions[i]] for i in reps] + src=Counter() + for (i,k),c in source.items(): src[(blocks[i],k)]+=c + return reduced,src,blocks + +def numeric_system(transitions, source, p, exact=True): + n=len(transitions); w=(len(transitions[0])-1).bit_length() + zero=Fraction(0) if exact else 0.0 + pp=Fraction(p) if exact else float(p) + if not 0 < pp < 1: raise ValueError("requires 0=0: R[i][j]+=wt + elif j==-1: b[i]+=wt + for (i,k),count in source.items(): alpha[i]+=count*pp**k*(1-pp)**(2*w-k) + delta=(1-pp)**w + if exact: + assert all(sum(row)<=1-delta for row in R) + assert all(sum(row)+bb<=1 for row,bb in zip(R,b)) + return alpha,R,b,delta + +def solve(A, b): + n=len(b); M=[[Fraction(x) for x in row]+[Fraction(y)] for row,y in zip(A,b)] + for j in range(n): + pivot=next((i for i in range(j,n) if M[i][j]),None) + if pivot is None: raise ValueError('singular matrix') + M[j],M[pivot]=M[pivot],M[j]; v=M[j][j]; M[j]=[x/v for x in M[j]] + for i in range(n): + if i!=j and M[i][j]: + v=M[i][j]; M[i]=[a-v*b for a,b in zip(M[i],M[j])] + return [row[-1] for row in M] + +def moments(transitions, source, p, bins=12, exact=True): + alpha,R,b,delta=numeric_system(transitions,source,p,exact) + n=len(b) + if exact: + A=[[int(i==j)-R[i][j] for j in range(n)] for i in range(n)] + z1=solve(A,b); z2=solve(A,z1); z3=solve(A,z2) + dot=lambda v:sum(a*x for a,x in zip(alpha,v)) + nu=dot(z1); mean=dot(z2)/nu; second=dot([2*x-y for x,y in zip(z3,z2)])/nu + v=alpha[:]; dh=[] + for _ in range(bins): + dh.append(sum(x*y for x,y in zip(v,b))) + v=[sum(v[i]*R[i][j] for i in range(n)) for j in range(n)] + tail=sum(x*y for x,y in zip(v,z1)) + t1=sum(x*(bins*y+z) for x,y,z in zip(v,z1,z2)) + t2=sum(x*(bins*bins*y+2*bins*z+2*u-z) for x,y,z,u in zip(v,z1,z2,z3)) + assert sum(dh)+tail==nu + assert sum((i+1)*x for i,x in enumerate(dh))+t1==nu*mean + assert sum((i+1)**2*x for i,x in enumerate(dh))+t2==nu*second + else: + import numpy as np + from scipy.linalg import lu_factor, lu_solve + rr=np.asarray(R); aa=np.asarray(alpha); bb=np.asarray(b) + lu=lu_factor(np.eye(n)-rr) + z1=lu_solve(lu,bb); z2=lu_solve(lu,z1); z3=lu_solve(lu,z2) + nu=float(aa@z1); mean=float(aa@z2)/nu; second=float(aa@(2*z3-z2))/nu + v=aa.copy(); dh=[] + for _ in range(bins): dh.append(float(v@bb)); v=v@rr + tail=float(v@z1); t1=float(v@(bins*z1+z2)); t2=float(v@(bins*bins*z1+(2*bins-1)*z2+2*z3)) + var=second-mean*mean + return dict(nu=nu,mean=mean,second=second,variance=var,cv2=var/mean**2, + d_h=dh,tail=tail,tail_first=t1,tail_second=t2,delta=delta) + +def jsonable(x): + if isinstance(x,Fraction): return str(x) + if isinstance(x,dict):return {str(k):jsonable(v) for k,v in x.items()} + if isinstance(x,(list,tuple)):return [jsonable(v) for v in x] + return x + +def certified_moments(transitions, source, p, bins=12): + """Exact rational residual enclosures after one floating correction per solve. + + Returned centres are rational corrected solutions, not the pre-rounding + float vectors. The inverse infinity norm is at most 1/delta. + """ + import numpy as np + from scipy.linalg import lu_factor, lu_solve + alpha,R,b,delta=numeric_system(transitions,source,Fraction(p),True) + n=len(b); A=[[Fraction(int(i==j))-R[i][j] for j in range(n)] for i in range(n)] + af=np.array([[float(x) for x in row] for row in A]); lu=lu_factor(af) + def exact_residual(x,rhs): + return [rhs[i]-sum(v*y for v,y in zip(A[i],x)) for i in range(n)] + def corrected(rhs): + xf=lu_solve(lu,np.array([float(x) for x in rhs])) + x=[Fraction.from_float(float(v)) for v in xf] + r=exact_residual(x,rhs) + dx=lu_solve(lu,np.array([float(v) for v in r])) + x=[v+Fraction.from_float(float(d)) for v,d in zip(x,dx)] + r=exact_residual(x,rhs) + return x,max(map(abs,r)) + x1,r1=corrected(b); e1=r1/delta + x2,r2=corrected(x1); e2=(r2+e1)/delta + x3,r3=corrected(x2); e3=(r3+e2)/delta + mass=sum(alpha); dot=lambda x:sum(a*b for a,b in zip(alpha,x)) + centres=[dot(x1),dot(x2),dot([2*x-y for x,y in zip(x3,x2)])] + errors=[mass*e1,mass*e2,mass*(2*e3+e2)] + raw=[(c-e,c+e) for c,e in zip(centres,errors)] + if raw[0][0]<=0:raise ArithmeticError('density not separated from zero') + mean=(raw[1][0]/raw[0][1],raw[1][1]/raw[0][0]) + second=(raw[2][0]/raw[0][1],raw[2][1]/raw[0][0]) + var=(second[0]-mean[1]**2,second[1]-mean[0]**2) + cv=(var[0]/mean[1]**2,var[1]/mean[0]**2) + return dict(density_interval=raw[0],mean_interval=mean,second_interval=second, + variance_interval=var,cv2_interval=cv,raw_moment_intervals=raw, + residuals=[r1,r2,r3],inverse_bound=1/delta, + centres=dict(nu=centres[0],mean=centres[1]/centres[0], + second=centres[2]/centres[0], + cv2=centres[2]*centres[0]/centres[1]**2-1)) + + +def weighted_choice(weights, rng): + from math import lcm + weights=[Fraction(x) for x in weights] + if min(weights)<0 or sum(weights)<=0: raise ValueError('invalid exact weights') + denominator=1 + for x in weights: denominator=lcm(denominator,x.denominator) + ints=[x.numerator*(denominator//x.denominator) for x in weights] + pick=rng.randrange(sum(ints)) + for i,v in enumerate(ints): + if pick=0 else int(j==-1) + choices.append(wt[m]*hm/hi) + assert sum(choices)==1 + m=weighted_choice(choices,rng); qpath*=choices[m];prior*=wt[m];rows.append(m) + nxt,out=step(s,m,matching) + if out: + assert out==1 and qpath==prior/nu + return dict(rows=rows,anchor=anchor,span=len(rows)-2, + path_probability=qpath,unconditioned_row_weight=prior,nu=nu) + s=nxt + raise RuntimeError('sampling row cap reached; no sample returned') + + +def expand_mask(mask,width,matching=False): + if not matching:return mask + full=(1<>(width-1)) | (mask>>1) | ((mask&1)<<(width-1)) + + +def activity_transfer(width,matching=False,state_cap=100000): + """Direct complete-component activity; track two rows plus connectivity. + + A transition label (k,b) means u**k v**b for occupied and DISTINCT + boundary sites finalized in the current row. Connected pieces may not + retire before the whole selected component. No random environment needed. + """ + if not 2<=width<=6:raise ValueError('reference activity builder width 2..6') + states=[];idx={};src=Counter() + def add(s): + if s not in idx: + if len(states)>=state_cap:raise RuntimeError('activity state cap') + idx[s]=len(states);states.append(s) + return idx[s] + for mask in range(1,1<=0) + horizontal=expand_mask(current,width,True) + k=current.bit_count();row=[] + for mask in range(1<=0 else j,k,b) for j,k,b in row).items())) + if sig not in lookup:lookup[sig]=len(lookup) + nxt.append(lookup[sig]) + if nxt==blocks:break + blocks=nxt + reduced=[[(blocks[j] if j>=0 else j,k,b) for j,k,b in tr[blocks.index(i)]] for i in range(max(blocks)+1)] + source=Counter() + for (i,b),c in src.items():source[(blocks[i],b)]+=c + return states,reduced,source + + +def activity_joint_moments(tr,src,p): + """Exact all-height complete-Palm moments of span L and occupation K.""" + p=Fraction(p);n=len(tr) + R=[[[Fraction(0) for _ in range(n)] for _ in range(n)] for order in range(3)] + b=[[Fraction(0)]*n for _ in range(3)];alpha=[Fraction(0)]*n + for i,row in enumerate(tr): + for j,k,nb in row: + weight=p**k*(1-p)**nb + factors=(1,k,k*(k-1)) + for q,f in enumerate(factors): + if j<0:b[q][i]+=f*weight + else:R[q][i][j]+=f*weight + for (i,nb),c in src.items():alpha[i]+=c*(1-p)**nb + A=[[int(i==j)-R[0][i][j] for j in range(n)] for i in range(n)] + mv=lambda mat,x:[sum(v*y for v,y in zip(row,x)) for row in mat] + add=lambda *xs:[sum(z) for z in zip(*xs)] + dot=lambda x:sum(a*b for a,b in zip(alpha,x)) + y=solve(A,b[0]);yL=solve(A,y);z3=solve(A,yL) + yK=solve(A,add(b[1],mv(R[1],y))) + yKK=solve(A,add(b[2],mv(R[2],y),[2*x for x in mv(R[1],yK)])) + yLK=solve(A,add(mv(R[1],yL),yK)) + nu=dot(y);EL=dot(yL)/nu;EK=dot(yK)/nu + varL=dot([2*x-y for x,y in zip(z3,yL)])/nu-EL**2 + varK=dot(add(yKK,yK))/nu-EK**2;cov=dot(yLK)/nu-EL*EK + assert varL>=0 and varK>=0 and cov**2<=varL*varK + return dict(nu=nu,mean_span=EL,mean_occupation=EK,variance_span=varL, + variance_occupation=varK,covariance_span_occupation=cov, + correlation_squared=cov**2/(varL*varK) if varL*varK else Fraction(0)) + + +if __name__=='__main__': + ap=argparse.ArgumentParser(); ap.add_argument('--width',type=int,default=4) + ap.add_argument('--matching',action='store_true'); ap.add_argument('--p',default='1/4') + ap.add_argument('--float',action='store_true'); ap.add_argument('--output',type=Path) + args=ap.parse_args(); start=perf_counter() + states,tr,src=build(args.width,args.matching); tr,src,blocks=lump(tr,src) + out={'width':args.width,'matching':args.matching,'p':args.p,'states':len(states), + 'blocks':len(tr),'all_height_moments':moments(tr,src,Fraction(args.p),exact=not args.float), + 'seconds':perf_counter()-start,'mode':'floating diagnostic' if args.float else 'exact rational'} + text=json.dumps(jsonable(out),indent=2) + if args.output: + if args.output.exists():raise FileExistsError(args.output) + args.output.parent.mkdir(parents=True,exist_ok=True); args.output.write_text(text+'\n') + else:print(text) diff --git a/scripts/two_birth_reduction.py b/scripts/two_birth_reduction.py new file mode 100644 index 00000000..3b3def37 --- /dev/null +++ b/scripts/two_birth_reduction.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python3 +"""Finite controls for the two-birth reduction (not a new width scan). + +The universal concentration constant comes from Friedgut--Kalai and is NOT +estimated here. Width-two formulas are an existing exact calibration model. +Only mpmath is required beyond the standard library. No random sampling. +""" +from __future__ import annotations +import argparse +from fractions import Fraction +from itertools import permutations +import json +from math import comb, factorial +from pathlib import Path +import mpmath as mp + + +def lifted_rank(width: int, length: int, mask: int) -> int: + """Ambient rank of the occupied NN graph, retaining parallel lifted edges.""" + if width < 2 or length < 2 or not 0 <= mask < (1 << (width * length)): + raise ValueError("Expected width,length >= 2 and a legal site mask") + potentials: dict[int, tuple[int, int]] = {} + generator: tuple[int, int] | None = None + for root in range(width * length): + if not (mask >> root & 1) or root in potentials: + continue + potentials[root] = (0, 0) + stack = [root] + while stack: + vertex = stack.pop() + x, y = vertex % width, vertex // width + px, py = potentials[vertex] + for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)): + other = ((y + dy) % length) * width + (x + dx) % width + if not (mask >> other & 1): + continue + expected = (px + dx, py + dy) + if other not in potentials: + potentials[other] = expected + stack.append(other) + else: + old = potentials[other] + gain = (expected[0] - old[0], expected[1] - old[1]) + if gain != (0, 0): + if generator is None: + generator = gain + elif generator[0] * gain[1] != generator[1] * gain[0]: + return 2 + return int(generator is not None) + + +def census(width: int, length: int) -> list[list[int]]: + n = width * length + if n > 16: + raise ValueError("This control deliberately caps exhaustive enumeration at 16 sites") + counts = [[0] * (n + 1) for _ in range(3)] + for mask in range(1 << n): + counts[lifted_rank(width, length, mask)][mask.bit_count()] += 1 + return counts + + +def beta_integral(counts: list[int]) -> Fraction: + """Integral of sum_k counts[k] p^k(1-p)^(N-k), exactly.""" + n = len(counts) - 1 + return sum((Fraction(c, (n + 1) * comb(n, k)) + for k, c in enumerate(counts)), Fraction()) + + +def census_probability(counts: list[int], p): + n = len(counts) - 1 + return sum(c * p**k * (1 - p)**(n - k) for k, c in enumerate(counts)) + + +def sector_probabilities(length: int, p): + """Exact algebraic width-two expressions, evaluated at current mp precision.""" + if length < 2 or not 0 <= p <= 1: + raise ValueError("Expected length >= 2 and p in [0,1]") + p = mp.mpf(p) + if p == 0: + return mp.mpf(1), mp.mpf(0), mp.mpf(0) + if p == 1: + return mp.mpf(0), mp.mpf(0), mp.mpf(1) + x, y = p * (1 - p), p * p + lp = p * (1 + mp.sqrt(1 + 4 * p * (1 - p))) / 2 + lm = -x * y / lp # stable product relation, instead of subtracting square roots + p0 = (1 - y)**length - 2 * x**length + p2 = lp**length + lm**length - x**length + return p0, 1 - p0 - p2, p2 + + +def cdf(length: int, channel: str, p): + p0, _, p2 = sector_probabilities(length, p) + if channel == "first": + return 1 - p0 + if channel == "second": + return p2 + if channel == "mixture": + return (1 - p0 + p2) / 2 + raise ValueError("channel must be first, second, or mixture") + + +def quantile(length: int, channel: str, u): + u = mp.mpf(u) + if not 0 < u < 1: + raise ValueError("Quantile level must be strictly between 0 and 1") + lo, hi = mp.mpf(0), mp.mpf(1) + # Reporting precision is intentionally far below this working precision. + for _ in range(4 * mp.mp.dps): + mid = (lo + hi) / 2 + if mid == lo or mid == hi: + break + if cdf(length, channel, mid) < u: + lo = mid + else: + hi = mid + return (lo + hi) / 2 + + +def exact_small_controls() -> dict: + records = [] + for length in (2, 3, 4): + counts = census(2, length) + n = 2 * length + for k in range(n + 1): + assert sum(row[k] for row in counts) == comb(n, k) + for rational in (Fraction(1, 3), Fraction(1, 2), Fraction(2, 3)): + p = mp.mpf(rational.numerator) / rational.denominator + got = sector_probabilities(length, p) + for rank in range(3): + expected = census_probability(counts[rank], rational) + assert abs(got[rank] - mp.mpf(expected.numerator) / expected.denominator) < mp.mpf("1e-50") + mu1 = beta_integral(counts[0]) + mu2 = 1 - beta_integral(counts[2]) + gap = beta_integral(counts[1]) + assert mu2 - mu1 == gap + records.append({"width": 2, "length": length, "configurations": 1 << n, + "counts_by_rank_and_occupation": counts, + "mean_first_birth": str(mu1), "mean_second_birth": str(mu2), + "integral_P1_exact": str(gap)}) + # Independent occupation-order check of the normalized rank-gap identity. + n, sum_first, sum_second, sum_product = 6, 0, 0, 0 + for order in permutations(range(n)): + mask, k1, k2 = 0, None, None + for k, v in enumerate(order, 1): + mask |= 1 << v + r = lifted_rank(2, 3, mask) + if r >= 1 and k1 is None: + k1 = k + if r == 2: + k2 = k + break + assert k1 is not None and k2 is not None + sum_first += k1 + sum_second += k2 + sum_product += k1 * (k2 + 1) + mu1 = Fraction(sum_first, factorial(n) * (n + 1)) + mu2 = Fraction(sum_second, factorial(n) * (n + 1)) + covariance = Fraction(sum_product, factorial(n) * (n + 1) * (n + 2)) - mu1 * mu2 + assert str(mu2 - mu1) == records[1]["integral_P1_exact"] + assert covariance > 0 # independent births are not assumed, even in tiny controls + return {"censuses": records, "total_configurations": sum(r["configurations"] for r in records), + "permutation_control": {"width": 2, "length": 3, "permutations": factorial(n), + "normalized_mean_birth_rank_gap": str(mu2 - mu1), + "birth_time_covariance": str(covariance)}} + + +def finite_record(length: int, digits: int = 24) -> dict: + a = quantile(length, "first", mp.mpf("0.5")) + b = quantile(length, "second", mp.mpf("0.5")) + q = quantile(length, "mixture", mp.mpf("0.5")) + q25 = quantile(length, "mixture", mp.mpf("0.25")) + q75 = quantile(length, "mixture", mp.mpf("0.75")) + assert q25 <= a <= q <= b <= q75 + f1 = lambda p: cdf(length, "first", p) + f2 = lambda p: cdf(length, "second", p) + f = lambda p: cdf(length, "mixture", p) + mu1 = mp.quad(lambda p: 1 - f1(p), [0, a, b, 1]) + mu2 = mp.quad(lambda p: 1 - f2(p), [0, a, b, 1]) + gap = mp.quad(lambda p: sector_probabilities(length, p)[1], [0, a, b, 1]) + assert abs(mu2 - mu1 - gap) < mp.mpf("1e-45") + mad1 = mp.quad(f1, [0, a]) + mp.quad(lambda p: 1 - f1(p), [a, b, 1]) + mad2 = mp.quad(f2, [0, a, b]) + mp.quad(lambda p: 1 - f2(p), [b, 1]) + w1 = (mp.quad(f, [0, a]) + mp.quad(lambda p: mp.mpf(".5") - f(p), [a, q]) + + mp.quad(lambda p: f(p) - mp.mpf(".5"), [q, b]) + + mp.quad(lambda p: 1 - f(p), [b, 1])) + assert w1 <= (mad1 + mad2) / 2 + mp.mpf("1e-45") + assert abs(gap - (b - a)) <= mad1 + mad2 + mp.mpf("1e-45") + values = {"first_birth_median": a, "matching_root": q, "second_birth_median": b, + "median_separation": b - a, "mixture_q25": q25, "mixture_q75": q75, + "mixture_IQR": q75 - q25, "integral_P1": gap, + "first_birth_MAD": mad1, "second_birth_MAD": mad2, + "mixture_W1_to_two_median_atoms": w1, + "component_coupling_W1_upper": (mad1 + mad2) / 2} + return {"width": 2, "length": length, "sites": 2 * length, + **{key: mp.nstr(value, digits) for key, value in values.items()}} + + +def make_report(dps: int = 80) -> dict: + if dps < 60: + raise ValueError("Use at least 60 working decimal digits") + with mp.workdps(dps): + return {"schema": "matching-one.two-birth-reduction.v1", + "scope": "Existing width-two exact oracle; no new width, no Monte Carlo", + "precision": {"working_decimal_digits": dps, "reported_digits": 24, + "quadrature_status": "high precision numerical control, not interval certification"}, + "universal_constant": "Friedgut--Kalai constant left unspecified; not fitted or priced", + "exact_controls": exact_small_controls(), + "finite_length_controls": [finite_record(m) for m in (2, 4, 8, 16, 32, 128)], + "interpretation": "Fixed width 2 does not approach the infinite square-site critical point"} + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--dps", type=int, default=80) + args = parser.parse_args() + if args.output.exists(): + parser.error("Refusing to overwrite an existing result file") + report = make_report(args.dps) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(f"Wrote {args.output}") + + +if __name__ == "__main__": + main() diff --git a/scripts/winding_dilute_crossover.py b/scripts/winding_dilute_crossover.py new file mode 100644 index 00000000..666c286c --- /dev/null +++ b/scripts/winding_dilute_crossover.py @@ -0,0 +1,341 @@ +#!/usr/bin/env python3 +"""Dilute NN-site winding density: exact combinatorics and analytic controls. + +The all-width theorem is in dilute-winding-crossover.md. No large-width +stationary density or Monte Carlo is calculated here. Small-width rational +functions below are retained inputs from the preceding intensity delivery. +Python stdlib for combinatorial tests; mpmath for report numerics. +""" +from __future__ import annotations +import argparse +from collections import Counter, deque +from fractions import Fraction +from itertools import combinations, product +from math import comb +from pathlib import Path +import json + +SMALL_INTENSITIES = {'2': {'expression': 'p**2*(p - 1)**2*(p**2 + p + 1)/(p**2 - p + 1)', 'numerator_descending': [1, -1, 0, -1, 1, 0, 0], 'denominator_descending': [1, -1, 1], 'low_p_through_8': 'p**2 - p**4 - 2*p**5 + 2*p**7 + 2*p**8 + O(p**9)'}, '3': {'expression': '-p**3*(p - 1)**3*(p**6 + p**3 + 2*p**2 + 2*p + 1)/(p**6 - 3*p**5 + 3*p**4 + p**3 - p**2 - p + 1)', 'numerator_descending': [-1, 3, -3, 0, 1, 1, 0, -1, -1, 1, 0, 0, 0], 'denominator_descending': [1, -3, 3, 1, -1, -1, 1], 'low_p_through_8': 'p**3 - p**6 - 3*p**7 + O(p**9)'}, '4': {'expression': 'p**4*(p - 1)**4*(p**19 - 5*p**18 + 10*p**17 - 8*p**16 - 3*p**15 + 12*p**14 - 14*p**13 + 14*p**12 - 8*p**11 - 5*p**10 + 3*p**9 + 3*p**8 + 3*p**7 + 4*p**6 - 3*p**5 - 3*p**4 - 9*p**3 - 7*p**2 - 3*p - 1)/((p**2 - p - 1)*(p**2 - p + 1)*(p**15 - 7*p**14 + 21*p**13 - 33*p**12 + 25*p**11 - 2*p**10 - 8*p**9 + 3*p**8 - p**7 - 2*p**6 + 6*p**5 - 4*p**4 + 4*p**3 - 2*p**2 - p + 1))', 'numerator_descending': [1, -9, 36, -82, 110, -69, -38, 146, -199, 179, -95, 7, 21, -7, -10, 24, -28, 27, -20, 2, 5, -1, 1, -1, 0, 0, 0, 0], 'denominator_descending': [1, -9, 36, -82, 111, -78, 0, 50, -40, 5, 17, -21, 19, -12, 1, 5, -7, 3, 1, -1], 'low_p_through_8': 'p**4 + 4*p**6 - 8*p**7 + 7*p**8 + O(p**9)'}} + + +def neighbours(v: tuple[int, int], w: int): + x,y=v + return [((x+1)%w,y), ((x-1)%w,y), (x,y+1), (x,y-1)] + + +def winding_components(vertices: set[tuple[int,int]], w: int) -> int: + """Independent physical lifted-coordinate BFS on a free-height cylinder.""" + seen: dict[tuple[int,int], tuple[int,int]]={} + count=0 + for root in sorted(vertices): + if root in seen: + continue + seen[root]=(0,0) + todo=[root]; winds=False + while todo: + v=todo.pop(); x,y=v; vx,vy=seen[v] + for dx,dy in ((1,0),(-1,0),(0,1),(0,-1)): + t=((x+dx)%w,y+dy) + if t not in vertices: + continue + value=(vx+dx,vy+dy) + if t not in seen: + seen[t]=value;todo.append(t) + else: + error=(value[0]-seen[t][0],value[1]-seen[t][1]) + if error[0]: + assert error[0]%w==0 and error[1]==0 + winds=True + count += int(winds) + return count + + +def gap_subsets(w: int, k: int): + """Subsets with cyclic distance at least three between selected columns.""" + if w<6 or k<0: + raise ValueError('require w>=6 and k>=0') + for c in combinations(range(w),k): + if k<=1 or all((c[(i+1)%k]-c[i])%w>=3 for i in range(k)): + yield c + + +def gap_count(w: int, k: int) -> int: + if k==0: + return 1 + if w<3*k: + return 0 + return w*comb(w-2*k,k)//(w-2*k) + + +def separated_cycles(w: int, r: int): + """Each positive winding cycle is addressed by its incoming height at x=0.""" + for cols in gap_subsets(w,2*r): + for ups in combinations(cols,r): + up=set(ups); events={x:(1 if x in up else -1) for x in cols} + y=0; vset=set() + for x in range(w): + vset.add((x,y)) + if x in events: + y += events[x] + vset.add((x,y)) + assert y==0 + yield vset + + +def short_external_contacts(cycle: set[tuple[int,int]], w: int) -> int: + """Off-cycle vertices touching >=2 cycle vertices (one-site returns).""" + contacts=Counter() + for v in cycle: + for t in neighbours(v,w): + if t not in cycle: + contacts[t]+=1 + return sum(n>=2 for n in contacts.values()) + + +def minimal_nonrow_census(max_width: int=8) -> list[dict]: + """Only fixed occupation numbers in TWO free rows, not a full-size scan.""" + results=[] + for w in range(3,max_width+1): + points=[(x,y) for y in (0,1) for x in range(w)] + tested=0; hits={} + for k in (w,w+1,w+2): + n=0 + for subset in combinations(points,k): + tested+=1; s=set(subset) + if any(all((x,y) in s for x in range(w)) for y in (0,1)): + continue + n += int(winding_components(s,w)>0) + hits[k]=n + assert hits[w]==0 and hits[w+1]==0 + assert hits[w+2]==w*(w-3) + results.append({'width':w,'tested_fixed_size_sets':tested, + 'nonrow_winding_counts':hits,'predicted_first_count':w*(w-3)}) + return results + + +def cycle_geometry_checks(max_width: int=16) -> dict: + totals={'cycles':0,'gap_subset_checks':0,'max_contact_over_r':0} + for w in range(6,max_width+1): + for r in range(0,min(2,w//6)+1): + k=2*r + subsets=list(gap_subsets(w,k)) + assert len(subsets)==gap_count(w,k) + # The probability that k labelled iid columns are separated: + # union bound over pairs at cyclic distance 0,1,2. + from math import factorial + assert Fraction(len(subsets)*factorial(k),w**k)>=1-Fraction(5*k*(k-1),2*w) + totals['gap_subset_checks']+=1 + n=0 + for c in separated_cycles(w,r): + assert len(c)==w+2*r + assert winding_components(c,w)==1 + # An induced simple cycle: no occupied chords. + assert all(sum(t in c for t in neighbours(v,w))==2 for v in c) + z=short_external_contacts(c,w) + assert z<=16*r + if r: + totals['max_contact_over_r']=max(totals['max_contact_over_r'],z/r) + n+=1 + assert n==gap_count(w,k)*comb(k,r) + totals['cycles']+=n + return totals + + +def evaluate_small_nu(w: int, p: Fraction) -> Fraction: + s=SMALL_INTENSITIES[str(w)] + def horner(a): + v=Fraction(0) + for x in a: v=v*p+x + return v + return horner(s['numerator_descending'])/horner(s['denominator_descending']) + + +def rational_series(w: int, degree: int=10) -> list[Fraction]: + s=SMALL_INTENSITIES[str(w)] + num=list(reversed(s['numerator_descending'])) + den=list(reversed(s['denominator_descending'])) + out=[] + for n in range(degree+1): + value=Fraction(num[n] if n Fraction: + if w<6 or not 0=6, 0 Fraction: + """Rigorous finite sum / p**w. May be weak, never a point estimate.""" + answer=Fraction(0) + for r in range(w//6+1): + n=w+2*r + failure=16*r*p+12*n*p*p/(1-3*p)+16*n*(3*p)**(w-1) + answer+=gap_count(w,2*r)*comb(2*r,r)*p**(2*r)*max(Fraction(0),1-failure) + return answer + + +def central_trinomial(w: int) -> int: + return sum(comb(w,2*k)*comb(2*k,k) for k in range(w//2+1)) + + +def mp_number(x,mp): + if isinstance(x,Fraction): return mp.mpf(x.numerator)/x.denominator + return mp.mpf(x) + + +def walk_upper_normalized(w: int, p, mp): + """Upper bound U_w/p^w; integral is diagnostic, not interval quadrature.""" + p=mp_number(p,mp) + def value(theta): + b=1-2*p*mp.cos(theta) + t_over_p=2/(b+mp.sqrt(b*b-4*p*p)) + return mp.exp(w*mp.log(t_over_p)) + return mp.quad(value,[0,mp.pi/2,mp.pi])/mp.pi + + +def bessel_contrast(lam,mp): + lam=mp.mpf(lam) + return (mp.log(mp.besseli(0,2*lam))+mp.log(mp.besseli(0,6*lam)) + -2*mp.log(mp.besseli(0,4*lam)))/mp.log(mp.mpf(4)/3) + + +def matrix_loop_coefficients(max_n: int) -> list[Fraction]: + """Exact 2^n L_n for the correlated two-state renewal control. + + det(I-A(2z,y))=1+(2+y+y^-1)*(-6z-5z²+2z³+z⁴)/32. + Scale coefficients by 32^n to use integers throughout. + """ + a={1:-6,2:-5,3:2,4:1} + polys=[{}] + ans=[Fraction(0)] + for n in range(1,max_n+1): + c={} + if n<=4: + base=-n*a[n]*32**(n-1) + c={-1:base,0:2*base,1:base} + for k in range(1,min(n-1,4)+1): + scale=-a[k]*32**(k-1) + for j,v in polys[n-k].items(): + for d,b in ((-1,1),(0,2),(1,1)): + c[j+d]=c.get(j+d,0)+scale*b*v + c={k:v for k,v in c.items() if v} + assert all(v>=0 for v in c.values()) + polys.append(c) + ans.append(Fraction(c.get(0,0),32**n)) + return ans + + +def direct_matrix_loops(max_n: int=10) -> list[Fraction]: + """Independent matrix-of-Laurent-polynomials trace expansion through n. + Kernel below is the R-tilted kernel; return 2^w L_w. + """ + P=((Fraction(3,4),Fraction(1,4)),(Fraction(1,4),Fraction(3,4))) + A={} + for i,j,x,dy in product(range(2),range(2),(1,2),(0,1)): + y=(1 if j==0 else -1)*dy + A[(i,j,x,y)]=P[i][j]/4 + power={(i,i,0,0):Fraction(1) for i in range(2)} + result=[Fraction(0) for _ in range(max_n+1)] + for k in range(1,max_n+1): + nxt={} + for (i,j,x,y),v in power.items(): + for (a,b,dx,dy),u in A.items(): + if j!=a or x+dx>max_n:continue + key=(i,b,x+dx,y+dy) + nxt[key]=nxt.get(key,Fraction(0))+v*u + power=nxt + for (i,j,x,y),v in power.items(): + if i==j and y==0: + result[x]+=Fraction(x,k)*v + return result + + +def numerical_report(dps: int=70): + import mpmath as mp + mp.mp.dps=dps + fmt=lambda x:mp.nstr(x,26) + # Exact retained densities, not newly computed large-width site data. + small=[] + for w in (2,3,4): + for p in (Fraction(1,32),Fraction(1,64),Fraction(1,128)): + n=evaluate_small_nu(w,p) + lam=mp_number(p,mp)*w + val=mp_number(n/p**w,mp) + small.append({'width':w,'p':str(p),'nu_exact':str(n), + 'nu_over_p_to_w':fmt(val),'bessel':fmt(mp.besseli(0,2*lam)), + 'ratio':fmt(val/mp.besseli(0,2*lam))}) + curves=[] + for lam in ('0.05','0.1','0.25','0.5','1','2','4','10','30'): + curves.append({'lambda':lam,'beta_crossover':fmt(bessel_contrast(lam,mp))}) + bounds=[] + for w,p in ((64,Fraction(1,256)),(256,Fraction(1,256)), + (1024,Fraction(1,1024)),(1024,Fraction(1,256))): + lam=mp_number(p,mp)*w + b=mp.besseli(0,2*lam) + lower=finite_cycle_lower(w,p) + up=walk_upper_normalized(w,p,mp) + uf=universal_lower_factor(w,p) + assert mp_number(lower,mp)<=up + assert up/b<=mp.exp(6*w*mp_number(p,mp)**2) + assert mp_number(lower,mp)/b>=mp_number(uf,mp) + bounds.append({'width':w,'p':str(p),'lambda':fmt(lam), + 'finite_lower_over_bessel':fmt(mp_number(lower,mp)/b), + 'walk_upper_over_bessel':fmt(up/b), + 'universal_lower_factor':fmt(mp_number(uf,mp)), + 'universal_upper_factor':fmt(mp.exp(6*w*mp_number(p,mp)**2))}) + coeff=matrix_loop_coefficients(384) + matrix=[] + D=mp.mpf(2)/3 + for w in (8,16,32,64,128): + v=mp_number(coeff[w],mp) + r=coeff[w]*coeff[3*w]/coeff[2*w]**2 + matrix.append({'width':w,'normalized_gaussian_amplitude':fmt(v*mp.sqrt(2*mp.pi*D*w)), + 'beta_effective':fmt(mp.log(mp_number(r,mp))/mp.log(mp.mpf(4)/3))}) + # Different diffusion constants for the identical one-step distribution. + c4,c8,c12=(central_trinomial(w) for w in (4,8,12)) + mr=Fraction(c4*c12,c8*c8) + return {'small_width_retained_site_controls':small,'bessel_contrast_curve':curves, + 'matching_fixed_width_low_p_limit_not_finite_p_data':{ + 'c4':c4,'c8':c8,'c12':c12,'R4_exact':str(mr), + 'beta_effective_limit':fmt(mp.log(mp_number(mr,mp))/mp.log(mp.mpf(4)/3))}, + 'proved_bound_numerical_controls_not_density_estimates':bounds, + 'matrix_renewal_controls_not_site_model':{ + 'mean_forward_length':'3/2','single_step_transverse_variance':'1/2', + 'asymptotic_variance_per_renewal':'1','D':'2/3', + 'naive_D_ignoring_correlations':'1/3','sequence':matrix}, + 'log_nu_absolute_error_to_beta_error_multiplier':fmt(4/mp.log(mp.mpf(4)/3))} + + +def build_report(dps: int=70): + geometry=cycle_geometry_checks() + census=minimal_nonrow_census() + a=matrix_loop_coefficients(10);b=direct_matrix_loops(10) + assert a==b + for w in (3,4): + series=rational_series(w,10) + assert series[w]==1 and series[w+1]==0 + assert series[w+2]==w*(w-3) + return {'schema':'matching-one/dilute-prefactor/v1', + 'scope':'NN SITE dilute double limit plus an explicitly separate matrix-renewal control; no fixed-p OZ theorem', + 'geometry_checks':geometry,'minimal_nonrow_census':census, + 'independent_matrix_trace_coefficients':[str(v) for v in a[1:]], + 'numerics':numerical_report(dps)} + + +def main(): + parser=argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output',type=Path,required=True) + parser.add_argument('--dps',type=int,default=70) + args=parser.parse_args() + if args.output.exists(): parser.error('refusing to overwrite an existing result') + if args.dps<40: parser.error('use at least 40 decimal digits') + result=build_report(args.dps) + args.output.parent.mkdir(parents=True,exist_ok=True) + args.output.write_text(json.dumps(result,indent=2,ensure_ascii=False)+'\n') + print(args.output) + +if __name__=='__main__': main() diff --git a/scripts/winding_nu_certified.py b/scripts/winding_nu_certified.py new file mode 100644 index 00000000..9c3fad4e --- /dev/null +++ b/scripts/winding_nu_certified.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +"""Certified exact winding densities nu_w at widths 2..8, both adjacencies. + +Purpose (2026-09-13, erratum follow-up): the span-spectrum erratum recorded that +closure `sum_h d_h + tail = nu_w` could only be *verified* at w = 2,3,4 because +no certified nu_w reference existed at w >= 5. This script removes that gap. + +It uses the repository's own winding-intensity engine +(`cylinder_winding_intensity.py`: the same `advance()` the 18 published controls +were validated against), built by exhaustive BFS, then + + 1. computes the exact rational stationary reward by rational Gauss-Jordan on + the common all-p exit-law lumping (exact by construction: the lumping is + defined to retain the joint next-class/reward law); + 2. independently re-certifies the same value through + `stationary_certificate`, which returns a rigorous rational interval from a + forward-error bound through the empty-row reset -- so the two numbers come + from different code paths; + 3. checks the raw (unlumped) solve against the lumped one wherever the raw + solve is affordable, so the lumping itself is controlled, not assumed; + 4. compares against the committed #741 references where they exist. + +This is an INDEPENDENT engine from the span-spectrum builder: different state +space (no depth tracking), different reward accounting code, different solve. +Agreement of the two is therefore real corroboration. + +usage: + python scripts/winding_nu_certified.py --width 8 --matching 0 --p 1/4 + python scripts/winding_nu_certified.py --grid results/...json +""" +from __future__ import annotations +import argparse +import json +import sys +from fractions import Fraction +from pathlib import Path +from time import perf_counter + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / "scripts")) +import cylinder_winding_intensity as W # noqa: E402 + +# #741 certified references (exact rationals as printed in the handoff). +REFS = { + ("NN", 8, "1/4"): "17502628473380503424175742111730325030001801413138981331992379782406219403788076443461112141432226837307423006489737552208224632141450146887713404996562363206349515250607990987848286702015668340618931011832915030867953648522909129625535987525113998308888891118101205671016155713840182276590146401648999847735217782956902290870163141233/394858190638015284877611732299089108091767441305269271936475303287570100103520767278514851975447321604769571781491275729897390594072360939445749498586029794045625531954047737173300378900180040052249014005467482837461037862326207208006914196399920025371610656324995371887037376183738569888770649458081597003907666586548661425781189401116672", + ("matching", 8, "1/8"): "4304066353276814600044997473461749946733998654996906665848710094050668526018463750118116035133786833693570766188431654980451251563150021628926696864281471364809534986496434452171916677495079889807512646873142689361000629991021992202254034107483405752782584490865423182129099195425092500784726730027782992682182888628256311224842606882093651369807185556594705994887406409039631339042921350991283756541994077559051452642113341699201143846379431566869183683434604000069810038992473728867102962226989648218217/113511764657387757743385852913961444340846792248681594418514915909829354582886141640860978491305768062425209800158664229180983934165690093259309006582490727717774659821138193397179076192301603758529671081392965053326462178884774141814282691798376964456718728193496138901518192555819255671364890966589998223829885349719255811426060081926113431586436483919311190561771297363987867516713176200921755746267736239849245504325297603519015385553972106891313881673522269765109458789284250226055406632424069191379714048", +} + +GRID = { + "NN": {"p": ["1/8", "1/4"], "matching": False}, + "matching": {"p": ["1/16", "1/8"], "matching": True}, +} + + +def nu_exact(width: int, matching: bool, p: Fraction, raw_too: bool = False) -> dict: + t0 = perf_counter() + states, transfer = W.build_transfer(width, matching) + t_build = perf_counter() - t0 + reduced, blocks = W.reward_lump(transfer) + t_lump = perf_counter() - t0 - t_build + + t1 = perf_counter() + res_lumped = W.stationary_reward(reduced, p) + t_solve = perf_counter() - t1 + mean = res_lumped["mean"] + assert mean >= 0 + + # Independent re-certification of the SAME stationary vector, from the + # certificate's forward-error bound (different code path from the solve). + cand = res_lumped["stationary"] + cert = W.stationary_certificate(reduced, p, cand) + assert cert["stationarity_l1_residual"] == 0, "exact rational solve left a residual" + + out = { + "graph": "matching" if matching else "NN", + "width": width, + "p": f"{p.numerator}/{p.denominator}", + "raw_states": len(states), + "lumped_states": len(reduced), + "nu_exact": str(mean), + "nu_float": float(mean), + "certificate_estimate": str(cert["estimate"]), + "certificate_agrees": cert["estimate"] == mean, + "certificate_abs_error_bound": str(cert["absolute_error_bound"]), + "empty_row_reset": str(cert["empty_row_reset"]), + "variance_rate_float": float(res_lumped["variance_rate"]), + "seconds_build": t_build, "seconds_lump": t_lump, "seconds_solve": t_solve, + } + if raw_too: + t2 = perf_counter() + res_raw = W.stationary_reward(transfer, p) + out["nu_exact_raw"] = str(res_raw["mean"]) + out["raw_solve_agrees"] = res_raw["mean"] == mean + out["seconds_solve_raw"] = perf_counter() - t2 + return out + + +def grid_runner(widths, graphs, plists) -> list: + rows = [] + for gname in graphs: + matching = GRID[gname]["matching"] + for w in widths: + for ps in plists: + pn, pd = ps.split("/") + r = nu_exact(w, matching, Fraction(int(pn), int(pd)), raw_too=(w <= 5)) + key = (gname, w, ps) + if key in REFS: + ref = Fraction(REFS[key]) + r["reference_741"] = REFS[key] + r["matches_reference_741"] = (ref == Fraction(r["nu_exact"])) + r["reference_gap"] = str(ref - Fraction(r["nu_exact"])) + rows.append(r) + print("%-9s w=%d p=%-5s raw=%-6d lumped=%-5d nu=%.12f cert=%s%s%s" + % (gname, w, ps, r["raw_states"], r["lumped_states"], r["nu_float"], + "OK" if r["certificate_agrees"] else "MISMATCH", + "" if "matches_reference_741" not in r else + (" #741:OK" if r["matches_reference_741"] else " #741:DIFF"), + "" if "raw_solve_agrees" not in r else + (" raw:OK" if r["raw_solve_agrees"] else " raw:DIFF")), + flush=True) + return rows + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--width", type=int, action="append") + ap.add_argument("--matching", type=int, default=0) + ap.add_argument("--p", action="append") + ap.add_argument("--graphs", default="NN,matching") + ap.add_argument("--out", type=Path) + args = ap.parse_args() + widths = args.width or [2, 3, 4, 5, 6, 7, 8] + plists = args.p or ["1/8", "1/4"] + rows = grid_runner(widths, args.graphs.split(","), plists) + bad = [r for r in rows if not r["certificate_agrees"] + or r.get("matches_reference_741") is False or r.get("raw_solve_agrees") is False] + if args.out: + args.out.parent.mkdir(parents=True, exist_ok=True) + args.out.write_text(json.dumps({"rows": rows, "failures": len(bad)}, indent=1)) + print("wrote", args.out) + print("FAILURES:", len(bad)) + return 1 if bad else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/winding_poisson_controls.py b/scripts/winding_poisson_controls.py new file mode 100644 index 00000000..c04d1c27 --- /dev/null +++ b/scripts/winding_poisson_controls.py @@ -0,0 +1,464 @@ +#!/usr/bin/env python3 +"""Finite controls for one-anchor-per-winding-component Poisson reduction. + +Standard library only. Physical lifted edges are retained, including parallel +edges at width two. No simulated samples or fitted percolation constants. +""" +from __future__ import annotations + +import argparse +from collections import Counter +from fractions import Fraction +from itertools import product +import json +import math +from pathlib import Path +from typing import Iterable + + +def steps(matching: bool) -> tuple[tuple[int, int], ...]: + return ((1, 0), (-1, 0), (0, 1), (0, -1)) + ( + ((1, 1), (1, -1), (-1, 1), (-1, -1)) if matching else () + ) + + +def adjacency(w: int, m: int, matching: bool = False, periodic_y: bool = True): + if w < 2 or m < 2: + raise ValueError('width and height must both be at least two') + out = [[] for _ in range(w * m)] + for y in range(m): + for x in range(w): + for dx, dy in steps(matching): + yy = y + dy + if not periodic_y and not 0 <= yy < m: + continue + out[y * w + x].append((((yy % m) * w + (x + dx) % w), dx, dy)) + return out + + +def components(mask: int, w: int, m: int, adj): + """Independent graph-potential traversal; return vertices and lift cycles.""" + unseen = mask + answer = [] + while unseen: + bit = unseen & -unseen + root = bit.bit_length() - 1 + unseen ^= bit + lift = {root: (0, 0)} + todo = [root] + verts = [] + cycles = set() + while todo: + v = todo.pop() + verts.append(v) + vx, vy = lift[v] + for z, dx, dy in adj[v]: + if not mask & (1 << z): + continue + q = (vx + dx, vy + dy) + if z not in lift: + lift[z] = q + unseen &= ~(1 << z) + todo.append(z) + else: + gain = (q[0] - lift[z][0], q[1] - lift[z][1]) + if gain != (0, 0): + cycles.add(gain) + answer.append((tuple(verts), tuple(sorted(cycles)))) + return answer + + +def ambient_rank(comps) -> int: + vecs = [z for _, cyc in comps for z in cyc] + if not vecs: + return 0 + ax, ay = vecs[0] + return 2 if any(ax * by != ay * bx for bx, by in vecs[1:]) else 1 + + +def global_anchors(comps, w: int, m: int, height: int) -> tuple[int, ...]: + """One lexicographic anchor for each full component using <=height rows.""" + found = [] + for verts, cyc in comps: + if not any(dx for dx, _ in cyc): + continue + rows = {v // w for v in verts} + if len(rows) > height or len(rows) == m: + continue + starts = [y for y in rows if (y - 1) % m not in rows] + if len(starts) != 1: + raise AssertionError('connected component has non-contiguous row projection') + bottom = starts[0] + if any((y - bottom) % m >= height for y in rows): + continue + if any(dy for _, dy in cyc): + raise AssertionError('short component has vertical winding') + x = min(v % w for v in verts if v // w == bottom) + found.append(bottom * w + x) + return tuple(sorted(found)) + + +def local_anchor_bits(mask: int, w: int, height: int, local_adj) -> tuple[int, ...]: + """Window rows 0..height+1, bottom row 1, two guard rows. + + Does not call global_anchors and does not use vertical periodic edges. + """ + ans = [] + for verts, cyc in components(mask, w, height + 2, local_adj): + ys = {v // w for v in verts} + if 0 in ys or height + 1 in ys or 1 not in ys: + continue + if not any(dx for dx, _ in cyc): + continue + if any(dy for _, dy in cyc): + raise AssertionError('open vertical window has vertical winding') + ans.append(min(v % w for v in verts if v // w == 1)) + return tuple(sorted(ans)) + + +def local_all_anchors(mask: int, w: int, m: int, height: int, local_adj): + if not 1 <= height < m / 2 or height + 2 >= m: + raise ValueError('need 1 <= cutoff < m/2 and cutoff+2 < m') + rowmask = (1 << w) - 1 + ans = [] + for bottom in range(m): + win = 0 + for k in range(height + 2): + row = (bottom - 1 + k) % m + win |= ((mask >> (w * row)) & rowmask) << (w * k) + ans.extend(bottom * w + x for x in local_anchor_bits(win, w, height, local_adj)) + return tuple(sorted(ans)) + + +def support_rows(anchor: int, w: int, m: int, height: int) -> frozenset[int]: + y = anchor // w + return frozenset((y - 1 + k) % m for k in range(height + 2)) + + +def dependency(w: int, m: int, height: int): + rr = [support_rows(i, w, m, height) for i in range(w * m)] + return [tuple(j for j in range(w * m) if rr[i] & rr[j]) for i in range(w * m)] + + +def bernstein_value(coef: Iterable[int], p: Fraction) -> Fraction: + v = list(coef) + n = len(v) - 1 + return sum((Fraction(c) * p ** k * (1 - p) ** (n - k) + for k, c in enumerate(v)), Fraction()) + + +def local_intensity_coefficients(w: int, height: int, matching: bool): + n = w * (height + 2) + adj = adjacency(w, height + 2, matching, False) + cs = [0] * (n + 1) + for mask in range(1 << n): + cs[mask.bit_count()] += len(local_anchor_bits(mask, w, height, adj)) + return cs + + +def fstr(x: Fraction) -> str: + return str(x.numerator) if x.denominator == 1 else f'{x.numerator}/{x.denominator}' + + +def univariate_tv(law: dict[int, Fraction], lam: Fraction) -> float: + z = float(lam) + overlap = sum(min(float(prob), math.exp(-z) * z ** k / math.factorial(k)) + for k, prob in law.items()) + return max(0.0, 1.0 - overlap) + + +def enumerate_one(w: int, m: int, height: int, matching: bool, ps=(Fraction(1, 10), Fraction(1, 4))): + n = w * m + adj = adjacency(w, m, matching) + ladj = adjacency(w, height + 2, matching, False) + dep = dependency(w, m, height) + singles = [[0] * (n + 1) for _ in range(n)] + pairs = {(i, j): [0] * (n + 1) for i in range(n) for j in dep[i] if j != i} + laws = Counter() + absent = [0] * (n + 1) + mismatch = [0] * (n + 1) + large = [0] * (n + 1) + maxz = 0 + # Cache the independent local-window classification, not global labels. + lcache = {b: local_anchor_bits(b, w, height, ladj) + for b in range(1 << (w * (height + 2)))} + rowmask = (1 << w) - 1 + for mask in range(1 << n): + cc = components(mask, w, m, adj) + aa = global_anchors(cc, w, m, height) + loc = [] + for y in range(m): + win = 0 + for k in range(height + 2): + win |= (((mask >> (w * ((y - 1 + k) % m))) & rowmask) + << (w * k)) + loc.extend(y * w + x for x in lcache[win]) + if aa != tuple(sorted(loc)): + raise AssertionError(('local/global mismatch', w, m, height, matching, mask)) + k = mask.bit_count() + r = ambient_rank(cc) + z = len(aa) + maxz = max(maxz, z) + laws[z, k] += 1 + absent[k] += (r == 0) + is_bad = any(len({v // w for v in verts}) > height for verts, _ in cc) + large[k] += is_bad + mismatch[k] += ((r == 0) != (z == 0)) + if ((r == 0) != (z == 0)) and not is_bad: + raise AssertionError('void mismatch not covered by localization failure') + for i in aa: + singles[i][k] += 1 + for j in aa: + if (i, j) in pairs: + pairs[i, j][k] += 1 + local_cs = local_intensity_coefficients(w, height, matching) + cases = [] + for p in ps: + pp = [bernstein_value(c, p) for c in singles] + lam = sum(pp) + nu = bernstein_value(local_cs, p) + assert lam == m * nu + b1 = sum((pp[i] * pp[j] for i in range(n) for j in dep[i]), Fraction()) + b2 = sum((bernstein_value(c, p) for c in pairs.values()), Fraction()) + law = {z: sum((Fraction(laws[z, k]) * p ** k * (1-p) ** (n-k) + for k in range(n+1)), Fraction()) for z in range(maxz+1)} + assert sum(law.values()) == 1 + assert sum(z * prob for z, prob in law.items()) == lam + actual_void = bernstein_value(absent, p) + miss = bernstein_value(mismatch, p) + bad = bernstein_value(large, p) + assert abs(actual_void - law[0]) <= miss <= bad + tv = univariate_tv(law, lam) + # AGG process bound in sup-event total-variation convention. + bound = min(Fraction(1), 2 * (b1 + b2)) + if tv > float(bound) + 1e-13: + raise AssertionError(('Poisson bound failed', tv, bound)) + cases.append({'p': fstr(p), 'lambda': fstr(lam), 'nu_per_row': fstr(nu), + 'b1': fstr(b1), 'b2': fstr(b2), + 'anchored_count_law': {str(z): fstr(prob) for z, prob in law.items()}, + 'rank_zero_probability': fstr(actual_void), + 'void_mismatch_probability': fstr(miss), + 'localization_failure_probability': fstr(bad), + 'poisson_tv_float_diagnostic': tv, + 'agg_process_tv_bound': fstr(bound), + 'rank_void_poisson_error_float_diagnostic': abs(float(actual_void)-math.exp(-float(lam)))}) + return {'width': w, 'length': m, 'cutoff_rows': height, 'matching': matching, + 'configurations': 1 << n, 'local_configurations': 1 << (w*(height+2)), + 'local_global_anchor_failures': 0, 'max_anchored_count': maxz, + 'local_intensity_bernstein_counts': local_cs, + 'cases': cases} + + +def two_colour_control(w=2, m=4, height=1): + """Exact categorical coupling: low=1/4, middle=1/2, high=1/4.""" + n = w * m + adjs = [adjacency(w, m, False), adjacency(w, m, True)] + deps = dependency(w, m, height) + dset = [set(d) for d in deps] + one = [0] * (2*n) + pair = Counter() + law = Counter() + void = Counter() + total = 4 ** n + lowq = highq = Fraction(1, 4) + tables = [] + for adj in adjs: + table = [] + for mask in range(1 << n): + cc = components(mask, w, m, adj) + table.append((global_anchors(cc, w, m, height), ambient_rank(cc))) + tables.append(table) + for labels in product(range(3), repeat=n): + low = high = 0 + mid = 0 + for i, label in enumerate(labels): + if label == 0: + low |= 1 << i + elif label == 2: + high |= 1 << i + else: + mid += 1 + weight = 1 << mid + al, rl = tables[0][low] + ah, rh = tables[1][high] + aa = list(al) + [n+i for i in ah] + law[len(al), len(ah)] += weight + void[rl == 0, rh == 0] += weight + for i in aa: + one[i] += weight + for j in aa: + if j != i and j % n in dset[i % n]: + pair[i,j] += weight + assert sum(law.values()) == total + pp = [Fraction(v, total) for v in one] + lams = [sum(pp[:n]), sum(pp[n:])] + b1 = sum((pp[i] * pp[j] for i in range(2*n) for j in range(2*n) + if j % n in dset[i % n]), Fraction()) + b2 = Fraction(sum(pair.values()), total) + pmf = {key: Fraction(v, total) for key, v in law.items()} + lp, lq = map(float, lams) + tv = 1 - sum(min(float(prob), math.exp(-lp-lq) * lp**z * lq**v / + (math.factorial(z)*math.factorial(v))) for (z,v),prob in pmf.items()) + assert tv <= float(2*(b1+b2)) + 1e-13 + cov = sum((z*v*pr for (z,v),pr in pmf.items()), Fraction()) - lams[0]*lams[1] + # Coarse positive-winding events, unlike component anchors, are oppositely + # monotone functions of the shared uniform labels, hence negatively associated. + p_lo = sum(Fraction(v,total) for (zl,zh),v in void.items() if not zl) + p_hi = sum(Fraction(v,total) for (zl,zh),v in void.items() if not zh) + p_joint = Fraction(void[False,False],total) + assert p_joint <= p_lo*p_hi + return {'width':w, 'length':m,'cutoff_rows':height,'categorical_configurations':3**n, + 'low_probability':fstr(lowq),'high_probability':fstr(highq), + 'lambda_low':fstr(lams[0]),'lambda_high':fstr(lams[1]), + 'b1':fstr(b1),'b2':fstr(b2),'count_covariance':fstr(cov), + 'count_law': {f'{z},{v}':fstr(pr) for (z,v),pr in sorted(pmf.items())}, + 'opposite_monotone_joint':fstr(p_joint), + 'opposite_monotone_product':fstr(p_lo*p_hi), + 'joint_poisson_tv_float_diagnostic':tv, + 'agg_process_tv_bound':fstr(min(Fraction(1),2*(b1+b2)))} + + +def exact_row_contact_control(w=3, m=5, p=Fraction(1,4)): + """Two isolated full-row clusters may be positively correlated. + + They share a CLOSED guard row; applying BK to the anchors would be wrong. + """ + single = p**w * (1-p)**(2*w) + joint = p**(2*w) * (1-p)**(3*w) + assert joint > single*single + return {'width': w, 'length_at_least':5,'p':fstr(p), + 'single_anchor_probability':fstr(single), + 'two_anchors_two_rows_apart':fstr(joint), + 'product_of_marginals':fstr(single*single), + 'ratio':fstr(joint/(single*single)), + 'bk_applies_to_disjoint_increasing_winding_witnesses_not_anchors':True} + + +def geometry_checks(): + nchecks = 0 + for matching in (False, True): + w,m,h=3,12,2 + adj=adjacency(w,m,matching) + ladj=adjacency(w,h+2,matching,False) + # All rows are either entirely open or entirely closed: tests seam, + # multiple components, and cutoff coverage without random sampling. + for rowpattern in range(1<= -contact + cases.append({'p':fstr(p),'nu':fstr(nu),'mean_component_volume':fstr(mean_n), + 'mean_distinct_boundary_volume':fstr(mean_b), + 'log_nu_derivative':fstr(es),'log_nu_second_derivative':fstr(curvature), + 'curvature_lower_bound':fstr(-contact), + 'logit_log_nu_second_derivative':fstr(zcurv), + 'two_differentiation_routes_agree':True}) + return {'width':w,'cutoff_rows':height,'matching':matching, + 'interior_subsets':1<<(w*height),'surrounding_window_configurations':1<= 0 + resid = Fraction(0) + for j in range(n): + v = sum((pi[i] * K[i].get(j, Fraction(0)) for i in range(n)), Fraction(0)) + resid += abs(v - pi[j]) + nu = sum((pi[i] * g[i] for i in range(n)), Fraction(0)) + gmax = max(abs(x) for x in g) + bound = gmax * resid / delta + return nu, resid, bound, gmax, delta + +def run(path, p, exact=True): + d = json.load(open(path)) + w = d["width"]; n = len(d["rows"]) + K, g = load_counts(d, p) + if exact: + pi = pi_exact_dense(K, g, n); mode = "exact-rational solve" + else: + pf = pi_float_dense(K, n, refine=0) + pi = [Fraction(x) for x in pf] # float64 values are dyadic + # one correction step driven by the EXACT rational stationary residual + r = [sum((pi[i] * K[i].get(j, Fraction(0)) for i in range(n)), Fraction(0)) - pi[j] + for j in range(n)] + import numpy as np + A = np.zeros((n, n)); + for i in range(n): + for j, v in K[i].items(): + A[j, i] = float(v) + A[i, i] -= 1.0 + A[-1, :] = 1.0 + corr = np.linalg.solve(A, np.array([-float(x) for x in r])) + pi = [Fraction(x) for x in (np.maximum(np.array([float(x) for x in pi]) + corr, 0.0))] + mode = "float64 solve + exact-rational residual correction + exact certification" + nu, resid, bound, gmax, delta = certify(K, g, pi, w, p) + lo = float(nu - bound); hi = float(nu + bound) + return {"width": w, "matching": d["matching"], "p": str(p), "mode": mode, + "frontier_states": d["states"], "reward_lumps": n, + "nu": str(nu), "nu_float": float(nu), + "log_nu": math.log(float(nu)), + "certificate_bound": float(bound), + "log_nu_abs_error_bound": (abs(math.log(hi) - math.log(lo)) / 2 if nu - bound > 0 else None), + "delta_empty_row_reset": float(delta), "g_inf": float(gmax)} + +if __name__ == "__main__": + paths = json.loads(sys.argv[1]) # list of [path, "1/4", exact_bool] + out = [] + for path, ps, exact in paths: + num, den = ps.split("/") + out.append(run(path, Fraction(int(num), int(den)), exact)) + r = out[-1] + print(f"w={r['width']:<3} matching={str(r['matching']):<6} p={r['p']:<4} " + f"states={r['frontier_states']:<7} lumps={r['reward_lumps']:<5} " + f"log nu = {r['log_nu']:.12f} bound~{r['certificate_bound']:.2e} [{r['mode']}]", + flush=True) + json.dump(out, open(sys.argv[2], "w"), indent=2) diff --git a/scripts/winding_rate_centres.py b/scripts/winding_rate_centres.py new file mode 100644 index 00000000..bba7be18 --- /dev/null +++ b/scripts/winding_rate_centres.py @@ -0,0 +1,342 @@ +#!/usr/bin/env python3 +"""Finite controls for the microscopic winding-cost / two-centre theorem. + +Only deterministic finite product measures are computed. No number returned +here is an estimate of the infinite-lattice inverse correlation length. +Run from the repository root; output files are never overwritten. +""" +from __future__ import annotations +import argparse +from collections import deque +from fractions import Fraction +import json +from math import comb +from pathlib import Path +from typing import Sequence + +STEPS4 = ((1, 0), (-1, 0), (0, 1), (0, -1)) +STEPS8 = STEPS4 + ((1, 1), (1, -1), (-1, 1), (-1, -1)) + + +def steps(kind: str) -> tuple[tuple[int, int], ...]: + if kind not in ('NN', 'matching'): + raise ValueError('kind must be NN or matching') + return STEPS4 if kind == 'NN' else STEPS8 + + +def fraction_record(value: Fraction) -> dict[str, str]: + return {'numerator': str(value.numerator), 'denominator': str(value.denominator)} + + +def decimal(value: Fraction, places: int = 24) -> str: + from decimal import Decimal, localcontext + with localcontext() as ctx: + ctx.prec = places + 12 + return format(Decimal(value.numerator) / Decimal(value.denominator), f'.{places}f') + + +def bernstein_count_value(counts: Sequence[int], p: Fraction) -> Fraction: + """counts[k] is a count, not an already normalized Bernstein coefficient.""" + if not 0 <= p <= 1: + raise ValueError('probability outside [0,1]') + n = len(counts) - 1 + return sum((Fraction(c) * p**k * (1-p)**(n-k) for k, c in enumerate(counts)), Fraction()) + + +def finite_adjacency(width: int, height: int, kind: str) -> tuple[tuple[int, ...], ...]: + result = [] + for y in range(height): + for x in range(width): + result.append(tuple(yy * width + xx for dx, dy in steps(kind) + if 0 <= (xx := x+dx) < width + and 0 <= (yy := y+dy) < height)) + return tuple(result) + + +def reached(mask: int, adjacency: Sequence[Sequence[int]], source: int) -> set[int]: + if not (mask >> source) & 1: + return set() + seen = {source} + stack = [source] + while stack: + u = stack.pop() + for v in adjacency[u]: + if ((mask >> v) & 1) and v not in seen: + seen.add(v) + stack.append(v) + return seen + + +def seed_counts(kind: str) -> list[int]: + """P((0,1)<->(2,1) inside 3x3 | (0,1) occupied). + + Eight independent bits remain. This is an explicit finite witness and + hence only provides an UPPER bound -log(q)/2 on the planar mass. + """ + adjacency = finite_adjacency(3, 3, kind) + source, target = 3, 5 + others = [i for i in range(9) if i != source] + counts = [0] * 9 + for word in range(1 << 8): + mask = 1 << source + for j, i in enumerate(others): + mask |= ((word >> j) & 1) << i + if target in reached(mask, adjacency, source): + counts[word.bit_count()] += 1 + return counts + + +def seed_root_interval(counts: Sequence[int], target: Fraction = Fraction(1, 16), + bits: int = 64) -> tuple[Fraction, Fraction]: + """Enclose the finite seed root q(p)=target; NOT the torus birth centre.""" + lo, hi = Fraction(0), Fraction(1) + for _ in range(bits): + mid = (lo+hi)/2 + if bernstein_count_value(counts, mid) < target: + lo = mid + else: + hi = mid + assert bernstein_count_value(counts, lo) <= target <= bernstein_count_value(counts, hi) + return lo, hi + + +def torus_adjacency(width: int, height: int, kind: str): + """Keep parallel periodic edges and their actual lifted steps.""" + return tuple(tuple((((x+dx) % width) + width*((y+dy) % height), dx, dy) + for dx, dy in steps(kind)) + for y in range(height) for x in range(width)) + + +def winding_walk(mask: int, width: int, height: int, kind: str, + adjacency=None) -> list[tuple[int, int]] | None: + """Independent graph-potential traversal returning a lifted closed walk.""" + adjacency = adjacency or torus_adjacency(width, height, kind) + potentials: dict[int, tuple[int, int]] = {} + parents: dict[int, int | None] = {} + for root in range(width*height): + if not ((mask >> root) & 1) or root in potentials: + continue + potentials[root] = (root % width, root // width) + parents[root] = None + queue = deque([root]) + while queue: + u = queue.popleft() + ux, uy = potentials[u] + for v, dx, dy in adjacency[u]: + if not ((mask >> v) & 1): + continue + candidate = (ux+dx, uy+dy) + if v not in potentials: + potentials[v] = candidate + parents[v] = u + queue.append(v) + continue + vx, vy = potentials[v] + gain = (candidate[0]-vx, candidate[1]-vy) + if gain == (0, 0): + continue + assert gain[0] % width == gain[1] % height == 0 + up = [] + node = u + while node is not None: + up.append(node) + node = parents[node] + walk = [potentials[node] for node in reversed(up)] + walk.append(candidate) + node = parents[v] + while node is not None: + nx, ny = potentials[node] + walk.append((nx+gain[0], ny+gain[1])) + node = parents[node] + assert walk[-1] != walk[0] + assert ((walk[-1][0]-walk[0][0]) % width == 0 and + (walk[-1][1]-walk[0][1]) % height == 0) + return walk + return None + + +def cut_witness(walk: Sequence[tuple[int, int]], width: int): + """First range reaching w-1, not a radius-w/2 estimate. + + The entire retained prefix lies in ONE injecting w-by-w vertex square. + All used edges are its planar edges, never the extra torus seam edges. + """ + if width < 2 or not walk: + raise ValueError('nonempty walk and width >=2 required') + x0, y0 = walk[0] + xmin = xmax = x0 + ymin = ymax = y0 + for j, (x, y) in enumerate(walk): + xmin, xmax = min(xmin, x), max(xmax, x) + ymin, ymax = min(ymin, y), max(ymax, y) + if max(xmax-xmin, ymax-ymin) == width-1: + return list(walk[:j+1]), (xmin, ymin), ('x' if xmax-xmin == width-1 else 'y') + assert max(xmax-xmin, ymax-ymin) < width-1 + raise AssertionError('nonzero winding did not span the injecting square') + + +def verify_cut(mask: int, width: int, height: int, kind: str, walk) -> None: + prefix, (xmin, ymin), axis = cut_witness(walk, width) + for x, y in prefix: + assert xmin <= x < xmin+width and ymin <= y < ymin+width + assert (mask >> ((x % width)+width*(y % height))) & 1 + for (x, y), (xx, yy) in zip(prefix, prefix[1:]): + assert (xx-x, yy-y) in steps(kind) + # Independent planar finite-box connectivity check on the projected mask. + boxmask = 0 + for by in range(width): + for bx in range(width): + v = ((xmin+bx) % width)+width*((ymin+by) % height) + boxmask |= ((mask >> v) & 1) << (by*width+bx) + adjacency = finite_adjacency(width, width, kind) + side0 = [width*j for j in range(width)] if axis == 'x' else list(range(width)) + side1 = {width*j+width-1 for j in range(width)} if axis == 'x' else set(range(width*(width-1), width*width)) + assert any(reached(boxmask, adjacency, source) & side1 for source in side0) + + +def rectangle_connection(mask: int, width: int, height: int, kind: str, + xleft: int, length: int, row: int = 1) -> bool: + """A length+1 by 3 planar seed, with coordinates mapped periodically.""" + localmask = 0 + for y in range(3): + for x in range(length+1): + v = (xleft+x) % width + width*((row-1+y) % height) + localmask |= ((mask >> v) & 1) << (y*(length+1)+x) + adj = finite_adjacency(length+1, 3, kind) + return 2*(length+1)-1 in reached(localmask, adj, length+1) + + +def seed_ring(mask: int, width: int, height: int, kind: str) -> bool: + """Concatenate length-2 seeds, then force at most one leftover edge.""" + if width < 3 or height < 3: + raise ValueError('individual 3x3 seeds must inject') + k, remainder = divmod(width, 2) + if not all(rectangle_connection(mask, width, height, kind, 2*j, 2) for j in range(k)): + return False + if remainder: + return bool((mask >> (width+width-1)) & 1 and (mask >> width) & 1) + return True + + +def seed_and_cluster_controls() -> dict: + result = {} + for kind in ('NN', 'matching'): + counts = seed_counts(kind) + lo, hi = seed_root_interval(counts) + # A direct finite-cluster comparison, independent of the asymptotic proof. + adj = finite_adjacency(3, 3, kind) + p, q, cap = Fraction(1, 5), Fraction(1, 4), 5 + tau_p = Fraction() + tau_q_small = Fraction() + connected_count = 0 + for mask in range(1 << 9): + cluster = reached(mask, adj, 3) + if 5 not in cluster: + continue + connected_count += 1 + n = mask.bit_count() + tau_p += p**n*(1-p)**(9-n) + if len(cluster) <= cap: + tau_q_small += q**n*(1-q)**(9-n) + assert tau_q_small <= (q/p)**cap*tau_p + qquarter = bernstein_count_value(counts, Fraction(1,4)) + assert qquarter > Fraction(1,16) + result[kind] = { + 'conditional_origin': True, + 'seed_vertex_count': 9, + 'independent_remaining_sites': 8, + 'source': [0,1], 'target': [2,1], + 'conditional_connection_counts_by_occupied_other_sites': counts, + 'q_at_one_quarter': fraction_record(qquarter), + 'seed_root_target': '1/16', + 'seed_root_interval': [fraction_record(lo), fraction_record(hi)], + 'seed_root_midpoint_decimal': decimal((lo+hi)/2), + 'strict_upper_bound_on_first_centre_at_d_log4': decimal(hi), + 'cluster_comparison': {'cap': cap, 'p': str(p), 'q': str(q), + 'lhs': fraction_record(tau_q_small), + 'rhs': fraction_record((q/p)**cap*tau_p), + 'passed': True}, + } + # NN centre a is <= its seed root; b is >= one minus matching seed root. + result['certified_d_log4_centre_brackets'] = { + 'a_lower': '1/12', + 'a_upper': result['NN']['seed_root_interval'][1], + 'b_lower': fraction_record(1-Fraction(int(result['matching']['seed_root_interval'][1]['numerator']), + int(result['matching']['seed_root_interval'][1]['denominator']))), + 'b_upper': '27/28', + 'warning': 'Seed roots bound the infinite centres; they are NOT centre estimates.' + } + return result + + +def census_control(width: int, height: int, kind: str, ring_check: bool = False) -> dict: + n = width*height + if height < width: + raise ValueError('cut control assumes w<=m') + adj = torus_adjacency(width, height, kind) + winding_counts = [0]*(n+1) + ring_counts = [0]*(n+1) + windings = 0 + for mask in range(1 << n): + walk = winding_walk(mask, width, height, kind, adj) + if walk is not None: + windings += 1 + winding_counts[mask.bit_count()] += 1 + verify_cut(mask, width, height, kind, walk) + if ring_check and seed_ring(mask, width, height, kind): + assert walk is not None + ring_counts[mask.bit_count()] += 1 + finite_checks = [] + for p in (Fraction(1,100), Fraction(1,4), Fraction(1,2)): + f = bernstein_count_value(winding_counts, p) + item = {'p': str(p), 'winding_probability': fraction_record(f)} + branch = len(steps(kind))-1 + if branch*p < 1: + # kappa >= -log(branch*p) from nonbacktracking path counting. + upper = 2*n*width**2*p*(branch*p)**(width-1) + assert f <= upper + item['cut_upper_using_path_mass_lower'] = fraction_record(upper) + if ring_check: + qseed = bernstein_count_value(seed_counts(kind), p) + k, remainder = divmod(width,2) + lower = p**(remainder+1)*qseed**k + ring = bernstein_count_value(ring_counts, p) + assert lower <= ring <= f + item['conditional_harris_lower'] = fraction_record(lower) + item['ring_probability'] = fraction_record(ring) + finite_checks.append(item) + return {'width': width, 'height': height, 'graph': kind, + 'configurations': 1 << n, 'nonzero_winding_configurations': windings, + 'first_span_cut_witnesses_checked': windings, + 'winding_counts': winding_counts, + 'ring_counts': ring_counts if ring_check else None, + 'rational_probability_checks': finite_checks} + + +def run_controls() -> dict: + seeds = seed_and_cluster_controls() + censuses = [census_control(w,h,kind,ring_check=(w==3 and h==3)) + for w,h in ((3,3),(3,4),(4,4)) for kind in ('NN','matching')] + return { + 'schema': 'matching-one.winding-rate-centres.v1', + 'date': '2026-09-13', + 'claim_boundary': 'Finite deterministic controls only; no infinite correlation length numerically computed.', + 'seed_bounds': seeds, + 'censuses': censuses, + 'total_graph_configuration_checks': sum(c['configurations'] for c in censuses), + 'total_cut_witnesses': sum(c['first_span_cut_witnesses_checked'] for c in censuses), + } + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output', type=Path, required=True) + args = parser.parse_args() + args.output.parent.mkdir(parents=True, exist_ok=True) + # Reserve before computing to ensure no result file is silently overwritten. + with args.output.open('x', encoding='utf-8') as handle: + json.dump(run_controls(), handle, ensure_ascii=False, indent=2) + handle.write('\n') + +if __name__ == '__main__': + main() diff --git a/tests/test_cluster_sewing_identity.py b/tests/test_cluster_sewing_identity.py new file mode 100644 index 00000000..b15f35ea --- /dev/null +++ b/tests/test_cluster_sewing_identity.py @@ -0,0 +1,85 @@ +"""Small mathematical controls, not document-wording or publication gates.""" +import importlib.util +from pathlib import Path +from fractions import Fraction as F +from decimal import Decimal as D, localcontext +import unittest + +FILE=Path(__file__).resolve().parents[1]/'scripts'/'cluster_sewing_identity.py' +spec=importlib.util.spec_from_file_location('sewing',FILE) +s=importlib.util.module_from_spec(spec); spec.loader.exec_module(s) + +class SewingTests(unittest.TestCase): + def test_column_boundary_all_small_masks(self): + for matching in (False,True): + for mask in range(64): + c=s.vertices(mask,3,2) + _,b=s.boundary_columns(c,3,matching) + self.assertEqual(s.boundary_direct(c,3,matching), + frozenset((i,y) for i,t in enumerate(b) for y in t)) + def test_halo_is_not_incidence(self): + e=s.exact_marking_counterexample() + self.assertEqual((e['external_void_sites'],e['open_to_void_incidences']),(8,12)) + def test_two_independent_winding_detectors(self): + for matching in (False,True): + for mask in range(256): + c=s.vertices(mask,4,2) + self.assertEqual(any(w for _,w in s.components(c,4,matching)),s.dsu_winding(c,4,matching)) + def test_straight_component_one_mark(self): + c=frozenset((x,0) for x in range(5)) + for matching in (False,True): + self.assertEqual(len(s.seam_marks(c,5,matching)),1) + def test_random_guards_match_activity(self): + for matching in (False,True): + t,_=s.shape_table(3,1,matching) + a=F(s.evaluate_table(t,F(1,3))['nu_truncated']) + b,_=s.guard_enumeration(3,1,matching,F(1,3)) + self.assertEqual(a,b) + def test_palm_reciprocal(self): + t,_=s.shape_table(4,3,False) + a=s.evaluate_table(t,F(1,2)) + self.assertEqual(F(a['nu_truncated']),F(9087,1048576)) + self.assertEqual(F(a['mark_mean_inverse_c']),1/F(a['component_mean_c'])) + self.assertGreater(F(a['wrong_component_reciprocal_estimate']),F(a['nu_truncated'])) + def test_two_row_trace(self): + for matching in (False,True): + t,_=s.shape_table(4,2,matching) + p=F(1,4) + a=F(s.evaluate_table(t,p)['nu_truncated']) + b=s.two_row_transfer_trace(4,matching,p)-(p*(1-p)**2)**4 + self.assertEqual(a,b) + def test_height_difference_monotonicity(self): + a=[] + for h in (1,2,3): + t,_=s.shape_table(3,h,False) + a.append(F(s.evaluate_table(t,F(1,2))['nu_truncated'])) + self.assertLess(a[0],a[1]); self.assertLess(a[1],a[2]) + def test_cyclic_gauge_telescopes(self): + word=(1,3,2,3,1) + gauge=F(1) + for i,b in enumerate(word): + a=word[i-1]; c=word[(i+1)%len(word)] + gauge*=F(1+a+3*b,1+b+3*c) + self.assertEqual(gauge,1) + def test_all_width_contrast_annihilates_amplitude_mass(self): + with localcontext() as ctx: + ctx.prec=65 + for widths in ((2,4,8),(4,8,12),(3,11,17)): + c=s.contrast_weights(widths) + self.assertEqual(sum(c),0) + self.assertEqual(sum(a*w for a,w in zip(c,widths)),0) + y={w:D('1.7')-D('2.3')*w-D('.5')*D(w).ln() for w in widths} + self.assertLess(abs(s.contrast(y,widths)-D('.5')),D('1e-55')) + def test_returned_unequal_window_is_not_negative_seven(self): + r=s.contrast_report()['models'] + self.assertAlmostEqual(float(r['NN']['correct_beta_2_4_8']),.71824578691523,12) + self.assertAlmostEqual(float(r['matching']['correct_beta_2_4_8']),.53337743380313,12) + def test_brownian_target_is_not_site_data(self): + vals=[s.range_cdf(D(str(h))) for h in (.5,1,1.5,2,3)] + self.assertTrue(all(0 None: + self.reference = json.loads(REFERENCE.read_text(encoding="utf-8")) + + @staticmethod + def _aggregate(reduced_table: list) -> list: + """Reference rows are one entry per mask; aggregate them by popcount.""" + width = len(reduced_table[0]).bit_length() - 1 + out = [] + for row in reduced_table: + per_m = [dict() for _ in range(width + 1)] + for mask, (nb, rw) in enumerate(row): + key = (nb, rw) + bucket = per_m[bin(mask).count("1")] + bucket[key] = bucket.get(key, 0) + 1 + out.append([[[nb, rw, c] for (nb, rw), c in sorted(d.items())] for d in per_m]) + return out + + def _as_model(self, model: dict) -> dict: + """Present a committed model in the shape winding_build emits.""" + return {"width": model["width"], "matching": model["graph"] == "matching", + "states": model["frontier_states"], + "rows": self._aggregate(model["reduced_table"])} + + def test_every_published_control_is_reproduced_exactly(self) -> None: + checked = 0 + for model in self.reference["models"]: + width = model["width"] + self.assertEqual(len(model["reduced_table"]), model["reward_lumps"], + f"width {width}: lump count disagrees with the header") + shaped = self._as_model(model) + for control in model["point_controls"]: + p = Fraction(control["p"]) + K, g = W.load_counts(shaped, p) + pi = W.pi_exact_dense(K, g, len(shaped["rows"])) + nu, _resid, _bound, _gmax, _delta = W.certify(K, g, pi, width, p) + self.assertEqual( + nu, Fraction(control["intensity"]), + f"{model['graph']} width {width} p={control['p']}: " + f"solver gave {nu}, committed control is {control['intensity']}") + checked += 1 + self.assertEqual(checked, 18, "expected the full 3x2x3 control grid") + + def test_empty_row_resets_to_the_empty_state(self) -> None: + """delta = (1-p)^w is the uniform reset probability the certificate divides by.""" + for model in self.reference["models"]: + width = model["width"] + rows = model["reduced_table"] + for control in model["point_controls"]: + p = Fraction(control["p"]) + shaped = self._as_model(model) + K, _g = W.load_counts(shaped, p) + # the mass that lands on lump 0 in the first step from any state is >= (1-p)^w + reset = (1 - p) ** width + for i in range(len(rows)): + mass = sum(v for j, v in K[i].items() if j == 0) + self.assertGreaterEqual(mass, reset - Fraction(1, 10 ** 30)) + + def test_nu_is_strictly_between_zero_and_one(self) -> None: + for model in self.reference["models"]: + shaped = self._as_model(model) + for control in model["point_controls"]: + p = Fraction(control["p"]) + K, g = W.load_counts(shaped, p) + pi = W.pi_exact_dense(K, g, len(shaped["rows"])) + nu, _r, _b, _gm, _d = W.certify(K, g, pi, model["width"], p) + self.assertGreater(nu, 0) + self.assertLess(nu, 1) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_winding_rate_centres.py b/tests/test_winding_rate_centres.py new file mode 100644 index 00000000..70452a31 --- /dev/null +++ b/tests/test_winding_rate_centres.py @@ -0,0 +1,78 @@ +"""Mathematical controls, not tests of document wording.""" +from fractions import Fraction as F +from pathlib import Path +import sys +import unittest +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'scripts')) +import winding_rate_centres as w + +class WindingRateControls(unittest.TestCase): + def test_seed_enumeration_against_independent_formulas(self): + for p in (F(1,100),F(1,5),F(1,4),F(1,2),F(4,5),F(1)): + self.assertEqual(w.bernstein_count_value(w.seed_counts('NN'),p), + p*(p+(1-p)*(2*p**3-p**6))) + self.assertEqual(w.bernstein_count_value(w.seed_counts('matching'),p), + p*(1-(1-p)**3)) + + def test_seed_dyadic_signs(self): + for kind in ('NN','matching'): + counts = w.seed_counts(kind) + lo,hi = w.seed_root_interval(counts) + self.assertEqual(hi-lo,F(1,2**64)) + self.assertLess(w.bernstein_count_value(counts,lo),F(1,16)) + self.assertGreater(w.bernstein_count_value(counts,hi),F(1,16)) + self.assertLess(hi,F(1,4)) + + def test_all_tiny_cut_witnesses(self): + for kind in ('NN','matching'): + data=w.census_control(3,3,kind,ring_check=True) + self.assertEqual(data['configurations'],512) + self.assertEqual(data['first_span_cut_witnesses_checked'], + data['nonzero_winding_configurations']) + + def test_seam_ring_is_sufficient_not_identical(self): + for kind in ('NN','matching'): + # The top full row winds, but the seed requires the middle source. + top=7 + self.assertIsNotNone(w.winding_walk(top,3,3,kind)) + self.assertFalse(w.seed_ring(top,3,3,kind)) + middle=7<<3 + self.assertTrue(w.seed_ring(middle,3,3,kind)) + self.assertIsNotNone(w.winding_walk(middle,3,3,kind)) + + def test_parallel_edges_keep_short_winding(self): + # Circumference two has distinct lifted edges between the same vertices. + for kind in ('NN','matching'): + walk=w.winding_walk(3,2,3,kind) + self.assertIsNotNone(walk) + w.verify_cut(3,2,3,kind,walk) + + def test_normalized_seed_counts_not_double_binomial(self): + for kind in ('NN','matching'): + counts=w.seed_counts(kind) + self.assertEqual(w.bernstein_count_value(counts,F(1,2)),F(sum(counts),256)) + self.assertEqual(w.bernstein_count_value(counts,F(0)),0) + self.assertEqual(w.bernstein_count_value(counts,F(1)),1) + + def test_finite_cluster_likelihood_bound(self): + data=w.seed_and_cluster_controls() + for kind in ('NN','matching'): + row=data[kind]['cluster_comparison'] + lhs=F(int(row['lhs']['numerator']),int(row['lhs']['denominator'])) + rhs=F(int(row['rhs']['numerator']),int(row['rhs']['denominator'])) + self.assertLessEqual(lhs,rhs) + + def test_backtracking_first_span(self): + path=[(0,0),(1,0),(0,0),(0,1),(1,1),(2,1),(3,1),(4,1),(4,0)] + prefix,origin,axis=w.cut_witness(path,4) + self.assertEqual(axis,'x') + self.assertEqual(prefix[-1],(3,1)) + self.assertEqual(origin,(0,0)) + + def test_invalid_arguments(self): + with self.assertRaises(ValueError): w.steps('bond') + with self.assertRaises(ValueError): w.bernstein_count_value([1,1],F(3,2)) + with self.assertRaises(ValueError): w.census_control(4,3,'NN') + with self.assertRaises(ValueError): w.seed_ring(0,2,3,'NN') + +if __name__=='__main__': unittest.main()