benchmarks/emergent_rationals.py
Camino 4 (gap 3) — does Q (division / the field of fractions) emerge from coupling coherent systems, the way +,x emerged from graph products in composition_arithmetic.py?
composition_arithmetic.py established the additive/multiplicative MONOID of cardinals:
FOUR pieces, each anchored to a known theorem (the independent ground truth):
(1) Z (additive inverse). The adjacency matrix A is the coupling operator. For a BIPARTITE graph the sublattice (chiral) symmetry forces spec(A) = -spec(A): for every emergent eigenvalue n there is -n. The additive inverse is not injected; it is a structural consequence of the bipartite coupling. Integral bipartite graphs (hypercube Q_d, K_{n,n}) give SIGNED INTEGERS.
(2) Q (division). Laplacian-integral graphs have integer eigenvalues. The complete bipartite graph K_{a,b} has Laplacian spectrum {0, a^(b-1), b^(a-1), a+b}; the ratio a/b of two emergent eigenvalues is a rational, and every reduced p/q is realised by a suitable K_{a,b}. Division = the ratio of two emergent integer modes.
(3) Field closure. For emergent integer eigenvalues a,b,c,d the four field operations on the ratios a/b, c/d land back in the emergent set: x : (a/b)(c/d) = (ac)/(bd) [ac, bd via the TENSOR product] + : a/b + c/d = (ad+bc)/(bd) [ad,bc via x ; ad+bc via [] ] - : a/b - c/d = (ad-bc)/(bd) [ad-bc via the bipartite inverse] / : (a/b)/(c/d)= (ad)/(bc) [ratio of emergents = rational] The numerators/denominators are built with the SAME outer_sum / outer_prod engine as composition_arithmetic.py. By the field-of-fractions theorem the closed set is Frac(Z) = Q.
(4) Physical mechanism (TNFR-native). Resonant phase coupling (grammar rule U3, |phi_i - phi_j| <= dphi_max) locks two oscillators at RATIONAL frequency ratios (rotation number). The Stern-Brocot mediant a/b (+) c/d = (a+c)/(b+d) is the resonance-combination of two locked ratios, and it generates every positive rational from the two seed frequencies 0/1 and 1/0 (Farey / Arnold-tongue ordering). So Q is not an external construction bolted on; it is the natural attractor lattice of phase coupling. A minimal two-oscillator Kuramoto integration confirms the 1:1 lock gives rotation number exactly 1 inside the Arnold tongue.
TNFR reading: the canonical discrete dNFR / phase-curvature operator is the emergent random-walk Laplacian L_rw = I - D^-1 W; A is the coupling matrix and D - A its imposed combinatorial cousin. + and x come from composing systems (composition_arithmetic.py); the inverse comes from bipartite coupling symmetry; division comes from the ratio of resonant modes / phase-locking. Q therefore inherits emergence from the same nodal machinery, with division given a physical (resonance) realisation rather than a purely formal one.
HONEST SCOPE: Frac(Z) = Q is a known algebraic theorem; this harness does not prove Q "from nothing". What it shows is that (a) the integers and their +,x,- are emergent (not injected), (b) division has a physical TNFR realisation (mode ratio / phase-locking), and (c) the emergent set is field-closed = Q. The real continuum R and pi remain the assumed substrate; this is Q, not R. Nothing here touches G4 = RH.
Run: python benchmarks/emergent_rationals.py
Status: RESEARCH (rational-emergence falsifier, gap 3 of the emergence map).
"""
benchmarks/emergent_rationals.py
Camino 4 (gap 3) — does Q (division / the field of fractions) emerge from
coupling coherent systems, the way +,x emerged from graph products in
composition_arithmetic.py?
composition_arithmetic.py established the additive/multiplicative MONOID of
cardinals:
- Cartesian product G [] H : Laplacian spectrum = {lambda_i + mu_j} -> ADDITION
- Tensor product G x H : adjacency spectrum = {alpha_i * beta_j} -> MULTIPLICATION
What it did NOT close is the FIELD structure: additive inverse (-> Z) and
division (-> Q). This harness closes gap (3): the inverse and the quotient also
emerge from the coupling, and the emergent set is FIELD-CLOSED = Q.
FOUR pieces, each anchored to a known theorem (the independent ground truth):
(1) Z (additive inverse). The adjacency matrix A is the coupling operator.
For a BIPARTITE graph the sublattice (chiral) symmetry forces
spec(A) = -spec(A): for every emergent eigenvalue n there is -n. The
additive inverse is not injected; it is a structural consequence of the
bipartite coupling. Integral bipartite graphs (hypercube Q_d, K_{n,n})
give SIGNED INTEGERS.
(2) Q (division). Laplacian-integral graphs have integer eigenvalues. The
complete bipartite graph K_{a,b} has Laplacian spectrum
{0, a^(b-1), b^(a-1), a+b}; the ratio a/b of two emergent eigenvalues is
a rational, and every reduced p/q is realised by a suitable K_{a,b}.
Division = the ratio of two emergent integer modes.
(3) Field closure. For emergent integer eigenvalues a,b,c,d the four field
operations on the ratios a/b, c/d land back in the emergent set:
x : (a/b)(c/d) = (ac)/(bd) [ac, bd via the TENSOR product]
+ : a/b + c/d = (ad+bc)/(bd) [ad,bc via x ; ad+bc via [] ]
- : a/b - c/d = (ad-bc)/(bd) [ad-bc via the bipartite inverse]
/ : (a/b)/(c/d)= (ad)/(bc) [ratio of emergents = rational]
The numerators/denominators are built with the SAME outer_sum / outer_prod
engine as composition_arithmetic.py. By the field-of-fractions theorem the
closed set is Frac(Z) = Q.
(4) Physical mechanism (TNFR-native). Resonant phase coupling (grammar rule
U3, |phi_i - phi_j| <= dphi_max) locks two oscillators at RATIONAL
frequency ratios (rotation number). The Stern-Brocot mediant
a/b (+) c/d = (a+c)/(b+d) is the resonance-combination of two locked
ratios, and it generates every positive rational from the two seed
frequencies 0/1 and 1/0 (Farey / Arnold-tongue ordering). So Q is not an
external construction bolted on; it is the natural attractor lattice of
phase coupling. A minimal two-oscillator Kuramoto integration confirms the
1:1 lock gives rotation number exactly 1 inside the Arnold tongue.
TNFR reading: the canonical discrete dNFR / phase-curvature operator is the
emergent random-walk Laplacian L_rw = I - D^-1 W; A is the coupling matrix and
D - A its imposed combinatorial cousin. + and x come from composing systems
(composition_arithmetic.py); the inverse comes from bipartite coupling symmetry;
division comes from the ratio of resonant modes / phase-locking. Q therefore
inherits emergence from the same nodal machinery, with division given a physical
(resonance) realisation rather than a purely formal one.
HONEST SCOPE:
Frac(Z) = Q is a known algebraic theorem; this harness does not prove Q "from
nothing". What it shows is that (a) the integers and their +,x,- are emergent
(not injected), (b) division has a physical TNFR realisation (mode ratio /
phase-locking), and (c) the emergent set is field-closed = Q. The real
continuum R and pi remain the assumed
substrate; this is Q, not R. Nothing here touches G4 = RH.
Run:
python benchmarks/emergent_rationals.py
Status: RESEARCH (rational-emergence falsifier, gap 3 of the emergence map).
"""
from __future__ import annotations
import math
import os
import sys
from fractions import Fraction
import networkx as nx
import numpy as np
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from composition_arithmetic import ( # noqa: E402
adj_spectrum,
lap_spectrum,
multiset_close,
outer_prod,
outer_sum,
)
TOL = 1e-9
# --------------------------------------------------------------------------- #
# Helpers
# --------------------------------------------------------------------------- #
def integer_spectrum(spec, tol=1e-6):
"""Round a spectrum to ints if it is integral; else raise."""
rounded = np.round(spec)
if not np.allclose(spec, rounded, atol=tol):
raise ValueError("spectrum is not integral")
return rounded.astype(int)
def is_pm_symmetric(spec, tol=1e-8):
"""True if the multiset {spec} equals {-spec} (chiral / bipartite symmetry)."""
return multiset_close(spec, -np.asarray(spec, dtype=float), tol)
def kab_laplacian_eigenvalues(a: int, b: int) -> set[int]:
"""Distinct Laplacian eigenvalues of the complete bipartite graph K_{a,b}.
Spectrum: {0, a (mult b-1), b (mult a-1), a+b}. Returns the emergent integers
available as eigenvalues (the nonzero physical modes).
"""
G = nx.complete_bipartite_graph(a, b)
spec = integer_spectrum(lap_spectrum(G))
return set(int(v) for v in spec if v != 0)
def stern_brocot_path(target: Fraction, max_steps: int = 10000):
"""Navigate the Stern-Brocot tree to `target` by mediants from 0/1 and 1/0.
Returns (steps, reached, mediants) where `mediants` is the list of mediant
fractions visited. Each mediant is the resonance-combination (a+c)/(b+d) of
its two Farey parents.
"""
left = (0, 1) # 0/1
right = (1, 0) # 1/0 (infinity sentinel)
mediants: list[Fraction] = []
for step in range(1, max_steps + 1):
med = (left[0] + right[0], left[1] + right[1]) # mediant
med_frac = Fraction(med[0], med[1])
mediants.append(med_frac)
if med_frac == target:
return step, True, mediants
if target < med_frac:
right = med
else:
left = med
return max_steps, False, mediants
def kuramoto_two_rotation_number(omega1, omega2, K, steps=40000, dt=0.005):
"""Long-run frequency ratio of two Kuramoto-coupled phase oscillators.
dtheta_i/dt = omega_i + K sin(theta_j - theta_i). They 1:1 frequency-lock
iff |omega1 - omega2| <= 2K, in which case both run at the mean frequency and
the rotation number (ratio of mean frequencies) -> 1 (rational).
"""
t1 = 0.0
t2 = 0.0
for _ in range(steps):
d1 = omega1 + K * math.sin(t2 - t1)
d2 = omega2 + K * math.sin(t1 - t2)
t1 += dt * d1
t2 += dt * d2
f1 = t1 / (steps * dt)
f2 = t2 / (steps * dt)
return f1 / f2
# --------------------------------------------------------------------------- #
# Tests
# --------------------------------------------------------------------------- #
def test_additive_inverse_from_bipartite_symmetry():
print("=" * 78)
print("(1) Z: the additive inverse emerges from bipartite coupling symmetry")
print("=" * 78)
bipartite = [
("C6", nx.cycle_graph(6)),
("K_{3,3}", nx.complete_bipartite_graph(3, 3)),
("Q3 (hypercube)", nx.hypercube_graph(3)),
("P4", nx.path_graph(4)),
]
non_bipartite = [("C5", nx.cycle_graph(5)), ("K4", nx.complete_graph(4))]
all_sym = True
for name, G in bipartite:
spec = adj_spectrum(G)
sym = is_pm_symmetric(spec)
all_sym &= sym
print(
f" {name:<16} spec(A) +/- symmetric? {sym} "
f"spec = {np.round(spec, 3)}"
)
none_sym = True
for name, G in non_bipartite:
spec = adj_spectrum(G)
sym = is_pm_symmetric(spec)
none_sym &= not sym
print(
f" {name:<16} spec(A) +/- symmetric? {sym} (non-bipartite, " "contrast)"
)
# integral bipartite -> signed integers Z
q3 = integer_spectrum(adj_spectrum(nx.hypercube_graph(3)))
signed = sorted(set(int(v) for v in q3))
print(f" Q3 gives SIGNED INTEGERS: {signed} -> N extends to Z")
ok = all_sym and none_sym and (-min(signed) == max(signed))
print(
f" VERDICT: {'PASS' if ok else 'FAIL'} -- -n is forced by the "
"coupling symmetry, not injected"
)
return ok
def test_division_from_integral_eigenvalue_ratios():
print()
print("=" * 78)
print("(2) Q: division emerges as ratios of integral Laplacian eigenvalues")
print("=" * 78)
targets = [Fraction(3, 2), Fraction(5, 3), Fraction(7, 4), Fraction(5, 2)]
all_ok = True
for r in targets:
a, b = r.numerator, r.denominator
eig = kab_laplacian_eigenvalues(a, b)
# K_{b,a} has Laplacian eigenvalues a (mult b-1) and b (mult a-1)
have = a in eig and b in eig
ratio = Fraction(a, b)
ok = have and ratio == r
all_ok &= ok
print(
f" {r} realised by K_{{{a},{b}}}: eigenvalues {{a,b}}={{{a},{b}}} "
f"present? {have}; ratio = {ratio} matches? {ratio == r}"
)
print(" any reduced p/q is the ratio of two emergent integer eigenvalues")
print(
f" VERDICT: {'PASS' if all_ok else 'FAIL'} -- division = ratio of "
"two resonant modes"
)
return all_ok
def test_field_closure_is_Q():
print()
print("=" * 78)
print("(3) Field closure: emergent ratios are closed under +,-,x,/ = Q")
print("=" * 78)
# emergent integer eigenvalues taken from K_{2,3}: {2, 3, 5} and K_{2,4}:{2,4,6}
print(" emergent integers from K_{2,3} -> {2,3,5}, from K_{2,4} -> {2,4,6}")
a, b, c, d = 2, 3, 4, 6 # all emergent eigenvalues
r1 = Fraction(a, b) # 2/3
r2 = Fraction(c, d) # 4/6 = 2/3
# use two genuinely different ratios
r1 = Fraction(2, 3)
r2 = Fraction(5, 2)
a, b = r1.numerator, r1.denominator
c, d = r2.numerator, r2.denominator
print(
f" r1 = {r1} (= {a}/{b}), r2 = {r2} (= {c}/{d}) "
"[a,b,c,d all emergent eigenvalues]"
)
checks = []
# x : numerator ac and denominator bd via the TENSOR product (spectra multiply)
num_mul = outer_prod([a], [c])[0] # ac
den_mul = outer_prod([b], [d])[0] # bd
prod = Fraction(int(round(num_mul)), int(round(den_mul)))
checks.append(("x", prod, r1 * r2))
# + : ad, bc via x ; ad+bc via [] (outer_sum) ; bd via x
ad = outer_prod([a], [d])[0]
bc = outer_prod([b], [c])[0]
num_add = outer_sum([ad], [bc])[0] # ad + bc
den_add = outer_prod([b], [d])[0] # bd
summ = Fraction(int(round(num_add)), int(round(den_add)))
checks.append(("+", summ, r1 + r2))
# - : ad - bc via the bipartite additive inverse (outer_sum with -bc)
num_sub = outer_sum([ad], [-bc])[0] # ad - bc
diff = Fraction(int(round(num_sub)), int(round(den_add)))
checks.append(("-", diff, r1 - r2))
# / : (a/b)/(c/d) = ad/bc, a ratio of two emergent integers
quot = Fraction(int(round(ad)), int(round(bc)))
checks.append(("/", quot, r1 / r2))
all_ok = True
for op, got, expect in checks:
ok = got == expect
all_ok &= ok
print(
f" r1 {op} r2 = {got} (exact {expect}) "
f"built from emergent integers? {ok}"
)
print(" numerators/denominators all built with outer_sum / outer_prod")
print(" => emergent integers with +,x,- and ratios form a FIELD = Frac(Z) = Q")
print(
f" VERDICT: {'PASS' if all_ok else 'FAIL'} -- the emergent set is "
"field-closed; it IS Q"
)
return all_ok
def test_resonance_generates_Q():
print()
print("=" * 78)
print("(4) Physical mechanism: phase-locking + Stern-Brocot mediant generate Q+")
print("=" * 78)
# 4a) two-oscillator Kuramoto 1:1 lock -> rational rotation number 1
inside = kuramoto_two_rotation_number(1.0, 1.3, 0.5) # |dw|=0.3 <= 2K=1.0
outside = kuramoto_two_rotation_number(1.0, 3.0, 0.2) # |dw|=2.0 > 2K=0.4
locked = abs(inside - 1.0) < 1e-2
unlocked = abs(outside - 1.0) > 5e-2
print(
f" Kuramoto 1:1 inside Arnold tongue: rotation number = {inside:.4f} "
f"-> locked at 1 (rational)? {locked}"
)
print(
f" Kuramoto outside tongue: rotation number = {outside:.4f} "
f"-> not 1 (drifting)? {unlocked}"
)
# 4b) the Stern-Brocot mediant (resonance-combination) generates every p/q
targets = [Fraction(3, 2), Fraction(5, 3), Fraction(22, 7), Fraction(1, 4)]
gen_ok = True
for r in targets:
steps, reached, _ = stern_brocot_path(r)
gen_ok &= reached
print(
f" Stern-Brocot reaches {str(r):>5} in {steps:>3} mediants "
f"(resonance-combinations)? {reached}"
)
# mediant IS the resonance combination of its two Farey parents
med_demo = Fraction(1 + 1, 2 + 3) # mediant of 1/2 and 1/3 = 2/5
med_ok = med_demo == Fraction(2, 5)
print(
f" mediant(1/2, 1/3) = (1+1)/(2+3) = {med_demo} "
f"(resonance lock between two ratios)? {med_ok}"
)
ok = locked and unlocked and gen_ok and med_ok
print(
f" VERDICT: {'PASS' if ok else 'FAIL'} -- Q+ is the natural attractor "
"lattice of resonant phase coupling"
)
return ok
def main():
print(__doc__)
results = [
(
"(1) additive inverse from bipartite symmetry (Z)",
test_additive_inverse_from_bipartite_symmetry(),
),
(
"(2) division from integral eigenvalue ratios (Q)",
test_division_from_integral_eigenvalue_ratios(),
),
("(3) field closure = Frac(Z) = Q", test_field_closure_is_Q()),
("(4) resonance / Stern-Brocot generate Q+", test_resonance_generates_Q()),
]
print()
print("=" * 78)
print("SUMMARY")
print("=" * 78)
for name, ok in results:
print(f" {name:<50}: {'PASS' if ok else 'FAIL'}")
overall = all(ok for _, ok in results)
print()
print(f" OVERALL: {'ALL PASS' if overall else 'SOME FAIL'}")
print()
print(" Reading: Q emerges from the SAME nodal machinery that produced +,x.")
print(" The additive inverse is forced by bipartite coupling symmetry (Z);")
print(" division is the ratio of two resonant integer modes (integral-")
print(" Laplacian graphs); the emergent ratios are field-closed under all")
print(" four operations, so by Frac(Z) = Q they ARE the rationals. The")
print(" physical reason division appears is phase-locking: resonant coupling")
print(" (U3) locks oscillators at rational rotation numbers, and the Stern-")
print(" Brocot mediant -- the resonance-combination of two locked ratios --")
print(" generates every positive rational. HONEST SCOPE: Frac(Z)=Q is a known")
print(" theorem; what is shown is that the integers, their +,x,- and division")
print(" are all emergent/physical, not injected. R (continuum) and pi")
print(" remain assumed substrate; this is Q, not R;")
print(" nothing here touches G4 = RH.")
return 0 if overall else 1
if __name__ == "__main__":
raise SystemExit(main())