27.04.2015 Views

Computability and Logic

Computability and Logic

Computability and Logic

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.3. THE SCOPE OF ABACUS COMPUTABILITY 57<br />

5.3 The Scope of Abacus <strong>Computability</strong><br />

We now turn from showing that particular functions are abacus computable to showing<br />

that certain processes for defining new functions from old, when applied to old abacuscomputable<br />

functions, produce new abacus-computable functions. (These processes<br />

will be explained <strong>and</strong> examined in more detail in the next chapter, <strong>and</strong> readers may<br />

wish to defer reading this section until after that chapter.)<br />

Now we initially indicated that to compute a function of r arguments on an abacus,<br />

we must specify r registers or boxes in which the arguments are to be stored initially<br />

(represented by piles of rocks) <strong>and</strong> we must specify a register or box in which the<br />

value of the function is to appear (represented by a pile of rocks) at the end of<br />

the computation. To facilitate comparison with computations by Turing machines in<br />

st<strong>and</strong>ard form, we then insisted that the input or arguments were to be placed in the<br />

first r registers, but left it open in which register n the output or value would appear:<br />

it was not necessary to be more specific, because the simulation of the operations<br />

of an abacus by a Turing machine could be carried out wherever we let the output<br />

appear. For the purposes of this section, we are therefore free now to insist that the<br />

output register n, which we have heretofore left unspecified, be specifically register<br />

r + 1. We also wish to insist that at the end of the computation the original arguments<br />

should be back in registers 1 through r. In the examples considered earlier this last<br />

condition was not met, but those examples are easily modified to meet it. We give<br />

some further, trivial examples here, where all our specifications are exactly met.<br />

5.7 Example (Zero, successor, identity). First consider the zero function z, the one-place<br />

function that takes the value 0 for all arguments. It is computed by the vacuous program:<br />

box 2 is empty anyway.<br />

Next consider the successor function s, the one-place function that takes any natural<br />

number x to the next larger natural number x + 1. It is computed by modifying the program<br />

in Example 5.3, as shown in Figure 5-14.<br />

Figure 5-14. Three basic functions.<br />

Initially <strong>and</strong> finally, [1] = x; initially [2] = 0; finally, [2] = s(x). Finally consider identity<br />

function id m n , the n-place function whose value for n arguments x 1, ..., x n is the mth one<br />

among them, x m . It is computed by the program of the same Example 5.3. Initially <strong>and</strong><br />

finally, [1] = x 1 , ...,[n] = x n ; initially, [n + 1] = 0; finally [n + 1] = x m .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!