Skip to content

Correct word-census parity budgets; 22 <= f(7) <= 24 in the PR943 model - #2973

Merged
Mister-Meeseeks merged 2 commits into
CrocSwap:mainfrom
NicholasStone:research/f7-parity-correction-20261016
Oct 16, 2026
Merged

Mister-Meeseeks merged 2 commits into
CrocSwap:mainfrom
NicholasStone:research/f7-parity-correction-20261016

Conversation

@NicholasStone

Copy link
Copy Markdown
Contributor

The word-census engines in #2542/#2634/#2691 use bit-0 state groups with budgets derived for Hamming-weight parity. This can falsely prune universal words: the simple balanced n=4, L=8 word 01021323 covers all 16 masks but has bit-0 excess 8 against the incorrectly substituted budget 5. Historical count agreement therefore did not establish the claimed exclusions.

Adds an isolated corrective package with a weight-parity, revisit-aware C engine, proofs for both necessary collision budgets, independent direct/brute Python controls, and full fresh enumerations:

L weight split nodes universal
20 (10,10) 590,371,593 0
20 (10,9) 244,301,902 0
20 (10,8) 14,450,133 0
20 (9,9) 67,643,567 0
20 (10,7) 35,241 0
18 (9,9) 951,416 0

Each run completed from the empty prefix without a cap, exit 0, complete=true. Candidate leaves are not reported as all restored words. Exact split classification, parity-swap symmetry and padding of shorter restored words prove 22 <= f(7) <= 24 within the PR943 singleton prefix-walk model; the known Gray length-24 witness is checked directly. No supplier, tariff, selected-frontier or kappa change. This is a finite computational exclusion, not a formal-kernel proof.

Validation: 164 small full-domain C/brute comparisons across four budget modes; 12 cap/input/output controls; 36 capped n=7 exact C/Python comparisons; independent mathematical checks; then a second complete six-case replay from the integrated package. Both production and integrated counts agree. The independent n=7 Python check is capped, not a second full n=7 implementation replay.

python3 -I -B research/f7-weight-parity-census-correction/verify.py --full
python3 scripts/research_package.py --package research/f7-weight-parity-census-correction --check-only

Observed: PASS_F7_WEIGHT_PARITY_FULL ... f7_lower=22 f7_upper=24; PASS_PACKAGE_METADATA_AND_PINS. ~1 minute for the C traversals on the recorded Apple arm64 host; standard-library Python 3.12 and Clang/GCC required. Quick mode runs fresh controls and checks stored receipts, and explicitly does not claim a fresh complete census.

Frozen predecessor packages are unchanged. Bit 0 remains valid in set-level searches using actual group sizes; later #2773/#2870/#2911/#2933/#2961 results are scoped separately in MATH.md. Also corrects the previous local session's overstrong “zero slack” implication. Scientific base a23bdc1; refreshed main ec1f08b has unchanged pinned engines and selected record. No new competing correction found in the checked live PR/discussion corpus.

Continuation CLAIM: #2691 (comment) ; coordination: #1166 (comment) .

Contributor: Nicholas Stone, with substantial OpenAI Codex assistance including three complementary agents; no independent human review claimed. Credit Ross Richardson (PR943 model), Douglas Colkitt (PR1185 record), Aaron Wang/opencode (#2542/#2634 and later set-level work), Nicholas Stone (PR2691 predecessor engine). Apache-2.0. Open next questions: independent complete implementation replay and length 22 versus 24.

@NicholasStone

Copy link
Copy Markdown
Contributor Author

Final head: d48f3945dbb1ef5d06835744c4082b3bd04181c0. Added the POSIX feature declaration required to expose clock_gettime/CLOCK_MONOTONIC in strict C11 Linux builds. No search logic changed. The current source was freshly compiled and the complete six-case local replay rerun: all exact non-timing counts remain identical; PASS_F7_WEIGHT_PARITY_FULL ... f7_lower=22 f7_upper=24. FULL-REPLAY.txt now records that replay. SUMMARIES.json preserves the initial receipt source hash separately from the current source hash and explains the header-only delta. Hosted checks are separate from these completed local checks.

@Mister-Meeseeks
Mister-Meeseeks merged commit 445dad7 into CrocSwap:main Oct 16, 2026
1 check passed
Mister-Meeseeks pushed a commit that referenced this pull request Oct 17, 2026
…ngth degree-filter justification

Checks the retained PR #2542 joint_covers set enumerator, at its actual
coordinate-bit-0 split sizes, against a separate unpruned subset oracle:
all 32,906 zero-containing sets of F2^n for n = 1..4 and all 200 exact
split/filter domains agree (covers 1, 4, 64, 23,552; minimum-degree-two
subcounts 0, 1, 20, 5,074), confirming on the actual function the
set-level scope that PR #2973 states. The minimum-length universal word
010122 (prefix set {0,1,2,3,4}, vertex 4 of degree one) refutes the
docstring's claim that minimal words walk a Hamiltonian cycle, so the
optional degree-two filter is justified only under |P| = L >= 4; the
(3,2) call returns 18 covers unfiltered and none filtered. A pinned
call-site map finds six Python word calls plus PR #2691's native rule
on the invalid balanced budget and four set calls with the filter off;
PR #2773's set rows reproduce without the word engine, conditional on
its recorded Sidon floors. No new bound, f(7) claim or kappa change.

Adds research/f7-set-word-pruning-boundary/ only.

Submitted by @commdata2338 with substantial AI assistance (OpenAI Codex
research and implementation; packaged with Claude Code).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X86sCSXdoDd61SDFfC1PKG
Mister-Meeseeks pushed a commit that referenced this pull request Oct 17, 2026
…its simple-word boundary

Proves that Engine::capacity, the parity-capacity filter in conorholds'
simple length-22 exclusion, is a necessary condition for simple
restored universal words under its four-low, three-high projection,
including pairs between different blocks at one repeated low vertex,
and that each of the sixteen low-linear parity changes preserves its
verdict. A separately written position-pair oracle agrees with the
compiled predicate on all 791,827 declared gap inputs (53,379 accepted,
not claimed to be words); all 176 projections of a universal simple
24-step word pass, 120 with repeated low vertices; parity-reset and
omitted-pair mutants are detected. The universal word
010201030102010345464546 has 23 distinct prefixes and is rejected
because nine positions at low zero carry eight high states, so the
filter needs the simplicity premise that the predecessor's length-22
branch has; this is not a source bug or a length-22 counterexample.
It also reconstructs PR #2973's 01021323 calibration and pins the old
bit-0 call sites of PR #2542, #2634 and #2691. Complete censuses, the
other propagation rules, the published classification premises and
the non-simple branch are not checked. No new kappa.

Adds research/connector-capacity-parity-audit/ only.

Submitted by @commdata2338 with substantial AI assistance (OpenAI Codex
research and implementation; packaged with Claude Code).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X86sCSXdoDd61SDFfC1PKG
petalas added a commit to petalas/integer-mult-bounds that referenced this pull request Oct 18, 2026
The CrocSwap#2973 correction reports that the retained PR2542/PR2634/PR2691 word
engines group prefix states by coordinate bit 0 while applying a collision
budget derived for Hamming-weight parity. That report singles out bit 0.

This package tests the changed hypothesis that the substitution is not a
bit-0 artifact but a property of the L/2 substitution for any functional
other than the parity one. It recomputes the 01021323 fixture from scratch,
then classifies all 2^n - 1 nonzero linear functionals on nine small
singleton prefix-walk domains with n <= 7 and L <= 14.

At (4,10) and (5,12) the substitution falsely prunes a universal word for
every functional of Hamming weight <= n-2 and for none of weight >= n-1. At
(4,8) the same holds except for one weight-2 functional. Bit 0 is the first
member of that class, not a special case.

The package also proves and machine-checks the alternation lemma
l(q_{i+1}) XOR l(q_i) = v_{w_i}, which identifies the all-ones functional as
the only one whose class value alternates with time and therefore the only
one for which the L/2 substitution has a justification.

Scope: finite certificate on a stated small domain plus one scoped lemma.
The seven-label decision regime (7,18) and (7,20) is not reached; the only
seven-label domain here is vacuous. No new f(7) bound, no kappa, no
selected-frontier change, and no claim that any old exclusion is right or
wrong.

Co-Authored-By: Nick Petalas <petalas@users.noreply.github.com>
petalas added a commit to petalas/integer-mult-bounds that referenced this pull request Oct 18, 2026
The CrocSwap#2973 correction reports that the retained PR2542/PR2634/PR2691 word
engines group prefix states by coordinate bit 0 while applying a collision
budget derived for Hamming-weight parity. That report singles out bit 0.

This package tests the changed hypothesis that the substitution is not a
bit-0 artifact but a property of the L/2 substitution for any functional
other than the parity one. It recomputes the 01021323 fixture from scratch,
then classifies all 2^n - 1 nonzero linear functionals on nine small
singleton prefix-walk domains with n <= 7 and L <= 14.

At (4,10) and (5,12) the substitution falsely prunes a universal word for
every functional of Hamming weight <= n-2 and for none of weight >= n-1. At
(4,8) the same holds except for one weight-2 functional. Bit 0 is the first
member of that class, not a special case.

The package also proves and machine-checks the alternation lemma
l(q_{i+1}) XOR l(q_i) = v_{w_i}, which identifies the all-ones functional as
the only one whose class value alternates with time and therefore the only
one for which the L/2 substitution has a justification.

Scope: finite certificate on a stated small domain plus one scoped lemma.
The seven-label decision regime (7,18) and (7,20) is not reached; the only
seven-label domain here is vacuous. No new f(7) bound, no kappa, no
selected-frontier change, and no claim that any old exclusion is right or
wrong.

Co-Authored-By: Nick Petalas <petalas@users.noreply.github.com>
Mister-Meeseeks pushed a commit that referenced this pull request Oct 20, 2026
…,7), (10,8), (11,8)

Extends the #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 #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 #2773/#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 #3708
handoff (open question 1). Fresh CI replays compare against the committed
RESULT.json receipt; node equality is deterministic, timing excluded.
Mister-Meeseeks pushed a commit that referenced this pull request Oct 20, 2026
…split

Ports the completion bound already proved in the merged independent census #3005 into the corrected seven-label census engine of #2973. The bound uses the union of the two same-parity pair supports and dominates the predecessor's even excess budget. The engine delta is committed as a zero-context diff against the pinned source; the length gate extension to 22 is the same one recorded in PR #3731.

Validation: the predecessor's raw-product brute force passes for all small splits and all four budget modes, a union-only mode matches the brute-force universal counts, and the six recorded L20/L18 receipts replay complete with zero hits (node counts intentionally not compared).

Length 22: the (9,9) split completes with zero hits at 388,563,293 nodes, a new finite split exclusion. The other five splits have measured sharded-node floors only; capped shards are never treated as exclusions. No kappa, supplier or selected-frontier change, and no length-22 decision.
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.

2 participants