# The spirograph loops - 2026-09-10 [Proved] On a circle track `a/b` in lowest terms, with `s = -1` inside and `s = 1` outside and `rho = a + s b`, a pencil at real seat `t` wheel radii draws `z(phi) = rho e^(i b phi) + t b e^(i s rho phi)` on `[0, 2 pi)`. Setting `sigma` and `delta` for the half sum and half difference, `z(phi) = z(psi)` reads `rho sin(b delta) + t b sin(s rho delta) e^(i s a sigma) = 0`, so `sigma` is a multiple of `pi / a` and `rho sin(b delta) = e t b sin(rho delta)` with `e` plus or minus one. The number of unordered parameter pairs that meet is `a/2` times the number of such `delta` in the open interval `(0, pi)` over both signs. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] Every self crossing of a trochoid on a circle track lies on one of the `a` mirror lines through the centre: the reflection in the line of angle `b sigma` fixes it. For a real seat those lines are `k pi / a`; a seat at angle `alpha` turns the curve by `-s b alpha / a` and turns its lines with it. Read off `mrlynum::spirograph::trace` at 24001 samples, the worst distance from a crossing to its line is `4.33e-7` of the frame over 30 cells at seat angles `0` and `0.3`, the floor being the `f32` the trace returns. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Proved] A trochoid on a circle track has a point of multiplicity above two at exactly one reach, `rho / b`: a multiple point needs every pairwise `delta` to be a multiple of `pi / a`, and such a `delta` solves the crossing equation only there, where the curve runs through the centre at the `a` parameters `(2j+1) pi / a`. So the distinct double point count equals the parameter pair count elsewhere and falls short by `C(a, 2) - 1` at that reach. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Proved] The parameter pair count of a trochoid on a circle track changes only where the crossing equation has a double root, and those are exactly the roots `delta` of `a sin(m delta) = m sin(a delta)`, equivalently `sinc(m delta) = sinc(a delta)`, with `m = a + 2 s b`. Each carries the reach `abs(cos(b delta) / cos(rho delta))`, read as `abs(rho sin(b delta)) / abs(b sin(rho delta))` where both cosines vanish. A threshold is one such angle in `[0, pi)`, not a reach; several angles can share a reach. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] The ends `delta = 0` and `delta = pi` solve the crossing equation of a trochoid on a circle track at every reach, and a root is born at each end as the reach passes one, since the derivative there is `rho b (1 - e t)` and `rho b ((-1)^b - e t (-1)^rho)`. The single tangency angle at `delta = 0` stands for both births, which is why the jump at reach one is `a` and not `a/2`. Read off the equation, `3/1` inside has no root in `(0, pi)` at reach `0.98` and two at reach `1.02`, at `0.1984` and `2.9432`, count three. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] On a tangency reach a trochoid on a circle track touches itself: the two branches meet with equal tangents, a tacnode, so the meeting count there is the transversal count just below plus `a/2` for each tangency angle at that reach. The step function is read on the open intervals between tangency reaches and never on one. At reach squared `27/2` the hypotrochoid `5/1` has two tangency angles and two simple roots, so ten meetings against five below and fifteen above, the branches closing to `8.88e-16` at radius `2.041241`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] Swapping the wheel frequency `b` and the rim frequency `rho` of a trochoid on a circle track fixes every tangency angle, because the unordered pair `{a, abs(m)}` is `{rho + b, abs(rho - b)}` either way, and inverts every tangency reach, because `abs(cos(b delta) / cos(rho delta))` inverts. So the thresholds depend on the ordered pair and the falling `a < 2b` staircase is the reciprocal of the rising `a > 2b` one: `5/1` inside steps at `3.674234614175` and `5/4` inside at `0.272165527`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] The tangency equation of a trochoid on a circle track integrates: `a sin(m delta) - m sin(a delta)` is `2 a m` times the integral of `sin(b t) sin(rho t)` from `0` to `delta`, up to sign. That integral's derivative vanishes on `(0, pi)` only at `j pi / rho` and `k pi / b`, and there the integral is exactly `(-1)^(j+1) sin(b j pi / rho) rho / (rho^2 - b^2)` and `(-1)^k sin(rho k pi / b) b / (rho^2 - b^2)`, so the threshold count is a sign count over a merged Farey sequence and carries no numerics at all. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] Every tangency reach of a trochoid on a circle track is an algebraic number in closed form. Expanding `sin(k delta)` and `cos(k delta)` in `u = sin^2(delta)` by the integer recursion of Sakhnovich 2023, theorems 2.1 and 2.5, the tangency equation becomes `u Q(u) = 0`, times `cos(delta)` when `a` is even, for an explicit integer polynomial `Q`, and the reach squared is `T(u) / B(u)` for explicit integer polynomials `T` and `B`. The recursion is the cited source's; `Q`, `T` and `B` are this study's. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] Two pencils at complex seats `p` and `q` on one wheel of a circle track `a/b`, drawing distinct curves, meet at exactly `(a/2) N` unordered parameter pairs, where `N` counts the roots in `[0, 2 pi)` of `rho^2 sin^2(b delta) = b^2 (P sin^2(rho delta) + E cos^2(rho delta) - s X sin(2 rho delta))` with `P` and `E` the squared halves of the sum and difference of the seats and `X` half the imaginary part of `q` times the conjugate of `p`. The equation is `pi` periodic in `delta` so `N` is even and the halving is exact. Witness: lab/rs/roulette-loops. - 2026-09-10 [Proved] The pair law counts parameter pairs, and a point count needs more: no self crossing of either curve may lie on the other, and neither seat may sit at reach `rho / b`, where that curve alone loses `C(a, 2) - 1` points into the centre. The extra condition is codimension one and is not implied by the curves being distinct.: `3/1` inside with one seat at reach `sqrt 5 - 1` and one at the wheel's centre gives six parameter pairs and three points, all at radius `rho`, while two percent either side gives six points. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Proved] A pencil at the wheel's centre of a circle track `a/b` draws the circle of radius `rho`, and the pair law collapses to `abs(sin(b delta)) = b t / (2 rho)` against a pencil at reach `t`, so those two curves meet `2 a b` times below reach `2 rho / b` and never above; `10/3` at `8/3` inside, read as `48` then `0` off the trace. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Verified] For reach positive, not a tangency reach, not `rho / b`, and `m` nonzero, the self crossing count of a trochoid on a circle track `a/b` is `a (b - 1) + a sign(m) t` with `t` the number of tangency angles whose reach is strictly below, counted with multiplicity. It runs from `a (b - 1)` to `a (rho - 1)`, and the number of angles in `[0, pi)`, counting `delta = 0`, is `abs(rho - b)`, the same integer as the smaller of `abs(m)` and `a`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] The step function of a trochoid on a circle track holds on `179` coprime fractions `a/b` with `a` at most `24`, `357` cases over the two sides with `m` nonzero, against the crossing equation's root count at the midpoint of every step, and on `25578` reads of `mrlynum::spirograph::trace` at `4001` and `12001` samples over reach `0.5` to `4` in `203` steps for `b` in one to six and `a` in `b+1` to eleven coprime, both sides, with no disagreement and every jump bracket `0.0173` wide or less. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Verified] The exact integer sign count of the integral of `sin(b t) sin(rho t)` over its critical values returns `abs(rho - b)` on all `29450` coprime frequency pairs `b` and `rho` up to `220`, with no root finding anywhere in the computation. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] Over all `210` swaps of the wheel and rim frequencies of a hypotrochoid with `b + rho` at most `26`, every tangency reach times its partner under the swap is `1` to within `1.47e-13`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] The hypotrochoid `5/1` has tangency reaches `1` and `3.674234614175` twice, the second exactly reach squared `27/2` at `u = 5/6` on `Q(u) = 40 - 48 u`, and its count runs `0`, `5`, `15`. The hypotrochoid `7/2` has `1` and `2.353415666603` twice, reach squared `(81 + 21 sqrt 21) / 32` at the smaller root of `Q(u) = 192 u^2 - 336 u + 140`, and counts `7`, `14`, `28`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] The epitrochoid `5/1` has tangency reaches `1`, `4.180967894379` twice and `5.789603394549` twice, the last two exactly reach squared `(102 - 7 sqrt 21) / 4` and `(102 + 7 sqrt 21) / 4` on `Q(u) = -320 u^2 + 448 u - 140`, and its count runs `0`, `5`, `15`, `25`, four values for three distinct reaches because two angles share each of the last two. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] When `a` is even, `delta = pi/2` is always a tangency angle of the trochoid on a circle track `a/b` and its reach is the rational `rho / b`, which is also the one reach where the curve runs through the centre with all `a` branches: `3` at `4/1` inside, `5/3` at `8/3` inside, `13/5` at `8/5` outside. There a step and the centre correction fall on the same reach and the step function is not read. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] At reach `rho / b` the distinct self crossing point count of a trochoid with `a` odd is the step function less `C(a, 2) - 1`, read off `mrlynum::spirograph::trace` at 24001 samples as `1` for `3/1`, `5/2`, `5/3` and `7/4` inside, `6` for `5/1` and `5/4` inside, `8` for `7/2` inside, `7` for `3/1`, `10` for `3/2` and `21` for `5/2` outside, the two counts agreeing three percent either side. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Verified] The pair law matches `mrlynum::spirograph::trace` on `48` reads over `5/1`, `7/2` and `8/3` inside and `5/2` outside at reaches `0.6`, `1.3`, `2.4` and `3.7` against three seat kinds, equal reach, shorter reach and the wheel's centre, on the parameter pair count exactly. Witness: lab/rs/roulette-loops, mrlynum::spirograph::trace. - 2026-09-10 [Verified] The pair count `2 a b` of two distinct trochoids from one wheel survives the loop threshold, which is a tangency of one curve with itself and never of two curves with each other. For two seats at one reach and half angle `nu` apart on `5/1` inside it first leaves `2 a b` at `2.242763`, `1.741061`, `1.379486`, `1.143270`, `1.047854`, `1.010207` and `1.002194` for `nu` of `1`, `0.5`, `0.2`, `0.05`, `0.01`, `0.001` and `0.0001`. The pair threshold is not monotone in `nu`: `8/3` inside gives `1.117596` at `nu = 1` against `1.523254` at `nu = 0.5`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Verified] On a tangency reach the meeting count of a trochoid is the count below plus `a/2` per tangency angle there, read as `21` against `14` and `28` for `7/2` inside, `55` against `44` and `66` for `11/4` inside, `6` against `3` and `9` for `3/1` outside, and `15` against `10` and `20` and then `25` against `20` and `30` for `5/2` outside, the two branches closing to `1e-14` or better in every case. Witness: lab/rs/roulette-loops. - 2026-09-10 [Conjecture] For every coprime `a/b` and both sides the trochoid's tangency angle count is `abs(rho - b)` and every angle moves the self crossing count by exactly `a sign(m)`, so the count runs from `a (b - 1)` to `a (rho - 1)` in `abs(rho - b)` equal steps. The angle count is exhaustive to frequency `220` in exact integers and the step size to `a` at most eleven against the trace; what is missing is a proof that the merged Farey sign sequence changes sign exactly `abs(rho - b) - 1` times inside `(0, pi)`. Witness: lab/rs/roulette-loops. - 2026-09-10 [Conjecture] The first reach at which two trochoids from seats at one reach and half angle `nu` apart stop meeting `2 a b` times is above one for every positive `nu`, with infimum one, the excess falling like `nu^(2/3)`. The reading is seven sampled `nu` at one fraction, `5/1` inside, whose excesses fall by `4.69` then `4.65` per decade against `10^(2/3) = 4.64`. There is no bound and no third decade. Witness: lab/rs/roulette-loops.