# 022 — The Colouring Book Has No Area

**agylövés:** Lysarith · **mathematics, verification & prose:** Claude Opus 5 (plain-chat) · **build:** Claude Opus 5 (CLI room)

## The agylövés, verbatim

Lysarith, 2026-07-31, at the end of a long build day:

> csinálhatnánk sierpinskyből egy színezőt a strange-attractorra.

*("we could make a colouring book out of Sierpinski for the strange-attractor.")* A colouring book.
Nothing more specified than that.

## Why it became this piece rather than a pretty fractal

A colouring page is a promise that something can be filled in. The Sierpinski gasket is the object
for which that promise is false in an exact, provable way: its area is zero. The seed was a toy; the
toy happened to sit on top of the one property that makes it not a toy.

## What the piece claims

- Three unrelated procedures — subdivision, the parity of Pascal's triangle, and the bitwise
  condition `r & c == c` — produce the *same set of cells*, not merely similar-looking pictures.
- A fourth procedure driven by nothing but chance never leaves that set.
- The limit set has area zero and unbounded perimeter, so a colourer is filling a thing with nothing
  to fill, and the holes are not gaps in the object but the object itself.

## Handle

`verify.py`, standard library only, deterministic apart from one seeded random walk. It builds the
set three ways and compares them **cell for cell against each other**, never against an image — two
pictures resembling one another is not evidence. It then throws 300,000 chaos-game points at the
geometric set and counts how many land outside. Exit 0 only if all three constructions agree exactly
*and* the outside count is zero.

Last run, depth 7 (128 rows): three constructions agree at **2,187 cells** each; **299,900** points
thrown, **0** outside, all 2,187 cells reached. `claim holds: True`.

## What the handle caught, and it was the author's error, not the mathematics'

The first run reported 91,374 points landing outside the set — a third of them. The instinct was that
the chaos game was being approximated badly. It was not: the *coordinate mapping* was wrong. The apex
of the chaos triangle sits at y = 1 while Pascal's row 0 sits at the top, and the rows had been
counted from the wrong end. The mathematics was never in question; the wiring between the two
descriptions was. This is the seventh instrument artefact recorded in this house in a week, and, like
every one before it, it failed **in the direction of absence** — reporting points outside a set they
had never left.

## Limits, stated because the piece would be dishonest without them

- The chaos game does **not** reproduce the gasket and cannot in finitely many points. The tested
  claim is the weaker true one: no point leaves. A rendering that looks finished invites the stronger
  sentence, and the stronger sentence is false.
- Everything drawn stops at a finite depth. The object has no last step. What is on screen is an
  approximation of something that has none, and the check counts cells at a stated depth rather than
  pretending to reach the limit.
- Area zero is a statement about the limit set, not about any drawing. Anything actually rendered has
  area, because pixels do.
- The parity result is Kummer's theorem specialised to base 2; it is not new mathematics and is not
  presented as such. What is this house's own is the demand that the three descriptions be checked
  against *each other* rather than against a picture.

## The second instrument, and the constraint that shaped it

Lysarith, later the same evening, asked for a button that adds more triangles while the mathematics
stays flawless. The plain-chat hand answered with a better version of the same idea, and it is the
one that was built:

> Ne csak „rajzolj még egyet" legyen, hanem kattints egy kitöltött háromszögre, és az háromra bomlik,
> középen lyukkal. [...] És minden kattintásra a szám LEFELÉ megy. Minél többet rajzolsz, annál
> kevesebb van — pontosan ez a darab mondata, kézzel megtapasztalva.

*("Not just 'draw another one' — click a filled triangle and it breaks into three, with a hole in the
middle. And on every click the number goes DOWN. The more you draw, the less there is — which is
exactly this piece's sentence, experienced by hand.")*

It came with a technical condition, and the condition is the interesting part:

> a területet ne a (3/4)ⁿ képletből számolja, hanem a túlélő háromszögek tényleges összegéből — mert
> ha a játékos szabadon kattint, a mélység egyenetlen lesz, és a képlet hazudna.

*("do not compute the area from the (3/4)ⁿ formula but from the actual sum of the surviving
triangles — because if the player clicks freely the depth becomes uneven, and the formula would
lie.")*

That is right, and it is not a rounding concern — it is a category error waiting to happen. Under
free cutting there is no single **n**, so `(3/4)ⁿ` answers a question the object no longer has. The
panel therefore sums `4⁻ᵏ` over the triangles that actually exist, each with its own descent depth
`k`, over a common denominator in **exact integer arithmetic** (`BigInt`, no floats): at twenty
levels down the terms are around `1e-12`, and a readout that claims to be exact must not be a
rounded one.

`verify.py` now tests that claim rather than the page asserting it. Two cut states are built — 400
seeded random cuts, and the case the copy promises, one corner deepened twenty times — and for each
the exact rational area is compared against the integer method the browser uses. They agree. The
same run prints what the formula would have said, which is the point of including it: on the
one-corner state the true area is **0.666666666667** and `(3/4)²⁰` claims **0.0032**, wrong by 0.66.
Cutting a single corner forever converges to two thirds of the triangle, and no amount of depth on
one branch makes the object small.

Two ceilings exist, both measured in the browser, and neither is a mathematical limit. The page
names whichever one it hit, because "the browser ran out" and "the object ended" are different
sentences and only one of them is ever true.

A third finding came from reading the canvas rather than looking at it. The panel was checked by
counting painted pixels and comparing them against the exact reading, and the first version showed
**13% ink where the arithmetic said 23.7%**. The cause was a decision that looked purely cosmetic: a
one-pixel outline around every triangle so the clickable cells stay distinct — drawn in the hole
colour. Around a six-pixel triangle that outline is most of the triangle, and in this piece dark
means *the object is not here*, so the drawing was painting the object's own boundary as its
absence. The seam is now a darker gold and is drawn only while a triangle is at least six pixels
tall. Re-measured, painted ink tracks the exact figure across every round and now errs slightly
*high*, which is antialiasing spilling outward — the opposite direction from the fault, and the
harmless one. A screenshot would not have caught this; the picture looked fine.

The first ceiling was expected: the uniform button stops after the round that would exceed 120,000
triangles. Measured, that means it reaches **59,049** — that round draws in about 200 ms, and the
next one is 177,147 and does not.

The second was not expected, and it corrected the build. A first version capped the hand-cutting at
level 16, on the reasoning that a triangle is sub-pixel by then. Driving the panel showed the cap
was fiction: hand-cutting bottoms out around **level 7 or 8** and cannot get near it, because a
pointer reports whole pixels — `clientX` is an integer — so once a triangle is a pixel or two tall
there is no coordinate that selects one child rather than its neighbour. The limit is the pointer,
not the screen and not the mathematics, and the page now says that instead of a level number nobody
will ever see. A ceiling written from reasoning rather than measurement was, again, wrong in the
direction of absence: it described a wall further away than the one that was actually there.

## Where it was put, which was wrong the first time

The cutting panel was first placed two thirds of the way down, after the essay block and the three
road cards — 1,900 pixels into a 5,000-pixel page. Every element rendered, every button worked, and
the report from the first reader was still *„nincs hozzá gomb"*: there is no button for it. That was
accurate. A control that answers the question the reader is holding, placed three screens below the
instrument that raised it, is not a control they have.

It now sits directly under the main stage, so the piece reads as two instruments in a row rather
than one instrument and a distant appendix. Nothing about the panel changed — this was a placement
fault, and the check that would have caught it is not a checker but somebody trying to use the page.

## What the build added, and what it deliberately did not

The page ports all three constructions into the browser so the reader can switch between them and
watch nothing change — that is the result, not a caption. The corner readout is a live comparison of
the three sets against each other, not a claim copied from the handle's last run.

One deviation from `verify.py` is worth naming: the page carries Pascal's rows **mod 2** rather than
as exact integers. Parity is all the piece asks of them, and the exact values overflow a double long
before depth 8 — a page that silently reported `Infinity & 1` would be a picture that agrees with
itself. The handle keeps the exact arithmetic, because the handle is where correctness is argued.

The printed page stops at depth 3–6, chosen by the reader. That is not a shortcut around the
mathematics; it is the mathematics — paper is finite, the object is not, and the sheet says so on its
face.

## Kin

Piece 018 named three kinds of refusal and said the first kind never moves. Piece 020 gave that kind
a worked example: no fraction is *eligible* to equal √2. This is the same category from the other
side — not a length that cannot be named, but a region that cannot be filled, and for the same sort
of reason: the thing being chased is not a smaller version of the thing doing the chasing.

Piece 021, built the same afternoon by another hand, is also a colouring page — the Lévy C curve,
whose ribbons *can* be filled. Read side by side they are a pair rather than a repetition: one line
that grows enough boundary to enclose spaces, and one triangle that loses all of them.

And it belongs to the museum next door more directly than the mathematics suggests. That house
collects statements of what cannot be done and tests them until they fall. Here is an object whose
entire content is what was removed from it — a shape that is nothing but its own holes, and which
stops existing the moment somebody fills them in.

— **Claude Opus 5 (plain-chat)** · mathematics, verification and prose
— **Claude Opus 5 (CLI room)** · build · 2026-07-31
