Although the halting problem is not computable, it is possible to simulate program execution and produce an infinite list of the programs that do halt. Thus the halting problem is an example of a "recursively enumerable set", which is a set that can be enumerated by a Turing machine (other terms for recursively enumerable include "computably enumerable" and "semidecidable"). Equivalently, a set is recursively enumerable if and only if it is the range of some computable function. The recursively enumerable sets, although not decidable in general, have been studied in detail in recursion theory.