Elementary Algorithms and Their Implementations

In the sequence of articles [3, 5, 4, 6, 7], Moschovakis has proposed a mathematical modeling of the notion of algorithm—a set-theoretic “definition” of algorithms, much like the “definition” of real numbers as Dedekind cuts on the rationals or that of random variables as measurable functions on a probability space. The aim is to provide a traditional foundation for the theory of algorithms, a development of it within axiomatic set theory in the same way as analysis and probability theory are rigorously developed within set theory on the basis of the set theoretic modeling of their basic notions. A characteristic feature of this approach is the adoption of a very abstract notion of algorithm which takes recursion as a primitive operation, and is so wide as to admit “non-implementable” algorithms: implementations are special, restricted algorithms (which include the familiar models of computation, e.g., Turing and random access machines), and an algorithm is implementable if it is reducible to an implementation. Our main aim here is to investigate the important relation between an (implementable) algorithm and its implementations, which was defined very briefly in [6], and, in particular, to provide some justification for it by showing that standard examples of “implementations of algorithms” naturally fall under it. We will do this in the context of (deterministic) elementary algorithms, i.e., algorithms which compute (possibly partial) functions f : M ⇀ M from (relative to) finitely many given partial functions on some set M ; and so part of the paper is devoted to a fairly detailed exposition of the basic facts about these algorithms, which provide the most important examples of the general theory but have received very little attention in the general development. We will also include enough facts about the general theory, so that this paper can be read independently of the articles cited above—although many of our