Classic text considers general theory of computability, computable functions, operations on computable functions, Turing machines self-applied, unsolvable decision problems, applications of general theory, mathematical logic, Kleene hierarchy, computable functionals, classification of unsolvable decision problems and more.
This book is an introduction to the theory of computability and noncomputability, usually referred to as the theory of recursive functions. This subject is concerned with the existence of purely mechanical procedures for solving various problems. Although the theory is a branch of pure mathematics, it is, because of its relevance to certain philosophical questions and to the theory of digital computers, of potential interest to nonmathematicians. The existence of absolutely unsolvable problems and the Godel incompleteness theorem are among the results in the theory of computability which have philosophical significance. The existence of universal Turing machines, another result of the theory, confirms the belief of those working with digital computers that it is possible to construct a single "all-purpose" digital computer on which can be programmed (subject of course to limitations of time and memory capacity) any problem that could be programmed for any conceivable deterministic digital computer. This assertion is sometimes heard in the strengthened form: anything that can be made completely precise can be programmed for an all-purpose digital computer. However, in this form, the assertion is false. In fact, one of the basic results of the theory of computability (namely, the existence of nonrecursive, recursively enumerable sets) may be interpreted as asserting the possibility of programming a given computer in such a way that it is impossible to program a computer (either a copy of the given computer or another machine) so as to determine whether or not a given item will be part of the output of the given computer. Another result (the unsolvability of the halting problem) may be interpreted as implying the impossibility of constructing a program for determining whether or not an arbitrary given program is free of "loops."