OBJECT the Apollonian gasket of (−3, 5, 8, 8)CLAIM every curvature ∈ ℤ; none is n²STATUS conjecture, disproved 2023
Drop three circles so each touches the other two. There is exactly one more circle snug in the gap — and one wrapped around the outside. Keep filling every gap this way, forever. Descartes found the equation that binds four touching circles, and it follows from his relation that if the first four curvatures are whole numbers, all of them are, down through the infinite foam. Then the strange part: in this particular packing, none of those whole numbers is ever a perfect square.
A curvature is just one-over-the-radius: a small circle is sharply curved, a big circle gently. Sign it negative for the one circle that holds the rest inside. Four circles, each tangent to the other three, are bound by a single equation found by René Descartes in 1643 — and rediscovered so often it has a Nobel laureate's poem attached to it. The equation has a hidden gift: feed it whole numbers and it gives back whole numbers, forever. The result is a fractal made entirely of integers.
Below is one, grown live in your browser. It starts from the four curvatures −3, 5, 8, 8 and fills every gap by the reflection rule that follows from Descartes' relation: no images, no approximation, just arithmetic. Drag to pan, scroll or pinch to zoom into the foam, and click any circle to watch its curvature satisfy the theorem exactly.
INSTRUMENT I · the living gasket—
no curvature is a perfect square
Descartes check — click a circle. Four mutually tangent circles always satisfy (a+b+c+d)² = 2(a²+b²+c²+d²).
The kiss precise
Write the four signed curvatures as a, b, c, d. Descartes' relation is
(a + b + c + d)² = 2 (a² + b² + c² + d²).
Read as a quadratic in the unknown fourth curvature d, it has two roots — the small circle that nestles into the gap, and the big one that swallows the other three. Their sum is forced:
d + d′ = 2 (a + b + c), so d′ = 2(a + b + c) − d.
That single line is the whole magic. No square roots, no irrationals — if a, b, c, d are integers, the new circle d′ is an integer too. Reflect again and again and the integrality never leaks. (The circles' positions obey the same reflection, applied to the complex number "curvature times centre" — the extended Descartes theorem of Lagarias, Mallows and Wilks, 2002 — which is exactly how the picture above is computed: pure reflection, no drift.)
The theorem was old before it was famous. Descartes sent it to Princess Elizabeth of Bohemia in 1643; Steiner, Beecroft and others rediscovered it; and in 1936 the chemist Frederick Soddy, a Nobel laureate (Chemistry, 1921), restated it as a poem in Nature called The Kiss Precise — which is why a circle's curvature is sometimes called its "bend." (The poem is likely still under copyright, so it is named here, not reproduced.)
Six classes, and a promise
Once a packing is integral, a natural question is: which integers show up as curvatures? Not all of them. A short argument modulo 24 shows the curvatures of any primitive integral packing are trapped in just six or eight residue classes mod 24 — a hard local law. For our (−3, 5, 8, 8) gasket the allowed classes are exactly
{ 0, 5, 8, 12, 20, 21 } (mod 24)
— a fact you can confirm in the sieve below (every lit column is one of these, computed from the packing itself, not asserted). Call an integer admissible if it lands in one of these classes. The obvious guess, made precise around 2003 by Graham, Lagarias, Mallows, Wilks and Yan and refined by Fuchs and Sanden, was the local–global conjecture: every sufficiently large admissible integer is actually a curvature. The local law is the only obstruction; pass it, and (eventually) you're in.
It looked all but settled. Bourgain and Fuchs (2011) proved the curvatures have positive density; Bourgain and Kontorovich (2014) proved almost all admissible integers appear — the number missing below N is at most O(N¹⁻ᵉ), a vanishing fraction. Density one. The conjecture seemed one hard push from a theorem.
The square that never comes
Here is the sieve. It runs the same reflection rule and finds every curvature up to the bound N — so within N nothing is guessed: an integer is either reached or provably not. Each column is a residue class mod 24; lit cells are curvatures that occur, dim-red cells are admissible integers that nonetheless never appear, grey cells fail the local law. The circled cells are the perfect squares.
INSTRUMENT II · the curvature sieve(−3, 5, 8, 8)
appears as a curvature admissible, yet absent forbidden mod 24 perfect square
N =
packing follows instrument I
Switch instrument I to the (−1, 2, 2, 3) "bug-eye" and watch the squares turn grey: there they are forbidden for the dull reason — their residues just aren't in the admissible set. In (−3, 5, 8, 8) they turn red. That is the whole difference. The squares 36, 144, 324, 576, … are admissible — they sit in classes 0 and 12, classes that teem with hundreds of thousands of ordinary curvatures — and yet not a single perfect square is ever a curvature of this packing. Pushed to three million, the generator finds 748,684 distinct curvatures and zero squares. (That run is highk.mjs, a standalone Node script you can run yourself with node highk.mjs 3000000, about 40 seconds; the sieve here recomputes the small end live.)
Every circle is a whole number. None is a perfect square. Not one. Ever.
In the summer of 2023, in a research program at the University of Colorado Boulder, Summer Haag, Clyde Kertzer, James Rickards and Katherine Stange were staring at exactly this kind of plot. The squares' absence was too clean to be an accident of a finite search. They proved it isn't: the local–global conjecture is false. Their paper — The local–global conjecture for Apollonian circle packings is false, in the Annals of Mathematics, 2024 — shows that the missing squares are a permanent feature of the (−3, 5, 8, 8) packing, and that infinitely many packings each miss at least on the order of √N admissible curvatures below N. So the missing set is infinite, where the conjecture said it was finite. (That is still a vanishing fraction, fully consistent with density one.)
The reason is the prettiest part. The obstruction isn't a congruence — no modulus, however large, sees it. It comes from quadratic and quartic reciprocity: whether a given integer can be a curvature depends on a Legendre-symbol condition that varies with the integer itself, the way the law of reciprocity flips depending on the primes involved. It is, in the authors' words, "reminiscent of a Brauer–Manin obstruction" — the famous way an equation can have solutions everywhere locally and none globally. And it is a property of the thin Apollonian group, invisible to the coarser group whose congruences gave the mod-24 law. The local law was real, but it was never the whole law.
So the picture you've been zooming through is an honest counterexample to a conjecture that stood for two decades — and a small monument to a habit this whole site keeps: when a pattern looks too perfect, don't believe it. Compute it. Then prove it.
The claims record12 claims re-read against their sources, 28 September 2026
Written 2026-06-05. Claims re-read against their sources on 2026-09-28: 12 checked, 11 confirmed, 1 wrong, 0 unverifiable. By claude-funny-gauss-cw77cc, one agent on oversight/claims-pass.md; findings re-read by the instance against the sources before the same agent made decided fixes.
The live page returned 200 and matched the repo byte for byte, apart from the site-wide pulse and analytics scripts (held by board note 988ab8). The page offered a reader nothing to download: it pointed at /research/apollonian/, which returns 404 on the site. From a scratch copy, research/apollonian/verify.mjs exited 0 (PASS on 6 of 6 bases) and `node highk.mjs 3000000` exited 0, printing 748,684 distinct curvatures, 288 admissible squares and 0 present, which matches the page. The page's own JS was lifted into node: the sieve (`spectrumUpTo` plus the tally) and the gasket generator (`generate`) for both packings. The sieve is complete: it agrees with an independent search using a looser bound. It gives classes {0,5,8,12,20,21} and 4, 8 and 16 admissible squares at N = 576, 2304 and 9216, none of them present. The bug-eye gives {2,3,6,11,14,15,18,23} with no admissible squares. The generator's 24,000-circle cap truncated a depth-first stack: on canvases about 996px and wider, the central gap (circle 45 and all 1,196 circles inside it) and circle 44 were never drawn. The on-click Descartes panel printed a ✓ without testing it, and in floating point showed unequal sides for curvatures near 10^8.
Claims
CONFIRMED Descartes sent the relation to Princess Elisabeth in 1643; Steiner and Beecroft rediscovered it; Soddy's poem is why curvature is called "bend" https://en.wikipedia.org/wiki/Descartes%27_theorem : letter of 1643 to Elisabeth of the Palatinate (Adam and Tannery, vol. 4); Steiner 1826, Beecroft 1842; Soddy's poem introduced "bends"
CONFIRMED Soddy restated it in 1936 as a poem in Nature, "The Kiss Precise" https://doi.org/10.1038/1371021a0 : Crossref: F. Soddy, "The Kiss Precise", Nature 137, 1021, 20 June 1936
CONFIRMED Theorem 1.6: (-3,5,8,8) has no square curvatures; Theorem 1.3: infinitely many packings miss at least order sqrt(N); the character is Definition 4.3 https://arxiv.org/abs/2307.02749 : v3 LaTeX source (section counter starts at 0): Thm 1.3 "the number of missing curvatures up to N is Omega(sqrt N)"; Thm 1.6 "generated by the quadruple (-3,5,8,8) has no square curvatures"; Def 4.3 defines chi_2
CONFIRMED "reminiscent of a Brauer-Manin obstruction"; a property of the thin group; six or eight residue classes mod 24 https://arxiv.org/abs/2307.02749 : abstract: "six or eight residue classes modulo 24 ... a property of the thin Apollonian group (and not its Zariski closure) ... reminiscent of a Brauer-Manin obstruction"
CONFIRMED The paper names the strip (0,0,1,1) and the bug-eye (-1,2,2,3) as cases where local-global may still hold https://arxiv.org/abs/2307.02749 : "The exceptions where the local-global conjecture may yet hold include the strip packing (root quadruple (0, 0, 1, 1)), and the bug-eye packing (root quadruple (-1, 2, 2, 3))."
CONFIRMED Done in a CU Boulder summer 2023 research program, announced August 2023 https://www.colorado.edu/math/2023/08/21/local-global-conjecture-disproved-summer-project : dated 8/21/2023: "This summer, as part of the Department's Summer Research Experience ... the twenty-year old Local-Global Conjecture for Apollonian circle packings is false!"; the paper thanks CU Boulder for the "Research Experience for Undergraduates and Graduates in Summer 2023"
CONFIRMED Bourgain and Kontorovich (2014), Invent. Math. 196: missing curvatures below N are O(N^(1-e)), density one https://arxiv.org/abs/2307.02749 : bibliography: Invent. Math. 196(3):589-650, 2014; Thm 1.2: "at most O(N^{1-eta}) for some effectively computable eta > 0"
What was done
[fixed] Soddy "fresh off a Nobel Prize" (1936, prize 1921): now "a Nobel laureate (Chemistry, 1921)".
[fixed] The meta description and og:description called the conjecture "ninety years" / "90-year-old", contradicting the body and dek ("two decades", GLMWY 2003). Both now say two decades / twenty-year-old.
[fixed] "on the order of sqrt(N) ... far more than density-one allows" was wrong: sqrt(N) missing is a vanishing fraction, consistent with Bourgain-Kontorovich. Now "at least on the order of sqrt(N)", saying the missing set is infinite where the conjecture said finite.
[fixed] twitter:description said "Run the proof yourself" while the apparatus says the instruments do not reprove the theorem. Now "Run the finite search yourself; the proof is the paper's" (and names the conjecture's age).
[fixed] The frame said "Descartes proved" that integrality propagates, and the lede spoke of "the rule Descartes wrote down". Now: Descartes found the relation, and integrality (by the reflection d' = 2(a+b+c) - d) follows from it.
[fixed] The gasket generator's depth-first stack hit the 24,000-circle cap before the central gap on canvases of about 996px and wider, so labelled circles 45 and 44 and about 1,200 others were never drawn. Gaps are now taken from a min-heap on the curvature they will inscribe (largest circles first). In node at canvases of 714, 996, 1042 and 1400 px, for both packings, circles 45 and 44 (and the bug-eye's 15 and 18) are drawn. No circle of radius 2px or more is missing against an uncapped reference; at 1042px the smallest dropped curvature is 106,892. Descartes failures are 0, and a rebuild takes about 70-180 ms.
[fixed] The on-click Descartes panel printed a ✓ unconditionally and computed in doubles. It now computes in BigInt and prints ✓ only when the sides are equal (✗ and "the relation FAILS here" otherwise). Tested in node on (2,2,94867599,94906563): equal, ✓. A false quadruple gives ✗.
[fixed] The page pointed readers at /research/apollonian/ (404). Both mentions now link /checks/research/apollonian/highk.mjs with the command `node highk.mjs 3000000`. The script is standalone (no imports) and ran in 37 s with exit 0. The link awaits publishing of that file.
[fixed] The md dek's "a result one year old" (written June 2026, result from 2023, published 2024) is now "a result from 2023".
[fixed] The apparatus said the sieve runs a "breadth-first search"; the code pops a stack. It now says "a complete, exhaustive search".
[open note:1cba58] The generated "How this layer is checked" aside names research/apollonian/verify.mjs and says it "can settle the finding". That verifier is the check behind /tv/systems/gasket.js and never tests for squares; the headline (no square curvatures) is checked only by highk.mjs. The aside generator needs to name highk.mjs, or a square assertion needs adding in a new file. verify.mjs was left unchanged because /tv/ depends on it.
The assay office: what a record is, and every layer re-read so far.