Computability by George Tourlakis
This survey of computability theory offers the techniques and tools that computer scientists (as well as mathematicians and philosophers studying the mathematical foundations of computing) need to mathematically analyze computational processes and investigate the theoretical limitations of computing. Beginning with an introduction to the mathematisation of mechanical process using URM programs, this textbook explains basic theory such as primitive recursive functions and predicates and sequence-coding, partial recursive functions and predicates, and loop programs.
Advanced chapters cover the Ackerman function, Tarski's theorem on the non-representability of truth, Goedel's incompleteness and Rosser's incompleteness theorems, two short proofs of the incompleteness theorem that are based on Lob's deliverability conditions, Church's thesis, the second recursion theorem and applications, a provably recursive universal function for the primitive recursive functions, Oracle computations and various classes of computable functionals, the Arithmetical hierarchy, Turing reducibility and Turing degrees and the priority method, a thorough exposition of various versions of the first recursive theorem, Blum's complexity, Hierarchies of primitive recursive functions, and a machine-independent characterisation of Cobham's feasibly computable functions.