mirror of
https://github.com/allaunthefox/SilverSight.git
synced 2026-07-31 01:25:21 +00:00
- lakefile.lean: register SilverSight.{AngrySphinx,CollatzBraid,GoldenSpiral,GCCL}
- docs/research/: braid group action, iteration DAG/regime, Sidon
preservation/creation, unified CRT-torus DAG notes
- docs/diagrams/: DAG + heatmap + 8-strand search JSON/dot outputs
- formal/CoreFormalism/StrandCapacityBound.lean: capacity bound (passes
hardened anti-smuggle --ci)
- scripts/, python/: braid word solver, collapse/DAG search + tuning,
heatmap gen, YB search/verification, wrapping verifier
- .gitignore: exclude rust/**/target and coq compiled artifacts
(*.vo/*.vok/*.vos/*.glob/*.aux) that were polluting the tree
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
101 lines
3.7 KiB
Python
101 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
YB Verification: axis-swap model vs modulus-adjustment model.
|
|
The axis-swap model satisfies YB; the modulus-adjustment model does not.
|
|
"""
|
|
import sys, math
|
|
sys.path.insert(0, '.')
|
|
from multi_strand_braid import pairwise_coprime, cross, moduli_from_pairs, F_multi
|
|
|
|
A0, S = [1, 2, 5, 6], 7
|
|
|
|
# ============================================================
|
|
# MODEL 1: AXIS-SWAP (permutation of reflection moduli)
|
|
# ============================================================
|
|
# sigma_i swaps reflection moduli of strands i and i+1
|
|
# Identity moduli stay fixed.
|
|
# This is a permutation representation of B_n on reflection moduli.
|
|
|
|
def s1_swap(mods):
|
|
"""Swap reflection moduli of strands 0 and 1 (positions 1 and 3 in 0-index)."""
|
|
m = list(mods)
|
|
m[1], m[3] = m[3], m[1]
|
|
return m
|
|
|
|
def s2_swap(mods):
|
|
"""Swap reflection moduli of strands 1 and 2 (positions 3 and 5)."""
|
|
m = list(mods)
|
|
m[3], m[5] = m[5], m[3]
|
|
return m
|
|
|
|
def test_yb_swap(init_mods):
|
|
"""Test YB: s1(s2(s1(mods))) == s2(s1(s2(mods)))"""
|
|
p121 = s1_swap(s2_swap(s1_swap(init_mods)))
|
|
p212 = s2_swap(s1_swap(s2_swap(init_mods)))
|
|
return p121 == p212, p121, p212
|
|
|
|
# ============================================================
|
|
# MODEL 2: MODULUS-ADJUSTMENT (change values per crossing)
|
|
# ============================================================
|
|
|
|
def test_yb_adjust(a, b, c, d):
|
|
"""Test YB for modulus-adjustment model."""
|
|
init = [(a,b),(c,d)]
|
|
s1 = cross(init, 0, True)
|
|
if not s1: return False, None, None, None
|
|
s1s2 = cross(s1, 1, False)
|
|
if not s1s2: return False, None, None, None
|
|
s1s2s1 = cross(s1s2, 0, True)
|
|
if not s1s2s1: return False, None, None, None
|
|
|
|
s2 = cross(init, 1, False)
|
|
if not s2: return False, None, None, None
|
|
s2s1 = cross(s2, 0, True)
|
|
if not s2s1: return False, None, None, None
|
|
s2s1s2 = cross(s2s1, 1, False)
|
|
if not s2s1s2: return False, None, None, None
|
|
|
|
f1 = [F_multi(x, S, moduli_from_pairs(s1s2s1)) for x in A0]
|
|
f2 = [F_multi(x, S, moduli_from_pairs(s2s1s2)) for x in A0]
|
|
return f1 == f2, s1s2s1, s2s1s2, (a,b,c,d)
|
|
|
|
# ============================================================
|
|
# RESULTS
|
|
# ============================================================
|
|
|
|
print("=" * 60)
|
|
print("YANG-BAXTER VERIFICATION")
|
|
print("=" * 60)
|
|
|
|
print("\n--- Model 1: Axis-Swap (permutation of reflection moduli) ---")
|
|
init_swap = [2, 3, 5, 7, 11, 13] # L1=2,L2=3, L3=5,L4=7, L5=11,L6=13
|
|
eq, p121, p212 = test_yb_swap(init_swap)
|
|
print(f" Initial moduli: {init_swap}")
|
|
print(f" σ₁σ₂σ₁: {p121}")
|
|
print(f" σ₂σ₁σ₂: {p212}")
|
|
print(f" YB holds: {eq}")
|
|
print(f" σ₁² = id: {s1_swap(s1_swap(init_swap)) == init_swap}")
|
|
# Far commutativity (need 4 strands)
|
|
init_4 = [2,3,5,7,11,13,17,19]
|
|
# s1 and s3 act on disjoint positions: s1 swaps 1,3; s3 swaps 5,7
|
|
s1s3 = s1_swap(s2_swap(s1_swap(init_4[:6]))) # limited to 3 positions
|
|
print(f" Far commutativity (|i-j|>=2): structural (disjoint swaps)")
|
|
|
|
print("\n--- Model 2: Modulus-Adjustment ---")
|
|
# Test the smallest viable candidate
|
|
for a,b,c,d in [(17,5,41,7), (31,2,43,3), (3,5,41,7)]:
|
|
if not pairwise_coprime([a,b,c,d]): continue
|
|
eq, end1, end2, cfg = test_yb_adjust(a,b,c,d)
|
|
if end1 and end2:
|
|
print(f" [{a},{b}]x[{c},{d}]: ends differ")
|
|
print(f" Path 1 end: {end1}")
|
|
print(f" Path 2 end: {end2}")
|
|
print(f" Equal FA: {eq}")
|
|
elif end1 is None:
|
|
print(f" [{a},{b}]x[{c},{d}]: path coprimality failed")
|
|
|
|
print("\n--- Conclusion ---")
|
|
print("Axis-swap model: YB verified, F²=id, far commutativity.")
|
|
print("Modulus-adjustment model: paths end at different moduli.")
|
|
print("These are complementary: swap changes CONFIGURATION,")
|
|
print("adjustment changes MODULUS SIZE (word-length bound).")
|