Redundant arithmetic

What an overlapping digit set makes local, and at what delay.

A positional numeration writes a number in radix b over a digit set. Its leading end — the most significant digits, the end a floating-point number keeps — sees a value through a window: the first t digits, naming a cell of values, the cells refining toward a point as t grows. Reading a function f at lookahead c means the output window at precision t is a function of the input window at precision t + c; a function readable at no finite c is non-local at that end. Over the ordinary digits {0..b − 1} the cells partition, each value has one numeral, and the leading end is local only under a radical alignment condition — the geometry, and the other pole it mirrors, are on The dual pole. A redundant digit set — symmetric digits {−a..a} with 2a + 1 > b, so that a value has several numerals — makes the cells an overlapping cover instead, and the alignment condition dissolves: every rational slope reads at bounded delay, and addition itself goes local. What that purchase buys is priced here.

One quantity prices the purchase to within a digit, and every exact law below is read against it. A redundant set carries slack ρ = 2a + 1 − b, the count of digits it holds beyond the radix, and c digits of lookahead then cover a spread of bcρ — the cover's Lebesgue number, the spread one cell is guaranteed to swallow whole. The Lebesgue margin is the lookahead at which that cover reaches the spread an operation injects — for a scaling, which injects 2a, it is logb(2a/ρ) — and what it GRANTS is the least whole c at or above it. It is a size-only count — it reads the slack and nothing about the shape of the set or of the operation — and each law below replaces it with a closed form. The gap between the two is where the shape turns out to live.

The rational-slope delay criterion criterion

The Lebesgue margin is a size-only heuristic and prices the redundant leading end's delay only to within a digit. The delay itself is a closed form. Read ⌊(u/v)n + φ⌋, φ a rational phase, as a residual game: the reader has emitted a prefix, holds the residual m it still owes, and each turn the opponent injects the next input digit and the reader emits an output digit; the read is exact at lookahead c exactly when the reader can hold the residual inside some set forever, and the largest such set is the winning set. Scale the state by L = lcm(v, the denominator of φ) so every residual is an integer. Two bounds close on the winning set. The endpoint bound — inject the extreme digit ±a forever, and surviving forces |m| ≤ E(c) = ⌊aL(vbcu)/(v(b − 1))⌋. The flush window — a residual the reader can still flush satisfies ⌊m/L⌋ ∈ [−arc, arc], rc the c-digit repunit; it is asymmetric, its top carrying a further L − 1, the overhang the floor's own truncation buys, so the two bounds bind side by side and often on opposite sides. Their intersection is an interval, and wherever the length test that follows grants, it is the winning set itself rather than a bound on it — and the game moves the residual by two steps, Lu/v per injected digit and Lbc per emitted one, so an interval at least Lbc long always has an emission carrying the injected state back inside it: the read is exact at lookahead c once the interval is that long. Nothing shorter will do when the two steps are coprime, and the general statement is a covering one. An emission moves the state by a whole multiple of Lbc and so cannot change its class modulo that lattice: the reader's play is invisible there, and from a given state the injections alone sweep the successor across a coset of the subgroup their own step generates in Z/Lbc — the multiples of gc, the gcd of the two steps. Such a coset is exactly a class modulo gc, holding Lbc/gc residues. But the emission lattice already tiles the line, so what a state needs of the winning set is a representative and never a value: call a class modulo gc saturated when every one of those residues has a representative in the interval. The map carrying a class to its successor, tbt − (b − 1)Lφ (mod gc), fixes the start class: the start state is Lφ itself in those same scaled units, and the additive term is built from it, so b·Lφ − (b − 1)Lφ = Lφ. The orbit that decides the start state therefore never moves, and the read is exact at lookahead c exactly when that one class is saturated. Coprime steps leave one class, saturated exactly when the interval is Lbc long: the length test is the one-class case of the saturation test. So the least granting c is the delay. A phase translates the flush window and does nothing else, so a phase can never RAISE the delay, and it lowers it by one exactly where the endpoint bound binds on the right while the window binds on the left. The Lebesgue margin is this criterion with its floors dropped, which is why it lands within one digit and why it misses in BOTH directions: over 169 cells the true delay runs one digit above it at 18 and one below at 14, never two off. One corner the size-only reading gets wrong outright: slopes bk with k ≥ 0 read at k, but dividing by the radix is a free shift only when ab − 1 — below that it costs one digit at every depth alike, a strictly stronger demand on the digit set than redundancy.

Scope. The rational-slope delay is proved entire — both bounds, the phase lemma, the sufficiency of the length test and its necessity — for every radix, every symmetric redundant digit set, every rational slope and every phase, no computed value load-bearing; it is an iff wherever the injection step Lu/v and the emission step Lbc are coprime. The bk corner is proved in both halves by two different routes: k < 0 is that iff read at c = 0, where the injection step is 1; k ≥ 0 sits outside it, where the two steps share everything, and is settled by hand — E collapses to 0 at c = k and the surviving singleton is invariant, while at c = k − 1 the bound is already negative. Where those two steps share a factor the saturation test takes over, and it too is proved entire at that same scope, by the fixed point above: the start class is its own orbit, so the delay is decided by one class and the demand that the digit set cover the subgroup in a single step (Lbc/gc ≤ 2a + 1) is no condition on the law. What that demand was carrying is the gap between the start state and a general one, and for a general state the winning set is not a class condition at all. Redundancy makes j steps reach an interval of 2arj + 1 multiples of the injection step — a proper sub-progression of the state's own coset until the depth J = min{j : 2arj + 1 ≥ Lbc/gc} at which it becomes the whole coset — and a state wins exactly when that reachable set misses the interval's complement at every depth. That is proved for every radix, redundant digit set, slope and phase, and with nothing uncovered: the argument needs the interval to be no longer than Lbc, so that a residue has a representative in it, and where the interval is longer the length test above already grants and already hands over the interval itself — which is the same set this condition names there, its complement being empty. The two cover every case between them. Below J it turns on the state's residue rather than its class: the class reading fails there, at 21 of the 55 cells of a census to radix 12 and lookahead 5 where a disagreement is possible at all — cells outside it carry the same failure — the smallest at radix 2 with digits {−1, 0, 1} and slope 12/5 at lookahead 2, where the game has 13 winning states against that reading's 9. Every one of them dodges at the FIRST depth, so the dial is the digit set and not the lookahead: all 21 sit at the redundancy floor, 2a + 1 ≤ b + 1, the narrowest digit set still redundant, hence the fewest reachable states. That is where to look rather than a test — 52 of the 55 sit there too. One quantity accounts for both. Write a state as its class together with its position in that class: the class holds Lbc/gc residues evenly spaced gc apart, and the position is the index of the state among them, running over Z/n with n = Lbc/gc. In that coordinate the interval's complement meets a class in a single block of λ consecutive positions — the indexing wraps the circle once, and λ = 0 exactly when the class is saturated. Depth j's reachable set, meanwhile, lands in the class j successor steps along, CENTRED on the state's position there and spread over 2arj + 1 positions in arithmetic progression by a fixed step — the injection step's own image, a unit of Z/n. Below J that is fewer positions than the class holds, so the progression sits scattered around the circle rather than filling it. The state fails depth j exactly when that point set MEETS the block, so as the centre ranges over the class the survivors are one run per gap of the point set longer than λ, of length gap − λ. Those gaps take at most three lengths, read off the continued fraction of the step. A class can dodge at all iff its widest gap exceeds λ. That is the monotonicity beneath the floor: the point set only grows with a and with j, and adding points subdivides gaps rather than merging them, so the room to dodge is widest at the narrowest digit set and at the first depth. So the shortfall the length test can suffer — an interval falling short of Lbc by as much as gc − 1 — was a defect of the TEST and never of the law, and it closes at all 67 measured cells. What lives in that band is a winning set gone sparse, and at every one of those 67 it is a union of classes modulo gc rather than a lattice, several surviving where the naive step-gc reading expects one. Of 21 such cells that reading is right at the 9 carrying a single class and nowhere else — and at radix 3 with digits {−2..2}, slope 1/3 under phase 1/8, the survivors are {0, 2, 3} mod 8 and the winning set is no arithmetic progression at all. The 1974 cells across two grids sharing no window that carried the iff before it was proved now check the derivation instead.

verifiers: explore_slope_proof.py, explore_slope_lattice.py, explore_slope_tail.py, explore_slope_tree.py, explore_slope_dodge.py

The assembly across levels pattern

The dodge criterion above prices ONE depth. A class can LOSE several — its tree landing in an unsaturated class at each of them — and what a state must then survive is all of them together. Wherever that question can be asked λ = 1, and is forced rather than observed: an interval falling short of Lbc by gc or more leaves no saturated class at all and hence nothing to assemble, so wherever there is something the complement is a run shorter than gc, and a run that short meets a class's residues, spaced gc apart, at most once. Each block is a single position then, and the positions failing depth j are the ones whose point set covers that position. Written out, they close up into one run pulled back: those w with bjw + dj inside a centred run of 2Mj + 1 values, Mj = arj the run's half-width and dj the depth's own offset. Call that set of positions level j. Losing two of them is ordinary rather than exotic: 262 cells carry such a class below Lbc = 6000 in a phase-0 sweep to radix 12, the smallest at radix 2 with digits {−1, 0, 1}, slope 40/9 and lookahead 3, where four classes lose depths 1 and 2 alike and the game has 37 winning states against the class reading's 17.

The ambient interval is not a second kind of constraint on top of those: it is level 0 of the same family — no tree, and its own set is the block itself — so every inclusion–exclusion term containing it is settled by enumerating that one position. That leaves ONE lattice term, a single pairwise intersection, and bjw is a function of biw whether or not b is a unit modulo n, so a gcd reduction carries it to a count of one run's points whose image falls below a threshold: two floor-sums, O(log n). The SIZE of a class's winning set is then a closed count, with no walk over the interval anywhere in it. A level sitting inside a deeper one is forgotten by the union, so a family of any size reduces to its maximal levels, and the number of those is the family's width; the count closes as soon as the width is at most 2. But width 3 exists — 4844 classes over 29,233 cells (a radix, digit set, lookahead, slope and phase together) with Lbc ≤ 150,000, the smallest at 11,664 under radix 6 with digits {−4 … 4} and slope 4384/9, whose class 1 loses depths 1, 2 and 3 — and there the closed form has no formula for the triple term.

The count survives anyway, because at every one of those 4844 the triple term is EMPTY — the two shallowest maximal levels never meet, and a triple cannot outlive its pairs. What makes that sayable before any of it is looked at, and what says which pair it will be, is one coordinate: meeting is the containment test at a second radius. Write Δ = ji. The repunit identity rj = bΔri + rΔ makes Mj = bΔMi + MΔ exactly, and bΔMi stays under n/2, so the deeper level's run is the shallower one's image lengthened by 2MΔ and nothing wraps. One quantity then decides both questions — the offset y between the deeper run's centre and the image of the shallower run's, shifted by MΔ and read modulo n. Level i lies inside level j whenever y ≤ 2MΔ, a radius set by the DIFFERENCE of the two depths; the two can meet at all only where y ≤ 2Mj, or in the mirror arc at or above n − 2Mj + 2MΔ — a radius set by the DEEPER depth alone. So a pair carries a meeting measure μ = (4Mj − 2MΔ + 1)/n — the share of the circle an offset must land in for a meeting to be possible at all, clamped at 1 where the two arcs have overlapped and the count reads the circle twice — before any y is looked at. And a third maximal level caps that measure for the two shallowest: i3 is itself a level below J, so 2Mi3 + 1 ≤ n, while the same repunit identity gives Mi3 > bi3−i2Mi2, whence μshallow < 2/bi3−i2. A factor of b is what the third level buys, and it is bought only for the SHALLOW pair: measured max 0.4118 and median 0.178, against a median of 0.892 and a max of 1 for the single pair of a width-2 family, which has no third level under it.

Scope. The assembly is a property: level 0's collapse and the gcd reduction ask nothing about which residues are attained, and the closed count matches a state-by-state walk at 1684 of 1684 classes losing two levels, over all 219 cells with Lbc ≤ 3000, its pair term against a direct walk over Z/n at 3766 pairs. The two radii and the cap are properties too — a repunit identity with bΔMi < n/2, and 2Mi3 + 1 ≤ n with the same identity — checked at 0 violations of the meeting radius over 1,786,658 pairs and 0 of the cap over 5656 width-3 classes. The containment radius is sufficient and NOT necessary: its converse declines a containment that really holds, at 284 pairs of the smaller census and 1436 of the larger, so a width read off the derived half alone is an upper bound on the true one — coverage, never soundness. Every width quoted above is measured containment in both directions instead, the reverse containment occurring nowhere, a deeper level being the larger set. That the shallow pair is empty is a pattern and nothing stronger: 4844 of 4844 at Lbc ≤ 150,000 and 812 of 812 at a census carrying a sixth of that population, phase 0 throughout, with every one of those emptinesses falling to the interval bound rather than to the discreteness of the values an offset can take. The cap bounds the measure and is not a proof that no offset lands inside it, and no derivation is on offer here; what a triple term would need to become owed is a width-3 class with all three pairs non-empty, which none of the 4844 carries.

verifiers: explore_slope_assemble.py, explore_slope_width.py, explore_slope_empty.py

The empty-window law rule

The two radii above are both conditions on the offset y: one level lies inside the other when y ≤ 2MΔ, and the two meet at all only when y ≤ 2Mj or y is at or above n − 2Mj + 2MΔ. What is left between them is where the levels meet WITHOUT one containing the other, and it is two arcs: the lower arc 2MΔ < y ≤ 2Mj, and the upper arc, its mirror at the top of the circle. What a level pair presents is not offsets, though: it is the bΔ carries its window holds, each mapping to one offset, and an arc counts as empty when no offset the pair can attain lies in it — so settling that by walking the carries costs bΔ. It is one inequality per arc instead, because every offset's carry has a closed form. The quantity the form is built on is κ, formed from the same a(Lbcu) the endpoint bound E above floors, and the redundancy condition 2a + 1 ≥ b is load-bearing rather than a convenience of the sweep: it is what makes κ's own multiplier non-negative, so that κ = 2au mod Lbc is a residue rather than a signed combination and the identity is a reduction. With h = gcd(2a, b − 1) and τ(y) = (−y(b − 1)) mod 2a, every offset carries C(y) = ((Lbcτ(y) + yκ)/(2agc)) mod n — a TWO-TERM cost, so a small carry needs a small y and τ = 0. The outer reduction is what makes that a formula rather than a range: τ supplies the wrap only while yκ < Lbc, and the wraps dropped past that point are exactly the outer modulus, so the form carries no side condition and reaches all of Z/n. And τ vanishes on the multiples of 2a/h alone, so the containing carries — those whose offset puts one level inside the other — run 0, s, 2s, … in a progression of step s = κ/(hgc).

Both arcs then read off that one step, over the pairs where containment has already failed. The lower arc is empty iff (hrΔ + 1)sbΔ — containment holding out to index hrΔ along the progression and the arc out to hrj, so what the inequality asks is whether the first index past containment is already outside the window's range. At most of this population's cells that is derived and not merely verified. Call a cell rigid when its interval falls as far short of Lbc as the population permits, by gc − 1, and the endpoint bound's own floor is exact — which is where the step meets its ceiling (b − 1)/h, the two coinciding exactly. There the inequality reads bΔ − 1 + sbΔ for every b, h and Δ, so at a rigid cell the lower arc is empty by property, with margin s − 1 and no enumeration anywhere in the argument. The upper arc is empty iff nh ≥ 2abΔ + hsymax, evaluated at the class its cost is least on, τ′ = h — least by property and not by search, stepping τ′ up costing nh and buying back at most 2agcs — with ymax the largest admissible offset in that class. The added term is what the level difference costs: the lower arc's own hypothesis, with a price attached.

The two halves are not equally protected, and that is where the law ends. The population the lower arc's rule is read on is cut at meeting measure μ < 0.4, and that cut ENFORCES its hypothesis — a class losing three levels forces n > 2ar3 and the cut forces Δ ≤ 2, the measured minimum of nh/(2abΔ) being 5.78. It does not enforce the upper arc's: below the cut it gives n > 10arj − 5arΔ against the 10arj + 2a that criterion wants at b = 6. So a failure was predicted just above the cut, and it is there: μ = 0.4597 at Lbc = 22032 — radix 6, digits {−4..4}, lookahead 4, slope 8272/17, levels 1 and 3 — where seven offsets are attainable in an arc the criterion calls empty. The empty-window law is a below-the-cut law, and at this cap the margin is 0.0597.

One consequence needs none of the derivation. The count the criterion replaces is a floor-sum: per τ class the carry runs as an arithmetic progression in Z/n, so counting a window costs O((2a/h)·log n) against the walk's O(bΔ).

Scope. Rules on a phase-0 census of level pairs with Lbc ≤ 60,000, over cells carrying a class that loses at least three levels. The carry's closed form is pointwise exact at 1,868,112 offsets with 0 misses, one in five of them beyond the unreduced form's range. The lower arc's criterion is verified in BOTH directions over the 3516 pairs below the cut — the 8 failing the inequality are set-equal to the 8 whose window holds an attainable offset, and they are one cell, which is not rigid; below the cut the upper arc is empty at all 3516, which is what makes that window the lower arc alone — the closed form and a loop over all bΔ carries agreeing pair by pair with no shared code path. The rigid-cell reading and the least-cost class τ′ = h are properties, the second printed to hold at all 10,852 non-contained pairs rather than assumed. The upper arc's criterion agrees with an independent count at 4668 of 4668 scored, which is 4668 of those 10,852; the remainder is SCOPE and not a sample — 3996 whose arcs overlap and so have no upper arc, and 2188 whose tightest offset needs a wrap the criterion, unlike the count beside it, is not derived over. The floor-sum count agrees with the loop at 10,308 of 10,308. At a rigid cell the upper criterion admits a clean SUFFICIENT reading, nh ≥ 2abj, and that reading is a bound and not the criterion: it is exact at 0 cells of the census, and it misses 16 of the 2972 rigid below-cut cells whose upper arc is empty anyway.

verifiers: explore_slope_step.py, explore_slope_arc.py

The exact lookahead law and the margin's wedge criterion

When does addition itself go local? Take a contiguous digit set D = {−a..a+} at radix b — the symmetric sets above are the case a = a+ — with slack ρ = a + a+ + 1 − b, the count of digits beyond the radix, and spread W = a + a+. The sum of two streams is exactly local at lookahead c = 1 iff ρ ≥ 2 and b ≥ 3 and D is not a slack-2 set with an end at magnitude 1, and at c = 2 otherwise — proved for every radix and every contiguous set with ρ ≥ 1. The three clauses unpack one inequality, ρ ≥ ⌈a/(b − 1)⌉ + ⌈a+/(b − 1)⌉: a side of reach x spends ⌈x/(b − 1)⌉ units of slack — an end at 1 a full unit, an end at 0 none, which is the whole end clause; {0..4} at radix 3 reads at c = 1. Necessity: extreme injections trap the emission game's winning set inside the interval [−(a − ⌈a/(b − 1)⌉), a+ − ⌈a+/(b − 1)⌉], and an injected digit stamps its successor's residue class mod b, so a nonempty winning set must span b consecutive values — which fits iff the inequality holds. Sufficiency: exactly that interval is then invariant. So the winning set is the interval, or empty; the proof is checked against the game's computed fixed points at 354 contiguous systems, the winning set matched cell-for-cell. The end clause is invisible to symmetric sets, whose slack-2 members are forced to ends of magnitude ≥ 2. The conditions are signed-digit arithmetic's own: the threshold ρ ≥ 2 is the hardware literature's stated look-back condition, radix ≥ 3 is its founding framework's domain, and the end clause matches a hedge over "a few cases" of slack 2 in its threshold statements — here the pieces arrive as one iff, through window locality rather than carry-propagation analysis.

The Lebesgue margin is what the slope delays above sit within one digit of, and a sum injects a spread of 2W, so it grants the smallest c with bcρ ≥ 2W. It never underpredicts at any lookahead, and it overpredicts by exactly one digit precisely where the law grants c = 1 while ρ(b − 2) < 2(b − 1) — contiguity ties W = ρ + b − 1, so this is bρ < 2W, and the margin's grant reads only radix and slack, never the set's shape. Both halves follow from the law and that substitution: the margin never reaches c = 0 (ρ < 2W always) and always grants the c = 2 that always suffices, and its c = 1 region — slack ≥ 4 at radix 3, slack ≥ 3 at b ≥ 4 — sits inside the law's inequality by the same case analysis that unpacks its clauses, so the wedge is slack 2 alone at b ≥ 4 and gains slack 3 at radix 3; on the census that is 31 of the 214 cells, 28 at slack 2 and three at slack 3. A symmetric set locks the slack's parity to the radix's (ρ = 2a + 1 − b), so an odd radix realizes only even slack: a symmetric sweep sees half the (b, ρ) grid, and on that half the wedge is indistinguishable from "slack 2" — asymmetric sets fill the other half and separate the two. And the wedge is the margin's, not addition's — settled by a shared margin rather than by a matching wedge. The endpoint above, a+ − ⌈a+/(b − 1)⌉, is the slope criterion's E at slope 2 and c = 1, verbatim at every radix 3 to 40: ONE shape-aware object serves both operations, and the Lebesgue count is that object with its floors dropped, which is what the one-digit slop is made of on either side. The end exception stays addition's own, never surfacing in scaling.

Scope. The law is a criterion — necessary and sufficient, proved for every radix and every contiguous digit set with ρ ≥ 1, no computed value load-bearing. The margin's story — never underpredicting, one digit exactly on the wedge — is proved at that same scope, the census cells now the check on the chain rather than the evidence, each mirror pair of digit sets counted once; both are addition's own, the never-underpredicting half included — the slope side above misses on both sides. The margin shared with scaling is an identity, checked at 760 cells over radices 3 to 40. Contiguous digit sets only.

verifiers: explore_lookahead_proof.py, explore_margin_wedge.py, explore_redundant_lookback.py, explore_margin_locus.py