Hand me any list that claims to hold every infinite binary sequence, and I will build one you left out — reading down the diagonal and flipping each bit. The new sequence differs from row i at position i, so it is nowhere in your list. No enumeration of the reals can be complete: there are strictly more of them than integers. Down the center the list goes in, the anti-diagonal comes out. The blue team builds it; the red team tries to trap the escapee back inside.
source Cantor, Über eine elementare Frage der Mannigfaltigkeitslehre (1891), in Gesammelte Abhandlungen, ed. Zermelo — archive.org/details/gesammelteabhand0000cant. Rendered, not quoted.
The whole proof is a single line: d[i] = 1 − row[i][i]. Walk the diagonal of the grid (the pink cells), and for each entry write the opposite bit.
By construction d disagrees with row i exactly at position i. So d cannot be row 0 (they differ at 0), cannot be row 1 (differ at 1), … cannot be any row. Live diagonal vs. anti-diagonal for the grid in the panel:
This holds no matter what bits you type — edit the grid and watch. The escape is mechanical, not lucky.
The trick is diagonalization, and it is the same key that opens two later locks. Gödel (1931) numbers every sentence, then builds one that reads "row g is not provable" — the sentence sitting on its own diagonal. Turing (1936) lists every program, then defines one that does the opposite of what the diagonal program does with its own code.
Each is the previous sphere's move turned on itself: a list can never contain its own diagonal. That single impossibility is the seam this sphere shares with the next.
The blue team's live check: recompute d from the current grid and confirm both defences — d differs from the diagonal everywhere, and d is not among the rows. If red copies the diagonal instead of flipping it, this is where it shows.
Feed the machine a numbered list that claims to enumerate every infinite binary sequence in [0,1): row 0, row 1, row 2, … Each row is one real written in base 2; the … means it runs on forever. This is the adversary's best offer: "here is all of them."
Cantor's 1891 paper states this over sequences of two symbols (he wrote m and w); reading them as 0 and 1 is the same set, 2ℕ. The panel below is where that list meets the diagonal.
Click any bit to edit a row. The pink cells are the diagonal; the green d row is the anti-diagonal, recomputed live.
The anti-diagonal is computed bit-by-bit from the grid on the spot — never stored, never looked up.
What the machine produces, proven: a sequence d that is demonstrably not on the list — for every row i, d and row i disagree at position i. Since d is a perfectly good element of the set, the list was incomplete. And the argument works against any list, so no enumeration exists: 2ℕ — and therefore the reals — is uncountable.
The blue team's witness (left) confirms d escapes live; the red team (right) tries to force it back inside.
Wittgenstein pressed the same nerve — the diagonal shows you can always name a new sequence given a list, which is not obviously the same as "there exist more of them." The panel is honest about this: it exhibits the mechanism, not a metaphysics.
"Diagonalization was Cantor's first uncountability proof." Cut. His first was 1874 (nested intervals). The 1891 diagonal is the second — simpler, and the one that generalized.
"It proves the reals uncountable directly." Corrected. The paper is about {0,1}-sequences. The step to the reals needs care: 0.0111… = 0.1000…, so dual representations must be handled before the counts line up.
"Just add d to the list to fix it." Cut. You can — but the new list has its own diagonal, and the argument re-applies. No enumeration survives.
The red team's move: don't flip the diagonal — copy it. Set d[i] = row[i][i]. Now d agrees with the diagonal everywhere and lands right back on a row (for the default list, it becomes row 0). The blue team's witness (window 7) is watching.
Copy instead of flip and d stops differing — it re-enters the list, and the "escape" collapses. The witness recomputes, sees d trapped inside, and turns red. Nothing is faked; it changes a real computed value and it is caught.