10

As you all probably know, Gödel’s incompleteness theorem states, that it will never be possible for mathematics to prove its own correctness.
Mainly because that proof would be part of mathematics too, and hence need proving itself. And that leads to an infinite loop in logic.

But I realized that a quine, as in, a program that can output itself, seems to circumvent that problem: It really CAN output ALL of itself.

So I’m wondering, if the general tricks used in quines might be usable to “solve” that problem in mathematics too. At least to arrive at a different problem that might be solvable in a different way.
And if not, then I’m curious why exactly not, so I can lay this to rest in my head.

D.W.
  • 167,959
  • 22
  • 232
  • 500

4 Answers4

39

Here is the proof of Gödel's incompleteness theorem, in a nutshell, for a theory $T$. We construct a sentence $\Pi$ which states that "$T$ proves that $\Pi$ is false". The sentence mentions itself, just like a quine.

If $T$ proves $\Pi$ then $T$ also proves that $\Pi$ is false, and so $T$ cannot be sound. If $T$ proves that $\Pi$ is false then $\Pi$ is true, and so again $T$ is not sound.

Yuval Filmus
  • 280,205
  • 27
  • 317
  • 514
26

Mainly because that proof would be part of mathematics too, and hence need proving itself. And that leads to an infinite loop in logic.

No, that's not the flaw identified by Gödel’s incompleteness theorem. As you note, that can be addressed with a quine. Quines are, loosely speaking, the cause of the theorem, not the solution: if you can create a statement that outputs itself, then you can also create a statement that outputs a negation of its provability. That is, you have a statement that declares that it can't be proven. If the statement can be proven, then it's false, so you've proven a false statement, which means that your system is inconsistent. If it can't be proven, then the statement is true (since what the statement consists of is the declaration that it can't be proven), thus it is a statement that is true, but can't be proven to be true. Therefore, every sufficiently sophisticated mathematical system is either inconsistent or contains statements that are true, but can't be proven.

Acccumulation
  • 710
  • 4
  • 6
12

[This is just my attempt to make Yuval Filmus's answer more mathematically accurate. Feel free to combine the answers, delete this one, or whatever seems best.]

Here is the proof of Gödel's incompleteness theorem, in a nutshell, for a theory $T$. We construct a sentence $\Pi$ which states that "There is no proof of $\Pi$ in $T$". The sentence mentions itself, just like a quine, and exploits the fact that formulas and proofs can be encoded as numbers in such a way that the property of being a proof of a formula is expressible in arithmetic terms.

If $T$ is sound and proves $\Pi$ then $\Pi$ is true, so $T$ does not prove $\Pi$, a contradiction. We conclude that $T$ does not prove $\Pi$; but then $\Pi$ is indeed true, and $T$ provides no proof of it.

Mike Spivey
  • 221
  • 1
  • 7
-1

Mainly because that proof would be part of mathematics too, and hence need proving itself. And that leads to an infinite loop in logic.

This is not the reason why Gödel’s incompleteness theorem proves that no set of rules (Mathematics, C++, Philosophy, Law, Religion etc.) can prove its own correctness. The actual reason is kind of a generalization of The Halting Problem in computing.

Gödel proved that for any set of rules you can formulate a statement (eg. program) that breaks the rules. Therefore it is impossible to fix rules (programming language, Mathematics etc.) to make them unbreakable (always true/applicable for all statements/programs). The Halting Problem can actually be interpreted as a reformulation of Gödel's Incompleteness Theorem in the context of Turing Machines/Computers (indeed there are papers written on the topic).

Whereas the Halting Problem proves that it is not always possible to write an algorithm that always generate a solution (proving that some problems are undecidable), the Incompleteness Theorem proves that it is not always possible to prove that all the rules in your system (Mathematics, C++, etc) can be proven to be always true.

But in practice this is not a problem. Just as we can write useful software even when some problems cannot be solved by software we can do useful problem solving even if we don't use all statements mathematics can produce.

One candidate for the incompleteness theorem may or may not be the twin prime conjecture, which states that there are infinitely many twin prime numbers (couples of prime numbers differing by 2). To this day, it could not be proved, which means that it is either false and we were not able to disprove it yet, or it may be true and we have not found a valid proof for it yet, or it may be one of those statements that Gödel talked about - that is, a statement that is true but unprovable.

slebetman
  • 699
  • 3
  • 7