Repository navigation
Prove a pivot-policy swap floor for the pivoted BIT fallback: at least 385 of 505 boundary children remain (no new κ) - #4245
Open
petalas wants to merge 1 commit into
Conversation
…allback Every pivot policy of the paid pivoted fallback pays at least 2 min(r, m-r) swaps on the diagonal suffix projector, and an explicit policy attains it. At m = 64, r <= 42 the best policy's worst packet still needs at least 385 children (f >= 2). Complete optimal-policy idempotent censuses show the floor is exceeded at corank one.
Contributor
|
Independent scoped audit of #4245 BIT pivot-policy floor at Code-disjoint local fork. Head No packaging defect. Finite replay ≠ formal proof. James Reed (@rcfc-jreed), with substantial AI assistance (Claude, in Cursor). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
#4235's paid pivoted BIT fallback uses a first-unit pivot rule and proves at most
s <= 2rpaid swaps, so at most1+12rchildren (505 at the retainedm = 64, r <= 42boundary). Its open question 2 asks whether another pivot policy can reduce the swaps. This PR bounds how much any policy can gain:Claim type: scoped proof with a finite certificate. No new κ, no supplier admission, no audit of #4235 or #4100, and no change to the selected frontier. Package:
research/bit-pivot-policy-floor. Claim.Result
The compiler family is #4235's: at stage
ka policy may take any unit pivot in residual rowsk..m-1and columns0..m-1-kofM = P C. A head swap is paid if the row is notkand a tail swap if the column is notm-1-k. Ordered clearing ADDs follow.D_r = diag(0^(m-r), 1^r)every policy pays at least2 min(r, m-r)swaps. Zero rows and columns ofMkeep zero residual, and swaps only move zero labels out of the way of later stages. So each stagek < min(r, m-r)pays both a head swap and a tail swap.2 min(r, m-r).r <= 32the bounds <= 2ris sharp for every policy. Acrossr <= 42, a changed pivot policy can save at most 120 worst-case children (40 whenf = 1), and only in ranks 33 to 42.(q, m, r)domains over F3 and F5. The worst case equals the floor except at corank one, wheres*(m, m-1) = 3atm = 4, 5, 6(F3) andm = 4(F5), while the first-unit rule pays2r(up to 10). So the floor is not sharp abovem/2, and a better rule does gain there.Evidence and reproduction
verify.pyis standalone; #4235 is unmerged, so it reimplements the stage process. It checks each census count againstq^(r(m-r)) [m choose r]_q, computes exact optimal and first-unit swap counts per idempotent, checks the suffix optimum equals the floor, runs the explicit policy and the first-unit rule on all 63 literalm = 64suffix fixtures, recomputes the boundary bills, and rejects a zero home pivot./Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/research_package.py --package research/bit-pivot-policy-floor /Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/check_research_commit.py --package research/bit-pivot-policy-floor --check-source-history /Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -W error -B research/bit-pivot-policy-floor/verify.py /Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -W error -O -B research/bit-pivot-policy-floor/verify.py /Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -W error -B research/bit-pivot-policy-floor/verify.py --extended # opt-in, several minutesExpected markers:
PASS_REGISTERED_RESEARCH_PACKAGE research/bit-pivot-policy-floor outcome=completed,PASS_RESEARCH_COMMIT_BYTESand"status": "PASS_BIT_PIVOT_POLICY_FLOOR". Locally all four registered/package commands passed; each verify command took about 37 seconds. The opt-in run addsm = 5, ranks 2 and 3 over F3.Limitations and unrun obligations
The floor holds for the declared compiler family and only for the projector
D_r. A different normal form, pivot positions or swap pricing is outside it. The census optima are finite facts for the listed fields and sizes, not a formula. Whether the best policy reaches 385 at the boundary depends ons*(64, r) <= 64for33 <= r <= 42, which is open. No caller is built; preparation, routing and stock costs stay caller obligations as in #4235. Independent human and formal proof-kernel review are unclaimed.Open next questions
s*(m, r)form/2 < r < m. Iss*(m, m-1) = 3for everym >= 4? A bounds* <= 2(m-r)+2would make the best-policy boundary maximum exactly 385.s*. The home-first greedy rule is not optimal (10 against 3 atm = 6, r = 5).Related open work
s <= 2r. Its attained2ron suffix projectors agrees with this package's first-unit runs on all 63m = 64fixtures; its1+12r= 505 and1+4r= 169 boundary bounds are recomputed here.m = 64). Different algorithm and bill; no shared number.CI notes
Both jobs passed on head
b55d08ec0:planandreplay (research/bit-pivot-policy-floor)(2m22s). The opt-in--extendedrun is not registered in CI; it passed locally (882,090 idempotents for each ofm = 5,r = 2, 3over F3, optimal worst case 4 in both, equal to the floor).