Live data from Hacker News

Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

reddit.com

21–30 of 37 posts

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#21
post #17
post #12

To be clear this is an explanation of the consequences of Gödel's Incompleteness Theorem

Exactly. An "explain like I'm twelve" for Godel's Incompleteness Theorum itself would revolve around the idea of self-referential statements (such as 'the set of all sets which don't contain themselves', or 'the barber of Seville shaves everybody who doesn't shave themselves'). In my understanding, Godel created a system that mapped statements to numbers, and then looked at the numbers that represented statements lik…

Or to put another way ..

reducing a holy book to logic analysis of text still produces something not reliable..

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#22
post #9
post #7

Earlier quoted context omitted.

I think the CH was used just to provide an example of an undecidable statement, not actually demonstrate something weird about the incompleteness theorem. Since the CH cannot be proven to be true or false within ZF (or ZFC), then you are correct, appending it would just provide an addition axiom.

So it is a weird example, since it NOT an example of a statement that is undecidable in every model.

This is not a weird example for that reason. For a given model, every statement is either true or false. Godel's Completeness Theorem says that a first-order theory is consistent if and only if it is true in some model. Therefore, for every undecidable statement there will be a model where it is true and a model where it is false.

These models can look very strange. For example, if ZF is consistent, then by the Second Incompleteness Theorem so is ZF + "ZF is inconsistent". By the Completeness Theorem, a model for this theory must exist. In this model ZF is inconsistent, so there is a 'proof' of a contradiction from the axioms of ZF. However, since we have assumed the consistency of ZF, such a 'proof' must necessarily involve nonstandard integers.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#23
I don't think this explanation would really work on a 12 year old. I doubt it will work on most adults, who have been through college, but maybe that's just me.

By the way, if you're interested in learning actual proofs of Godel's Theorems, you should take a look at this book: http://www.amazon.com/Introduction-G%25f6dels-Cambridge-Intr...

I haven't gone through all of it, but I've read much of the beginning. It actually starts off with easy proofs of Godel's Theorem, based much more on Computer Science explanations than Mathematical Logic.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#24
post #14

Am i wrong or does 'Well here's what Godel proved: There's no way to really know whether or not any theory is consistent.' completely ignore Gödel's completeness theorem for first order logic.

The Completeness Theorem (in one of its equivalent forms) says that every consistent first-order theory has a model, linking syntax and semantics. It doesn't tell you any thing about how you would go about justifying that a theory is consistent.

People hoped that some logical system capable of formalizing real mathematics would be able to justify its own consistency. Godel's Incompleteness Theorem (and stronger, related results) imply that any system capable of formalizing real mathematics (or even a very weak subset of it) can not justify its own consistency, requiring an appeal to a stronger system. Obviously, that raises the obvious question of why that stronger system is consistent. There are constructive proofs (due to Godel himself, Gentzen, and others) of the consistency of Peano Arithmetic, but by the Incompleteness Theorem they must all be non-finitary in some fashion, no matter how slight.

However, there are some limits to this understanding of Godel's Incompleteness Theorem. There are theories that are strong enough to prove (and perhaps more importantly, state) their own consistency but not strong enough to formalize diagonalization. If PA is consistent, then there is a theory that can state and prove its own consistency as well as the consistency of PA. The trick is that provability can be formalized on the basis that subtraction and division are total functions, whereas diagonalization requires addition and multiplication to be total functions. These theories can prove that subtraction and division are total functions, but not addition and multiplication.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#25
If the 12yo in question knows a bit of programming, a much simpler thing to explain would be the Halting problem, both the statement and the proof.

The bulk of Godel's proof is introducing recursive functions and the "godelization", which means mapping formulas to natural numbers and functions to arithmetic/first order expressions. This all comes for free if you know any programming language; if you don't like natural numbers, you can use strings (the source code itself and its manipulations).

From there, the diagonalization used in the Halting problem proof is the same used in Godel's theorem. In fact, the two theorems are intimately connected, essentially by the statements "you can write a first-order proof verifier in a programming language", and "you can write a computable function as a first-order arithmetic formula".

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#26
post #23

I don't think this explanation would really work on a 12 year old. I doubt it will work on most adults, who have been through college, but maybe that's just me. By the way, if you're interested in learning actual proofs of Godel's Theorems, you should take a look at this book: http://www.amazon.com/Introduction-G%25f6dels-Cambridge-Intr... I haven't gone through all of it, but I've read much of the beginning. It actu…

Haven't read that one, but I try to re-read Nagel and Newman's at least once a year: http://www.amazon.com/Gödels-Proof-Ernest-Nagel/dp/081475837...

One thing I love about N&N is that it's short (160 pages) and the paperback is cheap ($7.65) so that I have no compunctions in lending it out.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#27
post #23

I don't think this explanation would really work on a 12 year old. I doubt it will work on most adults, who have been through college, but maybe that's just me. By the way, if you're interested in learning actual proofs of Godel's Theorems, you should take a look at this book: http://www.amazon.com/Introduction-G%25f6dels-Cambridge-Intr... I haven't gone through all of it, but I've read much of the beginning. It actu…

Haven't read that one, but I try to re-read Nagel and Newman's at least once a year: http://www.amazon.com/Gödels-Proof-Ernest-Nagel/dp/081475837... One thing I love about N&N is that it's short (160 pages) and the paperback is cheap ($7.65) so that I have no compunctions in lending it out.

Yes, I've read that one as well. It was a while ago, but from what I remember, it was higher-level than the Smith book. The Smith book is basically a normal mathematics curriculum book, not a "pop science" book (not to say that N&N is), which works out theorem after theorem to get to Godel's proof. Also, it starts off with computer-science proofs instead of the original Godel proofs, which many in this audience will probably prefer.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#28
post #25

If the 12yo in question knows a bit of programming, a much simpler thing to explain would be the Halting problem, both the statement and the proof. The bulk of Godel's proof is introducing recursive functions and the "godelization", which means mapping formulas to natural numbers and functions to arithmetic/first order expressions. This all comes for free if you know any programming language; if you don't like natura…

Great observation; as an undergrad, noticing this suddenly made GIT (which was taught to me by a mathematician in all its intricate detail) seem a lot less scary.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#29

i'm not a mathematician, but his final point about the continuum hypothesis seemed odd to me. the CH is "outside" ZF, but that just means (afaik) that it contains some extra "information" that is not in ZF. adding it to ZF doesn't force any kind of contradiction, in the way that adding "this system is consistent" would. so CH is (just) an example of an independent axiom - it doesn't illuminate what is so weird about…

The situation with Goedel sentence (let's call it G) is actually not very different. As neither G nor negation of G is provable, you could also say that it contains extra information, and add negation of G as a new axiom to PA, just like you could add CH to ZF.

If you do that, you could wonder what your new arithmetic looks like. This is actually very interesting question. Since "not G" says basically "it's not true that there's no proof of me", or, more specifically, "it's not true that there's no number that represents the proof of me", it's clear that "not G" asserts the existence of a certain "natural" number being the proof of G, which is not one of the natural numbers we know (since no "regular" natural number represents the proof of G). In our new universe there are "natural" numbers that you cannot reach by counting. Because of that, one can construct many different nonequivalent "implementations" (models) of PA + not G, which are necessarily different than the standard implementation of artihmetic we know (1, 2 = S(1), 3 = S(S(1)), ..., n = S(S(...S(1)...)), with + and *).

What is interesting about incompleteness theorem is that no matter if we add arbitrarily large number of axioms to PA, or even infinite number of axioms generated by computer program we write, the resulting system will still be incomplete, and each will have its own (many of them, actually) Goedel sentence.

Re: Explaining Gödel's Incompleteness Theorem to a Twelve Year Old

#30
post #25

If the 12yo in question knows a bit of programming, a much simpler thing to explain would be the Halting problem, both the statement and the proof. The bulk of Godel's proof is introducing recursive functions and the "godelization", which means mapping formulas to natural numbers and functions to arithmetic/first order expressions. This all comes for free if you know any programming language; if you don't like natura…

Indeed, the proof of the halting problem is much easier to sketch than the proof of Godel's incompleteness theorem (which the OP doesn't even attempt). So here he goes: a proof sketch of the halting problem for 12 year old programmers.

Suppose that somebody wrote us a program that can check whether another program will loop indefinitely or eventually halt when run on a particular input:

    bool halts(string program, string input){ 
       // halting checking code that checks 
       // whether program's main function
       // halts when given input
       // returns true or false
    }
For example:

    string program = 
      "void main(string foo){" +
      "  if(foo[0] == 'a'){ return; }" +
      "  else{ while(true){} }" +
      "}";
    
    halts(program, "abc") // returns true
    halts(program, "bar") // returns false
Now we can write the following program:

    bool halts(string program, string input){
       // same halting checking code as above
    }

    void main(string program){
      if(halts(program, program)){
        while(true){ }
      }
    }
Note that this is a perfectly valid program. halts() is supposed to work on any program, including a program that happens to contain the source code of halts(). We can just reuse the code that the person gave us and copy-paste it here.

Now the question is: what will our halts() function say about this program, when given its own code as input? In other words: what will the following code print?

    bool halts(string program, string input){
       // same halting checking code as above
    }
   
    void main(){
      string program = 
        "bool halts(string program, string input){" +
        "   // same halting checking code as above" +
        "}" +
        "void main(string program){" +
        "  if(halts(program, program)){" +
        "    while(true){ }" +
        "  }" +
        "}";

      print(halts(program,program));
    }
There are just 2 possibilities: either this program prints true, or this program prints false (if this program never terminates then halts() has a bug).

Case 1: suppose halts(program,program) returns true.

If the halts function is working correctly, that means that when we actually run the code in `program` with `program` as its input, it will halt. But now lets see what actually happens. When we run the main() function in `program` with `program` as its input, it first checks `if(halts(program,program))`. Well, we already assumed that halts returns true, so control flow will go inside the if block to the infinite loop. But that means that halts lied to us!

Case 2: suppose that halts(program,program) returns false.

Now a similar argument holds. run the code in `program` with `program` as its input, the condition of the if statement will be false, and the main function will terminate. So even though halts(program,program) returns false, the program actually terminates. It lied again!

As you can see, no matter what halts returns, it cannot tell the truth about the program we constructed. Hence it is impossible to fill in the missing code in halts() so that it will work correctly.

Post reply on HN