◄ UD0 · ACI · CORE property · minimal syntax

The Razor

A crafted standard uses the smallest grammar that still says what it must — because a smaller grammar has fewer ways to be read two ways. Here that is not an opinion: a parser counts how many distinct parse trees each message has. Minimal means exactly one — every message in the test corpus parses exactly once. Add a redundant mark and nothing forks (that is accretion). Flip one rule into a self-embedding one and the same sentence sprouts a second tree — the razor shows you both, and cuts.

ACI · a CORE property made hands-on · minimal = no message in this corpus forks

math self-check …

The bench · edit the message and the grammar, watch the parse count

PARSES: 1

The control arm is the BODY rule. Left as right-recursive (BODY → w BODY) every message parses once — DETERMINISTIC. Flip it to self-embedding (BODY → BODY BODY) and a body of n words can be bracketed Catalan(n−1) ways: 3 words → 2 trees, 4 words → 5. The count is not asserted — the fast counter, an independent enumerator, and a per-tree re-check must all agree (that is the self-check above).

Two layers, honestly

Real
A CYK parse-forest counter (Chomsky-normal-form, unit-closure with cycle detection) returns the exact number of distinct parse trees for a string, and an independent enumerator plus a per-tree re-walk cross-check it (node-verified 21/21 in the full harness; the live self-check above runs a 10/10 subset — counter = enumerator = re-checked; Catalan C₂=2, C₃=5). “Minimal” means one checkable thing: parseCount === 1 for every string in the visible corpus. The parser is deterministic; the toggle makes ambiguity appear and the razor exhibits the two real trees.
Figure
The “razor.” There is no blade, and no notion of “elegance” is measured. Three honest bounds: (1) minimal ≠ globally smallest — a bloated grammar can still be unambiguous; this proves “no string in this corpus forks,” a necessary-not-sufficient property. (2) Bounded, not universal — grammar ambiguity is undecidable in general; one-parse-over-a-finite-corpus does not prove unambiguity for all strings, only that it exhibits a fork if one exists in the tested set. (3) A unique parse structure is not the same as guaranteed identical meaning across parties — this is grammar arithmetic, no semantics, no weights, no learning.