Computably enumerable set

In computability theory, a set S of natural numbers is called computably enumerable (c.e.), recursively enumerable (r.e.), semidecidable, partially decidable, listable, provable or Turing-recognizable if:


 * There is an algorithm such that the set of input numbers for which the algorithm halts is exactly S.

Or, equivalently,


 * There is an algorithm that enumerates the members of S. That means that its output is simply a list of all the members of S:  s1, s2, s3, ... .  If S is infinite, this algorithm will run forever.

The first condition suggests why the term semidecidable is sometimes used. More precisely, if a number is in the set, one can decide this by running the algorithm, but if the number is not in the set, the algorithm runs forever, and no information is returned. A set that is "completely decidable" is a computable set. The second condition suggests why computably enumerable is used. The abbreviations c.e. and r.e. are often used, even in print, instead of the full phrase.

In computational complexity theory, the complexity class containing all computably enumerable sets is RE. In recursion theory, the lattice of c.e. sets under inclusion is denoted $$\mathcal{E}$$.

Formal definition
A set S of natural numbers is called computably enumerable if there is a partial computable function whose domain is exactly S, meaning that the function is defined if and only if its input is a member of S.

Equivalent formulations
The following are all equivalent properties of a set S of natural numbers:


 * Semidecidability :
 * The set S is computably enumerable. That is, S is the domain (co-range) of a partial computable function.
 * The set S is $$\Sigma^0_1$$ (referring to the arithmetical hierarchy).
 * There is a partial computable function f such that: $$ f(x) =

\begin{cases} 1 &\mbox{if}\ x \in S \\ \mbox{undefined/does not halt}\ &\mbox{if}\ x \notin S \end{cases} $$
 * Enumerability :
 * The set S is the range of a partial computable function.
 * The set S is the range of a total computable function, or empty. If S is infinite, the function can be chosen to be injective.
 * The set S is the range of a primitive recursive function or empty. Even if S is infinite, repetition of values may be necessary in this case.


 * Diophantine :
 * There is a polynomial p with integer coefficients and variables x, a, b, c, d, e, f, g, h, i ranging over the natural numbers such that $$x \in S \Leftrightarrow \exists a,b,c,d,e,f,g,h,i \ ( p(x,a,b,c,d,e,f,g,h,i) = 0).$$ (The number of bound variables in this definition is the best known so far; it might be that a lower number can be used to define all Diophantine sets.)
 * There is a polynomial from the integers to the integers such that the set S contains exactly the non-negative numbers in its range.

The equivalence of semidecidability and enumerability can be obtained by the technique of dovetailing.

The Diophantine characterizations of a computably enumerable set, while not as straightforward or intuitive as the first definitions, were found by Yuri Matiyasevich as part of the negative solution to Hilbert's Tenth Problem. Diophantine sets predate recursion theory and are therefore historically the first way to describe these sets (although this equivalence was only remarked more than three decades after the introduction of computably enumerable sets).

Examples

 * Every computable set is computably enumerable, but it is not true that every computably enumerable set is computable. For computable sets, the algorithm must also say if an input is not in the set – this is not required of computably enumerable sets.
 * A recursively enumerable language is a computably enumerable subset of a formal language.
 * The set of all provable sentences in an effectively presented axiomatic system is a computably enumerable set.
 * Matiyasevich's theorem states that every computably enumerable set is a Diophantine set (the converse is trivially true).
 * The simple sets are computably enumerable but not computable.
 * The creative sets are computably enumerable but not computable.
 * Any productive set is not computably enumerable.
 * Given a Gödel numbering $$\phi$$ of the computable functions, the set $$\{\langle i,x \rangle \mid \phi_i(x) \downarrow \}$$ (where $$\langle i,x \rangle$$ is the Cantor pairing function and $$\phi_i(x)\downarrow$$ indicates $$\phi_i(x)$$ is defined) is computably enumerable (cf. picture for a fixed x). This set encodes the halting problem as it describes the input parameters for which each Turing machine halts.
 * Given a Gödel numbering $$\phi$$ of the computable functions, the set $$\{ \left \langle x, y, z \right \rangle \mid \phi_x(y) = z \}$$ is computably enumerable. This set encodes the problem of deciding a function value.
 * Given a partial function f from the natural numbers into the natural numbers, f is a partial computable function if and only if the graph of f, that is, the set of all pairs $$\langle x,f(x)\rangle$$ such that f(x) is defined, is computably enumerable.

Properties
If A and B are computably enumerable sets then A ∩ B, A ∪ B and A × B (with the ordered pair of natural numbers mapped to a single natural number with the Cantor pairing function) are computably enumerable sets. The preimage of a computably enumerable set under a partial computable function is a computably enumerable set.

A set $$T$$ is called co-computably-enumerable or co-c.e. if its complement $$\mathbb{N} \setminus T$$ is computably enumerable. Equivalently, a set is co-r.e. if and only if it is at level $$\Pi^0_1$$ of the arithmetical hierarchy. The complexity class of co-computably-enumerable sets is denoted co-RE.

A set A is computable if and only if both A and the complement of A are computably enumerable.

Some pairs of computably enumerable sets are effectively separable and some are not.

Remarks
According to the Church–Turing thesis, any effectively calculable function is calculable by a Turing machine, and thus a set S is computably enumerable if and only if there is some algorithm which yields an enumeration of S. This cannot be taken as a formal definition, however, because the Church–Turing thesis is an informal conjecture rather than a formal axiom.

The definition of a computably enumerable set as the domain of a partial function, rather than the range of a total computable function, is common in contemporary texts. This choice is motivated by the fact that in generalized recursion theories, such as α-recursion theory, the definition corresponding to domains has been found to be more natural. Other texts use the definition in terms of enumerations, which is equivalent for computably enumerable sets.