Is open; please tell us what you think!
How powerful are general-purpose programming languages?
true
iff a string is in the language.What does it mean for two sets to have the same size?
This definition also works for infinite sets!
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | $\ldots$ |
0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | $\ldots$ |
$\N$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | $\ldots$ |
$\Z$ | 0 | 1 | -1 | 2 | -2 | 3 | -3 | 4 | -4 | 5 | -5 | $\ldots$ |
There are infinitely many rationals between any two rational numbers.
➚1 / 1 | ➚1 / 2 | ➚1 / 3 | ➚1 / 4 | ➚1 / 5 | ➚1 / 6 | ➚1 / 7 | ➚1 / 8 | $\ldots$ |
➚2 / 1 | ➚2 / 2 | ➚2 / 3 | ➚2 / 4 | ➚2 / 5 | ➚2 / 6 | ➚2 / 7 | ➚2 / 8 | $\ldots$ |
➚3 / 1 | ➚3 / 2 | ➚3 / 3 | ➚3 / 4 | ➚3 / 5 | ➚3 / 6 | ➚3 / 7 | ➚3 / 8 | $\ldots$ |
➚4 / 1 | ➚4 / 2 | ➚4 / 3 | ➚4 / 4 | ➚4 / 5 | ➚4 / 6 | ➚4 / 7 | ➚4 / 8 | $\ldots$ |
➚5 / 1 | ➚5 / 2 | ➚5 / 3 | ➚5 / 4 | ➚5 / 5 | ➚5 / 6 | ➚5 / 7 | ➚5 / 8 | $\ldots$ |
➚6 / 1 | ➚6 / 2 | ➚6 / 3 | ➚6 / 4 | ➚6 / 5 | ➚6 / 6 | ➚6 / 7 | ➚6 / 8 | $\ldots$ |
➚7 / 1 | ➚7 / 2 | ➚7 / 3 | ➚7 / 4 | ➚7 / 5 | ➚7 / 6 | ➚7 / 7 | ➚7 / 8 | $\ldots$ |
$\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\ldots$ |
➚1 / 1 | ➚1 / 2 | ➚1 / 3 | ➚1 / 4 | ➚1 / 5 | ➚1 / 6 | ➚1 / 7 | ➚1 / 8 | $\ldots$ |
➚2 / 1 | ➚2 / 2 | ➚2 / 3 | ➚2 / 4 | ➚2 / 5 | ➚2 / 6 | ➚2 / 7 | ➚2 / 8 | $\ldots$ |
➚3 / 1 | ➚3 / 2 | ➚3 / 3 | ➚3 / 4 | ➚3 / 5 | ➚3 / 6 | ➚3 / 7 | ➚3 / 8 | $\ldots$ |
➚4 / 1 | ➚4 / 2 | ➚4 / 3 | ➚4 / 4 | ➚4 / 5 | ➚4 / 6 | ➚4 / 7 | ➚4 / 8 | $\ldots$ |
➚5 / 1 | ➚5 / 2 | ➚5 / 3 | ➚5 / 4 | ➚5 / 5 | ➚5 / 6 | ➚5 / 7 | ➚5 / 8 | $\ldots$ |
➚6 / 1 | ➚6 / 2 | ➚6 / 3 | ➚6 / 4 | ➚6 / 5 | ➚6 / 6 | ➚6 / 7 | ➚6 / 8 | $\ldots$ |
➚7 / 1 | ➚7 / 2 | ➚7 / 3 | ➚7 / 4 | ➚7 / 5 | ➚7 / 6 | ➚7 / 7 | ➚7 / 8 | $\ldots$ |
$\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\ldots$ |
The set of all positive rational numbers is countable.
List elements in the order of the sum of the numerator and denominator, breaking ties according to the denominator.
Only $k$ pairs of positive numbers add up to $k+1$, so every positive rational number comes up some point.
This technique is called dovetailing.
Java programs are just strings in $\Sigma^* $ where $\Sigma$ is the alphabet of ASCII characters. Since $\Sigma^* $ is countable, so is the set of all Java programs.
This is true for other programming languages too: C, C++, Python, JavaScript, etc.
So, is everything countable?
Proof will be by contradiction. Using a method called diagonalization.
First, note that every number in $[0,1)$ has an infinite decimal expansion:
This representation is unique except for the cases where the decimal expansion ends in all 0’s or all 9’s. We will use the all 0’s representation.
Suppose for contradiction that there is a list $\{r_0, r_1, r_2, \ldots \}$ of all real numbers in $[0,1)$.
Consider the digits $x_0, x_{1}, x_{2}, x_{3}, \ldots$ on the diagonal of this list, i.e., the $n$-th digit of $r_n$ for $n\in\N$.
For each such digit $x_{i}$, construct the digit $\widehat{x}_i$ as follows:
Now, consider the number $\widehat{r} = 0.\widehat{x} _ 0 \widehat{x} _ 1 \widehat{x} _ 2 \widehat{x} _ 3 \ldots$
Note that $r_n \neq \widehat{r}$ for any $n\in\N$ because they differ on the $n$-th digit.
So the list doesn’t include $\widehat{r}$, which is a contradiction. Thus the set $[0, 1)$ is uncountable.
$r_0$ | $0.$$5$$00000000000\ldots$ |
$r_1$ | $0.3$$3$$3333333333\ldots$ |
$r_2$ | $0.14$$2$$857142857\ldots$ |
$r_3$ | $0.141$$5$$92653589\ldots$ |
$r_4$ | $0.2000$$0$$0000000\ldots$ |
$\vdots$ |
Suppose for contradiction that there is a list $\{f_1, f_2, f_3, \ldots \}$ of functions from $\N$ to $\{0,1\}$.
Consider the outputs $x_0, x_1, x_2, x_3, \ldots$ on the diagonal of this list, i.e., $f_n(n)$ for $n\in\N$.
For each such output $x_{i}$, construct $\widehat{x}_i$ as follows:
Now, consider the function $\widehat{f}(n) = \widehat{x} _ {n}$.
Note that $f_n \neq \widehat{f}$ for any $n\in\N$ because the functions differ on the $n$-th output.
So the list doesn’t include $\widehat{f}$, which is a contradiction. Thus the set $\{f \,|\, f:\N\to\{0,1\}\}$ is uncountable.
$f_0$ | $0$$\,0\,0\,0\,0\,0\,0\,0\,0\ldots$ |
$f_1$ | $1\,$$1$$\,1\,1\,1\,1\,1\,1\,1\ldots$ |
$f_2$ | $0\,1\,$$0$$\,1\,0\,1\,0\,1\,0\ldots$ |
$f_3$ | $0\,1\,1\,$$1$$\,0\,1\,1\,1\,0\ldots$ |
$f_4$ | $1\,1\,0\,0\,$$0$$\,1\,1\,0\,0\ldots$ |
$\vdots$ |
Are there problems computers can’t solve?
So there must be some function $f : \N \to \{0,1\}$ that is not computable by any program! We’ll study one such function next time.