files / problems / hilbert16-degree-8 / PROBLEM.md

20 KB · on GitHub

Hilbert 16(a) for degree 8 — real schemes of plane octics

Statement

Classify the real schemes (ambient isotopy types in RP2\mathbb{RP}^2) of nonsingular real plane projective curves of degree 8. A degree-8 curve has at most 22 ovals (Harnack); curves attaining the bound are M-curves. The classification is complete through degree 7 (Gudkov for 6, Viro for 7). For degree 8 it is not.

Current paper record, fetched as v4 on 2026-09-04; the published certificate archive was fetched and replayed on 2026-08-21 (see RESEARCH.md):

What would count as a dent

(A) A certified combinatorial patchwork (primitive convex triangulation of T8T_8 plus signs, exact convexity certificate, independently computed isotopy type) realizing one of the two open M-schemes with (p,n)=(19,3)(p,n)=(19,3). By Viro's theorem that would settle their algebraic realizability. The four (p,n)=(3,19)(p,n)=(3,19) open schemes are unreachable by this stack (Theorem 21 of arXiv:2602.06888v4).

(B) A certified exclusion of one of the six. Needs link-theory / braid-theoretic obstructions, not this stack; not attempted.

(C) A certified T-curve whose scheme is not among the published 2,367 — in particular any of the 39 M-schemes undecided as T-curves. That is a verified finite improvement of a documented lower bound.

Replaying known constructions is not a dent. Search residue is not an obstruction. SAT/annealing failure to find a scheme is not a bound.

Outcome (2026-08-21)

Replay. All 2,367 certificates of arXiv:2602.06888 v3 pass an exact from-scratch verifier (convexity certified in rational arithmetic, isotopy type recomputed via a double-cover argument), and the 22-oval subset reproduces exactly the 38 bold rows of their Table 1.

Dent (C). Seventeen real schemes are realizable as degree-8 T-curves and are not among their 2,367, so their §5.3 lower bound ("the search is not exhaustive") becomes ≥ 2,384:

⟨13 ⊔ 1⟨3 ⊔ 1⟨2⟩⟩⟩, ⟨3 ⊔ 1⟨4⟩ ⊔ 1⟨11⟩⟩, ⟨4 ⊔ 1⟨2⟩ ⊔ 1⟨13⟩⟩, ⟨4 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, ⟨4 ⊔ 1⟨4⟩ ⊔ 1⟨11⟩⟩, ⟨4 ⊔ 1⟨5⟩ ⊔ 1⟨10⟩⟩, ⟨5 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨5 ⊔ 1⟨6 ⊔ 1⟨7⟩⟩⟩, ⟨5 ⊔ 1⟨6 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨6 ⊔ 1⟨4 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨5 ⊔ 1⟨8⟩⟩⟩, ⟨6 ⊔ 1⟨6 ⊔ 1⟨6⟩⟩⟩, ⟨6 ⊔ 1⟨6 ⊔ 1⟨7⟩⟩⟩, ⟨6 ⊔ 1⟨8 ⊔ 1⟨4⟩⟩⟩, ⟨6 ⊔ 1⟨9 ⊔ 1⟨4⟩⟩⟩, ⟨7 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩.

Each witness sits on one of the paper's own triangulations with their integer MIN_WEIGHTS, so nothing about the geometry is ours to get wrong: the weights are re-certified exactly in rational arithmetic, the scheme is recomputed from scratch, and absence is checked both against our replay of the 2,367 and against the .pcom file names in their archive. Certificate compute/certs/new_schemes.json, checked by compute/verify_new.py (17/17).

Haas zone decompositions (new machinery). compute/haas.py implements Harnack splits, zones, compatibility and surgical twists for T8T_8 — 1,254 splits, 381,957 compatible pairs. Because a twist adds a fixed F2\mathbb{F}_2 vector, every maximal sign distribution on a fixed triangulation lies in an affine subspace of dimension ≤26\le 26, which compute/zone_search.py sweeps exhaustively. Checks: each of the 1,254 splits alone gives a 22-oval curve, and all 38 published 22-oval certificates decompose into explicit split collections (compute/certs/mcert_collections.json, rebuilt by compute/prep.py).

No M-scheme dent. All 184 triangulations of the census are now swept exhaustively (230,501,440 maximal sign distributions, all of them 22-oval M-curves): they realize exactly the paper's 38 M-schemes and nothing else, so no census triangulation carries either open deep nest. A further 4,609 certified regular triangulations outside the census, each also swept exhaustively, add no M-scheme either (compute/certs/outside_census_sweeps.json). Exhaustive per triangulation, not exhaustive over triangulations — residue, not an obstruction. Counts and certificates in ATTACK.md.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh

Close (2026-08-23)

The bound is unchanged. compute/verify_new.py replays 17/17, so the census lower bound stays ≥ 2,384, and compute/check_rokhlin.py replays with it.

Two searches were in flight when the machine restarted and neither finished. Thickening the whole Haas maximal stratum (compute/thickc.c) completed 4 of the 164 census triangulations in scope, 12,058,624 sign distributions, and found one scheme outside the census — ⟨4 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, already one of the seventeen. No new candidate, so nothing to certify: residue (compute/certs/thick_summary.json). The search in Haas collection space for the two open deep nests (compute/dn_sweep.py) lost its run directory in the restart and left no data at all; none is claimed.

What committed data still yielded: all 38 published 22-oval certificates re-verify through the collection pipeline rather than the sign-vector one (compute/dn_charac.py), and laminar zone depth turns out not to bound nesting depth usefully — zone depth 2 reaches a triple nest, zone depth 8 does not — which is why that searcher had no traction. For a depth-3 M-scheme ⟨a ⊔ 1⟨b ⊔ 1⟨c⟩⟩⟩ Rokhlin forces b≡2(mod4)b\equiv 2 \pmod 4; the published 38 realize b∈{2,6,10,14}b\in\{2,6,10,14\} and the missing b=18b=18 is exactly the (p,n)=(3,19)(p,n)=(3,19) class their Theorem 21 excludes from T-curves. Both open nests have b=2b=2, a row that already contains two published T-curves, so the target is a move along an occupied row rather than a new class. Details in ATTACK.md.

Hilbert 16(a) in degree 8 remains open.

Close (2026-08-27)

The bound is unchanged. Parent verify_new.py still replays 17/17, so the census lower bound stays ≥ 2,384. q1 produced no candidate for a new scheme.

The leftover whole-stratum thicken is no longer 4 of 164. Radius 1 around the maximal Haas stratum finished every census triangulation of twist-rank at most 20 (164/164, 1,438,512,000 sign distributions, exactly 46⋅2r46\cdot 2^r on each, compute/q1/certs/thick_r1_rank_le20.json). Every scheme outside the published 2,367 is already one of the seventeen. Neither open nest appeared. That is a finished sweep of the intended leftover, not a lower bound. The twenty census triangulations of rank 21–26 were never in that leftover.

Collection space: the one-split neighbourhood of all 38 published M-collections is exactly those 38 (compute/q1/certs/dn_nbhd.json). The two-split ladder around all twelve depth-3 M-collections is also finished and adds nothing (compute/q1/certs/dn_ladder.json). Nested odd pairs on the five published (19,3) collections hit neither open nest; the a=10 nest admits no compatible nested odd pair. Even-only walks stay on the five known (19,3) M-schemes. Neither open nest is decided.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q1/run_all.sh && python3 q1/collect.py

Hilbert 16(a) in degree 8 remains open.

Close (2026-08-27, leftover rank 21)

The bound is unchanged. Parent verify_new.py still replays 17/17, so the census lower bound stays ≥ 2,384. No q2 candidate for a new scheme.

Radius 1 around the maximal Haas stratum finished every leftover census triangulation of twist-rank 21 (5/5, 482,344,960 sign distributions, exactly 46⋅22146\cdot 2^{21} on each, compute/q2/certs/thick_r1_rank_21.json). Every scheme found is already in the published 2,367. Neither open nest appeared. That is a finished sweep of this rank, not a lower bound. Fifteen leftover triangulations of ranks 22–26 are still open (residue).

Collection space: a 400,000-step even-split BFS stays on the five published (19,3) M-schemes (compute/q2/certs/even_pinned.json). Three-split moves around those five collections produced 30 known schemes and neither nest; the time cap stopped the last seed (compute/q2/certs/ladder3.json). Odd collections of size 4, as far as the snapshot ran, stay on the same twelve M-schemes as size ≤ 3 (compute/q2/certs/odd_skel4.json). Neither open nest is decided.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q2/run_all.sh && python3 q2/collect.py

Hilbert 16(a) in degree 8 remains open.

Close (2026-08-29, leftover ranks 22–26)

The bound is unchanged. Parent verify_new.py still replays 17/17, so the census lower bound stays ≥ 2,384. No q3 candidate for a new scheme.

Radius 1 around the maximal Haas stratum finished every leftover census triangulation of twist-rank 22–26 (15/15, 8,682,209,280 sign distributions, exactly 46⋅2r46\cdot 2^r on each, compute/q3/certs/thick_r1_rank_22_26.json). The rank-26 certificate is four shards whose evaluation counts sum to 46⋅22646\cdot 2^{26}. Every scheme found is already in the published 2,367. Neither open nest appeared. That is a finished sweep of this leftover, not a lower bound.

Odd collections of size 4 finished and stay on the same twelve M-schemes as size ≤ 3 (compute/q3/certs/odd_skel4.json). Neither open nest is decided.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q3/run_all.sh && python3 q3/collect.py

Hilbert 16(a) in degree 8 remains open.

Close (2026-08-29, leftover (19,3) neighbourhood)

The bound is unchanged. Parent verify_new.py still replays 17/17, so the census lower bound stays ≥ 2,384. No q4 candidate for a new scheme.

Three-split moves around every published depth-3 M-collection finished 12/12 (3,909,329 evaluations, 29 known schemes, neither open nest, compute/q4/certs/ladder3_depth3.json). That includes the five published (19,3) collections. A 1,200,000-step even-split BFS stays on those five schemes with the queue still open (compute/q4/certs/even_bfs.json). Neither open nest is decided. That is a finished neighbourhood, not a lower bound.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q4/run_all.sh && python3 q4/collect.py

Hilbert 16(a) in degree 8 remains open.

Close (2026-09-04, leftover (19,3) neighbourhoods)

The bound is unchanged. Parent verify_new.py still replays 17/17, so the census lower bound stays ≥ 2,384. No candidate for a new scheme.

Compatible odd collections of size 5 finished all 37,632,123 tuples (compute/q7/certs/odd_skel5.json): the same twelve published M-schemes as size 4, neither open nest. The published a=10a=10 even component (126,336 collections) and the nested-box a=17a=17 even component (25,292,736) both finished and stay on known (19,3) schemes. Several other enumerable even components of published M-collections finished the same way, including the (7,15) neighbour of the hole ⟨5⊔1⟨6⟩⊔1⟨9⟩⟩\langle 5\sqcup 1\langle 6\rangle\sqcup 1\langle 9\rangle\rangle, which is not an even twist of ⟨5⊔1⟨5⟩⊔1⟨10⟩⟩\langle 5\sqcup 1\langle 5\rangle\sqcup 1\langle 10\rangle\rangle. Radius-1 thickens of size-5 refinements, of 40 random regular triangulations, and of five walk-from-M-certificate triangulations found only schemes already among the 2,367 or the seventeen.

The remaining even components of the published (19,3) collections are larger than 101010^{10} collections and were counted, not enumerated. That leftover is residue, not a lower bound.

Replay: cd problems/hilbert16-degree-8/compute && sh run_all.sh && sh q7/run_all.sh && python3 q7/collect.py

Hilbert 16(a) in degree 8 remains open.

Dent (2026-09-08, one flip and three sign changes)

Number of nonempty degree-eight T-curve schemes ≥ 2,385. This is exactly the inequality in compute/q8/CLAIM.md. The new scheme is ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, with twenty ovals and (p,n) = (5,15). It is outside both the 2,367 schemes of Geiselmann et al., arXiv:2602.06888v4, §4.3, and the seventeen additions already verified in this notebook.

The witness changes one diagonal of the paper's certificate for ⟨5 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, then changes three signs. Its new integer lifting passes all 2,688 global strict inequalities with minimum slack 4. Python traces curve segments in the projective plane and its double cover; Rust reconstructs connected monochromatic regions and their nesting tree. Both independently recover the new scheme.

The search stopped on this construction after 82 of 1,190 sign balls, 1,248,532 evaluations counting repetitions. The 1,108 other balls remain unsearched. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.

Replay from the repository root: sh problems/hilbert16-degree-8/compute/q8/run_all.sh.

Dent (2026-09-12, leftover one-flip balls)

Number of nonempty degree-eight T-curve schemes ≥ 2,394. This is exactly the inequality in compute/q9/CLAIM.md. Nine schemes lie outside both the 2,367 of Geiselmann et al., arXiv:2602.06888v4, §4.3, the seventeen prior additions, and the q8 scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩:

⟨3 ⊔ 1⟨5⟩ ⊔ 1⟨10⟩⟩, ⟨5 ⊔ 1⟨2⟩ ⊔ 1⟨3⟩ ⊔ 1⟨7⟩⟩, ⟨5 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨4 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨4 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩.

Each witness changes one diagonal of a published or previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,385.

The leftover 1,108 balls of the q8 plan all finished (16,870,408 evaluations) and produced five of the nine. One-flip balls of those five certificates produced the other four. One-flip balls of the q8 certificate itself added nothing further. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.

Replay from the repository root: sh problems/hilbert16-degree-8/compute/q9/run_all.sh.

Dent (2026-09-20, leftover followup one-flip)

Number of nonempty degree-eight T-curve schemes ≥ 2,407. This is exactly the inequality in compute/q10/CLAIM.md. Thirteen schemes lie outside both the 2,367 of Geiselmann et al., arXiv:2602.06888v4, §4.3, the seventeen prior additions, the q8 scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, and the nine q9 schemes:

⟨1 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨2 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨3 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨3 ⊔ 1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨4 ⊔ 2⟨1⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨5⟩ ⊔ 1⟨9⟩⟩.

Each witness changes one diagonal of a previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,394.

The 106 leftover one-flip balls of the four q9 followup certificates all finished (1,613,956 evaluations) and produced six of the thirteen. One-flip balls of those six certificates produced the other seven. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.

Replay from the repository root: sh problems/hilbert16-degree-8/compute/q10/run_all.sh.

Dent (2026-09-22, leftover followup one-flip)

Number of nonempty degree-eight T-curve schemes ≥ 2,415. This is exactly the inequality in compute/q11/CLAIM.md. Eight schemes lie outside both the 2,367 of Geiselmann et al., arXiv:2602.06888v4, §4.3, the seventeen prior additions, the q8 scheme ⟨3 ⊔ 1⟨3⟩ ⊔ 1⟨12⟩⟩, the nine q9 schemes, and the thirteen q10 schemes:

⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩, ⟨2 ⊔ 1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨9⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨2⟩ ⊔ 1⟨10⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨5⟩ ⊔ 1⟨9⟩⟩, ⟨1 ⊔ 1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨10⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨4⟩ ⊔ 1⟨9⟩⟩, ⟨1⟨1⟩ ⊔ 1⟨3⟩ ⊔ 1⟨10⟩⟩.

Each witness changes one diagonal of a previously certified mesh, then at most three signs. Integer liftings pass all 2,688 global strict inequalities. Python traces curve segments; Rust reconstructs connected monochromatic regions. Both recover the claimed nesting tree, and each scheme is absent from the archive and from the previous 2,407.

The 205 leftover one-flip balls of the seven q10 followup certificates all finished (3,121,330 evaluations) and produced five of the eight. One-flip balls of those five certificates produced the other three. Neither preferred 22-oval deep nest is decided. Hilbert 16(a) in degree eight remains open.

Replay from the repository root: sh problems/hilbert16-degree-8/compute/q11/run_all.sh.

Close (2026-09-26, leftover followup one-flip)

The bound is unchanged. The q11 certificates still replay, so the census lower bound stays ≥ 2,415. No candidate for a new scheme.

One-flip radius-three of the three unused q11 followup certificates finished 93/93 (1,416,018 evaluations, compute/q12/certs/coverage_leftover.json). Every scheme found is already among the 2,415. Neither open nest appeared. That is a finished sweep of this leftover, not a lower bound.

Replay from the repository root: python3 problems/hilbert16-degree-8/compute/q12/controls.py and python3 problems/hilbert16-degree-8/compute/q12/coverage.py.

Hilbert 16(a) in degree 8 remains open.