This is a mirror of the post at https://medium.com/@VitalikButerin/cantor-was-wrong-debunking-the-infinite-set-hierarchy-e9ba5015102.
By Vitalik Buterin, PhD at University of Basel
A common strand of mathematics argues that, rather than being one single kind of infinity, there are actually an infinite hierarchy of different levels of infinity. Whereas the size of the set of integers is just plain infinite, and the set of rational numbers is just as big as the integers (because you can map every rational number to an integer by interleaving the digits of its numerator and denominator, eg.
First of all, I should note that it’s relatively easy to see that the claim that there is no mapping is false. Here’s a simple mapping. For a given real number, give me a (deterministic) python program that will print out digits of it (eg. for π, that might be a program that calculates better and better approximations using the infinite series n = int.from_bytes(open('program.py').read(), 'big')
) and then output the number. Done. There’s the mapping from real numbers to integers.
Now let’s take a look at the most common argument used to claim that no such mapping can exist, namely Cantor’s diagonal argument. Here’s an exposition from UC Denver; it’s short so I’ll just screenshot the whole thing:
Now, here’s the fundamental flaw in this argument: decimal expansions of real numbers are not unique. To provide a counterexample in the exact format that the “proof” requires, consider the set (numbers written in binary), with diagonal digits bolded:
-
x[1] = 0.000000...
-
x[2] = 0.011111...
-
x[3] = 0.001111...
-
x[4] = 0.000111...
-
…..
The diagonal gives: 01111….. If we flip every digit, we get the number:
And here lies the problem: just as in decimal, 0.9999…. equals 1, in binary 0.01111….. equals 0.10000….. And so even though the new *decimal expansion *is not in the original list, the number
Note that this directly implies that the halting problem is in fact solvable. To see why, imagine a computer program that someone claims will not halt. Let c[1] be the state of the program after one step, c[2] after two steps, etc. Let x[1], x[2], x[3]…. be a full enumeration of all real numbers (which exists, as we proved above), expressed in base
Patent on this research is pending.