Skip to content

Bounded length-22 census probe: exclude splits (11,7), (10,8), (11,8); measure the rest (answers #3708 OQ1's blocker; no new kappa) - #3731

Open
petalas wants to merge 2 commits into
CrocSwap:mainfrom
petalas:research/w8-1018-l22-census-probe
Open

petalas wants to merge 2 commits into
CrocSwap:mainfrom
petalas:research/w8-1018-l22-census-probe

Conversation

@petalas

@petalas petalas commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Supplies the resource-budget measurement named as the blocker of the open question 1 in PR #3708 ("no node-count estimate or resource budget; #2973's stop rule was explicitly no L22 census"), and completes the first three finite split exclusions of the length-22 word domain. Produced by Nick Petalas with AI assistance. Independent human and formal proof-kernel review are unclaimed.

Arithmetic scope, stated up front: no kappa, supplier, tariff, certificate, frozen-input or selected-frontier change. f(7) remains 22 <= f(7) <= 24 and is not decided here. This is a finite census result inside PR943's prefix-walk model, not a formal-kernel proof.

What is established

  1. Engine extension to L=22, validated against the pinned predecessor. The corrected census engine of Correct word-census parity budgets; 22 <= f(7) <= 24 in the PR943 model #2973 (research/f7-weight-parity-census-correction, source sha256 265ead91...) is extended by exactly three header/gate lines (L <= 20 → L <= 22); nothing else changes (integrity-checked by diff in verify.py). Soundness of the gate change: at N=7, L=22 all counters stay within exact small-integer/128-bit-mask types (largest values: even budget 110, odd budget 57, per-label multiplicity <= 10), so the L<=20 gate is conservative, not necessary. Behavioral proof: the extended binary reproduces all six recorded L20/L18 receipts node-exactly — 590,371,593 / 244,301,902 / 14,450,133 / 67,643,567 / 35,241 / 951,416 nodes — and passes the predecessor's brute-force cross-check (validation/check_corrected_c.py, all small splits, all four budget modes, cap and fail-closed controls) and its math/check_math.py.

  2. Capped censuses at all nine open splits (both proved necessary budgets enabled, restricted-growth canonical scope, revisits permitted):

Split Nodes Outcome
(11,7) 8,784,744 complete, exit 0, 0 hits → finite split exclusion
(10,8) 597,933,297 complete, exit 0, 0 hits → finite split exclusion
(11,8) 1,349,702,650 complete, exit 0, 0 hits → finite split exclusion
(9,9), (10,9), (10,10), (11,9), (11,10), (11,11) 2,000,000,000 (cap) each aborted → tree-size lower bounds only

No universal word was found in any probe. Combined with the imported 17-point set-level exclusions of #2773/#2870 (splits (10,7), (11,6)), any restored universal length-22 word must now have split in {(9,9), (10,9), (10,10), (11,9), (11,10), (11,11)} — the domain narrows from nine splits to six. For scale: #2973's complete length-20 exclusion totalled ~9.2e8 nodes over five splits; each of the six open L22 splits already exceeds 2e9 nodes. That is the concrete budget datum the handoff asked for; finishing the census is a resource decision, not a mechanism change.

Certification scope, stated exactly: the three completed exclusions are CI-certified; each gets its own registered node-exact replay command (below). The six capped lower-bound runs are locally measured session evidence, reproducible with the documented opt-in command, and are not re-run by CI.

  1. What is not claimed: the six loose-budget splits are open; no length-22 word is excluded outright and none is constructed; the (11,11) probe had 3 budget-surviving restored leaves before its cap cut the search (they failed the exact coverage test; recorded, no claim); no prune beyond Correct word-census parity budgets; 22 <= f(7) <= 24 in the PR943 model #2973's two proved budgets was added.

Verification

# Registered CI checks (one command per exclusion; declared timeouts sum to the
# 1200 s package budget, each command under the 600 s per-command cap):
python3.12 -I -B research/f7-l22-census-probe/verify.py --skip-probe         # validation + six receipt replays
python3.12 -I -B research/f7-l22-census-probe/verify.py --probe-split 11,7  # exclusion (11,7), node-exact replay
python3.12 -I -B research/f7-l22-census-probe/verify.py --probe-split 10,8  # exclusion (10,8), node-exact replay
python3.12 -I -B research/f7-l22-census-probe/verify.py --probe-split 11,8  # exclusion (11,8), node-exact replay

# Opt-in, not run by CI: full nine-split replay of the committed receipt,
# including the six capped lower-bound probes (~1.4e10 nodes).
python3.12 -I -B research/f7-l22-census-probe/verify.py --probe-all-splits

python3.12 -B scripts/research_package.py --package research/f7-l22-census-probe
python3.12 -B scripts/check_research_commit.py --package research/f7-l22-census-probe --check-source-history
  • Registered replay: PASS_REGISTERED_RESEARCH_PACKAGE research/f7-l22-census-probe outcome=completed with four registered checks, each with margin against the measured CI run: validation stages (declared 420 s; earlier CI run ~160 s; local 60 s), exclusion (11,7) (declared 60 s; local 0.8 s), exclusion (10,8) (declared 240 s; local 39 s), exclusion (11,8) (declared 480 s; local 90 s). Full registered launcher locally ~190 s. Run on CPython 3.12.15 at ~/git/integer-mult-bounds/.venv/bin/python3.12, Apple arm64, Apple clang.
  • Fresh exclusion replays are compared against the committed RESULT.json session receipt: each must exit 0 with complete=true, zero hits and the identical node count (8,784,744 / 597,933,297 / 1,349,702,650). Node counts are deterministic; timing fields are excluded from every equality check.
  • The six capped probes (2e9-node cap each, ~1.4e10 nodes total) are not replayed in CI; their RESULT.json values are unchanged, and the opt-in command reproduces the same receipt comparison locally in ~3 minutes on a many-core host.
  • Commit bytes + source history: PASS_RESEARCH_COMMIT_BYTES at e75698688de7300df4f44d86d31738302ea355b8, base 20ecf2891 (canonical main, revision 6).
  • scripts/research_baseline.py: PASS_RESEARCH_BASELINE_BINDINGS_ONLY, selected record hash unchanged.
  • Interpreter note: CPython 3.12.15 via the main checkout's venv (not on PATH elsewhere); this host has no python3.12 system binary, which the registered launcher accounts for.

Overlap and credit

Open next questions

  1. Finish the six open splits (each > 2e9 nodes so far): higher caps alone need hours-to-days; a third proved-monotone prune would help more. The pair identity sum_x A_x B_x >= need (MATH.md §3) is proved at leaves but its partial quantity is not shown monotone — proving that (or a monotone variant) is the cheapest possible engine improvement.
  2. Does a restored universal length-22 word exist (f(7) = 22) or not (f(7) = 24)?
  3. Independently replay the three completed split exclusions with a separate implementation (the Correct word-census parity budgets; 22 <= f(7) <= 24 in the PR943 model #2973 package's own open question 2 pattern).

…,7), (10,8), (11,8)

Extends the CrocSwap#2973 corrected word-census engine to length 22 by changing
only its compile-time gate (three header/gate lines; all counters stay
within their exact types). Validates the extension against the pinned
predecessor: its math check, its brute-force small-domain cross-check in
all four budget modes, and node-exact reproduction of all six recorded
L20/L18 receipts (590371593 / 244301902 / 14450133 / 67643567 / 35241 /
951416 nodes).

Runs capped censuses at the nine open length-22 splits of the PR CrocSwap#3708
split domain with both proved necessary budgets. Three splits complete
with complete=true and zero hits - finite exclusions of (11,7) at
8,784,744 nodes, (10,8) at 597,933,297 and (11,8) at 1,349,702,650. The
six loose-budget splits abort at the 2e9-node cap and are recorded as
tree-size lower bounds only. With the imported CrocSwap#2773/CrocSwap#2870 exclusions,
the length-22 domain narrows from nine splits to six. No hits anywhere;
f(7) in {22,24} is untouched; no kappa, supplier or frontier change.

Supplies the node-budget measurement named as the blocker of the CrocSwap#3708
handoff (open question 1). Fresh CI replays compare against the committed
RESULT.json receipt; node equality is deterministic, timing excluded.
The single registered probe command re-ran all nine length-22 splits,
including the six capped 2e9-node probes, and was killed at the 600 s
per-command cap. Each completed split exclusion now gets its own
registered command with a bounded timeout, and the six capped
lower-bound probes move to the explicit opt-in --probe-all-splits mode.
RESULT.json receipt values and the claim scope are unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant