Injection from computable numbers into natural numbers

465 Views Asked by At

Each Turing machine which writes an infinite sequence of 1 and 0 can be regarded as representing a (computable) real number (and of course each Turing machine represents a natural number by its machine table, or program). The question is, how many Turing jumps do we need to construct an injection from such computable numbers into natural numbers. Since there are an infinite number of Turing machines that compute one and the same computable real number, it seems we need at least one Turing jump. Is only once is enough? If not, how many? Even transfinite times?

1

There are 1 best solutions below

3
On BEST ANSWER

I believe one Turing jump suffices. Each computable real could be represented by a {0,1}-Turing machine therefore they are no more than the total number of computer programs. Consider the map $f: \omega-K \mapsto \omega$ where $K$ is the halting set, that is set of the indices of all programs that halt. Then $f(x)=least \ e\in \omega$ such that $\exists z \varphi_e(z)\neq \varphi_i(z) \forall i<e$. This is a $\Sigma_1^0$ question thus can be answer in $\emptyset'$. Then it is easy to see the construction of f is recursive in $K$ and it is injective also.