Gödel's Incompleteness Theorems

Imagine a single mathematical sentence — as precise as "7 is prime", built entirely from arithmetic — that manages to say of itself:

\textit{``This statement cannot be proved.''}

Pause on it. If the sentence is false, then it can be proved — but we only prove true things, so a false theorem would mean our whole system is broken. So, in any system we trust, the sentence must be true. And being true, what it says is the case: it cannot be proved. We have found a truth that our system can neither prove nor disprove.

This is the shattering discovery Kurt Gödel (Gödel) made in 1931, at the age of 25. It says that in mathematics, truth outruns proof — there will always be true statements that no fixed set of axioms can reach. It closed the door on a grand dream and reshaped how we think about the limits of reason. Let us build it carefully, because the idea is easy to misquote and hard to earn.

What the first theorem actually says

Gödel's First Incompleteness Theorem is about formal theories — collections of axioms together with rules for deriving theorems. It applies to any theory T that is:

"Incomplete" has a precise meaning here: a theory is complete if for every sentence S it proves S or proves \lnot S — it decides everything. Gödel showed that no theory rich enough to do ordinary arithmetic can be both consistent and complete. There is always an undecidable gap.

The machinery, step 1: Gödel numbering

How can arithmetic talk about itself? The first key idea is that formulas are just finite strings of symbols, and finite strings can be encoded as numbers. Gödel assigned a code to each basic symbol and then combined them — famously using prime powers — so that every formula, and every proof (a finite list of formulas), gets its own unique natural number, its Gödel number.

\ulcorner \varphi \urcorner \;=\; 2^{c_1}\,3^{c_2}\,5^{c_3}\cdots p_k^{c_k}

Here c_1, c_2, \dots are the codes of the symbols in \varphi, and 2,3,5,\dots,p_k are the first k primes. Because prime factorisation is unique, the number \ulcorner \varphi \urcorner can be decoded back into exactly the original formula. Symbols become numbers; statements about symbols become statements about numbers — arithmetic that everyday arithmetic can discuss.

The exact coding does not matter — any faithful, mechanical encoding works. What matters is the upshot: purely syntactic notions like "is a well-formed formula" or "is a valid proof of" turn into ordinary arithmetical properties of numbers.

Step 2: provability becomes arithmetic

Because "being a proof" is a mechanical, checkable relation between strings, and strings are now numbers, there is an arithmetical formula — call it \mathrm{Prf}(p, n) — that holds exactly when the number p codes a valid T-proof of the formula with Gödel number n. From it we build a provability predicate:

\mathrm{Prov}(n) \;\equiv\; \exists p \, \big[\, \mathrm{Prf}(p, n) \,\big] \qquad\text{``}n\text{ is the code of a provable formula.''}

This is the deep move: the theory now contains a sentence, written in the plain language of numbers, that means "the formula coded by n is provable in T". Provability, a fact about the theory, has been dragged inside the theory.

Step 3: the diagonal lemma builds G

The final ingredient is a genuinely magical fact called the diagonal lemma (or fixed-point lemma). It says that for any property \Phi(n) you can write about numbers, arithmetic contains a sentence G that asserts precisely "\Phi holds of my own Gödel number":

T \vdash \; G \;\Longleftrightarrow\; \Phi\big(\ulcorner G \urcorner\big).

Feed in the property \Phi(n) \equiv \lnot\,\mathrm{Prov}(n) — "not provable" — and out drops a sentence G satisfying

G \;\Longleftrightarrow\; \lnot\,\mathrm{Prov}\big(\ulcorner G \urcorner\big),

a sentence that says, rigorously and self-referentially, "I am not provable in T." Now run the argument from the very first card. If T proved G, then G would be false, so T would prove a falsehood — contradicting consistency. So T does not prove G. But that is exactly what G asserts — hence G is true, and true but unprovable. Truth has slipped past proof.

This is the Liar paradox ("this sentence is false") tamed and made rigorous. The Liar collapses into nonsense because "false" cannot be defined inside the language (Tarski's theorem). Gödel's masterstroke was to use "unprovable" instead — which can be defined inside arithmetic — so no paradox results, just a true sentence the system cannot reach.

The second theorem: a theory cannot certify itself

Gödel's Second Incompleteness Theorem squeezes an even sharper consequence out of the same machinery. Consistency itself can be expressed arithmetically: let \mathrm{Con}(T) be the sentence saying "T does not prove 0 = 1" — i.e. T is consistent.

A theory strong enough to be interesting can never establish its own trustworthiness by its own lights. To prove that T is consistent you must step up to a stronger theory — which then cannot prove its own consistency, and so on forever. There is no self-supporting foundation.

What it meant: the end of Hilbert's dream

In 1900 David Hilbert set mathematics a magnificent goal — later called Hilbert's programme: find a single, finite set of axioms from which all mathematical truths could be derived, and prove, using only safe "finitary" reasoning, that this system is consistent and complete. Every true statement provable; every question decidable; the whole edifice certified safe from within.

Gödel's two theorems dismantle exactly this. The first says no such complete system exists — there will always be true-but-unprovable sentences. The second says a system cannot even certify its own consistency, so the safety guarantee Hilbert wanted is unreachable. The dream of a mechanically complete mathematics was, provably, impossible.

And yet — this is not a tragedy. Mathematics did not stop; it grew richer. Incompleteness is not a bug in a broken machine but a permanent feature of any system rich enough to count. It tells us something profound and permanent: truth is bigger than proof.

No theorem in mathematics is more misquoted. Guard against these overreaches:

They don't — they are about different things, and the clash is only in the names. In 1929 Gödel proved the Completeness Theorem for first-order logic: every statement that is logically valid (true in every model) is provable from the logical axioms. That is a statement about the logic — its proof rules are strong enough to capture all logical consequence.

Incompleteness (1931) is about particular theories like arithmetic: a given set of mathematical axioms fails to decide every sentence in its language. "Complete logic" means "proves all logical validities"; "incomplete theory" means "leaves some arithmetical sentences undecided". Both are true at once — the logic is complete, but no consistent arithmetical theory built on top of it can be. Same author, opposite-sounding words, no contradiction.