Number systems
Coordinates, bases, and towers built to fit a machine
word.
A rung of the tower is Z/N with N the product
of the first k primes, one channel per prime, and the question
the walls corpus asks of an operation — through which residue window
can it be read? (Walls) — is asked here of a
coordinate system instead. Recoding each
channel by a discrete logarithm turns multiplication into addition, and
the wall that meets the new hard operation is a different KIND of wall
from the one it left. A positional base — and any divisibility-chain
mixed radix — turns out to be exactly where two different readings of
one digit string coincide. And the towers designed to fill a machine
word exactly put the whole blueprint inside the ring the internet
checksum runs in.
The second log: index coordinates
The unit group is non-cyclic at every rung k ≥ 3
(λ = lcm(p−1) < ∏(p−1) = φ), so
Z/N has no primitive root: Napier's move — one discrete
log turning × into + — exists only through the CRT split.
The index
transform rule
Per-channel discrete logs compose with CRT into
U(Z/N) ≅ ∏p
Z/(p−1), under which multiplication is channel-wise
addition, powering is index scaling, multiplicative order is a
per-channel gcd read, e-th-root existence and count are
per-channel divisibility, and quadratic residuosity is the index
parity bit; λ is the index ring's additive exponent.
Non-units extend canonically: xλ+1 =
x for all x, so the multiplicative monoid is a
commutative Clifford monoid — the Boolean support lattice carrying
the sub-rings' unit groups as grades. In the full log coordinate
x ↔ (supp x, indices on supp) — supp x being
the channels where x is nonzero — the meadow inverse is
index negation and “log 0 = −∞” is realized as grade
drop.
Scope. The per-field facts are standard
(Zech logarithms, discrete-log number systems); the tower-wide
composition is the chart. Bijection exhaustive at Z/510510,
full log coordinate exhaustive at Z/210.
verifier:
explore_index_transform.py
The Zech
wall rule
The hard operation in index coordinates is addition, and its
wall has a different shape than the
archimedean wall. The index
map recodes each channel independently, so the locality criterion is
blind to it: addition stays channel-local, costing one unary Zech
table Z(n) = ind(1 + gn) per
channel. The wall lives within the channel: Z is
incompatible with every nontrivial proper quotient of
Z/(p−1) — every p ≥ 5, every divisor
2 ≤ q ≤ (p−1)/2, composite q included — hence
not polynomial. A structure obstruction (the table resists
compression) where the size wall is an information
obstruction (no per-channel table of any size exists). The proof is
a linear-fraction count: compatibility mod q demands
(1 + ωx)/(1 + x) stay in the index-q subgroup,
and for fixed ω ≠ 1 that is linear in x — too few
x comply, and every other x yields a violating
pair.
Scope. Proved, primitive-root-free;
mechanical check over 263 (p, q) pairs,
5 ≤ p < 200, all divisors.
verifier:
explore_index_transform.py
The rigidity
dichotomy rule
The coordinate systems in which + is channel-local are exactly
the coprime factorizations of N (at Z/30: 4
decompositions, the nontrivial partitions of {2, 3, 5}), and
demanding × as well changes nothing — addition alone pins the
divisor lattice, so the archimedean wall is unavoidable in every
+-local coordinate. Multiplication alone is floppy:
U(30) has 4 direct decompositions, 3 crossing tower
channels. No coordinate hosts (+ local, × additive) — the
zero/idempotent grading obstructs — and none hosts (+, ×, size)
together: (+, ×) → CRT, (×, powering) → index, (+, size) →
positional, all three → nowhere.
Scope. Exhaustive at k = 3 plus
standard ingredients.
verifier:
explore_index_transform.py
What a base buys
The same question one level up: not which window reads an
operation, but which windows a representation keeps
readable. Grade a numeration system per query: window-read (a
function of O(1) digit positions), scan-read (one pass, O(1)
state — a finite automaton), or walled (unbounded state or
full reconstruction). By Ostrowski the readings on offer are the
archimedean window and the finite places — each offering its residue
ladder and its valuation. Throughout, rad m is the product of
m's distinct primes.
The two-readings
criterion criterion
For greedy numeration on a scale 1 = U0 <
U1 < U2 < ⋯, the weighted
low prefix (digits 0..j−1) equals n mod
Uj for all n and j iff the
scale is a divisibility chain (Uj |
Ui for i ≥ j). Greedy itself buys
order on every scale, chain or not: MSD-first lex order is
numeric order. So the archimedean reading comes with greedy, the
residue reading comes with the chain, and positional base
b — and any divisibility-chain mixed radix — is exactly the
coincidence of the two readings: one digit string legible through
both windows. That is what a base buys. Zeckendorf keeps only
the greedy half — prefixes are not residues, while addition still
cascades like carries; its scan-read repair is classical (Frougny:
Pisot-scale normalization is a finite transducer).
Scope. Both directions proved; swept
exhaustively over all 9139 scales (1, a, b, c)
with a < b < c ≤ 40 and all 3876
length-5 scales up to 20 — the property holds exactly at the
chains.
verifier:
explore_numeration_windows.py
The readability
chart rule
| system | buys | pays |
| positional base b |
size, order (greedy); addition scan-read;
m | n window-read iff rad m | rad b,
scan-read for every m |
multiplication and primality walled |
| CRT tuple (the tower) |
+ and × window-read at depth 1 |
size, order, out-of-set divisibility walled |
| exponent vector |
×, divisibility, gcd/lcm window-read |
addition walled outright |
| factorial / primorial chain |
the residue ladder through every prime |
unbounded digit alphabet |
Addition in base b is scan-read but never window-read — a
carry can be launched from a position that dodges any fixed window;
multiplication is walled classically (with recognizable
multiplication, Büchi–Bruyère's decidable theory would decide
arithmetic; primes are automaton-recognizable in no base —
Minsky–Papert, Hartmanis–Shank). The exponent-vector row walls
addition by witness: a CRT-built family with constant window
vector and unbounded v2(1 + y) — no fixed
window computes any coordinate of a sum. The diagonal is the
factorial/primorial mixed radix, a divisibility chain through every
prime: the factorial chain eventually window-reads every
m | n, the primorial chain exactly the squarefree
m. Every row buys a reading and pays a wall: every number
system is a choice of which wall to pay.
Scope. Rules with witnesses per cell;
classical contacts as cited (plus Cobham–Semenov for the cross-base
rigidity that makes the chart per-base, Rényi for the non-chain
greedy family). The boldface synthesis is an observation over this
census, not a theorem. One grid sits outside the chart's carriers —
the continued-fraction window, whose cell mesh is not a function of
digit depth (Reading).
verifier:
explore_numeration_windows.py
Designed towers
The blueprint is not primorial-specific: any squarefree
set of primes is a tower ring — all-field channels, meadow,
idempotents, ECC where sized — a free choice of places. The standing
family fills machine words exactly, and it arrives from
characteristic 2: the unit group of Conway's nim-field rung
[0, 22n) is cyclic of order
22n − 1 =
F0⋯Fn−1 (telescoping over
the Fermat numbers), so each nim-rung's index ring is a squarefree
all-field designed tower on Fermat primes for n ≤ 5
(explore_nimber_tower.py).
The
internet-checksum ring rule
The n = 4 member is Z/(216 − 1) =
Z/(3·5·17·257). RFC 1071's end-around-carry addition is
reduction mod 216 − 1 and its final complement is ring
negation, so every IP/TCP/UDP packet checksum runs whole in this
ring and splits by construction into four parallel field checksums,
with collapse to the support idempotent in 8 squarings. RFC 1624's
incremental update is the ring identity HC′ = HC + m −
m′ and splits — each channel updates from m mod
p, m′ mod p alone; the boundary bug RFC 1624
exists to fix (an update yielding −0 where from-scratch gives +0)
lives entirely in the two representatives of the ring's zero
class.
Scope. The fold law is exhaustive at this
member and the incremental split is verified at n = 4, 5
and 6. RFC 1071's appendix derives the fold as a digit-sum
remainder.
verifier:
explore_checksum_ring.py
The machine-word
tower and the uint64 departure rule
At n = 5, Z/(232 − 1) =
Z/(3·5·17·257·65537): all five known Fermat primes filling
one 32-bit word exactly. The fold reduces at width 32 — one
end-around carry per add, native to any 32-bit datapath — and the
index coordinate stacks: every unit-group factor is cyclic of
2-power order, so unit multiplication is five parallel masked index
adds (widths 1/2/4/8/16 — a 31-bit index word), and
λ = 216 collapses any x to its support
idempotent in 16 squarings. Fletcher-16/32/64 are the family's
checksums: two running sums in 1's-complement arithmetic mod
255/65535/232−1 — the members n = 3/4/5 — both
splitting per channel, each channel running its own Fletcher. At
n = 6 the family leaves the all-Fermat spine
(F5 = 641·6700417, Euler): the uint64 tower
Z/(264 − 1), seven channels in one 64-bit word.
Survives verbatim: the fold, squarefree all-field, the incremental
split. Splits: the index stack — the two F5
channels need true mod-(p−1) adds, a 64-bit index word
against log2 φ ≈ 63.0. Dies: the cheap-collapse
knob — the family's first non-2-power λ, 33 squarings + 13
multiplies against the spine's 16 + 0. And the ECC payload is the
checksum ring: under the tower split — the smallest channels
carrying data, the largest carrying parity — the data product is
3·5·17·257 = 65535, so the n = 4 member nests as the data
space of n = 6: a 16-bit-word payload riding a 64-bit word at
minimum distance d = 4, MDS, one extra payload value dropping
d to 3.
Scope. Rules verified per member (fold law
exhaustive; incremental split at n = 4, 5, 6; ECC drop
exhaustive over subsets). The family's standing poverty:
3 | 2w − 1 at exactly the even widths, so every
member carries channel 3. Beyond n = 6 the blueprint rides
the open all-Fermat-squarefree question.
verifiers:
explore_machine_word_tower.py,
explore_uint64_tower.py