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
Walls asks of an operation — through which residue
window can it be read? — 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
Napier's log — one map turning × into + — is the first of three.
The second is that map made exact over a residue
window, and it exists only through the CRT split. Taken whole the rung
has no such coordinate — the unit group is non-cyclic at every rung
k ≥ 3 (λ = lcm(p−1) < ∏(p−1) =
φ), so Z/N has no primitive root — while every
channel, being a field, has one.
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 additive exponent of
∏p Z/(p−1).
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: the pseudo-inverse
x′ with x·x′·x = x and 0′ = 0,
defined on the whole ring at once, which is what makes division
total on a squarefree rung. “log 0 = −∞” is realized as
grade drop.
Scope. The per-field facts are standard
(Zech logarithms, discrete-log number systems); what is stated here
is their tower-wide composition. 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
size wall, so called because it is the obstruction that
deleting size leaves. The index
map recodes each channel independently, so the locality criterion is
blind to it: addition stays channel-local — its value mod
p a function of the input mod p alone — costing one unary Zech
table Z(n) = ind(1 + gn) per
channel, g the channel’s chosen primitive root and ind
its discrete log. 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, with no dependence on the
choice of primitive root; 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}) — a
coordinate system counted up to relabeling within each channel,
channel-local bijections composing and inverting channel-locally,
which is why the index coordinate is the CRT factorization again
rather than a fifth entry. 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. And no coordinate hosts (+ local, × additive) over the
whole ring. The index coordinate comes closest — on the units the
pair holds, + channel-local through the Zech tables while × is
channel-wise index addition — and the zero/idempotent grading is
exactly what stops it extending: off the units multiplication
intersects supports, a grade drop no additive coordinate absorbs.
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
The third log: where Napier's ladder ends
Napier's move turns × into +, and the index transform is that
move made tower-wide. The ladder suggests a third: a
super-logarithm, a coordinate turning powering into ×
the way the index turns × into +. It does not exist, and the three
reasons are different in kind from the Zech and size walls. Two terms are
needed. The index ring of a channel p is
Z/(p−1), where that channel's indices live; powering by
e reads there as multiplication by e, so a super-log
would be an index transform applied to the index ring — the same two
moves one level down. And tetration
x^^h is powering iterated h times,
the ladder step above powering, which is what such a coordinate would
linearize.
The third
log rule
Powering is not a ring operation to begin with:
xy is ill-defined on residue pairs (348 of 870
witness pairs at Z/30), and is well-defined only as
Z/N × Z/λ(N) → Z/N,
and there only for exponents ≥ 1 — the floor is not decoration:
xa+λ = xa holds for
every x at a ≥ 1, and at a = 0 it survives on
the units alone. So the hyperoperation ladder leaves the ring at its
third step: each further exponent level lives one ring down. Existence
of the coordinate then comes in three strengths. A single super-log
exists iff the index ring has a primitive root — a generator of its
unit group, additive cyclicity being automatic (Gauss:
m ∈ {1, 2, 4, qk, 2qk} for
q an odd prime, which is why 16 is not on the list) —
inside Z/510510 channels 13 and 17 already fail, and the
passing primes thin toward density zero (0.100 → 0.071 → 0.055 at
104, 105, 106). One through a
second CRT split exists iff 8 ∤ p−1: the only non-cyclic
prime-power unit group is U(2k),
k ≥ 3, so odd places never block and the obstruction is
entirely 2-adic (density 3/4; in Z/510510 only p = 17
fails). And the 2-adic patch U(2k) =
⟨−1⟩ × ⟨5⟩ always exists but is group-only — Z/2k
is local, its only idempotents 0 and 1, so no ring split carries it.
Scope. Type obstruction exhaustive at
Z/30 and Z/210, sampled at Z/510510; the
a = 0 remark is immediate from the construction. The existence
strengths are classical ingredients (Gauss; the unit-group
classification) composed here, with the densities a census to
106 — the split strength observed at 0.7509 against the
Dirichlet value 3/4.
verifier:
explore_super_log.py
The finite
ladder rule
Even where the coordinate is patchable, it would run out of
object. Iterating λ gives a strictly descending chain —
510510 → 240 → 4 → 2 → 1, height 4 — and each exponent level of a
tetration lives one ring further down it, so for any base
x ≥ 2 the power tower x^^h mod
N is constant once h reaches that height. A super-logarithm mod
N would therefore take a handful of values. Below that
ceiling the construction does recur, and exactly on the
skip towers: when p−1 is squarefree the index ring is
itself a tower ring of the same shape — squarefree, so every channel
is again a field — but built on a prime set that skips primes rather
than starting at 2 (Z/6 and Z/10 are the index rings of
7 and 11), and the whole blueprint — field channels, Clifford monoid,
the full log coordinate — recurs verbatim; off the squarefree locus
nilpotents appear, elements with a zero power, and the
graded extension dies (2 ∈ Z/4, 6 ∈ Z/12). The density
of channels that recur is Artin's constant, 0.3740.
Scope. Stabilization validated against exact
integer power towers to 7(77), a 2.3-Mbit integer,
every sampled tower settling by depth 4 at Z/510510; the
squarefree characterization validated m ≤ 300; recurrence
density a census against Mirsky's theorem (0.3745 observed).
verifier:
explore_super_log.py
This is the third failure mode the Walls
page names. The size wall withholds information: no finite
window reads the deleted one. The Zech wall is a structure
obstruction: the table exists and resists every compression. Here the
coordinate does not exist at all — non-cyclic 2-part unit groups,
nilpotents off the squarefree locus, and a chain that terminates.
Cryptography prices the absence rather than the coordinate: the double
discrete logarithm g(hx) is a
hardness assumption (Stadler, 1996), not something anyone computes.
What a base buys
The same question one level up: not which window reads an
operation, but which windows a representation keeps
readable. Classify each 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: most-significant-digit-first
lexicographic 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: for any fixed finite set of primes, a CRT-built
family y exists whose valuation at every one of them stays
zero while the 2-adic valuation
v2(1 + y) grows without bound — no fixed
window computes any coordinate of a sum. The
factorial/primorial row is the mixed radix on 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 walled query, or on
that last row the unbounded alphabet: 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, error-correcting codes (ECC) where sized — a free choice
of places. One
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. Weakens: 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 — 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 fixed poverty:
3 | 2w − 1 at exactly the even widths, so every
member carries channel 3. Beyond n = 6 the blueprint rides an
open question — whether every Fermat number is squarefree; a repeated
prime factor in any later Fm would break the
all-field channels there. What does not ride it: the exact
comparator's cost law (the walls
page — the packed key beats reconstruction iff Σ 1/p < 1
over the channels) clears at every member, Σ 1/p <
0.6 at each and the limit sum under 0.5986, because an unfactored
Fk needs no factoring: Lucas puts each of its prime
factors at 1 mod 2k+2, so its at most
2k/(k+2) factors contribute under
Hm/2k+2 (Hm the
harmonic number), a tail summing to 0.0009 from k = 12 against
the 0.5976 of F0..F11 exactly.
verifiers:
explore_machine_word_tower.py,
explore_uint64_tower.py,
explore_fermat_reciprocal_tail.py