Eh, let me just put it this way:
Here is a sentence which demonstrates Xenocrates’ cannot correctly assert:
“Xenocrates will never assert this sentence”
If you assert that sentence, well, you will be manifestly wrong. On the other hand, if you refrain from ever asserting that sentence, it will be a true sentence you never assert. This is incompleteness in a nutshell.
“But”, you might object, “That’s not a proper sentence. It refers to itself.”
Sure it’s a proper sentence. So what if it’s self-referential? We have no difficulty interpreting self-reference. Here, I’ll help you out: let’s say the unrolling of a recursive sentence like this is what you get when you take every instance of “this sentence” within it, and replace it with the sentence itself. (That, after all, is what “this sentence” means, right?)
So, unrolling our previous recursive sentence gives us:
“Xenocrates will never assert ‘Xenocrates will never assert this sentence’”.
You might still object: “Well, that’s still gibberish; it may not be directly recursive, but it makes reference to the possibility of Xenocrates asserting a recursive sentence. This is nonsense! Self-reference frightens and confuses me. No one should ever be considered capable of asserting anything recursive.”
Fine, we’ll pacify you yet. Everywhere where we would want to speak directly of asserting a self-referential sentence, we’ll merely replace it with talk of asserting the unrolling of that sentence instead.
So, let’s say the cleaning-up of a self-referential sentence is what you get when you replace every instance of “this sentence” with “the unrolling of this sentence” instead. And the full-unrolling of a recursive sentence will be what you get when you clean it up and then unroll it.
Then the full-unrolling of our original recursive sentence will be this:
“Xenocrates will never assert the unrolling of ‘Xenocrates will never assert the unrolling of this sentence’”
Now there’s no room left for objection. Here’s our original sentence translated into a world with no direct support for self-reference, yet retaining that behavior all the same. By making the interpretation of recursive sentences entirely explicit, we’ve shown that you can’t get away from them; even if you refuse to directly incorporate the mechanisms for interpreting recursion into your hardware, we’ll just build them up in software again.
The above is Goedel’s incompleteness theorem. You could take the above and encode it quite directly into any framework in which concepts like “sentence”, “assert”, etc., could be described quite directly. E.g., systems of set theory or list theory or the theory of computer programs acting on symbol-strings or the theory of axiomatic systems and proofs within them or…
You could also take the above and encode it quite indirectly into any framework in which any of those could be encoded quite indirectly. This is what happens with Peano Arithmetic; it turns out to be possible to interpret the theory of finite lists of natural numbers within the theory of natural numbers, successor, addition, and multiplication. Which is a fine piece of trivia, but nothing particularly interesting in the end (for example, it is markedly easier to interpret all this within the theory of natural numbers, successor, addition, multiplication, and exponentiation. Is that of philosophical importance? And easier still to define all this within the theory of natural numbers, successor, and recursively defined functions, if one is committed to natural numbers (which is, after all, where addition, multiplication, exponentiation, etc., all come from, all the same)).
All the stuff about natural numbers and addition and multiplication is just some fluff of the essence of the Goedelian phenomena. The structure above is what really matters, and not just as some detail-shorn, arigorous approximation; it’s the real deal.