What does "Turing-complete" really mean?

263 Views Asked by At

People talk about various programming languages or computational models being "Turing-complete." But what does that technically mean? The technical definition is buried under tons of informal "definitions", and is too basic to be covered by textbooks I have at hand (including Odifreddi's, a textbook that tends to talk about this kind of topic).

A plausible definition is this: fix some standard computational model. For a programming language $L$, let $K_L$ be the set of (codes) of triplets $(e,x,y)$ where $e$ is (the code of) a program in $L$ and $y$ is the result of running $e$ with input $x$. For decent $L$, $K_L$ is r.e. And $L$ is defined to be Turing-complete if $K_L \equiv_T 0'$.

For all natural $L$, not only $K_L \equiv_T 0'$ but also $K_L \equiv_m 0'$ (or equivalently $K_L \equiv_1 0'$). That is, there exist computable functions $c, i, o$ such that $(c(e),i(x),o(y)) \in K_L$ iff $\varphi_{e}(x) \downarrow= y$. Intuitively, $c$ can be thought of as a compiler, and $i$ and $o$ can be seen as functions that changes the "format" of input and output. (Edit: in the first few editions of this post the function went in the wrong direction.)

But there exists an r.e. set $S$ s.t. $S \equiv_T 0'$ but $S \not \equiv_m 0'$, like effective simple sets. By reinterpreting $S$ as a set of triplets one can think of a programming language $L_S$ such that $K_{L_S} = S$. This $L$ lacks at least one of the functions $c,i,o$ above. Such a language seems really bizarre, albeit being "Turing-complete." Most non-$m$-complete $T$-complete sets are artificial, but there are some not-so-artificial ones, like the set of non-Kolmogorov random strings.

Do we call such $L_S$ Turing-complete? Or does it have a different definition?