machines and implementations The first definition of an abstract machine was given by Turing, in the classic [20]. Without repeating here the well-known definition (e.g., see [6]), 13 we recall that each Turing machine M is equipped with a "semi-infinite tape" which it uses both to compute and also to communicate with its environment: To determine the value f(n) (if any) of the partial function 14 f : N * N computed by M , we put n on the tape in some standard way, e.g., by placing n + 1 consecutive 1s at its beginning; we start the machine in some specified, initial, internal state q 0 and looking at the leftmost end of the tape; and we wait until the machine stops (if it does), at which time the value f(n) can be read off the tape, by counting the successive 1s at the left end. Turing argued that the number-theoretic functions which can (in principle) be computed by any deterministic, physical device are exactly those which can be computed by a Turing machine, and the correspon...