We are going to lift the whole theory constructed so far to sets of functions instead of sets of numbers. This may seem hopeless, since finite "machines" cannot accept infinite inputs in finite time. But they can "chew" on as much of the infinite input as is necessary in order to draw a conclusion. That will be out guiding idea.
f[A, n, k, m](f, y) » y.is a "partial recursive" mapping from k number arguments and m function arguments to some number using oracle A. If we do it by adding a line to our earlier numbering, the rest of the theory will still work out the way it did before, since the constructions are based on derivation trees. The idea is that "nature" provides the infinite arguments f, not all at once but "piecemeal" as required. We can model this by adding an "evaluation function"
eval(i, x) = fi(x)to our derivation trees as follows. The fine print handles the nuisance case in which no functions are given and we ask for the value of a function that runs off the end of the list. While we are at it, we may as well make computation relative to a function.
k = 0 Þ f[g,
n,
k]
= n;
k > 0 Þ
lh(n) = 0 Þ f[g, n, k, m] = C(o, p1,k);Note that we can define primitive recursive functionals by dropping the lines for the oracle and the minimization operator.
lh(n) = 1 Þ f[g, n, k, m] = C(s, p1,k);
lh(n) = 2 Þ f[g, n, k, m] = pmin(d(n, 0), k), k;
lh(n) = 3 Þ f[g, n, k, m] = C(f[d(n, 0), lh(d(n,1))], f[d(d(n, 1), 0), k], ..., f[d(d(n, 1), lh(d(n, 1)) -.1), k]);
lh(n) = 4 Þ f[g, n, k, m] = R(f[d(n, 0), k -. 1], f[d(n, 1), k + 1]);
lh(n) = 5 Þ f[g, n, k, m] = M(f[d(n, 0), k + 1]);
lh(n) = 6 Þ f[g, n, k, m] = C(g, p1,k);
lh(n) = 7 Ù m = 0 Þ f[g, n, k, m] = C(o, p1,k);
lh(n) = 7 Ù m > 0 Þ f[g, n, k, m] = C(fmin(d(n, 0), m), p1,k);
lh(n) > 7 Þ f[g, n, k, m] = C(o, p1,k).
F(g, x) = -sg(g(x))is primitive recursive and searching for a zero in a given function
F(g) = my g(y) = 0is partial recursive.
R(f) Û f(0) = 0.is recursive and by the operator version of the projection theorem the following relation is r.e.:
P(g) Û $x f(x) = 0.Notice that the former requires us to look at just a particular position, while the second requires that we search "nature" until we find what we are looking for.
A relation [functional] is of type (i, j) just in case it has it has i function arguments and j numerical arguments.
Setting things up this way makes it immediately apparent that a universal relation, s-m-n theorem, and recursion theorem can be shown for partial recursive functionals (just add the new clause to the Kleene predicate).
There are just a few details to observe in the construction.
U[g](n, t, y, <f>, <x>) Û U[A](n, t, y, <f|t>, <x>).The functional universal theorem says:
f[g, n, k, m](f, x) » d(mz U[g](n, d(z, 0), d(z, 1), <f|d(z, 0)>, <x>), 1).As a consequence,
f[g, n, k, m](f, x) » y Û $n"g f | n Ì g Þ f[g, n, k, m](g, x).-|
Exercise 1: convince yourself of any of this that you aren't quite sure of.
Here is a nice result that links topology with computability. Define
F is partial continuous Û "n, F-1(n) is open.Proposition 2:
To reduce irrelevant clutter, I will show the converse for type (1,
0) functionals.
Suppose F is partial continuous.
The idea is to construct an f that encodes the performance of
F on each fan.
Recall the ff indexing q[0], q[1],
... of finite functions from our discussion of the Rice-Shapiro theorem.
Define
f(x) = n + 1 if "g Î [q[x]], F(g) » n andBy the continuity of F,
f(x) = 0 otherwise.
F(g) » n Û $k. f(k) > 0.Thus
F(g) » f(mx [f(x) > 0 Ù q[f(x)] Í g]) -. 1.Since q[f(x)] Í g is recursive, F(g) is partial f-recursive.
2, 3, 4: Exercise 2:
Show that each open set in Baire space is the domain of a partial
continuous functional and apply 1.
-|
Exercise 3:
Construct a set of functions that is not recursive in any function.
We also have everything we need for many-one and Turing reducibility, so we have degrees and completeness over relations of mixed type. Some results come for free from topology. The contrapositives of the following results allow us to use the epistemological arguments of the preceding chapter to establish arithmetical lower bounds on sets of functions.
Proposition 3:
Here's a nice question. What is the complexity of
REC(f) Û f is recursive?Exercise 4: Strut your stuff. Prove an arithmetical completeness theorem for this example. Follow the logic of our bumping pointer analysis of Rec in the preceding chapter 13.