Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Hofstadter in his book Gödel, Escher, Bach is describing Godel's contradiction of sufficiently powerful versus complete. In the chapter 13 BlooP, FlooP, and GlooP he writes,

Now although completeness will turn out to be a chimera, TNT is at least complete with respect to primitive recursive predicates. In other words, any statement of number theory whose truth or falsity can be decided by a computer within a predictable length of time is also decidable inside TNT. (p418)

Hofstadter uses the previously introduced systems called TNT and BlooP as the base of his argument. He continues,

So the question really is, Can upper bounds always be given for the length of calculations [his definition of primitive recursive predicates]--or, is there an inherent kind of jumbliness to the natural number system, which sometimes prevents calculation lengths from being predictable in advance? The striking thing is the latter is the case, and we are about to see why. [...] In our demonstration, we will use the celebrated diagonal method by George Cantor, the founder of set theory. (p418)

Hofstadter's proof begins with a set of functions understood to be primitive recursive functions called Blueprograms {#N}[N]. To my understanding this is an array with index {#N}, accepting the value [N] as an argument.

Then to form the proof (within the section titled "The Diagonal Method") Hofstadter adds +1 to it, and finally assigns this value to a new function called Bluediag[N]:

Bluediag[N] = 1 + Blueprogram {#N}[N]

He concludes that simply by adding +1 to the set Blueprograms the new set (or superset) called Bluediag lies outside the realm of primitive recursive functions. (p420) Thus demonstrating it is likely impossible to test for primitive recursive functions.

This may all be well and good. If true--to my mind--its due to the paradoxical or loopy nature of recursion, and not to Cantor's diagonal method for real numbers. My modest understanding of the orders of infinity says that adding +1 to infinity does not change the size of infinity. This is the Hilbert Hotel non-intuitive Paradox says infinity + infinity = infinity.

See also Why Doesn't Cantor's Diagonal Argument Also Apply to Natural Numbers?

share|cite|improve this question
Doesn't Hofstadter say explicitly that his presentation is not quite right? I remember reading words to that effect in the BlooP, FlooP and GooP discussion. – Grumpy Parsnip Nov 7 '11 at 13:46
I'm reading the book now. If he does, I haven't found the passage. – xtiansimon Nov 9 '11 at 13:25
I'll see if I can dig it up. – Grumpy Parsnip Nov 9 '11 at 13:40
I changed my comment. On rereading I noticed it was distractedly familiar to the Barber of Seville Paradox, "If he does, Then he doesn't." (^_^) – xtiansimon Nov 9 '11 at 13:47
Oh I see. I wondered why I just got a notification. That section is pretty dense. I'll probably have to reread it in its entirety to find the relevant passage. – Grumpy Parsnip Nov 9 '11 at 14:26

Hofstadter is referring to diagonalisation in general, as also used by Gödel. He doesn't mean the specific diagonalisation argument that Cantor used to prove the uncountability of the real numbers.

share|cite|improve this answer
Will you elaborate on your answer? Hilbert's Hotel suggests a simple system using natural numbers is fully capable of accounting for every possible index. Why does any diagonal argument apply in a discussion of a simple programmatic system? – xtiansimon Nov 9 '11 at 13:29

Perhaps a further example will serve to confuse you even more.

Consider Euclid's classical argument for the infinitude of primes. Suppose $p_1,\ldots,p_n$ is a finite list of all primes. Then $P = p_1 p_2 \cdots p_n + 1$ must have a prime factor different from $p_1,\ldots,p_n$, since by design, none of these can be factors of $P$.

Euclid's argument is also a sort of "diagonal argument", since $P$ is constructed to be "different" than the given list of primes; though $P$ is not a prime itself, so this is actually a "generalization" of the diagonal argument.

When people say "diagonal argument", they don't mean Cantor's particular proof of $\mathbb{Q} < \mathbb{R}$, but rather some idea, some proof technique, which is only loosely defined. And yet, the concept is useful, and the experienced mathematician will be quite content when told that a certain statement "can be proved by diagonalization"; if she really wanted and had the time, she could probably reconstruct the argument.

Oftentimes, the set to which an element is proven not to belong, this set is indeed countable. But Cantor's argument was generalized by Cantor himself to show that $S < 2^S$, for any $S$ (modern technicalities ignored). The power of the method lies in its general applicability.

I vividly recall taking a course on the theory of computation. One section was devoted to "reducibility and diagonalization". The section gave some example of these very important concepts and techniques. Perhaps something of that sort will help you make up your own mind whether mathematicians are justified when they draw attention to the similarity between Cantor's original argument and ones like Hofstadter mentions.

share|cite|improve this answer
Getting my head around the problem of "complete" and "sufficiently powerful" I see the nature of the problem lying in the paradox of self-reference. I am unfamiliar with the uses of diagonalization outside of Cantor's work with Cardinalization of infinity, so I do not have the same comfortable relationship as the math expert you mention. The complex phenomena of infinity that was Cantor's life work does not help me to understand the paradox of self-reference. This is my criticism--Hofstadter explaining something he's made intentionally simple using something controversial. I'm saying "help". – xtiansimon Nov 12 '11 at 22:35
There is no paradox here - what Gödel showed is that the Gödel sentence and its negation are unprovable, for otherwise a paradox results. If self-reference is what's troubling you, google for "Quine" (self-reproducing code rather than the philosopher!), e.g. . You can see that there's nothing mysterious going on, perhaps surprising but certainly not controversial. – Yuval Filmus Nov 13 '11 at 11:22
@xtian It has been some time since mainstream mathematics has considered Cantor's result "controversial." You certainty shouldn't have the notion that Cantor's result is in doubt; the validity of his result is unquestioned. It is also, un-obviously in the special case of $|\mathbb Q| < |\mathbb R|$, intimately related to self reference. To see this better, you should find the aforementioned proof that $|S| < |2^S|$ for any $S$. The self reference in that proof is explicit. – guy Nov 13 '11 at 15:45
"It has been some time since mainstream mathematics has considered Cantor's result "controversial."" hahah. I only want to say Cantor's works are not provable, because there can be no proofs of infinity. I'm no expert or mainstream, please take my comments as you like. What I do recognize in Cantor's work is his effort to analyze the unknowable. I recognize the activity of his, striving, inching forward, sifting sand for any piece of evidence to fit his belief. Cantor's is an amazing story. – xtiansimon Nov 15 '11 at 1:58
@xtian I'm sorry to say that I'm not sure you know what you are talking about (presumably this is why you asked the question in the first place). I don't think it's healthy to laugh off the answers of those whose help you are seeking; it would be better for you to read and attempt to understand what those further along in mathematics are attempting to communicate. Cantor's result is a theorem of all the usual axiomatic systems we use to reason about mathematics, and this is not up for debate. That there does not exist a bijection between the natural and real numbers is a fact. – guy Nov 15 '11 at 4:40

I just reread the section again, and you are correct that it is not a literal diagonalization, but rather mimics the approach of the Cantor diagonalization, in that it establishes that one item which should be in a list of items cannot be, and thus the list can never be complete. According to this Wikipedia entry on the diagonal lemma, this idea is called "diagonal" due to this resemblance to Cantor's argument. Presumably Hofstadter is using diagonal in this sense.

share|cite|improve this answer
Thank you for the link. Would you agree it seems this is a goofed citation of Cantor's diagonalization argument? Cantor's diagonal proof is itself very interesting. At best its misleading. At worst Hofstadter is siphoning off some WOW from Cantor! – xtiansimon Nov 11 '11 at 21:16
I wouldn't say this is a goofed citation of Cantor's diagonalization, it does bear some limited resemblance to his argument in that it is showing that an item which should appear in a list clearly cannot. Hofstadter also presents Cantor's argument before using this term, presumably to highlight this similarity. Perhaps the original use of the term "diagonalization" to refer to self-reference was not a completely apt choice, however, as shown in the link, Hofstadter was hardly the first to use it. The link suggests that Carnap used it in 1937 to describe exactly the proof that Hofstadter gives – process91 Nov 12 '11 at 10:27
in the book for primitive recursive functions (although that was not the term Carnap used, but that has in general changed over time). Hofstadter includes sources in the back of his book which point to an article by I.J. Good, "Human and Machine Logic", in which "repeated application of the diagonal method" is used (in reference to recursive programs), so perhaps that is where he learned this use of the term. Even if not, it seems to be fully accepted as a meaning of the term diagonal by those in the related field, so I don't fault Hofstadter. – process91 Nov 12 '11 at 10:39
I think where I have a problem is getting my head around using an argument from Cantor's controversial investigations on infinity and the example of a finite list of primitive recursive functions. I feel something is missing because the argument is distracting. For example I think of is from probability. Dr.Math says The total maximum outcomes from 7 dice are: 6^7 = 279936, not 279936+1 for the diagonal. (>_<) – xtiansimon Nov 12 '11 at 22:05
@xtiansimon Perhaps you are stressing the diagonalization argument of this a bit too much. It is analogous only in the following sense: you have a list of things, and by doing something you show that the list can never be complete. Cantor did this using the literal diagonal method and the real numbers. Hofstadter (and others) are doing this similarly with a list of the primitive recursive functions. Please note, this list is not finite. I cannot speak to your point about probability, I am not familiar with what you are referencing. – process91 Nov 12 '11 at 22:50

The argument he gives is the standard proof that there are functions that are not primitive recursive. The same argument is given in here, and in textbooks. So no, he's not cheating.

You should read the section "What does a diagonal argument prove?" on p-$422$. You start with a list, and then show that there must be an element that isn't in the list. In Cantor's argument, this is used as a proof by contradiction: the supposition that you could create a countable list of all real numbers must have been false. In the present case, the list was all primitive recursive functions, and what the argument shows is simply that there are functions which are not primitive recursive. In Cantor's argument, the element produced by the diagonal argument is an element that was meant to have been on the list, but can't be on the list, hence the contradiction. In the present case, all we're trying to show is that there are functions that aren't on the list.

share|cite|improve this answer
Its "not cheating" because others have done it too? haha! – xtiansimon Nov 11 '11 at 23:29
Well, the fact that the proof is a textbook standard and has been accepted for some time might cause one to suspect that Hofstadter is doing something reasonable and that it is you that is missing something. The proof uses the same idea as Cantor's original argument: we have a list, each member of which can be construed as an infinite sequence, which is exhaustive, but we construct an item not on the list by altering the $n$'th component of the $n$'th item on the list. It looks (to me) like the exact same thing. – guy Nov 12 '11 at 1:23

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.