Gödel, Escher, Bach An Eternal Golden Braid by Douglas R. Hofstadter

(Dana P.) #1
the whole trick, lock, stock, and barrel, including its insidious repeatability,
into account somehow. It is an interesting exercise. But if you tackle it, you
will see that no matter how you twist and turn trying to avoid the Cantor
"hook", you are still caught on it. One might say that any self-proclaimed
"table of all reals" is hoist by its own petard.
The repeatability of Cantor's diagonal method is similar to the re-
peatability of the Tortoise's diabolic method for breaking the Crab's
phonographs, one by one, as they got more and more "hi-fi" and-at least
so the Crab hoped-more "Perfect". This method involves constructing,
for each phonograph, a particular song which that phonograph cannot
reproduce. It is not a coincidence that Cantor's trick and the Tortoise's
trick share this curious repeatability; indeed, the Contracrostipunctus might
well have been named "Cantorcrostipunctus" instead. Moreover, as the
Tortoise subtly hinted to the innocent Achilles, the events in the Contracros-
tipunctus are a paraphrase of the construction which Godel used in proving
his Incompleteness Theorem; it follows that the Godel construction is also
very much like a diagonal construction. This will become quite apparent in
the next two Chapters.

From BlooP to FlooP


We have now defined the class of primitive recursive functions and primi-
tive recursive properties of natural numbers by means of programs written
in the language BlooP. We have also shown that BlooP doesn't capture all
the functions of natural numbers which we can define in words. We even
constructed an "unBlooPable" function, Bluediag [N], by Cantor's diagonal
method. What is it about BlooP that makes Bluediag unrepresentable in it?
How could BlooP be improved so that Bluediag became representable?
BlooP's defining feature was the boundedness of its loops. What if we
drop that requirement on loops, and invent a second language, called
"FlooP" ('F' for "free")? FlooP will be identical to BlooP except in one
respect: we may have loops without ceilings, as well as loops with ceilings
(although the only reason one would include a ceiling when writing a
loop-statement in FlooP would be for the sake of elegance). These new
loops will be called MU-LOOPS. This follows the convention of mathemati-
cal logic, in which "free" searches (searches without bounds) are usually
indicated by a symbol called a "JL-operator" (mu-operator). Thus, loop-
statements in FlooP may look like this:

MU-LOOP:
BLOCK n: BEGIN

BLOCK n: END;

424 BlooP and F100P and GlooP

Free download pdf