/teal-sea
teal-sea / zeta-labstate of record · compiled 02 Nov 2026 · revision b09fa4dd · source

Library · hunts/rh_height_lean/RESULTS.md

RESULTS: `rh_height_lean` (hunt #137), T = 50 and T = 100

2,127 words · 251 lines · source

Grade: kernel-checked by Lean's kernel (Lean v4.35.0-rc2, Mathlib 065356127b1dc0016f66b7283ce0ce2c4055aa55, zero sorry, axioms propext, Classical.choice, Quot.sound only). The independent con-ron --verified checker accepted the exported whole closure on 2026-10-24. Earlier bounded attempts remain inconclusive, not rejected.

The theorems

In lean/RHHeight/Main.lean, for Mathlib's own riemannZeta:

The statements are the definitions in lean/RHHeight/Statement.lean. They quantify over riemannZeta directly, with no auxiliary hypothesis.

The second target is proved in lean/RHHeight100/Main100.lean. lean/CheckMain100.lean pins its unfolded type directly to Mathlib's riemannZeta:

These final statements have no external computation as a hypothesis. The count and simplicity are separate conclusions, not consequences inferred solely from nineteen new sign changes.

How it is proved

Skeleton.lean reduces the statement to four hypotheses, and each piece discharges one:

PieceFileWhat it proves
Gamma-side incrementGammaIncrement.lean92/10 <= integral of mu over [3, 52] <= 109/10, from the vendored Stirling bound digamma_stirling
Horizontal legsHorizontalLegs.lean and Legs*.leanRe zeta > 0 on [1/2, 2] + 3i and [1/2, 2] + 52i, with the two end arguments enclosed, from interval boxes the kernel decides
Exact argumentExactArgument.leanunder that positivity, the vendored zeta23 folded argument principle is the exact identity Ncount T1 T2 = integral of mu + (arg zeta(1/2 + i T2) - arg zeta(1/2 + i T1))/pi
Low heightLowHeight.leanno zero with 0 < Im rho <= 3, from hunt #132's Euler-Maclaurin representation at N = 1

The three enclosures put the count for 3 < Im rho <= 52 strictly between 9 and 11, so it is 10. Hunt #133's ten distinct zeros on the line lie in that window, so they are all of its zeros, and each is simple. LowHeight covers 0 < Im rho <= 3.

At height 100 the proof reuses ExactArgument and LowHeight, encloses the Gamma increment over [3, 100] between 28.1 and 29.7, and proves positivity on the top horizontal leg at ordinate 100. The resulting integer count lies strictly between 28 and 30. Nineteen generated boxes locate additional zeros on the critical line beyond hunt #133's ten; matching all 29 to the contour count excludes off-line and multiple zeros. See RHHeight100/Main100.lean and RHHeight100/Skeleton100.lean for the exact assembly.

Checks

In the paths below, <bundle> is the laboratory's local evidence bundle for this proof (source snapshot, logs, receipts and SHA-256 manifests), kept but not published, and <toolchain> is the pinned Lean v4.35.0-rc2 toolchain directory.

Height-100 clean-source build, 2026-10-23. With the pinned Lean toolchain and root package's Mathlib checkout, build.sh --full100 exited 0 from source at 21:07 UTC after starting at 18:59 UTC. Its retained receipt is <bundle>/evidence/full100/receipt.txt; the unpublished local bundle has build.log, 102 .olean objects, object-hashes.txt, source-hashes.txt, rh100-source-hashes.txt, and audit.log. The final check_axioms.py --full100 run exited 0 and accepted exactly 100 reports, allowing only the three standard axioms. The receipt also records an initial audit_exit=1; this was not the final audit and is not silently counted as a pass. CheckMain100.lean checked the unfolded final statements. The combined hunt, docs numbering, doors and probe-discipline suite passed 103 tests; the recorded context check and diff check exited 0 (full100/tests.log). This is a Lean-kernel source build and axiom audit, not an independent checker verdict.

Earlier independent attempts, inconclusive. Retained details are in <bundle>/evidence/independent100/VERDICT.md and sibling receipts, plus evidence/fresh100/status.json. The exported closure of the three final declarations was produced successfully. con-ron --verified reached the 60,000 of 81,674 progress marker before the first 1,200-second wall bound; its 3,600-second retry stopped after 1,800 seconds without another --progress=5000 marker (conron-retry3600.status.json). That observation bounds only marker visibility: fewer than 5,000 completions since the last marker, not zero completions or a stalled checker. A subsequent 8-worker --progress=1 diagnostic on the unchanged export and checker binary completed 61,363/81,674 checks through the 1,200-second wall stop (SIGTERM, exit -15), with at most 84.089 seconds between logged completions and peak sampled tree RSS 3,604,783,104 bytes. Its six byte-matched files are appended at <bundle>/evidence/gate8/; gate8-sha256.json gives their SHA-256 hashes and byte counts without changing the original evidence or source manifests. The archive README's older exact-set verification snippet predates this append: exclude evidence/gate8/ when checking evidence-sha256.json, then verify its six files against gate8-sha256.json separately. NanoDa with only the standard axioms permitted was stopped at its 43 GiB descendant-RSS bound without a checked-declaration verdict. leanchecker --fresh RHHeight100.Main100, a fresh replay using Lean's own kernel, hit its 1,800-second wall bound without output (fresh100/status.json). None of these earlier attempts accepted or rejected the theorem; the subsequent completed gate below changes the overall verdict.

Independent whole-closure acceptance, 2026-10-24. The unchanged exported closure of RHHeight100.rh_height_hundred, RHHeight100.zero_count_hundred, and RHHeight100.ncount_three_hundred was checked with the independent con-ron binary in verified mode. The exact command recorded in the local receipt is:

<toolchain>/bin/con-ron \
  --verified --jobs=8 --progress=1 \
  <bundle>/evidence/independent100/rh100.ndjson

The receipt at <bundle>/evidence/gate3h-20261024/receipt.json records exit 0, stop_reason: null, and 81,674/81,674 completed checks. stdout.log says con-ron: accepted 82680 declarations (--verified); stderr.log says con-ron: check done: 81674/81674. Progress also names the three final declarations and the count assembly. The export SHA-256 is 16ad4200653aa74e72a6d7cfd0085449050dcaa5d3b496ed774cda56c4c3f2b9; the checker binary SHA-256 is 4e5616d94374cae37324dad2594f6230c2bb2297240249fc78ff508f3bc5acef. Both match the receipt's before and after hashes and the retained live bytes. This is second-kernel acceptance of that export, not a separate NanoDa success, outside review, a new proof of unbounded RH, or publication. The raw receipt and logs are durable locally and not part of the earlier evidence manifest.

Reruns without a wall bound, 2026-10-26. Both inconclusive checkers were rerun on the swarm box with no wall limit, an unlimited stack, and one stop rule: a 20 GiB host MemAvailable floor. The inputs matched their recorded SHA-256 hashes: the export (16ad4200…), nanoda_bin (8241c5e6…), leanchecker (9e36e955…) and Main100.olean (c78cddfd…). The other 101 project objects matched object-hashes.txt. The Mathlib and dependency objects came from a build at the same pinned revisions.

The receipts and every attempt are in the local rerun directory rh100-rerun-20261026, which is not published. The attempts include a launch without lean on PATH, a NanoDa stack overflow under the 8 MB default stack, and a memory-floor stop.

Reproduction from this checkout (requires the pinned Lean/Mathlib dependency objects in lean/.lake; OUT must be a fresh writable directory):

OUT=/path/to/fresh-output
LEAN="$(cd lean && elan which lean)" LAKE_DIR="$PWD/lean/.lake" \
  bash hunts/rh_height_lean/lean/build.sh --full100 "$OUT" > "$OUT.build.log" 2>&1
.venv/bin/python hunts/rh_height_lean/lean/check_axioms.py "$OUT.build.log" --full100
.venv/bin/python hunts/rh_height_lean/gen_boxes100.py --check
.venv/bin/python hunts/rh_height_lean/gen_legs100.py --check
.venv/bin/python -m pytest -q hunts/rh_height_lean

The --full100 build includes the old height-50 closure and the height-100 modules; --full alone stops at height 50. The unpublished durable local bundle at <bundle> preserves all 568 scratch evidence files, a 545-file local source snapshot taken before these documentation edits, and relative SHA-256 manifests with byte counts. Copied files were rehashed against the originals; all 102 object receipt hashes, 32 height-100 source receipt hashes, eight independent identity receipt hashes, and the exported closure hash were verified. README.md and metadata.json in that bundle give the verification procedure, pinned toolchain and dependency revisions, and the original checkout status. Original receipts retain scratch paths; use the relative manifests to verify relocated files. The later evidence/gate3h-20261024/ is appended outside those earlier manifests; verify its receipt's input hashes and terminal log verdict separately. No dependency objects or toolchain binaries are bundled.

What this does not say

Nothing above height 100 and nothing about the Riemann hypothesis (docs/08). The earlier height-50 result could not distinguish zeta from the Davenport-Heilbronn function below that function's first off-line zero at height 85.699; the height-100 statement is above that counterexample ordinate, but remains finite. RH has been verified numerically far higher (Platt and Trudgian, 2021, to 3.0e12). The distinction here is formal kernel checking, not the numerical range. The proof uses vendored zeta-23-lean analytic infrastructure and the earlier Hardy-zero hunts; no priority claim follows.

Novelty search, 2026-10-22. Seven web searches (Lean, Mathlib and its Zulip, Isabelle and the Archive of Formal Proofs, Coq, HOL Light, PrimeNumberTheoremAnd, arXiv on formalized Turing-method verification), a read of the vendored zeta-23-lean sources, and a second pass the same day: GitHub code search for Lean files on riemannZeta zeros (six queries, including the identifier RHUpToHeight), the Archive of Formal Proofs analysis index, and Mathlib's HardyZ.lean. The closest prior work, and how it differs:

What the search did not find: a proof of RH to any positive height, or of a complete zero count to a height, that uses only Lean's (or another prover's) standard axioms. A web search does not cover unpublished or non-indexed work, and OEIS and zbMATH were not consulted. So this is a search record, not a novelty claim.

Open