38 1. Logic and foundations (possibly more restrictive) protocol19 for manipulating objects in a class, or verifying whether a given statement is true or false. For this, it is convenient to use the conceptual framework that is familiar to us through modern computer languages, such as C. In this paradigm, when dealing with a class of objects (e.g., integers), we do not get access to the entire set Z of integers directly. Instead, we have to declare an integer variable, such as n, and set it equal to some value, e.g., n := 57 or, if one is creating a routine that takes input, n might be initialised to one of the unspecified inputs of that routine. Later on, we can use existing variables to define new ones or to redefine existing ones e.g., one might define m to equal n ∗ n, or perhaps one can increment n to n+1. One can then set up various loops and iterations to explore more of the parameter space for instance, if countably infinite loops are permitted as a computational resource, then one can exhaust the positive integers by starting at n = 1 and incrementing n by 1 indefinitely one can similarly exhaust the negative integers, and by alternating between the two (and also passing through 0) one can exhaust the entire integers by a countably infinite loop. This of course is just the standard demonstration that the integers are countable. Real-world computers, of course, have finite limits of precision they cannot represent arbitrarily large integers, but only integers up to a certain size (e.g., 216 − 1 or 232 − 1). One could think about computational models with such a strict finitary limitation, but let us assume that we are in a more idealised setting in which there are no limitations on how large an integer one can store. Let us then make the even more idealised assumption that we can also store real numbers with unlimited precision our computer never20 makes any roundoff errors. Remark 1.12.1. A technical point: it may be that the computational model of the real numbers is different from the standard real line R for instance, perhaps the computer only implements “constructible” real numbers, which is, for instance, the case in physical arbitrary precision computers. We will touch upon this point again later. Note that if one were to expand out a given real number, say π, as a decimal expansion, then one would obtain an infinite string of digits. But, just as we do not have direct access to the set Z of all integers, we will not have direct access to the entire decimal expansion of π. If we have a natural number n, we are allowed to inspect the nth digit of π by making a suitable 19 In more philosophical terms, we are focusing more on an epistemological approach to mathematics, based on what we can measure and query, as opposed to an ontological approach, based on what we believe to exist. 20Note that there are indeed arbitrary precision models of computation that can do this, though the catch is that speed of computation depends heavily on how complicated it is to describe any given number.

Purchased from American Mathematical Society for the exclusive use of nofirst nolast (email unknown) Copyright 2013 American Mathematical Society. Duplication prohibited. Please report unauthorized use to cust-serv@ams.org. Thank You! Your purchase supports the AMS' mission, programs, and services for the mathematical community.