We test whether modular arithmetic is necessary, or whether the PRINCIPLES (channel decomposition, Pareto sizing) work without it. Four architectures, same abstract task: context-dependent function selection with per-channel evolution.
The experiment: replace modular multiplication (a*b mod q) with clamped multiplication (min(a*b, q-1)). This removes the ring's cyclic wrapping while keeping the channel structure. If clamp matches ring, the ring is scaffolding. If not, the ring is essential.
4 functions, 160 training examples, 200 generations of per-channel evolutionary search. Same task structure across all configs.
Clamp BEATS ring on raw numbers. But the scores are artifacts of degeneracy. Clamped multiplication saturates to q-1 for most inputs when weights are large. The monolithic config gets 100% trivially -- every output is 996.
The improvement metric reveals the truth. Ring: +523 points of genuine learning from a hard start (21%). Clamp: +337 from an inflated baseline (63%). Flat: +156 from near-trivial (83%). Mono: +0 from perfectly trivial (100%). Ring creates a task where the model must genuinely learn. Clamp creates a task where the answer is trivial.
Why? Modular multiplication is BIJECTIVE (for coprime weight). Every input maps to a unique output. Wrong weights produce completely wrong outputs -- strong evolutionary signal. Clamped multiplication is LOSSY: many inputs map to q-1. Wrong weights still produce q-1 for most inputs -- weak signal, trivial matching.
The ring is necessary not as algebraic scaffolding but as an information-preserving arithmetic substrate. The value of modular arithmetic is bijectivity: it preserves information through cyclic wrapping.
Source code · Public domain (CC0)
.ax source compiled to WASM via self-hosting compiler. Zero HTML authored.