Dispatch · 4 October 2026 · K.W. Norton
Verification Ledger
An outside review (Grok, October 2026) observed that the site asserts a correspondence between Riemann zeros and nuclear levels without the formula, data, or benchmark needed to test it. That critique is fair. This page answers it directly: what is demonstrated, with code anyone can run, and what is not yet verified, with the steps that would verify or refute it.
1. Result: GUE pair correlation, first 400 zeros
Zeros at heights 14.13 to 679.74, unfolded to unit mean spacing. Empirical density of pair differences compared with Montgomery's GUE prediction 1 − (sin πx / πx)². Small sample; fluctuations of ±0.1 per bin are expected.
| Separation x | Empirical R₂ | GUE prediction |
|---|---|---|
| 0.125 | 0.020 | 0.050 |
| 0.375 | 0.270 | 0.385 |
| 0.625 | 0.840 | 0.779 |
| 0.875 | 1.090 | 0.981 |
| 1.125 | 0.820 | 0.988 |
| 1.375 | 1.030 | 0.954 |
| 1.625 | 0.900 | 0.967 |
| 1.875 | 1.020 | 0.996 |
| 2.125 | 0.980 | 0.997 |
| 2.375 | 0.900 | 0.985 |
| 2.625 | 1.120 | 0.987 |
| 2.875 | 0.990 | 0.998 |
- Level repulsion: 0.5% of spacings fall below 0.25, against 22.1% for uncorrelated (Poisson) levels.
- Spacing variance 0.138 (GUE ≈ 0.18 asymptotically; Poisson = 1). Low-height zeros are known to be stiffer than the asymptotic limit.
2. Code
Requires Python 3, numpy, and mpmath. Runtime about 90 seconds. Longer walkthrough in the Python spectral tutorial.
import mpmath, numpy as np
# 1. First 400 nontrivial zeros of zeta (imaginary parts)
z = np.array([float(mpmath.zetazero(n).imag) for n in range(1, 401)])
# 2. Unfold to unit mean spacing: N(t) ~ (t/2pi) log(t/(2 pi e))
u = z/(2*np.pi) * np.log(z/(2*np.pi*np.e))
s = np.diff(u); s /= s.mean()
# 3. Pair correlation: histogram of all differences u_j - u_i < 3
d = np.array([u[j]-u[i] for i in range(len(u))
for j in range(i+1, min(i+40, len(u)))])
h, e = np.histogram(d, bins=np.arange(0, 3.01, 0.25))
dens = h / (len(u) * 0.25)
c = (e[:-1] + e[1:]) / 2
montgomery = 1 - (np.sin(np.pi*c)/(np.pi*c))**2 # GUE prediction
for x, emp, th in zip(c, dens, montgomery):
print(f"{x:.3f} empirical {emp:.3f} GUE {th:.3f}")
# 4. Level repulsion: fraction of spacings below 0.25
print("P(s<0.25):", np.mean(s < 0.25), " Poisson would give", 1-np.exp(-0.25))
print("spacing variance:", s.var())3. Ledger
Riemann zeros show GUE pair correlation
Montgomery (1973) conjecture; Odlyzko's large-scale numerics (1987 onward). Reproduced at small scale above. This is established mathematics, not our claim.
Heavy-nucleus resonances show GOE-class repulsion
Porter–Rosenzweig; Bohigas–Haq–Pandey (1983) Nuclear Data Ensemble. Note: GOE (time-reversal symmetric), not GUE — a distinction the site must carry everywhere.
A direct zero-to-level mapping with predictive power
Shared universality class is not a mapping. Needed: an explicit formula, its free parameters, and out-of-sample predictions for a named nucleus.
Benchmark against a conventional nuclear code
Needed: head-to-head comparison with a shell-model or R-matrix evaluation (e.g. ENDF resonance data) on the same observable, with error bars.
Any energy-yield application
No claim of energy extraction or abundance is supported until the two items above are met. Stated here plainly.
4. Timeline to verification
- 2026-10-04
Ledger published; GUE pair-correlation reproduction and code posted (this page).
- Next
Scale reproduction to 10⁵ zeros using Odlyzko's published tables; add nearest-neighbor spacing histogram vs Wigner surmise.
- Next
Pull ENDF/B resonance energies for one heavy nucleus; unfold and compare statistics with the zeros under a stated GOE/GUE test.
- Then
Write the proposed mapping as an explicit formula with parameter count; freeze it before testing.
- Then
Out-of-sample prediction vs a conventional nuclear evaluation, with all data and code public.
Each step will be dated here when completed — including any result that refutes the proposal.