A Galois connection between Turing jumps and limits

A Galois connection between Turing jumps and limits

Abstract

Limit computable functions can be characterized by Turing jumps on the input side or limits on the output side. As a monad of this pair of adjoint operations we obtain a problem that characterizes the low functions and dually to this another problem that characterizes the functions that are computable relative to the halting problem. Correspondingly, these two classes are the largest classes of functions that can be pre or post composed to limit computable functions without leaving the class of limit computable functions. We transfer these observations to the lattice of represented spaces where it leads to a formal Galois connection. We also formulate a version of this result for computable metric spaces. Limit computability and computability relative to the halting problem are notions that coincide for points and sequences, but even restricted to continuous functions the former class is strictly larger than the latter. On computable metric spaces we can characterize the functions that are computable relative to the halting problem as those functions that are limit computable with a modulus of continuity that is computable relative to the halting problem. As a consequence of this result we obtain, for instance, that Lipschitz continuous functions that are limit computable are automatically computable relative to the halting problem. We also discuss 1–generic points as the canonical points of continuity of limit computable functions, and we prove that restricted to these points limit computable functions are computable relative to the halting problem. Finally, we demonstrate how these results can be applied in computable analysis.

\CatchFileEdef\user

”—kpsewhich -var-value USERNAME”

1 Introduction

Limit computable functions have been studied for a long time. In computability theory limits appear, for instance, in form of Shoenfield’s limit lemma [41]. In algorithmic learning theory they have been introduced by Gold [20]. Later, limit computable functions have been studied by Wagner [45, 46], who calls them Turing operators of the first kind (and he attributes this class to Freĭvald [16]). Wagner discusses composition and also normal form theorems. In computable analysis limit computations were studied by Freund [17] who introduced Turing machines that can revise their output as well as non-deterministic Turing machines. Later, similar machines were systematically studied by Ziegler [51, 50]. Limit computable real numbers were analyzed by Freund and Staiger [18] and by Zheng and Weihrauch [48] and others. On the other hand, Ho [23, 24] studied functions in analysis that are computable relative to the halting problem.

Many of these results are scattered in the literature, and it remains somewhat unclear of how all these results are related. Some clarity can be brought into the picture if one starts with the notion of a limit computable functions and develops it systematically. It turns out that at the heart of such a development there is an adjoint situation that is related to the fact that limit computations can either be described with limits on the output side or with Turing jumps on the input side. Shoenfield’s limit lemma is the non-uniform correlate of this observation. From this perspective functions computable relative to the halting problem and low functions are natural notions that should be studied alongside with limit computable functions, since they constitute the largest classes of functions that can be post or pre composed with limit computable functions without leaving the class of limit computable functions. We will develop these notions systematically in sections 2 and 3.1 Together with these notions we also study –generic points, as these are the canonical points of continuity of limit computable functions.

In section 4 we transfer these results to the setting of represented spaces and hence to other data types. The crucial notion here is the notion of a jump of a representation that was introduced by Ziegler [51, 50] and further generalized by de Brecht [14]. On the level of represented spaces the adjoint situation between limits and Turing jumps can formally be expressed as a Galois connection. We also study how the jump of a represented space interacts with other constructions on represented spaces such as building products and exponentials.

In section 5 we transfer our results to the setting of computable metric spaces. The limit normal form for limit computable functions can easily be expressed using limits in computable metric spaces and for the jump normal form one can use a general jump operation on computable metric spaces. We also transfer a characterization of –generic points to the level of computable metric spaces.

In section 6 we continue to study mostly computable metric spaces and specifically the relation between limit computable functions and functions computable relative to the halting problem. One characterization shows that functions that are computable relative to the halting problem are exactly those continuous limit computable functions that admit a global modulus of continuity that is computable relative to the halting problem. We also provide several examples of functions of different type that show that not all continuous limit computable functions are computable relative to the halting problem. However, we can provide oracle classes that are sufficient to compute limit computable functions that are continuous, uniformly continuous and Lipschitz continuous, respectively. In particular for Lipschitz continuous functions limit computability and computability with respect to the halting problem coincide.

We close this article with section 7 in which we demonstrate how some known results can easily be derived using the techniques provided in this article. We also include some simple new applications. The discussed examples also highlight connections between results that are seemingly unrelated or scattered in other sources.

2 Limit computability

In this section we are going to characterize limit computable functions in different ways. We start with recalling the definition. Limit computable functions are defined on Turing machine that have a two-way output tape, and these machines are allowed to revise their output.

Definition 1 (Limit computable functions).

A function is called limit computable, if there exists a Turing machine that upon any input computes on its two-way output tape in the long run such that on any output position after a finite number of steps the output is and will not be changed anymore.

If the Turing machine does only change the entire output (over all ) finitely many times for each fixed input , then is called computable with finitely many mind changes. This is a strengthening of the notion of limit computability.

It is clear that all computable maps are limit computable and limit computable maps are obviously closed under restriction. The additional flexibility to revise the output tape gives additional power to limit machines that ordinary Turing machines do not have. As examples we mention some discontinuous functions that are not computable, but limit computable. For the definition we use tupling functions. We define , and , , and for all and . By we denote the constant sequence with value .

Example 2 (Limit computable maps).

The following maps are limit computable but not continuous and hence not computable:

  1. The equality test for zero

  2. The limit map

  3. The Turing jump by

    for all and .

The function is even computable with finitely many mind changes.

By we denote the restriction of to convergent sequences with respect to the discrete topology on . In some sense one can say that the limit map and are not only some limit computable maps, but prototypes of limit computable maps. Before we can prove a formal version of this statement, we first discuss compositions of computable and limit computable maps that turn out to be limit computable.

Proposition 3 (Composition).

If is limit computable and is computable, then and are both limit computable.

Proof.

Let be a limit machine computing and an ordinary Turing machine computing . Then a limit machine computing can just be obtained by composing the two machines and in the straightforward way.

A limit machine for can also be constructed by composing the machines and . However, the composition has to be done such that if changes the content of some output cell , then the computation of has to be restarted at time step of its program (which is sufficient to guarantee that has not yet seen the content of cell ). Since the output of of any finite length eventually stabilizes and uses a one-way output tape, it follows that produces a converging output in this way for any input . ∎

It is easy to see that the first statement of the proposition can even be strengthened in the following way.

Proposition 4 (Composition with finitely many mind changes).

If is limit computable and is computable with finitely many mind changes, then is limit computable.

For the composition of functions as in Proposition 4 the strategy of the corresponding proof of Proposition 3 does not work in general. In fact, it is not too difficult to construct a counterexample.

Example 5 (Composition).

The equality test is computable with finitely many mind changes, and the limit map is limit computable, but is not limit computable.

We leave the proof to the reader. Now we provide a very useful characterization of limit computable functions. This result is also implicit in the work of Wagner [45].

Theorem 6 (Limit normal form).

A function is limit computable if and only if there exists a computable function , such that .

Proof.

By Example 2 is limit computable. It follows from Proposition 3 that if is computable, then is limit computable.

Conversely, if is limit computable, then we construct a one-way output Turing machine that computes a function . This machine internally simulates a limit machine for on input . The machine successively produces an output in steps . In step machine simulates for times steps beyond the point where has filled its –th output position for the first time. Machine writes the resulting content of the simulated output of in the –th position into its own output . If the simulated –th position eventually stabilizes, then exists and coincides with the final value of the –th position . Thus the machine computes a function with . Here is restricted to . ∎

We note that the limit normal form theorem allows us to study limit computable functions in terms of ordinary computable functions and without considering limit machines. The particular output behavior of limit machines can be expressed directly using the limit map. We also obtain the following characterization of limit computable functions as pointwise limits of of a sequence of computable functions.

Corollary 7 (Pointwise limit).

A function is limit computable if and only if there is a computable sequence of computable functions with and such that for all .

Theorem 6 together with Proposition 3 yield the following corollary.

Corollary 8.

For any computable function there exists a computable function such that .

Corollary 8 also holds with continuity instead of computability in both occurrences. We note that the computable functions do not constitute the largest class of functions for which there is a computable with . In Corollary 35 we extend this result to functions that are computable relative to the halting problem. Maps that satisfy the same property as the limit map in Corollary 8 have been called jump operators [6, 14] or transparent [8].

Definition 9 (Transparency).

A function is called transparent if for every computable there exists a computable function such that .

It is easy to see that not all functions are transparent, but the class of transparent functions is reasonably large.

Proposition 10 (Transparency).

The class of transparent functions forms a monoid with respect to composition, i.e., the identity is transparent, and transparent functions are closed under composition.

It is clear that limit computable maps do not necessarily map computable inputs to computable outputs. However, they map computable inputs to limit computable outputs.

Definition 11 (Limit computable points).

A point is called limit computable, if there exists a computable sequence in such that .

It follows directly from the limit normal form theorem (Theorem 6) and the fact that computable maps map computable inputs to computable outputs that limit computable maps map computable inputs to limit computable outputs.

Corollary 12.

If is limit computable and is computable, then is limit computable.

It also follows from the limit normal form theorem (Theorem 6) that a point is limit computable if and only if it is the value of a constant limit computable map .

We now study the Turing jump , and we first prove that its inverse is computable. Even though is not continuous, it is injective and has a computable inverse.

Proposition 13 (Jump inversion).

The Turing jump operator is injective, and its partial inverse is computable.

Proof.

There exists a computable function such that the Turing machine with code halts upon input if and only if . The function defined by

for all , and is computable. We obtain

for all and , i.e., . This implies that is injective and is computable. ∎

We also write , and we call the Turing jump of , and we call the halting problem. We note that the Turing jump operator considered as a map on Turing degrees is not injective.2 We mention that Proposition 13 also implies that any point can be reduced to its Turing jump, i.e., (of course, this reduction is known to be strict, which can be proved by an easy diagonalization argument).

It is perhaps surprising that there is a dual version of the limit normal form theorem that characterizes limit computation by an input modification with the help of Turing jumps instead of an output modification with limits. This shows that in some sense Turing jumps and topological limits are adjoint to each other. An analogous result can be found in the work of Wagner [45].

Theorem 14 (Jump normal form).

A function is limit computable, if and only if there exists a computable function such that .

Proof.

By Example 2 the Turing jump operator is limit computable. Hence for any computable the composition is limit computable by Proposition 3.

Let now be a limit Turing machine that computes . We describe a Turing machine that computes a function with for all . There exists a computable function such that the Turing machine with code halts upon input if and only if on input changes the output cell after more than steps. Now on input works as follows: it simulates the machine on input , where is the partial inverse of the Turing jump operator that is computable by Proposition 13, and writes the output to some working tape. After simulating for steps at most the first cells on this working tape have been used for some . In this situation checks for all and when the result is for some initial segment , then copies the content of those cells to the output tape that have not yet been written to the output. This algorithm ensures that only those output cells which have already stabilized are copied to the output. Thus, operates with a one-way output tape and computes a function with for all . Since is injective, one can restrict such that one obtains . ∎

We obtain the following corollary, which is somehow dual to the statement of Corollary 8.

Corollary 15.

For any computable function there exists a computable function such that .

It is clear that and cannot be swapped in Corollaries 8 and 15. In particular, is not transparent, since it has no computable values in its range. However, it is not too difficult to see that is transparent.

It is a consequence of Corollary 15 that the Turing jump operator is monotone with respect to Turing reducibility.

Corollary 16 (Monotonicity of Turing jumps).

for all .

We also mention that the jump normal form theorem (Theorem 14) yields as a non-uniform corollary a version of Shoenfield’s limit lemma [41].

Corollary 17 (Shoenfield’s limit lemma 1959).

A point is limit computable if and only if .

One can prove relativized forms of the jump normal form theorem (Theorem 14) and the limit normal form theorem (Theorem 6). However, the exact relativization needs some care. For every we define the relativized jump operator by . We say that is limit computable relative to if there exists a computable such that for all . Now the following theorem can be proved along the lines of the above results.

Theorem 18 (Relativized limit computability).

The following are equivalent for :

  1. is limit computable relative to ,

  2. for some that is computable relative to ,

  3. for some that is computable.

The symmetry between the two normal forms does not fully extend to the relativized case since oracles act on the input side, and hence we need to use either functions that are computable relative to or the relativized jump . Related to this observation the equivalence expressed in the two normal form theorems is not fully uniform and, in fact, is not transparent in a topological sense (see [6, Proposition 9.13]).

It is rarely mentioned that –generic points as they are used in computability theory [42] can be characterized as points of continuity of the Turing jump . This was noticed in [6, Lemma 9.3].

Definition 19 (–generic).

A point is called –generic if and only if is continuous at .

It is easy to see that –generic points cannot be computable. The following characterization of –generic points is a consequence of Theorem 14. The –generic points are exactly those at which every limit computable function is continuous.

Corollary 20 (–generic points).

A point is –generic if and only if every limit computable function with is continuous at .

While the “only if” direction is a consequence of Theorem 14, one obtains the “if” direction by applying the statement to . We note that there are limit computable functions (such as the limit map ) that do not have any –generics in their domain, simply because they are not continuous at any point.

It is easy to see that restricted to –generics the Turing jump operator is continuous and computable relative to the halting problem.

Proposition 21 (Jump on –generics).

The Turing jump operator restricted to the set of –generics is computable relative to the halting problem.

Proof.

The sets

  1. the –th Turing machine halts on all extensions of ,

  2. the –th Turing machine halts on no extension of

are both computable relative to . Given a –generic it is clear that for each there is a such that or . Depending on the answer we know that or . Hence, restricted to –generics is computable relative to the halting problem. ∎

As a consequence of the jump normal form (Theorem 14) we obtain that every limit computable function is computable relative to the halting problem, when restricted to the –generic inputs.

Corollary 22 (Limit computability on –generics).

Restricted to –generics every limit computable is computable relative to the halting problem.

As a non-uniform corollary of Proposition 21 we obtain that all –generics are generalized low, a property that is made more precise in the next well-known corollary [26, Lemma 2].

Corollary 23 (Jockusch 1977).

for all –generics .

Here the reduction follows directly from Proposition 21, and the inverse reduction even holds for arbitrary .

The points whose jump is below also have a special name, they are called low.

Definition 24 (Low points).

A point is called low, if its Turing jump is limit computable.

It is clear that all computable points are low and all limit computable –generics are low by Corollary 23. One can use this observation to show that the class of low points also contains non-computable points. Using the low map we obtain the following characterization of low points [6, Lemma 8.2].

Corollary 25 (Low points).

A point is low if and only if there is a computable such that .

It follows from Corollaries 16 and 17 that computable functions map low inputs to low outputs. In [6] low functions were introduced that were further studied in [8, 10].

Definition 26 (Low functions).

A function is called low if there is a computable such that .

This definition captures the idea that the result of is computed as a low point. It is clear that low functions map computable inputs to low outputs. We obtain the following closure properties under composition.

Proposition 27 (Composition with low functions).

Let be functions. If and are low then so is . If is limit computable and is low, then is limit computable.

Proof.

Both observations are based on the jump normal form theorem (Theorem 14) that yields a computable with . By Corollary 8 we also have a computable with . This implies and . The cases of the composition of general low and limit computable functions can easily be derived from these observations. ∎

In fact, the low functions form the largest class of functions that can be composed with limit computable functions from the left without leaving the class of limit computable functions (see also [10, Proposition 14.16] for a related result).

Corollary 28 (Low functions).

A function is low if and only if is limit computable for every limit computable .

The “only if” direction is a direct consequence of Proposition 27. The “if” direction follows from the limit normal form theorem if one applies the assumption to . As a consequence of Proposition 4 we get the following corollary.

Corollary 29 (Finite mind changes are low).

Every function that is computable with finitely many mind changes is low.

Hence, in contrast to low points , we have a lot of natural examples of low functions, such as the equality test .

We close this section by mentioning briefly that there is a characterization of functions that are computable with finitely many mind changes that is analogous to Theorem 6.

Theorem 30 (Discrete limit normal form).

A function is computable with finitely many mind changes if and only if there exists a computable function , such that .

We leave the simple proof to the reader (see [6]).

3 Computability Relative to the Halting Problem

Now we consider functions that are computable relative to the halting problem . It turns out that they play a dual rôle to the low functions that are characterized in terms of . The functions that are computable relative to the halting problem can be characterized in terms of .

The first result shows that is computable relative to the halting problem. In order to prove this we need to invert limits such that we obtain control on the jump of the resulting converging sequence. Roughly speaking, this is possible since there are many sequences converging to a given point, and this gives us enough freedom to choose a suitable one. We recall that the composition of two multi-valued functions and is defined by with and . A multi-valued is called computable (relative to some oracle ) if there is a single-valued with the corresponding property and such that for all and . We recall that a function is called computable relative to some oracle if there is some computable function such that for all . In terms of computability theory, the next proof uses the finite extension method.

Theorem 31 (Limit inversion).

is computable relative to the halting problem.

Proof.

We need to show that there exists a function with and such that is computable relative to . Given we describe the computation of relative to by an inductive construction in . We start with and . Given a finite sequence of words together with numbers and bits we describe how we determine , and in stage of the construction. We let and for all . Now we consider the question whether the –th Turing machine halts on

for some with . Whether or not this is the case can be decided with the help of since the answer depends only on the finite portion of read so far. If the outcome of the decision is positive, then already a finite number for some and, in fact, finite prefixes of these are sufficient for the machine to halt. In this case we can compute such a and corresponding words such that for satisfy the condition, and we set . Otherwise, if the outcome of the decision is negative, then we choose , and . If we continue inductively in this way, then we can compute with the help of uniformly in . Since we have used longer and longer prefixes of in the construction of the , the value satisfies . Moreover, the construction guarantees that we can compute with the help of , namely . ∎

We note that is, in particular, continuous, and is computable by Theorem 14. Theorem 31 yields the following characterization of functions computable relative to the halting problem. The interesting point of the following theorem is not that there is an object that characterizes functions that are computable relative to the halting problem (the problem with the characteristic function of the halting problem would be a simpler such example), but the point is that our particular has this property.

Theorem 32 (Computability relative to the halting problem).

A function is computable relative to the halting problem if and only if there is a computable function such that .

Proof.

By Theorem 31 is computable relative to . Hence is computable relative to the halting problem for every computable . Let now be computable relative to the halting problem . Then there is a computable , such that for all . By Theorem 14 we know that there is a computable function such that , i.e., . On the other hand, there is a computable function such that Turing machine halts on all inputs if and only if machine halts on input . Hence for all and . Then with is computable and so is . We obtain

for all , hence if is restricted suitably (which is possible since for .) ∎

We note that this result implies that is not computable (hence it is an interesting example of a natural problem that is continuous and not computable). Another interesting consequence of our results is that the functions that are computable relative to the halting problem form the largest class of functions that, when composed with a limit computable function from the right, yield a limit computable function.

Corollary 33 (Computability relative to the halting problem).

A function is computable relative to the halting problem if and only if is limit computable for every limit computable .

The “if” direction follows from Theorems 32 and 14, when one chooses . The “only if” direction is a consequence of Theorems 32 and 6. A comparison of Corollaries 33 and 28 shows that the notions of a low function is dual to the notion of a function that is computable relative to the halting problem. Both classes should be naturally studied alongside the limit computable functions.

As another non-uniform side result of the limit inversion theorem (Theorem 31) we obtain a classical result from computability theory, the Friedberg jump inversion theorem [19].

Corollary 34 (Friedberg jump inversion theorem 1957).

For every with there exists a with .

Proof.

Given a fixed with we can compute and with from the proof of Theorem 31. In particular, . On the other hand, by the same theorem and Theorem 14 we obtain . ∎

As another corollary we obtain the announced extension of Corollary 8.

Corollary 35.

For every function that is computable relative to the halting problem there exists a computable function such that .

Figure 1: Limit diagram.

This result can be interpreted as a statement about the diagram in Figure 1. Vice versa, if is an arbitrary computable function that transfers converging sequences into converging sequence (not necessarily in an extensional way), then we can mimic the behavior of on the limits by a function that is computable relative to the halting problem. This follows from Theorems 32 and 14 and was proved directly with a somewhat more involved proof that does not exploit the Galois connection between Turing jumps and limits in [10, Theorem 14.11].

Corollary 36 (B., Hendtlass and Kreuzer 2017).

For all computable the multi-valued function is computable relative to the halting problem.

We close this section with a uniform version of Corollary 36. For the formulation we need a total representations of all continuous functions with computable –domain that satisfies a utm- and smn-theorem [47, Theorem 2.3.5].

Theorem 37 (Uniform limit control theorem).

There exists a computable such that for all with .

Proof.

By a relativized version of Theorem 31 there exist computable such that and for every . This can be proved exactly as in the proof of Theorem 31 except that we check whether the –th Turing machine halts upon input of

which can be decided using . Now, by applying the jump normal form theorem (Theorem 14) to we obtain a computable function with . Then is computable, and by the smn-theorem for there exists a total computable function such that for all . Finally, by the limit normal form theorem (Theorem 6) there exists a computable function such that . Such an is necessarily total. Altogether, we obtain

for all with . ∎

We note that the basic problems are generators of a monoid which can be used to characterize all sorts of other computability theoretic properties. For instance characterizes the property of being low and the property of being low relative to the halting problem (see also [8]).

4 Limit computability on represented spaces

The purpose of this section is to transfer our results on limit computable maps to represented spaces. We recall that a representation of a set is a surjective function . In this situation we say that is a represented space. Any point with is called a name of , and the word “representation” is reserved for the map as such. A problem is a multi-valued partial function on represented spaces and . If and are represented spaces and is a problem, then realizes , in symbols , if holds for all .

Definition 38 (Computable functions).

A problem is called continuous, computable, limit computable, low or computable with respect to the halting problem, if it has a realizer with the corresponding property.

Likewise, other properties can be transferred from realizers to problems. By we denote the set of total continuous functions . It is clear that all properties related to closure under composition that have been discussed in the previous section can be transferred to problems. This is because and implies . We can also transfer properties of points to represented spaces using representations.

Definition 39 (Computable points).

A point in a represented space is called computable, limit computable or low if it has a name with the corresponding property.

We note that the notion of –genericity is an example of a property that should not be defined via names since it is not invariant under equivalent representations (see Proposition 86 and the discussion afterwards).

Our main goal here is to transfer the limit normal form theorem and the jump normal form theorem (Theorems 6 and 14) to problems on represented spaces. Since we can incorporate limits and jumps into the represented spaces, these normal forms can be expressed very neatly. For this purpose we need the following concepts of jumps on represented spaces.

Definition 40 (Jumps).

Let be a represented space and , let be surjective, and let be such that is single-valued and surjective. We define the following representations of :

  1. (–jump)

  2. (–jump)

We denote the represented spaces and for short by and , respectively. In the special case of and , we define

  1. (jump)

  2. (discrete jump)

We denote the represented spaces and also by and , respectively.

We will apply this concept of a jump in the case of , , and . The special jumps for and (the limit on Baire space with respect to the discrete metric) were originally defined by Ziegler [51] and later also studied by the author, de Brecht and Pauly [6]. More general concepts of jumps were also studied in the context of effective descriptive set theory by de Brecht [14] and de Brecht and Pauly [34, 35, 36].

A common feature of the maps and is that they are surjective and transparent. It was noted by de Brecht [14] that the functor for surjective and transparent can be seen as an endofunctor on the class of represented spaces (that leaves the maps unchanged). This is made precise by the following result.

Proposition 41 (The jump as endofunctor).

If is a computable problem and is transparent and surjective then it follows that considered as a problem of type is computable too.

Proof.

If is computable, then it has a computable realizer . Since is transparent, there is a computable with . Hence is a computable realizer of . ∎

Through some results presented in this section we will get a better understanding of the types of problems mentioned in Proposition 41 for the specific maps that we are interested in.

We start with a result that characterizes limit computable problems and shows that the jump on the output side can be balanced by on the input side.

Theorem 42 (Limit computability).

Let be a problem. Then the following are equivalent:

  1. is limit computable,

  2. is computable,

  3. is computable.

Proof.

The equivalences are consequences of the limit normal form theorem (Theorem 6) and the jump normal form theorem (Theorem 14). ∎

We note that this result can be interpreted such that jumps and are adjoint to each other. However, this is a pure computability theoretic adjointness that does not relativize to a topological adjointness. The proof of the direction (3)(2) can be extended to a uniform proof, but this is not so for the direction (2)(3). In fact, , since is not topologically transparent. However, we can derive the following relativized version of Theorem 42 from Theorem 18.

Corollary 43 (Relativized limit computability).

Let be a problem and . Then the following are equivalent:

  1. is limit computable relative to ,

  2. is computable relative to ,

  3. is computable.

We can transfer our characterization of low problems.

Theorem 44 (Low computability).

Let be a problem. Then the following are equivalent:

  1. is low,

  2. is computable,

  3. is computable,

  4. is computable,

  5. is computable relative to the halting problem .

Proof.

The equivalence of (1) and (2) is a direct consequence of the definition of low maps on Baire space. Since low maps are closed under composition by Proposition 27, it follows that (2) implies (3). Since is computable, it follows that (3) implies (2). By Theorem 42 (2) and (4) are equivalent since . By the statement “(1)(4)” of Theorem 45 (which independently follows from Corollaries 35 and 36) we obtain that (3) and (5) are equivalent. ∎

Finally, we obtain a dual characterization of the problems that are computable relative to the halting problem.3

Theorem 45 (Computability relative to the halting problem).

Let be a problem. Then the following are equivalent:

  1. is computable relative to the halting problem ,

  2. is computable,

  3. is computable,

  4. is computable,

  5. is low.

Proof.

The equivalence of (1) and (2) is a consequence of Theorem 32. Since functions computable relative to are closed under composition, it follows again by Theorem 32 that (2) implies (3). Since is computable, it is clear that (3) implies (2). The equivalence of (2) and (4) follows from Theorem 42 since . The equivalence of (3) and (5) follows from Theorem 44. ∎

The equivalence of (1) and (4) can also be directly derived from Corollaries 35 and 36. Likewise we obtain the following relativized version.

Theorem 46 (Computability relative to an oracle).

Let be a problem and . Then the following are equivalent:

  1. is computable relative to ,

  2. is computable relative to .

Proof.

The implication from (2) to (1) is a consequence of Theorem 37. For the implication from (1) to (2) we need a relativized version of Corollary 35 that can actually be derived from this corollary. Let be the universal computable function. Then by Corollary 35 there exists a computable such that . There is also a computable with . If we denote by the function with then we obtain . Hence, is a realizer for if is a realizer for . This proves the claim. ∎

We immediately obtain the following corollary, where denotes the –th Turing jump of and denotes the –th jump of the represented space .

Corollary 47 (Computability relative to higher jumps).

Let be a problem and . Then the following are equivalent:

  1. is computable relative to ,

  2. is computable.

Other characterizations can be derived as conclusion of the results provided in this section. Now we want to show that jumps interact nicely with products and function space constructions. We recall that for two represented spaces and we can define a representation of , of and of as follows:

  1. .

  2. .

  3. by .

It is known that these representations make evaluation and currying computable [47, Lemmas 3.3.14, 3.3.16 and Theorem 3.3.15] and that sequences can be identified with continuous functions.

Fact 48 (Function space).

The following are computable for all represented spaces :

  1. ,

  2. ,

  3. and its inverse.

We obtain the following result that shows how jumps interact with products and function space constructions. We call a problem