Session 007 — 2026-08-18/19
Task 3.7 (E-021) COMPLETE after a 6-bug root-cause saga; resources folder ingested
Outcome
E-021 ALL CHECKS PASS (research/numerics/data/E-021-sinf-sf-curve.{csv,json}):
- V1: λ_n = S_∞(n) − S_f(n) + 1 matches E-015 for n ≤ 3000 to 4.8e-25 relative (floor set by E-015's 26-digit CSV).
- V2: |R(s)| = |ζ′/ζ(s) − Σ_{|γ−t|<1} 1/(s−ρ)| ≤ A log(t+2) + B₀ holds at all 15 sample points with A = 0.9, B₀ = 1.0 (max |R| = 4.75; D-036's first estimate 2.0/2.0 tightened).
- V3: S_∞(n) − [(1/2)n log n + C₁n] → c₀ = −1/4, with the first correction measured exactly: S_∞(n) = (1/2)n log n + C₁n − 1/4
- 1/(24n) + o(1/n) (C₁ = (γ−1−log 2π)/2).
- |S_f(n)| curve, n ≤ 5000: max 13.52 at n = 3298 (Maślanka-consistent); the D-036 traced worst-case bound there is ~2280 — loose by ~170×, as predicted. This is the benchmark for the D-037 finite-height theorem.
- E-021 registered in research.db (5000 rows); session 007 registered.
The bug saga (6 defects, all root-caused and fixed)
E-021 failed V1 four times (1.4e143 → 1.2e-1 → 2.0e3 → fixed). Cascade:
- mpmath zeta accuracy ceiling ~57–58 digits (Hurwitz AND integer),
even with correct
mp.mp.dps. Measured: mp.zeta(90, 0.5) at dps 1700 has absolute error ~8.4e-31. The E-011 note "broken beyond ~16–19 digits" was the dps-setter bug; this is a separate real ceiling. → All ζ/Stieltjes beyond double precision now via flint. - S_f convention confirmed PLAIN (Σ C(n,j)η_{j−1}) — the earlier "fix" claiming alternating was itself wrong. Verified at n=2,3,200 against S_∞+1−λ (E-015).
- GAMMA_E as bare float literal → 53-bit (error 4.94e-21 in ζ*(1) and σ₁ diagnostics). Long constants must be strings. Cache patched.
- σ_m omission is fatal at any m ≤ ~0.22·n_max: truncating at M=200 left boundary error ~C(n,M)·14^{−M} which PEAKS at M=n/15 (~(15/14)^n) → 1e133 explosion at n=5000. Adaptive M_SIG=1830.
- float64 zero ordinates insufficient for σ_m (C(n,j) amplification): S_f(300) off 7.8e-8. Zeros k>100 contribute <1e-31 relative for m ≥ 25, so first 100 zeros via mp.zetazero at dps 450 suffice.
- mp.mpf(string) parsed before
mp.mp.dpsset — THREE separate instances (gam_s at entry dps 15; g100 at leftover dps 60 → σ_m errors ~m·1e-60·14^{−m} → S_f(3000) off 1.7e7, growth ~n^80). All fixed; rule documented in script header + memory.
Also discovered: my dps-1700 Stieltjes-division REFERENCE recursion loses digits at k ~ 80+ (~1e-154 at η_80) — E-011/E-015 used dps 550/1450 for k ≤ 1000/3000 and were validated by independent checks (λ_1 to 102 digits, E-008 cross-check, refined ratio 0.999845 at n=3000), so ledger #3 stands; but the recursion's digit loss vs k deserves a note for future k > 3000 work (pad dps generously).
Resources folder (research/resources/, 43 notes) — read in full
User-provided RH-equivalence atlas (Stieltjes, Hasse, Li, Lagarias positivity, Weil, Nyman–Beurling, Redheffer, Robin/Lagarias, Speiser, Mertens, de Bruijn–Newman, Hilbert–Pólya/Berry–Keating, Montgomery pair correlation, Keating–Snaith moments, Selberg CLT, Lindelöf, Franel–Landau, Riesz & H–L, Salem, Volchkov, special values, moments/RMT, zero-free regions, explicit formulas, compendium of 60 equations). Direct uses:
- D-037: Schoenfeld's explicit |π(x)−li(x)| ≤ √x log x/(8π) (x ≥ 2657) and Büthe (2018) for turning Platt's T₀ into explicit bounds; Hasanalizade–Shen–Wong |S(t)| ≤ 0.1038 log t + 0.2573 log log t
- 9.3675 (alternative to our Trudgian constants).
- Constants cross-checks: B = −λ₁; C = 2 + γ − log 4π = 2λ₁ = 0.046191 (Nyman–Beurling constant = our σ₂-ish sum).
State of the plan
- 3.6 (D-036) ✔ (was done cont.9; now updated with measured constants).
- 3.7 (E-021) ✔ COMPLETE — this session.
- NEXT: 3.8 (D-037 → R-004): assemble the finite-height theorem (λ_n > 0 ∀ n ≤ N₁ explicit, [PROVED-CONDITIONAL(computational RH-to-height-T₀)]). Then 2.10 (E-022), 2.9-D1, 2.11 (D-038).
Handoff notes
- E-021-zeros100-hi-cache.json (100 zeros, 400 digits) now exists; E-021-zeta-cache.json (ζ(j) strings, 1650 digits, ζ*(1) patched) and E-021-zeros-cache.npy (4624 zeros, float64 — P1 use only!) reused.
- The n=10⁴ rerun of E-021 (script N_MAX flag) is cheap: zeta strings must be extended to 0.31·10⁴ digits (delete zeta cache or bump n_max-dependent filename).
- Pacing: session ran long (user approved continuing to completion).