Skip to content

research: classify the fixed L/2 word budget over all linear functionals (no kappa) - #3699

Open
petalas wants to merge 1 commit into
CrocSwap:mainfrom
petalas:research/w5-b21-todo-20261018
Open

petalas wants to merge 1 commit into
CrocSwap:mainfrom
petalas:research/w5-b21-todo-20261018

Conversation

@petalas

@petalas petalas commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • No new kappa, no f(7) bound, no selected-frontier change. Scoped result: a finite certificate on a stated small domain plus one machine-checked lemma.
  • Correct word-census parity budgets; 22 <= f(7) <= 24 in the PR943 model #2973 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 PR tests the changed hypothesis: the substitution is not a bit-0 artifact but a property of the L/2 substitution for any functional other than the parity one.
  • At (4,10) and (5,12) the substitution falsely prunes a universal word for every nonzero functional of Hamming weight <= n-2, and for none of weight >= n-1. At (4,8) the same holds except one weight-2 functional (1010). Bit 0 is the first member of that class.
  • 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 functional whose class value alternates with time, and therefore the only one for which the L/2 substitution has any justification.

Independent recomputation of the retained fixture

Word 01021323, n=4, L=8, recomputed from scratch:

q_0..q_8 = 0, 1, 3, 2, 6, 4, 12, 8, 0
quantity value
distinct nonclosing states 8
restored (each label twice) yes
S + S == F2^4 yes
weight split / collision excess (4,4) / 0
bit-0 split / collision excess (6,2) / 8
substituted budget 2C(4,2)-7 5
correct bit-0 budget C(6,2)+C(2,2)-7 9

8 > 5 rejects a universal word; 8 <= 9 does not. These match #2973 MATH.md section 4.

Exhaustive functional classification

Every restricted-growth word whose q_0..q_{L-1} are distinct and whose last step returns to q_0, classified against all 2^n - 1 nonzero linear functionals:

n L universal words substituted budget functionals that falsely prune firing weights false prunes
3 6 4 3 none – 0
3 8 2 9 none – 0
4 8 22 5 9 of 15 1, 2 44
4 10 110 13 10 of 15 1, 2 190
5 10 0 5 none – 0
5 12 828 15 24 of 31 1, 2, 3 2856
6 12 0 -1 none – 0
6 14 0 11 none – 0
7 14 0 -21 none – 0

At (4,8) the verifier finds 22 universal simple words and 6 bit-0 false prunes. Both figures agree with the independent #3096 audit, which I did not consult while writing the enumerator.

Scope and what is deliberately not claimed

Test plan

  • python3 -I -O -Werror -B research/f7-bit0-functional-classification/verify.py → PASS_F7_BIT0_FUNCTIONAL_CLASSIFICATION
  • python3 -I -O -Werror -B research/f7-bit0-functional-classification/test_verify.py → 18 tests, OK
  • python3 -B scripts/research_package.py --package research/f7-bit0-functional-classification --check-only → PASS_PACKAGE_METADATA_AND_PINS
  • Maintainer replay under Python 3.12 (python3.12 is not installed on the contributor host; both commands were run under CPython 3.15.0, standard library only, and both pass)

verify.py contains no dependency on repository files and imports no predecessor code. A separately written unpruned enumerator (product(range(n), repeat=L), filtered afterwards) is asserted to agree with the primary pruned enumerator on simple_closed_words and universal_words at (3,6), (3,8), (4,8) on every run. That cross-check is what caught an off-by-one in the walk's starting step during development.

Open next questions

  1. The (7,18) / (7,20) functional census — the only domain that changes a maintained decision; needs its own resource budget.
  2. Why weight >= n-1 never fires here; and what the two exceptions (mask 1010 at (4,8), mask 11010 at (5,12)) mean.
  3. Whether the bit-0 grouping can be repaired by substituting the actual class sizes instead of rewriting the traversal to weight parity — a source-change question for maintainers.

Credit

Nicholas Stone wrote the word-census correction (#2973); James Reed wrote the bit-0 small-domain audit (#3096); Ross Richardson supplied the PR943 singleton prefix-walk model; Douglas Colkitt supplied selected source bindings and review. This package independently re-derives the retained numbers and adds the functional classification and the alternation lemma. It replaces none of them.


CI replay result (post-push update). After the PR was opened, the repository replay job for this package ran and passed on the canonical host under Python 3.12: check replay (research/f7-bit0-functional-classification) = success, plan = success, mergeable state clean. That closes the interpreter-version caveat on the contributor host; the local run was CPython 3.15.0 and the registered replay is the authoritative 3.12 run.

@petalas
petalas force-pushed the research/w5-b21-todo-20261018 branch from 7aea8a4 to 0935ca3 Compare October 18, 2026 17:29
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>
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