Enumerability, Decidability, Computability An Introduction to the Theory of Recursive Functions
The task of developing algorithms to solve problems has always been considered by mathematicians to be an especially interesting and im portant one. Normally an algorithm is applicable only to a narrowly limited group of problems. Such is for instance the Euclidean algorithm, which determines the greatest common divisor of two numbers, or the well-known procedure which is used to obtain the square root of a natural number in decimal notation. The more important these special algorithms are, all the more desirable it seems to have algorithms of a greater range of applicability at one's disposal. Throughout the centuries, attempts to provide algorithms applicable as widely as possible were rather unsuc cessful. It was only in the second half of the last century that the first appreciable advance took place. Namely, an important group of the inferences of the logic of predicates was given in the form of a calculus. (Here the Boolean algebra played an essential pioneer role. ) One could now perhaps have conjectured that all mathematical problems are solvable by algorithms. However, well-known, yet unsolved problems (problems like the word problem of group theory or Hilbert's tenth problem, which considers the question of solvability of Diophantine equations) were warnings to be careful. Nevertheless, the impulse had been given to search for the essence of algorithms. Leibniz already had inquired into this problem, but without success.