Gödel's Undecidability Proof
Suppose that instead of using binary values, this represented an exhaustive list of all statements possible in Gödel's system where the number referenced at each pair of row and column would be a Gödel number. That Gödel number encodes the statement at that coordinate in the table. Each Gödel number can be broken down into a product of prime numbers. When like prime numbers are multiplied together, we represent the number of occurrences by the exponent of the base, as described earlier.
Each row is filled with Gödel numbers that themselves can be encoded using prime factorization to create a Gödel number representing a proof. Thus, each row is an encoding of a proof, with each column being a sentence in that proof.
With this, we can now understand the meaning of each row, column, and the values that comprise each row and column pair. Each row is a proof. For a given row, a statement of the proof is encoded as a Gödel number. If a proof does not extend to the end of the table, the Gödel number $\omega$ values are used to indicate that the proof is completed in a prior column. Each statement is again encoded using the fundamental theorem of arithmetic to form a final Gödel number that encodes the entire proof. Moving across the columns from left to right, the base of each subsequent column is raised to the power of the Gödel number of each column moving from $2$ to $3$ to $5$ and a so on for all subsequent prime numbers.
Gödel is able to encode these statements because there is a one-to-one correspondence between each symbol and its value. Since the value of each symbol is encoded as the exponent of a prime number drawn from an ordered list that correlates with the order of the symbols, there is a one-to-one correspondence between each statement and the Gödel number representing that statement. And since there is a one-to-one correspondence between each statement and each Godel number, the statements across the row can again be encoded using each Gödel number as occurred for the encoding of each statement encoding individual symbols. Thus, a single column of Gödel numbers can represent the entire table.
In sum, each column of the table employed by Gödel contains a Gödel number that refers to a statement from a proof. The following table of statements corresponds to the following table of Gödel numbers.
|
$S_1$ |
$S_2$ |
. . . |
$S_{n-1}$ |
$S_{n}$ |
$P_1$ |
$s_{1,1}$ |
$s_{1,2}$ |
. . . |
$s_{1,n-1}$ |
$s_{1,n}$ |
$P_2$ |
$s_{2,1}$ |
$s_{2,2}$ |
. . . |
$s_{2,n-1}$ |
$s_{2,n}$ |
. . . |
. . . |
. . . |
. . . |
. . . |
. . . |
$P_{n-1}$ |
$s_{n-1,1}$ |
$s_{n-1,2}$ |
. . . |
$s_{n-1,n-1}$ |
$s_{n-1,n}$ |
$$P_{n}$$ |
$$s_{n,1}$$ |
$$s_{n,2}$$ |
. . . |
$$s_{n,n-1}$$ |
$$s_{n,n}$$ |
Since each statement corresponds to a Gödel number, we rewrite:
|
$S_1$ |
$S_2$ |
. . . |
$S_{n-1}$ |
$S_{n}$ |
$P_1$ |
$G_{1,1}$ |
$G_{1,2}$ |
. . . |
$G_{1,n-1}$ |
$G_{1,n}$ |
$P_2$ |
$G_{2,1}$ |
$G_{2,2}$ |
. . . |
$G_{2,n-1}$ |
$G_{2,n}$ |
. . . |
. . . |
. . . |
. . . |
. . . |
. . . |
$P_{n-1}$ |
$G_{n-1,1}$ |
$G_{n-1,2}$ |
. . . |
$G_{n-1,n-1}$ |
$G_{n-1,n}$ |
$$P_{n}$$ |
$$G_{n,1}$$ |
$$G_{n,2}$$ |
. . . |
$$G_{n,n-1}$$ |
$$G_{n,n}$$ |
We could, likewise, rewrite the columns as a list of Gödel numbers that corresponds to each proof.
$$G = [G_{P_1},G_{P_2}, . . ., G_{P_{n-1}}, G_{P_{n}}]$$
Now that we understand how the table of encoded proofs is constructed, it is much easier to approach the Gödel's Undecidability Proof. We can now create a new proof through diagonalization. We construct a $G_{P_d}$ by reference to statements in the list $G$. So we add a proof to the list of proofs. To do this, let's start constructing the statement as follows:
$$G_{P_d} \equiv \forall n \vdash(n, G_{P_n})$$
This says that for each n, $G_{P_d}$ asserts that the encoded proof, $G_{P_n}$, is provable for each $n$. But when it reaches the end of the list we are left with the following statement that $G_{P_n}$ asserts that it itself is provable. We can imagine $G_{P_n}$ being a computer program that passes itself as an argument. This results in a recursive problem that has a corollary in the halting problem published in 1936 by Alan Turing.
More devastating, though is the possibility that a complete description of the system would generate an internal contradiction. Drawing on the Diagonalization Lemma, we modify the statement to include the symbol for negation, $\neg$, so that the function now attempts to show that the proof is not provable. To avoid confusion, I have changed the $n$ to $i$ as $i$ will count from an index of 1 to n.
$$G_{P_n} \equiv \forall i \neg \vdash(i, G_{P_i})$$
When applied to $G_{P_n}$ this implies that $G_{P_n}$ proves its own inprovability.
$$G_{P_n} \leftrightarrow \neg \vdash(n, \ulcorner G_{P_n} \urcorner)$$
But if $G_{P_n}$ proves that it is not provable, we would face a contradiction. Instead, we say the statement is undecidable. The system is consistent, but it is incomplete as not all statements in it can be proven.
The Inheritance of Undecidability
This result both limited and structured developments in computer science. To shine a light on how undecidability impacted these developments, I leave you with a passage from Marvin Minsky reflecting on this problem in his book, Computation: Finite and Infinite Machines.
What happens when a machine is confronted with its own description? If this is done to the universal machine, then, as one might expect, the machine must become parallyzed by an infinite regression of interprations cycles -- it can never actually get to compute anything. At first, such phenomena seem entertaining, then annoying, and finally we are forced to conclude that they signal a portentous obstacle to our exploration. We find that certain of the questions we naturally ask about machines cannot be answered, at least by any effective procedure for answering questions. . . .
Which machine computations eventually terminate with a definite result, and which go on forever without any definite conclusion? We show, by some simple technical tricks, that assuming the existence of a machine that can answer this question leads to a contradiction; hence, no such machine can exist. . . .
But so far as our goals here are concerned, this result is indeed very serious; no Turing machine can answer this question. But then, if we accept Turing's thesis, there can be no effective way at all to answer it. That is, we can never aspire to a complete, systematic theory of the conditions under which a computation is sure to terminate. We may be able to decide, for one reason or another, that certain machines will work, and that certain others will not, but we will never be able to put this art on a systematic basis which will work for all machines! I regard this, and similar other 'undecidability' results, to be among the most significant intellectual discoveries of modern times. One can reject its implications only by rejecting Turing's thesis, but there is no apparent prospect of any satisfactory replacement.
With the demonstration of these elementary undecidability results, several new lines of exploration are opened (even if the most desirable line is thus irrevocably closed). We could try to restrict our machines so that their behavior is not quite so complicated; . . . Another line (that we do not follow) is to study, as if by default, the interrelations between various kinds of unsolvability results; this forms much of the subject matter of the modern mathematical 'theory of recursive functions.' Our main activity will be to examine a variety of alternative formulations of effectiveness and through this to try to understand something of the sources of what we know is a hopelessly complex range of behavior. In the course of this we will come to understand better the relation between the modern comptuer (and its programs) on the one hand and these abstract machines (and their descriptions) on the other. (Minsky 1967, 112,113)