Turing Machines and Computability
Computability theory studies which functions and sets can be effectively computed by idealized machines. The Turing machine provides the standard model of computation, and the Church-Turing thesis asserts that it captures the informal notion of "algorithm."
Turing Machines
A Turing machine is a tuple where is a finite set of states, is the input alphabet, is the tape alphabet, is the transition function, is the start state, and are halting states.
A partial function is computable (or recursive) if there exists a Turing machine that, on input , halts with on its tape when is defined, and does not halt otherwise. A total computable function is one that halts on all inputs.
Decidability and Enumerability
A set is decidable (recursive) if its characteristic function is computable. is computably enumerable (c.e., or recursively enumerable) if for some computable partial function , or equivalently, is the range of a total computable function (when is non-empty).
The set is computably enumerable but not decidable. This is the canonical undecidable c.e. set, and its undecidability is proved by diagonalization: assuming is decidable leads to a contradiction when we consider the machine that does the opposite of what the decision procedure predicts.
The Church-Turing thesis asserts that every effectively calculable function is Turing-computable. This is not a mathematical theorem but a philosophical claim, supported by the equivalence of Turing machines with lambda calculus, recursive functions, register machines, and all other reasonable models of computation.