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

Library · hunts/li_dh_onset_hardened/RESULTS.md

RESULTS: hunt #151

5,420 words · 559 lines · source

Status, 2026-10-26: the pre-registered statement is established at the grade hardened. For the classical Davenport-Heilbronn function:

lambda_{328997}(DH) < 0, and lambda_n(DH) > 0 for every 1 <= n < 328997.

The values: lambda_{328997} = [-2379.96470663976248370528984220 +/- 4.4e-27] and lambda_{328996} = [+1385.31521851949223176484827912 +/- 2.9e-27]. Every one of the 328,996 earlier balls lies entirely above 0, none undecided, and the smallest is lambda_1 = 0.0976361468... Two production runs at different radii (c = 5000 with 2^21 nodes, c = 2500 with 2^19) give the same n\. Their balls intersect at every n <= 500,000, and both runs passed the xi control and the mpmath.iv node check inside the run. The index is exactly the n\ = 328997 that hunt #128 extrapolated 66 times past its data, so the pre-registered prediction is confirmed (section 4).

Hardened means two things here. Every step carries an Arb ball: the admissibility certificate, M(rho), the node samples, the branch steps, the DFT and the aliasing bound. And independent routes agree where they exist: two radii, mpmath.iv at sampled nodes, and #128's float table. It is not kernel-checked, and not reviewed outside this lab, so it is pending external verification. One shared failure mode is named and not excluded: both radii use the same Arb evaluator for f (four acb.zeta calls), and the independent mpmath.iv route checks it at 20 nodes per run, not at all 1.3 million.

The repricing: hunt #128 priced this at about 20,000 core-hours. Both runs together cost 0.46 core-hours (1211 s and 447 s, single process). The wall was a cost wall of the r <= 0.99 family, refuted at the stated parameters by the run itself (category 1 below). Nothing here bears on the Riemann Hypothesis (docs/08): every number is about the Davenport-Heilbronn function f, which has no Euler product.

The first-wave record follows unchanged (its status line read "first wave done, production not run"); section 4 and the dispositions are the production addendum.

1. The admissibility certificate (admissibility.py)

Computed in Arb at 128 bits on the box B = [-3/4, 7/4] x (0, T):

itemT = 160T = 133 (the brief's ceil(sqrt(3c)) + 10)
N_box (argument principle, Backlund fold)98, ball [98 +/- 3e-32]78
N_line (sign changes of F(1/2+it), grid 1/64)9474
located off-line zeros right of the line, count 1 eachpair1, pair2 (q = 2)pair1, pair2
N_box = N_line + 2qclosescloses
drop one quadruplebreaks (98 != 96)breaks
displace pair1's square by 1e-14count 0, breakscount 0, breaks
wall time14 s12 s

The pieces, each a ball statement:

What the equality buys. The N_line sign changes are N_line distinct line zeros. The squares hold q zeros right of the line and, mirrored by s -> 1 - conj s, q zeros left of it. Equality leaves nothing over. So below height T every zero with Re s > 1/2 is pair1 or pair2, and every line zero is simple.

Zeros with Re s > 1. Davenport and Heilbronn (1936) proved that f has infinitely many zeros with Re s > 1. The box covers them: no zero has Re s >= 3/2 < 7/4, so any such zero below T lies inside B. It would raise N_box without being a sign change or a located square, and the equality would break. It does not break, so none exists below T = 160.

Above T. A zero with Re rho = sigma in (1/2, 3/2) and |Im rho| > T has |1 - 1/rho|^2 = 1 - (2 sigma - 1)/|rho|^2 > 1 - 2/T^2. At T = 160 that floor is 0.99996094, which lies beyond pair1's 0.99995800. So

R_a = min over zeros with Re > 1/2 of |1 - 1/rho| = |1 - 1/rho_1| = 0.9999579956001776 (+/- 6e-19),

with pair1 the binding zero (1 - R_a^2 = 8.4007e-5). At the brief's T = 133 the above-T floor 0.99994347 binds instead, which is still admissible for c = 5000 but wastes a quarter of the gap. That is why T = 160: it is the first height at which pair1 binds (T >= 154.3).

c = 5000 is admissible: r = sqrt(1 - 1/5000) = 0.99990000 < R_a, and ln(R_a/r) = 5.80e-5. The judge's c = 1e4 statement checks: r = 0.99995000, and the midpoint circle (1 + r)/2 = 0.99997500 lies beyond R_a = 0.99995800. Any valid aliasing circle at c = 1e4 sits in a window of width 8e-6. Step 3 prices that window at 9.2e6 nodes for n <= 4e5 and 9.9e6 for n <= 5e5 (2^24 after rounding), the same order as the judge's 1.3e7.

Kill condition 1 does not fire. The completeness equality closes in balls at c = 5000, and with it at every c up to 1/(1 - R_a^2) = 11904.

2. The evaluator, the second route and the controls (evaluator.py, iv_route.py)

3. The trapezoid and branch bookkeeping (trapezoid.py, sizing.py)

The aliasing bound. For r < rho < R_a and N nodes,

|lambda_n - n btilde_n| <= n M(rho) rho^{-n} x/(1 - x), x = (r/rho)^N, (A)

with M(rho) bounding max |g - C| on |z| = rho for any constant C. Only b_0 sees the branch constant. li_balls adds (A) as a ball to every coefficient. test_the_aliasing_bound_holds_and_is_not_vacuous pins two things. First, at r = 0.9, N = 400, the true error lies below (A) at n = 1, 10, 20, 40. Second, with rho = 0.999 the bound is within 1e4 of that error. At rho = 0.95 it is valid but about 1e10 too large, because the true decay is set by R_a near 1.

M(rho) in balls. An adaptive arc cover of the upper half circle (conjugate symmetry gives the rest) bounds M(rho). Each arc contributes |log G| from an Arb ball. Where Re s > 3/2 it adds |Log f| <= -log(1 - S(3/2)) + arcsin S(3/2). Elsewhere it adds |log|f|| plus the continued arg f, chained arc to arc. The chain must return to arg f = 0 at s = 1/(1+rho), where f > 0, and it does at every circle:

rhoM(rho) <=arcsseconds
1 - 5.0e-591,602490641
1 - 4.6e-5101,111512945
1 - 4.4e-5106,603527344
1 - 4.3e-5109,567534646

The large-|s| end sets M: log Gamma near s = 1/(1 - rho), about 2e4.

The branch on the sampling circle. g = log G + log f. log G is Arb's analytic log-gamma. log f is the principal Log on the contiguous stretch with Re s > 3/2. Re s on the circle decreases monotonically in the angle, so that stretch is the first block of nodes. Through the rest of the circle, arg f is continued over blocks of up to 256 nodes. Each block is enclosed in one arc ball whose f-image must lie in an open half-plane. If a single step between neighbours is still undecided, the arc between them is bisected and f is evaluated at the new points. A zero on the contour exhausts the depth and is refused. test_the_branch_step_refuses_a_zero_on_the_contour plants one, and test_coarse_sampling_is_bridged_not_refused checks that 32 nodes at r = 0.99 still close. The chain must contain arg f = 0 at s = 1/(1+r).

The production node count (artifacts/sizing.json). Tolerance 1e-10 on every lambda_n, n <= n_max. N is the aliasing requirement, rounded up to a power of two for acb.dft. Only the upper half is sampled, N/2 + 1 evaluations, priced at the contended 250-bit rate of 1.83 ms.

cn_maxN from (A)N usedbitssampling core-hours
2000500,000334,456 (but N > n_max)2^192700.13
2500500,000440,9922^192340.13
3000400,000523,3082^191860.13
4000500,000844,3972^201800.27
5000500,0001,214,7712^211620.53
10000500,0009,891,0552^241264.26

Add acb.dft: measured 2.9 s at 2^18 and 192 bits, so about 30 s at 2^21. Add M(rho): 45 s. The branch cover and its overhead are measured by the rehearsal below. At c = 5000 the whole production is about 0.6 core-hours; at c = 2500 it is about 0.2. Hunt #128 priced the r <= 0.99 plan at about 20,000. The repricing holds, by a factor of roughly 3e4 to 1e5.

The rehearsal on the production circle (rehearsal.py, artifacts/rehearsal.json) used c = 5000, rho = 1 - 4.6e-5, N = 2^17 (one sixteenth of production), 192 bits and n <= 5000:

A defect found by the first rehearsal attempt: the tracker asked Arb for f on arc balls hundreds wide in s (256-node blocks where neighbouring nodes are about 1 apart near |Im s| = 150). Those evaluations are slow, and their image always meets 0. The attempt was stopped after 13 CPU-minutes. Balls wider than 1/2 in s are now split without being evaluated (trapezoid.S_BALL_MAX), and tracking cost 18 s.

Production, priced from the rehearsal: at c = 5000, N = 2^21, n <= 500,000: 1,048,577 node evaluations at 1.1 to 1.8 ms (quiet to contended), so 0.32 to 0.53 core-hours; tracking under a minute (it is set by the near-line stretch, not by N: 13 s at N = 2^14, 18 s at 2^17); the DFT about 30 s; M(rho) 45 s. About 0.4 to 0.6 core-hours, single process, under 2 GB of memory. At c = 2500 (N = 2^19, 234 bits), about 0.15 to 0.3.

4. The production runs, reported as pre-registered (production.py, compare.py)

Pre-registration: MISSION.md, "Pre-registration of the production runs", commit 8964573b4. It was committed alone before run A started.

run Arun B
c, r5000, 0.999900002500, 0.99979998
aliasing circle rho, M(rho) <=1 - 4.6e-5, 101,111same
N, precision2^21, 192 bits2^19, 256 bits
in-run controlsxi 48/48, both faults flip; iv 20/20 meet, kappa fault caught at 17same
principal / tracked nodes3,338 / 1,045,2391,181 / 260,964
branch closure at s = 1/(1+r)[+/- 2.5e-49], contains 0[+/- 6.6e-69], contains 0
imaginary parts of all lambda_n contain 0yesyes
largest ball radius, n <= 500,0004.6e-214.2e-15
first ball-negative index328997328997
undecided indices before it00
wall time (contended box, load 28 to 40 on 32 vCPU)1211 s (sampling 1098)447 s (sampling 367)
table, out of gitartifacts/big/lambda_A.txt, 26,953,876 bytes, sha256 5ebe8608...f87396blambda_B.txt, 25,007,262 bytes, sha256 b46903b3...590bbd2e4

The two-radii rule held (artifacts/two_radii.json): the A and B balls intersect at all 500,000 indices, with a largest midpoint difference of 5.0e-15, set by B's wider balls. No kill condition fired.

Further checks on run A:

Around the onset (run A):

nlambda_n(DH)
328992[19135.5323142982959541146984752 +/- 3.0e-26]
328995[5420.11034980594646449706675502 +/- 5.1e-27]
328996[1385.31521851949223176484827912 +/- 2.9e-27]
328997[-2379.96470663976248370528984220 +/- 4.4e-27]
328998[-5875.18237299302494479232020911 +/- 2.7e-27]
329002[-17145.8812949163996232699459861 +/- 2.0e-26]

The outcome as pre-registered:

Two notes on what the number means:

Cost. 0.34 + 0.12 = 0.46 core-hours of wall time, against an estimate of 0.4 to 0.6 for A and 0.15 to 0.3 for B. #128's plan was priced at about 20,000 core-hours, so this is a factor of about 4e4.

Dispositions (ALIGNMENT.md section 5)

Prior work searched

The searches, run 2026-10-26 (web search plus the arXiv abstract pages and PDFs; zbMATH and Google Scholar were not queried directly):

Deltas, as the coordinator asked, against the two named sources:

The result is original (this lab produced it). It is not claimed novel. The search behind these deltas is recorded above. It is bounded (web search, the arXiv pages and PDFs; zbMATH and Google Scholar were not queried directly) and found no stated first negative Li coefficient for the classical Davenport-Heilbronn function.

The doors

The ceiling this wave measures is the cost of n_max on the ball trapezoid, as a function of c. (The production runs since then confirm the model: about 0.34 core-hours for A against 0.4 to 0.6 estimated.)

Active constraints at the optimum

  1. Node count from the aliasing gap ln(rho/r), which binds at c >= 3000. N grows like ln(n M rho^{-n}/tol)/ln(rho/r), and ln(rho/r) is at most ln(R_a/r) = 1/(2c) - 4.2e-5. The shadow price is steep near c = 1/(2(1-R_a)), about 11,900, where the gap closes: c = 5000 costs 2^21 nodes, while c = 1e4 costs 2^24.
  2. N > n_max, which binds at c <= 2500. There the aliasing need falls below n_max, and the DFT length is set by the largest index wanted.
  3. Precision, which never binds here: n_max (1 - r) log2 e + about 90 bits. That is 162 bits at c = 5000 and 270 at c = 2000. It costs a factor of about 1.8 per node between 200 and 250 bits.
  4. R_a itself. It is fixed by pair1 and is a property of f, not a constant anyone chose.

The frozen-constant inventory

constantvaluewhat relaxing it trades
c5000 (brief)genuine trade shape: c = 2500 is about 3 times cheaper, at about 70 more bits
aliasing circle rho1 - 4.6e-5closer to R_a widens the gap but raises M only logarithmically; the four measured circles span M = 9.2e4 to 1.1e5
tol1e-10 on lambda_neach factor of 10 costs ln 10/ln(rho/r) nodes, about 4e4 at c = 5000; the sign decisions need far less unless some lambda_n sits within 1e-10 of 0
n_max500,000about 1.5 times the extrapolated n\*; if no sign change appears below it, N and bits grow linearly
power-of-two N2^21Arb's DFT also takes smooth composite lengths: 5 x 2^18 = 1,310,720 would save 37 per cent at c = 5000
box height T160154.3 is the minimum that makes pair1 bind; 133 also certifies c = 5000
square half-width1e-15sets the R_a ball width (6e-19); far below every other uncertainty
block of 256 nodesbranch covercost only; bisection repairs any block that fails

The information class

Inside the family (the same contour integral, computed more cheaply): c, rho, tol, the power of two and the block size. Requires reading more: none of the production numbers. The admissibility certificate already reads the zeros up to T = 160, and nothing above T enters except through the closed-form floor 1 - 2/T^2. The one door that would change the answer rather than the cost belongs to #128's census: a zero above T with a larger (2 beta - 1)/|rho|^2 than pair1 would move n\*. It cannot change R_a, because the floor 1 - 2/T^2 already excludes such a zero from the disc.

A measured optimum is not a proved ceiling. These costs are estimates fitted to timed units on a contended box, at the stated tol and n_max, and nothing in them is proved.

Addendum, 2026-10-26 (evening): the named shared failure mode, tested

Pre-registration. MISSION.md, "Pre-registration of the independent-evaluator rerun of run B", commit 485359c38. It was committed before the run, and it fixes the seed (1512026), the sample rule and three rules.

What was done. Run B (c = 2500, N = 2^19, 256 bits, rho = 1 - 4.6e-5, n <= 500,000) was repeated with a second evaluator (iv_fast.py, ivpipe.py). It shares no evaluation code with the Arb one:

Every use of f went through it: the 262,145 node samples, the 40,199 branch-cover arc boxes, and the 15,313-arc M(rho) cover, which gave M(rho) <= 99,865 against Arb's 101,111. Shared with run B on purpose: the node geometry, the tracking logic, acb.dft and the aliasing arithmetic. Arb only holds and transforms numbers there. Before the run, the iv evaluator was checked against Arb and against the slower iv_route at nodes including an exactly real s.

Outcome, as pre-registered:

ruleresult
1. first ball-negative index 328997, none undecided before itholds: 328997, 0 undecided
2. signs agree wherever both decide, n <= 500,000holds: both decide all 500,000, 0 disagreements
3. balls intersect at 328996, 328997 and the 1000 sampled nholds: all intersect; in fact the balls intersect at every n <= 500,000

At the onset, iv gives lambda_{328996} = [1385.31521851949223176 +/- 5.9e-18] and lambda_{328997} = [-2379.96470663976248371 +/- 5.8e-18]. Arb run B gives the same digits with radius 5.9e-18 and 5.8e-18. The largest midpoint difference over the sample is 4.9e-15, below either run's ball radius there. The iv table is <cache>/li_dh_onset_hardened/lambda_B_iv.txt, sha256 901380462bf4f7435bddcd510e6787e231ca09b54cfb5651d68aeadc54924aa2. Cost: 6.45 core-hours (RUNS.md).

What this excludes, and at which grade. The failure mode RESULTS.md named, "both radii use the same Arb evaluator for f", is excluded for run B's table. An mpmath.iv evaluation of every value f and log Gamma contribute reproduces the same n\* and the same sign at every n <= 500,000, at interval grade (every evaluation enclosed). Run A at c = 5000 was not repeated in iv. It is tied to the iv route through the A/B intersection at every n.

What it does not exclude:

The admissibility certificate itself is Arb-only. An iv replay of the box count was not done.

The grade is unchanged: hardened, pending external verification. It is not kernel-checked and has had no outside review. This addendum narrows which failure modes remain open; it does not change the rung.

Novelty, as a delta against the recorded search. Searches were run on 2026-10-26 by web search plus the arXiv abstract pages and full PDFs. zbMATH and Google Scholar were not queried directly. Queries: "Davenport-Heilbronn" "Li coefficients", "Li's criterion" "Davenport-Heilbronn" first negative Li coefficient, "Li coefficients" Epstein zeta function negative off-line zeros computation, arXiv "Li-type criterion for zero-free regions", a DOI lookup through OpenAlex, and author and journal lookups for the items below.

The delta:

The result is original to this lab. It is not claimed novel beyond the stated search.

Addendum, 2026-10-26 (night): the admissibility certificate replayed in mpmath.iv

Pre-registration. MISSION.md, "Pre-registration of the iv replay of the admissibility certificate", commit 9fc682c24, committed before any of this replay ran. It also carries Estimate 4 in RUNS.md: about 0.3 core-hours, at most 1.2.

What was done (admissibility_iv.py, artifacts/admissibility_iv.json, 128 bits, T = 160). Every value of f, log G and S is evaluated in mpmath.iv, by Euler-Maclaurin with its own kappa and iv.loggamma. Arb only holds converted boxes and does the argument arithmetic of balls.segment_arg_change. The route differs from the Arb certificate in one place. The iv sum cannot evaluate f at the removable pole s = 1, so f > 0 near 1 comes from f(1 + 1/256) = 0.92335523610976966761... and a Cauchy drift bound. The drift is at most 0.0253, from max |f| <= 1.0638 on |s - 1| = 1/4 (1024 iv arcs). Arb used dirichlet_l at s = 1 itself.

Outcome, as pre-registered:

itemiv replayArb certificateballs meet
S(3/2), S(7/4)0.737590649449041496..., 0.417701370183416113...sameyes, both
f > 0 on [1/2, 7/4]yes (697 + 597 real boxes, drift bound near 1)yes (82 balls, f(1))f(s0) meets
N_box at T = 16098 ([98 +/- 1e-22]; 195 top-edge evaluations)98yes
N_line (grid 1/64)9494Z meets at all 10,241 points
pair1, pair2 squarescount 1, count 11, 1|1 - 1/s| meets for both
N_box = N_line + 2qclosescloses
drop a quadruple; displace a squareboth breakboth break
R_a lower bound; r (c = 5000) below it0.99995800, yessame

The rule holds. The conclusion is reproduced, the balls meet everywhere both routes evaluate, and the faults break it. The cost was 533 s. test_the_iv_replay_reproduces_the_certificate pins the artifact. test_the_iv_box_count_at_height_100_and_a_planted_kappa_fault recomputes the iv box count at T = 100, which is #128's 54. It also plants kappa + 2^-80 in the iv context and checks that Z(1/2 + 20i) then misses the Arb ball, and meets it again once kappa is restored.

What this excludes, and what it does not. The certificate was the last Arb-only link in the chain from the zeros to n\*. With it replayed, every evaluation of f, log Gamma and S that the result depends on has been done in Arb and again in mpmath.iv:

The two evaluators agree wherever compared.

Still not excluded, as before:

The grade is unchanged: hardened, pending external verification. It is not kernel-checked and has had no outside review.