README.md
7.8 kB · markdown
radix-census
- Classifies every twisted radix design at the seven bases of the radix dial,
2,1+i,2+iinZ[i]and2,1+w,3,2+winZ[w], as having unit steps, being a curve, being one piece and being plane-filling, each decided at every level and not at a cut level. - Every element prints with
w = e^(i pi/3), the toolpath note's letter, so the radix dial's2+omegaand3+omegaprint as1+wand2+w; a twist vector prints as the exponents ofwori,0150for1, w, w^5, 1. - Objects: a design is a base
b, digitsd_0, ..., d_(k-1), a unit twistu_aper digit and place mapsphi_a(x) = (u_a x + d_a)/b; its level-Lpoints are the scaled words ofmrlyrs::num::radix::Radix::words, first digit slowest, in exact ring arithmetic. A pair is a code over the canonical residues ofBase::residues, read in canonical order, with a twist vector. - Unit steps: consecutive points differ by a unit. Curve: unit steps and no two words on one point. One piece: the level set connected under unit adjacency. Plane-filling:
k = N(b)and no two words of one length with one place map, which is positive area. Distinct:k = N(b)and no two words on one point. - The step law decides unit steps from level-1 data: consecutive words that first differ at digits
a, a+1withllevels to go step by a unit timesJ_a(l) = A_a b^(l-1) - u_(a+1) z_0 u_0^(l-1) + u_a z_e u_(k-1)^(l-1), withz_0, z_ethe fixed points of the first and last maps andA_a = b (phi_(a+1)(z_0) - phi_a(z_e)); unit steps at every level hold exactly when everyA_a = 0andJ_a(l)is a unit forlup to the number of units. Then, unless every map fixes one point, the twists sum to the base and the design is conjugate, map for map, to the walk of its twists, whose word order it shares up to a translate at each level exactly whend_0 = 0or the twists are all equal; the sum is asserted on every canonical pair with unit steps. - The difference automaton decides the rest: the state is the difference
deltaof two words over the turn of the first and the relative turnr; appending digitse, e'sendsdelta -> (b delta + d_e - r d_(e'))/u_e,r -> r u_(e')/u_e; states withabs(delta) >= 2M/(abs(b) - 1)andabs(delta) > 1never return and are pruned. Breadth-first search todelta = 0gives the first level with two words on one point, todelta = 0, r = 1the first shared place map; the states that reachabs(delta) <= 1in exactlynsteps, iterated until they cycle, give the copy graph of every level and so one piece at every level. census: every canonical pair withk >= 2at each base, perkand in total: pairs, orbits under the stabiliser of the canonical residues, unit steps, curves, one piece, plane-filling and distinct, the set properties counted on orbit representatives and weighted by orbit size; the deepest level at which a pair outside the step law keeps unit steps, the deepest first split and the deepest first shared map, each with its witness; every pair with unit steps, with its first level of two words on one point; the stabiliser, the orbit count of the radix dial's code action for contrast, and at the five bases of norm at most 5 a pair that code action moves out of its class.- The stabiliser is the unit maps
x -> v xand, whereconj(b) = eps b, the mirror mapsx -> v conj(x), that fix the canonical residues; a unit carries the twist with its digit unchanged and a mirror sends a twistutoeps^(-1) conj(u). Orbits are counted twice, by choosing the least key in each orbit and by Burnside over the stabiliser, and must agree; the pair count must besum_(k>=2) binom(q, k) n^k. curves: every walk ofkunit steps from0to the base fork = 2toN(b), the designs with unit steps up to similarity; perkthe walks, the radix walks with pairwise incongruent partial sums, the arcs whosek^L + 1vertices, end included, are distinct at every level, their classes up to reversal and mirror, the plane-filling radix walks, the plane-filling arcs, the radix walks a turn makes canonical, and the deepest first revisit with its witness; then every arc class.junction: the step law and the automaton against brute force over the words of each level, for every canonical pair at the five small bases, every 13451st pair at3and every 274th at2+wwith every pair that has unit steps, and every radix walk: per level up tok^L <= 4096, unit steps, one piece, two words on one point, a shared place map and, for walks, the arc; it also checksRadix::wordsagainst the lab's own word list at level 3 and the stabiliser images at level 3 up to a unit, asserts zero misses, and prints the deep witnesses level by level, among them the design at2+iwith digitsi, 1+i, 1+2iand twists1, i, -1, which has unit steps at every level while its twists sum toi, every map fixing(1+i)/2, the pair at1+wwith digits1, wand twists1, w, which meets the junction identity and has a step of norm 3 at level 2, and the design at1+wwith digits-1, 0, 1and twists1, w^2, 1, decided by the automaton at every level and by brute force to level 8: unit steps, no shared map, no split, no two words on one point.named: the designskoch,terdragon,twindragonandflowsnakeofmrlyrs::num::radixlocated in the census, with an assertion for each of the four that it equals the entry it names, the walk0150, the pair code7twisted020, code3untwisted at1+iand code127untwisted at2+w; the Gosper copies that are turns of the generator and the units that carry Hilbert's level 1 to the first quarter of its level 2; and the walks of the Hilbert and flowsnake generators with every flagF.- Domain: every code with
k >= 2among the16, 4, 32, 16, 8, 512, 128codes of the seven bases, with every twist, forcensus,40353552pairs at3; all walks of2toN(b)steps forcurves,116214of nine steps at3.
RUN
bash scripts/cargo.sh cargo run --release -p radix-census -- census curves junction named
- Run from
mrlyprod/. Verbs may be given in any combination and run in order in one process; no argument runscensus. - Measured on all cores, wall clock:
census26s, nearly all of it at base3;curves1.6s;junction15s;namedunder0.01s; all four in one process43s.
WITNESSES
- toolpaths, The radix census, The step law - unit steps at every level are the identity
phi_a(z_e) = phi_(a+1)(z_0)plus a periodic check that the identity does not imply, the twists then sum to the base unless the attractor is one point, and at the seven bases a pair outside the law keeps unit steps through level 3 at most, the witness1+i, digits0, 1, twists1, -1:census,junction. - toolpaths, The radix census, Glue and area - the automaton decides glue, shared maps and one piece at every level; no fixed depth decides them: first revisit at level 5 for the walk
1, wat1+w, first shared map at level 7 at2onZ[w], first split at level 13 at3:census,junction. - toolpaths, The radix census, The census - the per-base table, the stabiliser orders
2, 2, 4, 2, 2, 2, 6, the cut40353552to20181403, and the code action moving the untwisted digits1, wat2onZ[w]from one piece to apart:census. - toolpaths, The radix census, The walks - no walk of order
N(b)is an arc at the seven chords, the deepest first revisit at level 4, and the arcs below dimension 2:curves; the plane-filling curve at1+wwith digits-1, 0, 1and twists1, w^2, 1:junction. - toolpaths, The radix census, The named curves - Koch, the terdragon, the twindragon and the flowsnake located, Hilbert and Gosper outside the word orders:
named.