Models of Computation - Mathematics 352 -
Fall 2009
For HW #15
Let {g0, g1, g2, g3, ...} be an enumeration
of all primitive recursive functions. Let f(x) = gx(x) +1.
Explain why f is total, computable, and not primitive recursive.
A paradox: Let f(x) = phix(x) +1 if phix(x) is
defined, undefined otherwise (recall that phix is the unary
function computed by program Px). Then it seems easy to show
that: (1) f is
computable, and (2) f is different from phix for every x. But
this gives a contradiction, because if f is computable, then it must equal phix
for some x. Resolve this paradox.
The Busy Beaver Problem (Part 2).
Let B(n) = the largest possible output for any n-instruction URM program
starting with zeros in all registers. Prove that B is not computable, by
combining the following steps.
Prove that for all n > m, B(n) > B(m).
Show that for every n >= 20, there is an n-instruction URM program whose productivity (i.e., its output,
starting with zeros for input) is strictly greater than 2n and when it stops, registers R2, R3, ... all contain 0. Hint:
For n = 20, write 10 S(1)'s, then write at most ten more instructions to
quadruple register 1 and put zeros in the other registers. Then take care of all n >
20.
Suppose, toward contradiction, that there is a program P that
computes the function B. Show that
you can "prefix" ("opposite" of "append") P by a program from part (b) to get a program with
m instructions whose productivity is
strictly greater than B(m).