The development of the mathematical theory of computability was motivated in large part by the foundational crisis in mathematics. D. Hilbert suggested an antidote to all the foundational problems that were discovered in the late 19th century: his proposal, in essence, was to formalize mathematics and construct a finite set of axioms that are strong enough to prove all proper theorems, but no more. Thus a proof of consistency and a proof of completeness were required. These proofs should be carried only by strictly finitary means so as to be beyond any reasonable criticism. As Hilbert pointed out [19], to carry out this project one needs to develop a better understanding of proofs as objects of mathematical discourse:To reach our goal, we must make the proofs as such the object of our investigation; we are thus compelled to a sort of proof theory which studies operations with the proofs themselves.Furthermore, Hilbert hoped to find a single, mechanical procedure that would, at least in principle, provide correct answers to all well-defined questions in mathematics [20]:The Entscheidungsproblem is solved when one knows a procedure by which one can decide in a finite number of operations whether a given logical expression is generally valid or is satisfiable. The solution of the Entscheidungsproblem is of fundamental importance for the theory of all fields, the theorems of which are at all capable of logical development from finitely many axioms.