Repository navigation
Research: exact F3 minimum for the one-source additive connector - #4189
Conversation
Over F3 every correct word needs multiples of three B and A calls, so length at least 6, and exactly six length-6 words attain it.
|
Independent F₃ exhaustion at Code-disjoint re-enumeration (standard library only; does not import package Result (9/9 checks): Over F₃ with dirty This is a finite exhaustion, not a formal proof beyond F₃. check_4189.py#!/usr/bin/env python3
"""Independent F3 exhaustion for PR4189's one-source additive connector.
Does not import the package verify.py. Re-derives the mod-3 count bound and
re-enumerates all words of length ≤ 6 in {A,B}.
James Reed (@rcfc-jreed), with substantial AI assistance (Claude, in Cursor).
Apache-2.0.
"""
import argparse, itertools, json, subprocess, sys
HEAD = '5fb3936dfc8082f438f21c72dd6ca49ff4366ae7'
PKG = 'research/f3-additive-connector-1x1/'
WITNESSES = ('BBAABA', 'BABBAA', 'BAABAB', 'ABBAAB', 'ABABBA', 'AABABB')
results = []
def check(name, ok, detail=''):
results.append((name, bool(ok), detail))
print(('PASS ' if ok else 'FAIL ') + name + ((': ' + str(detail)) if detail else ''), flush=True)
return bool(ok)
def run(word, mod):
zx, zz, yx, yy, yz = 0, 1, 0, 1, 0
for op in word:
if op == 'B':
zx = (zx + 1) % mod
elif op == 'A':
yx = (yx + zx) % mod
yz = (yz + zz) % mod
else:
raise ValueError(op)
return zx, zz, yx, yy, yz
def correct(word, mod):
return run(word, mod) == (0, 1, 1, 1, 0)
def main():
ap = argparse.ArgumentParser()
ap.add_argument('--repo', required=True)
a = ap.parse_args()
head = subprocess.check_output(['git', '-C', a.repo, 'rev-parse', f'pr4189'], text=True).strip()
check('I1 local pr4189 tip is 5fb3936d…', head.startswith('5fb3936d'))
readme = subprocess.check_output(['git', '-C', a.repo, 'show', f'{HEAD}:{PKG}README.md'], text=True)
lemma = ('Over F3, with arbitrary dirty x, y and z, every correct word in the '
'additive alphabet {B, A} for the one-source one-output identity has '
'length at least 6, and length 6 is attained by exactly six words.')
check('I2 README still states the lemma', lemma in readme)
check('C1 F2 control BABA is correct over F2', correct('BABA', 2))
check('C2 BABA fails over F3', not correct('BABA', 3))
# Each B adds 1 to zx; each A adds 1 to yz (zz stays 1). Both need 0 mod 3,
# so #B ≡ 0 (mod 3) and #A ≡ 0 (mod 3); shortest is 3+3=6.
check('B1 mod-3 count lower bound is 6',
min(b + a for b in range(3, 12, 3) for a in range(3, 12, 3)) == 6)
short = [''.join(w) for n in range(1, 6) for w in itertools.product('BA', repeat=n) if correct(''.join(w), 3)]
check('E1 no correct F3 word of length ≤ 5', short == [], short)
found = [''.join(w) for w in itertools.product('BA', repeat=6) if correct(''.join(w), 3)]
check('E2 exactly the six listed length-6 witnesses', tuple(found) == WITNESSES, found)
check('E3 each witness uses three B and three A',
all(t.count('B') == 3 and t.count('A') == 3 for t in WITNESSES))
# mutation: drop one letter from a witness
check('C3 dropping one letter from BBAABA fails', not correct('BBAAB', 3) and not correct('BAABA', 3))
ok = all(r[1] for r in results)
print(('PASS' if ok else 'FAIL'), f'{sum(r[1] for r in results)}/{len(results)} checks', flush=True)
sys.exit(0 if ok else 1)
if __name__ == '__main__':
main()James Reed (@rcfc-jreed), with substantial AI assistance (Claude, in Cursor). |
|
Independent scoped audit of #4189 F3 one-source additive connector at Code-disjoint package-local fork of No packaging defect in SOURCES scope. All 3 digests match. What passes: fork prints Not covered here: Lean; new κ; merge/close. Finite pin/seal/enumeration ≠ formal proof. James Reed (@rcfc-jreed), with substantial AI assistance (Claude, in Cursor). |
Result
Over F3, with arbitrary dirty x, y and z, every correct word in the additive alphabet
{B: z += x, A: y += z}for the one-source one-output identity has length at least 6, and length 6 is attained by exactly six words.Each
Badds 1 to the x-coefficient ofz. EachAadds 1 to the z0-coefficient ofybecause that coefficient ofzstays 1. Both finals must be 0 mod 3, so each operator appears a multiple of three times. Exhaustion finds no correct word of length ≤ 5 and exactly the witnessesBBAABA,BABBAA,BAABAB,ABBAAB,ABABBA,AABABB. The F2 controlBABAremains length 4 and fails over F3.No new kappa. Claim: #4188.
Scope
Chooser seed
04cbf2cbcf13a1a4ea434b5ef3acf93b, cardconnector-alphabet-change, priority revision 7, base12fa8c5c844be21bfefb38a19503fbd867a11244. Live alphabet extensions already cover arity-four events, joint outputs, high-arity toggles and the direct product call. This package keeps the same operators and changes only the characteristic-two premise that the starting universal-connector README already flags. The signed F3 connector of #1349 is a different interface.Package:
research/f3-additive-connector-1x1. Selected record SHA-256bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129is unchanged.Evidence
Expected marker:
PASS_F3_ADDITIVE_CONNECTOR_1X1. Local Python 3.12 replay passed. The predecessor 945-pairing replay was not run in this partial checkout.Limits
No five-source F3 batch, signed patterns, nonlinear readout or supplier admission. Substantial AI assistance; no independent human review claimed. Apache-2.0.
Open next question
For the five-source all-31-mask batch over F3 with the same alphabet, what is the exact optimum? The F2 figure is 74.