The substrate door
Growth in place of a fixed reader: the machinery that
does the distinguishing grown on the data rather than chosen in advance —
what it lands on when the data carries structure to exploit, and what it
lands on when it does not.
Descent in reader space varies what a reader
is scored by and what it has to spend, while the machinery itself is
chosen at the start and held. Three of its terms carry over, in these
senses and no others. A reader there is a commitment policy on a
fixed cover of intervals; its metabolism is the pair of resources
it runs on, a rank budget per input step and a bank holding what a step
does not spend; and
destination
universality is the finding that one policy is optimal on all of
the training data at once, so the optimum there is a function of the
metabolism and never of the data.
Growth needs a substrate with a growth rule, which reader space does
not have, so the question moves to an arena that does — supervised
separation of integers by a set of distinct primes, and
any such set is a tower ring. A
substrate is such a set S, drawn from a fixed pool
of the first few primes; it resolves two inputs when some prime it
holds gives them different remainders. A task is a supervised
partition of the inputs — which pairs the supervision says must be told
apart — and a pair the current substrate fails to resolve is a
collision. The growth rule is the tower's own
(least-new): on a collision, add the
smallest pool prime not yet held that resolves something still
unresolved. Learning is then growth, and the question is whether what it
grows to is set by the data or by nothing but the resolution the data
demands.
What a grown substrate lands on
Growth is
hitting-set cover rule
Whether S resolves a pair depends on nothing about the
pair but the difference between its two inputs: S fails
exactly when the product of its primes divides that difference. So a
task's entire demand is carried by its difference set — the
differences of the pairs it requires separated — and least-new growth
is a hitting-set cover of that set taken smallest-first, a prime
p hitting a difference d precisely when p does
not divide d. The same rule written from scratch as a
cover algorithm — take the smallest prime that hits anything still
uncovered — reproduces the grower step for step. The cover reading
also prices the rule: smallest-first is myopic, its grown set
strictly above the minimum cover in 40 of 40 random
small instances, because it takes 2 — odd differences are always
present — where a single larger prime would cover the whole demand at
once, as the hand demand {1, 770} grows {2, 3} against a minimum
cover of {3}.
Reaching the substrate the data actually calls for costs
lookahead.
Scope. The difference-set reduction proved,
and its product form checked against the per-prime test on 4000
sampled substrates and pairs; the from-scratch cover algorithm
checked against the grower on a random task; the myopia rate an
observation over 40
random instances on the first six primes. Toy scale.
verifier:
explore_collision_growth.py
The grown substrate
is a counter rule
Demand every distinction there is — all of
{0, …, M−1} pairwise separated — and the grown substrate is
forced. Least-new takes 2, 3, 5, … in order and halts as soon as
their product passes M−1, so what it grows is the
primorial prefix, the first k primes with none skipped:
depth 3, 4, 5 and 6 at M = 30, 210, 2310 and 30030. Nothing
about the task enters but how fine a resolution it asks for.
Unstructured data does the same thing: a prime resolves any
difference it does not divide, so in a task with no structure every
prime resolves something and smallest-first walks the prefix — 24
random tasks over one range grow one identical substrate, 2, 3, 5, 7.
That is destination universality again, one level up from the reader.
Where the reader adapts to its metabolism and not to its data, a
substrate grown on data carrying no structure to exploit adapts to
the resolution demanded and not to what is demanding it — a counter,
whose depth the task sets and whose content it does not. What
structure does to that is the flip
condition.
Scope. The all-distinct prefix law proved;
the generic verdict an observation over 24 random tasks of 8 classes
each on {0, …, 209}, with a pool of twelve primes. These task
families, toy scale.
verifier:
explore_collision_growth.py
The flip
condition observation
Structure in the data does move the substrate — and not far
enough to pick a destination.
A task living on the multiples of q has every difference
divisible by q, so q resolves nothing and is never
taken (proved) — the multiples of 3, of 5 and of 7 grow
{2, 5, 7, 11}, {2, 3, 7, 11} and {2, 3, 5, 11}, three different
substrates. A prime skipped is what makes a
designed tower rather than a
prefix, and here the data does the designing, where the growth laws
have it done by a
capability demand. Yet those
substrates transfer to each other near-intact: the one grown on the
multiples of 3 leaves 0 of the multiples-of-5 task's 125 differences
unresolved, and the reverse direction leaves 1 of
209 — that lone residual being the single difference
equal to the product of the resolving substrate's own primes, the one
value it therefore cannot resolve. Redundant small primes still
cover, so a different substrate is not a data-picked destination.
What would be one is a unique-need difference, divisible by
every pool prime but one: within the first five primes,
770 = 2·5·7·11 is resolvable only by 3, and a task needing it grows
exactly {3} while a sibling on the multiples of 3 never demands 3 and
leaves that one distinction unresolved. So structure alone does not
open the door, and what opened it in the one construction built to
was a conjunction: a difference only one pool prime resolves, and a
sibling task that skips exactly that prime.
Scope. The skipped-prime law proved; the
transfer figures and the flip condition observations on hand-designed
toy tasks — the sublattice ensembles on {0, …, 629} against a pool of
twelve primes, the unique-need pair on {0, …, 299} against a pool of
five.
verifier:
explore_collision_growth.py
Language at the door
A conjunction met only by tasks built to meet it says nothing about
data anyone has, so the question is whether real structure meets it.
Natural language is the obvious place to
look, and reaching it takes two maps rather than one. A surface
form is a string of symbols — walk, walked,
walks. Inflectional morphology arranges those forms in a
paradigm: one row per lexeme, the word a dictionary lists,
and one column per cell, the grammatical slot the form fills.
Morphology is concatenative where a cell is a fixed affix
glued to a shared stem and fusional where the cell shows as a
change inside the stem, as foot/feet and
go/went. The two maps are these. An embedding
carries a surface form to a number the substrate can be asked about; an
encoder then arranges those numbers so that moving between
cells is one fixed operation applied to any lexeme. Neither map is the
grammar, and that is what the two claims turn on: a substrate grown on
language-shaped data can be tracking either.
The encoding is what
the substrate tracks observation
Build the tasks in grammar's own terms — stems against affixes, a
paradigm of lexemes against cells, a fusional table of feature values —
then embed each surface form by the obvious reading, its symbols as the
digits of an integer in base B, and grow. What decides the answer
is the base. Where the affix is a single symbol, a task whose labels are the
cells never produces a difference divisible by B — a cross-cell
difference is congruent to the difference of two distinct symbols, which
is nonzero and smaller than the base — so for squarefree B the
prime factors of B suffice, every distinction the task asks for
being resolved by one of them (proved). Which of them least-new actually
takes is a separate question, and its answer is where they sit in the
pool, since least-new walks the pool smallest-first and halts as soon as
what it holds divides none of the demand: B = 30, whose factors
are the pool's three smallest, grows exactly {2, 3, 5}; B = 35,
whose factors sit higher, grows {2, 3, 5, 7} rather than {5, 7} — the
pool below them, then the one it needs; and the prime base 29 has no
factor in the pool at all and grows the whole pool, which is what a
structureless task grows. In all three, two tasks over one base grow the identical set and
transfer with nothing left over.
Compositionality — one fixed transform per cell, shared across every
lexeme — is visible in the arithmetic and not in the substrate: the
same-lexeme demand collapses onto the differences between the transforms
alone, four values across five cells, and the whole difference set shrinks
with it, 431 differences against a matched non-compositional control's
644 — yet both grow that same prefix. Compression is not unique-need.
Natural grammar does carry unique-need differences, in every family
tried, and the door stays shut anyway — every sibling pair transfers
near-intact, worst residual 0.625% of the demand and most exactly
zero. So the flip
condition is sharper than the presence of a unique-need
difference: opening the door needs one and a sibling that skips
its sole resolver, and the gap is only as wide as the count of differences
uniquely needing that skipped prime. Grammatical distinctions are local,
hence small differences, hence divisible by few primes and redundantly
covered, and only a handful ever land on one prime. Pushing the
transforms out to primorial scale by hand raises the number of unique-need
differences from 1 to 17, which reaches the door only by designing the
transforms to be unique-need — the hand-built pair above, not an escape
from it.
Changing the encoder does not move the verdict either. Take
Z/510510, the integers modulo the product of the first seven
primes — the pool stays the first five of them — and build the paradigm
multiplicatively — a form is a lexeme L times a cell value
K, both units, meaning residues coprime to the modulus
and so invertible there. A same-lexeme difference across two cells is
then congruent to L·(K′ − K) modulo every prime in
the pool, and a pool prime divides it exactly when it divides the cell
difference, since a unit carries no pool factor. So given the same
cell values in both — the qualifier the identity needs, and without
which the two grow different sets — the multiplicative and the additive
encoder grow the identical substrate (proved), the multiplicative one
losing only the compression: 180 differences where the additive has 15.
Its siblings transfer near-intact as well, residual 0.134%, and the door
opens only for a cell gap chosen to be unique-need. What the
multiplication buys is capability rather than a destination. Fix one
cell as the reference and one lexeme as the anchor: a cell's
transform is then the ratio of the anchor's two forms, and because the
anchor's lexeme factor cancels out of that ratio, the same transform
applied to any other lexeme's reference form lands on that lexeme's
form in that cell — every pair the extraction never saw, 55 of 55,
where a non-compositional control scores 0. That
capability is priced in unit membership and degrades by degrees rather
than at once: an encoder whose forms are mostly non-units completes 3 of
the 55 exactly and still recovers 0.719 of the individual prime
remainders, precisely those on which its anchor is invertible.
Scope. The sufficiency of the base's own factors
and the encoder-invariance of same-lexeme resolvability are rules,
mechanism-proved; which set least-new lands on is read off three bases, and
the transfer verdicts, the completion rates and the
difference-set counts are observations at toy scope — these grammar
families and encodings, the first five primes as the pool, which is
where a unique-need difference is cheapest to reach and so the fairest
shot the door gets, and Z/510510 for the multiplicative half.
verifiers:
explore_grammar_growth.py,
explore_vsa_encoder.py
The embedding factors
through the abelianization rule
Both readings above took their embedding as given — symbols read as
digits in the first, forms handed over as ring elements in the second.
The map that does the arranging is the embedding, and the natural
candidate is the one that respects concatenation: give each alphabet
symbol a unit and send a string to the product of its symbols'. For
concatenative morphology that is free. The image of a stem followed by
an affix is the product of their images, so the transform extracted for
a cell is the affix's alone, and completion runs from raw strings at 55
of 55 against 0 of 55 for a control that hands each distinct string its
own unrelated unit. The lift rides the homomorphism and not the format:
no per-lexeme table is learned and no notion of similarity between
stems is used.
Its price is order, and the price is forced rather than chosen.
Multiplication commutes, so the map cannot see the sequence of symbols
at all, only which occur and how often — 13 forms collapse onto 3
values, and gluing a fixed group of symbols to the front of a stem is
indistinguishable from gluing it to the back.
No choice of units repairs that. Every homomorphism from strings
under concatenation into the multiplicative structure of a commutative
ring factors through the
abelianization, the quotient in which any two symbols may be
exchanged freely, so all of the order lives in exactly what that
quotient forgets and no commutative target can hold it. Tagging each
symbol with its position separates the anagrams that had collided, and
breaks the shared
transform, because the affix then sits at a place that depends on the
stem's length: completion holds at 33 of 33 where the stems share a
length and falls to 0 of 33 where they do not — 0 rather than a fraction
because the anchor is given a length no other stem shares, so nothing
can transfer at all. The two natural
embeddings pay opposite halves of one exchange, and the same trade sits
under the tower itself, between an exact test for zero and a native
reading of order
(crown and blind spot) —
an echo across two constructions, not a second impossibility proof.
Fusional morphology settles on the same side. A cell whose change is
idiosyncratic per lexeme shares no transform, so the homomorphism
completes 0 of 33 forms it was not shown, and each rescue supplies what
the ring does not hold: an embedding built to respect the relation
restores 33 of 33, and a table read off the lexemes it did see scores
15 of 15 on those and 0 of 18 on the rest.
Scope. The homomorphism identity and the
position-length trade are rules, mechanism-proved. The completion
rates, the collision counts and the fusional verdict are observations
at toy scope — Z/510510, a Latin alphabet, these paradigm
families, and the fusional extreme taken as cells whose forms share no
symbols with one another at all. What is
claimed of order is a statement about commutative targets, not about
every embedding: nothing here rules out a native rule that holds both
order and a shared transform.
verifier:
explore_embedding.py