Mathematics has been the most successful and is the most mature of the sciences. Its first great master work – Euclid's ‘Elements’ – which helped to establish the field and demonstrate the power of its methods, was written about 2400 years ago; and it served as a standard text in the mathematics curriculum well into the twentieth century. By contrast, the first comparable master work of physics – Newton's *Principia* – was written 300 odd years ago. And the juvenile science of biology only got its first master work – Darwin's ‘On the Origin of Species’ – a mere 150 years ago. The development of the subject has also been extraordinarily fertile, particularly in the last three centuries, and it is perhaps only in the last century that the other sciences have begun to approach mathematics in the steady accumulation of knowledge that it has been able to offer. There has, moreover, been almost universal agreement on its methods and how they are to be applied. What we require is proof; and, in practice, there is very little disagreement over whether or not we have it. The other sciences, by contrast, tend to get mired in controversy over the significance of this or that experimental finding or over whether one theory is to be preferred to another.

But despite its great success and maturity, the foundations of the subject have been shrouded in problems and mysteries. How is it possible for there to be an ontology of mathematical objects – of numbers, sets, functions and the like – apparently set apart from the familiar ontology of physical things – with its chairs and tables or molecules and atoms – and from the familiar ontology of mental things – with its beliefs and desires or pleasures and pains. And even if it is possible for there to be such an ontology, then how is possible for us to talk or think about it? How can we grasp what it is to be a natural number or of what it is for one natural number to be a successor of another? And even if it is possible for us to talk or think about the ontology of mathematics, how can we get to know about its objects? How can we know that each natural number has at most one successor, let alone the more advanced results of mathematics, such as Fermat's Last Theorem or the Four Color Conjecture? In a word, how can there be a ‘third’ world of mathematical objects and how can we, who are firmly ensconced in the psycho/physical world, bridge the gap between our world and this other world?

In response to these problems, philosophers of mathematics have tended to move in one of two directions. Some have thought of mathematics as being in us. The objects of mathematics are somehow creatures of our own making – perhaps somewhat in the same way as the objects of fiction – and in talking or thinking of mathematics we are, if only indirectly, talking or thinking about ourselves. There is then no mystery as to what this third world might be for its objects are or derive from our own thoughts; and there is no mystery as to how to bridge the gap between our world and the world of mathematics since there is no gap to bridge.

Other philosophers have thought of mathematics as being outside of us – as existing independently of our own thoughts and feelings. There *is* then a gap to bridge; and they have thought that just as we may grasp and gain knowledge of the physical world through perception, so we may grasp and gain knowledge of the mathematical world through some sort of intellectual counterpart of perception. Thus just as I may survey the scene before me and thereby gain knowledge of its objects and how they are related, so I may survey the series of natural numbers or the continuum of points on the line and thereby gain knowledge of the mathematical scene that lies before my ‘eyes’.

Both of these views suffer from severe difficulties. The first ‘constructivist’ view hobbles mathematical practice as we know it. We would like to say that the Twin Prime Conjecture is either definitely true or definitely false. But how can we be so confident of this if its truth or falsity must somehow reside in us? For if we are incapable of settling the question, as well we might, then there is nothing in which the truth or falsity of the conjecture might consist.

The second ‘platonist’ view does not have this problem. For given the existence of the number series, the truth or falsity of the Twin Prime Conjecture will be settled one way or the other. But the platonists have never been able to provide a satisfactory explanation of what this intellectual form of perception might be or of how it might be capable of latching onto to its objects and providing us with knowledge of how they are related.

In the light of these and of other problems, one might be tempted to adopt an intermediate position. We seem to face a stark choice between the objects of mathematics being invented, on the one hand, or discovered, on the other. But could the truth lie somewhere in the middle? Could the objects of mathematics be somehow both *partly* invented and *partly* discovered.

In this connection, the late distinguished English philosopher, Michael Dummett, has suggested that the objects of mathematics might somehow be ‘prodded’ into existence. Thus they will not be entirely products of our minds since there must already be something there to prod, but nor will they be entirely independent of us since *we* need to prod in order to bring them into existence.

This is a nice metaphor but, as Dummett is himself aware, it is not at all clear what it comes to. What exactly is prodded? What is the prodding? And what results from the prodding? If we prod a sleeping dog with a stick it will begin to wake (and perhaps growl). But what, in the case of mathematics, is the dog, the stick and the awakening?

In the present paper, I would like to suggest a way of cashing out the metaphor. We thereby arrive, I believe, at a much more satisfactory conception of mathematics – one that does not hobble mathematical practice as we know it or make too much of a mystery as to how we might acquire knowledge of mathematical facts.

But before going into details, I need to review some key points from the history of mathematics. In the beginning were the positive natural numbers – 1, 2, 3, …. These are used to count objects – two turtle doves, three french hens, four calling birds. But later, zero and the negative integers were introduced. After that, the rationals numbers – the ratio of one integer to another, positive, integer. After that, the irrational numbers – the limits of a bounded sequences that would otherwise be without a limit. And after that, the complex numbers – those that could be formed from *i*, the square root of –1.

All of these extensions have their uses. The introduction of negative integers enables us to maintain the comforting illusion that we had money in the bank, –$1000, say, when we were actually in debt; and the introduction of rational numbers enables us to engage in endless spending, first spending 1c, then 1/2 a cent, then 1/4 a cent, and so on *ad infinitum*. More seriously, these various extensions enable us to provide order and unity to various branches of mathematics. Equations which could not otherwise be solved would now have a solution, for example, and lines or areas which could not otherwise be measured would now have a length or size.

But what are we doing when we extend the number system in this way and what justifies us in doing it? On the face of it, these successive extensions of the number system are strongly suggestive of the constructive picture, in which mathematical objects are creatures of our own making. Need a number which when added to 3 gives 0? Hey presto, just take there to be such a number and call it –3. Need a number which when multiplied by 3 will give 1? Hey presto, just take there to be such a number and call it 1/3. Need a number which is the square root of 2? Hey presto, just take there to be a number which fills the gap between those rational numbers whose square is less than 2 and those rational numbers whose square is greater than 2. In all of these cases, it looks as if the the various types of number have simply been postulated into existence as and when they were required. And it also appears as if the only constraint on postulating the new types of number is that it should be consistent to suppose that they exist. If it is consistent to suppose that the negative integers *might* exist, for example, then we may legitimately infer that they *do* exist; and, similarly, if it is consistent to suppose that rationals or reals or complex numbers *might* exist, then I may legitimately infer that they *do* exist. Hence the adage that, in mathematics, to exist is to be possible.

But although the constructivist position is most naturally suggested by actual mathematical practice, it is not the position that was generally adopted by the philosophers who first considered the question in the latter part of the nineteenth century and the early part of the twentieth century and nor is it the position that has been adopted by most contemporary textbooks in mathematics. These philosophers – and I principally have in mind Frege, Russell and Whitehead – thought that the various extensions of the number system were not properly extensions at all. It is not as if we began with a domain of objects to which the integers, the rationals and the like were then *added*. Rather, these objects were already there and, in ‘extending’ the number system, we are not introducing new objects but adopting a less restrictive conception of number under which these objects might then be taken to fall.

An analogy may help. Suppose I am at a party and someone says ‘there is no beer’, meaning no beer in the house. I then remark ‘there is some beer’, meaning beer in the store. This then is hardly a case in which I have introduced new intoxicants into the domain of what there is to drink (if only it were so easy!). I have merely adopted a less restrictive view of where such intoxicants are to be found. And similarly in the case of the number system. We begin with a very restrictive conception of what it is to be a number, one in which ‘number’ means ‘natural number’. We then adopt a less restrictive conception in which it means ‘integer’; and so on for the rationals, the reals, and the complex numbers. There has been no extension to the domain of numbers, but merely a liberalization in what we mean by ‘number’.

Not only were the views of these philosophers (and the contemporary textbooks) not in line with the most natural view of mathematical practice, they also had some bizarre consequences of their own. For what were these ‘new’ numbers – the integers, the rationals, the reals and the complex numbers like? If they were already there, then we needed some prior reason to think that they existed – one that had no essential connection with their role as numbers. So the tendency was to identify them with some other kind of object – such as the sets – which we had independent reason to believe in and which were sufficiently abundant as to be able to play the different roles that the different types of number were required to perform. Thus it was that the rationals were taken to be equivalence classes of ordered pairs of integers (the ‘ratios’), the reals to be ‘Dedekind cuts’, and the complex numbers ordered pairs of reals (one for the real component and the other for the imaginary component).

But these identifications are quite ‘arbitrary’; they add something entirely gratuitous to what properly belongs to our conception of what these objects are. There is no reason, for example, why a rational number should be taken to be an equivalence class rather than a representative member of such an equivalence class (one, say, in which the numerator and denominator have no factor in common); and even if a rational number is taken to be an equivalence class of ordered pairs, why take it to be an ordered pair in which the numerator is put first and the denominator second rather than the other way round?

Moreover, if we want to adopt a uniform view of the numbers of each type, one in which their general nature is essentially the same, then at each stage in the extension of the number system we will have to admit replicas of the numbers at the previous stage. Not only will there be the *natural* number 1, there must, if rationals are to be equivalence classes of pairs of integers, be a rational number 1, that is the set of ordered pairs of integers of the form (n, n), and, in the same way, there will be the *real* number 1, that is the Dedekind cut consisting of the rationals less than or equal to 1 and the rationals greater than 1, and there will be the *complex* number 1, that is the ordered pair (1, 0). In one's mathematical innocence, one might have thought that there was a single number 1 and that, in extending the number system, one *added* to the numbers that were already there. But not so on the present view. There are as many number 1's as there are types of number and in extending the number system we are not *adding* to the numbers that are already there but *replacing* them with something new. If fidelity to actual mathematical practice had been given any weight, then the present view would have been dismissed long ago.

But to make matters worse, it is not even clear that the present view has any real epistemological advantage over the postulational view. Take the case of the reals; and consider a ‘gap’ in the rational numbers, as when we have all of the rationals whose square is less than 2 on the one side and all of the rationals whose square is greater than 2; on the other side. We want to ‘fill’ this gap with an irrational number, the square root of 2. What we do on the traditional view is postulate an irrational number to fill the gap. But what we do on the standard contemporary view is take an object already at hand, such as the set of rationals whose square root is less than 2, and let *it* fill the gap. The existence of an object to fill the gap is then no more in dispute than is the existence of the set.

But why think the existence of the set is any less problematic than the existence of a number that was simply postulated to fill the gap? After all, the postulated number draws a boundary between the numbers whose square is less than 2 and those whose square is greater than 2. But the set does more or less the same; it draws a boundary between those objects which are rationals whose square is less than 2 and all other objects. Indeed, one might be forgiven for thinking that the existence of the set arises as much from an act of postulation as does the existence of the irrational. In the one case, we wish to extend the domain of numbers and in the other case we wish to the domain of sets; and we feel as justified in taking there to be an object that might fill a ‘gap’ in the domain of numbers as we feel justified in taking there to be an object that fills a ‘gap’ in the domain of sets.

If I am right, then the standard view does a miserable job in explaining what we actually do in extending the number system or in justifying what we do. But is there a more satisfactory view – one that might do justice to the thought that the new types of number are genuinely introduced and the number system is genuinely extended?

We here face an enormous difficulty – which will take us to the heart of our attempt to understand the metaphor of prodding. For in extending the number system, we want the new types of number not to be already there. But how can that be? How can we generate numbers out of thin air?

One possibility is that in postulating the different types of number we bring them into existence, perhaps much in the same way as an author may bring his fictional characters into existence. But it is odd to think of the irrational numbers, say, as not existing prior to our acts of postulation or even to think of them as existing in time at all. And what if some previous generations many eons ago had already postulated the irrational numbers so that they already existed? Would our postulation of them then be impossible? Or would they have been postulating *their* irrational numbers and we have been postulating *ours*.

Clearly, this is not a reasonable hypothesis. But what then is going on? In what sense are the numbers that are added to the number system not already there and in what sense are they postulated?

In order to answer this question, we must go to another chapter in the history of mathematics. In considering Cantor's theory of transfinite number, Russell came across a paradox, which now bears his name. Surely, for any condition on objects there should exist a set of objects that conform to the condition. But consider now the condition of being a set that is not a member of itself. There should be a set of objects conforming to the condition. This will be the set of all those sets that are not members of themselves. Does this set belong to itself? If it does, then it conforms to the condition and so does not belong to itself. If it does not, then it fails to conform to the condition and so does belong itself. A contradiction either way! Where have we gone wrong? One response to the paradox is to take our mistake to consist in thinking that we can quantify over absolutely all sets. Go back to the party. My informant who said ‘there is no beer’ only quantified over the beer in the house. I, in responding to him, quantified over the beer in the near neighborhood. But surely it is possible for us to quantify over all the beer that there is – not here or there but anywhere. And surely it is also possible, one might think, for us to quantify over all the sets that there are – not just sets of things, say, or sets of sets of things, but all sets whatever.

The present response to Russell's paradox maintains that this natural thought – the thought that one can quantify over absolutely everything – is mistaken. For whatever I quantify over, I can always quantify over more. I can, for example, always quantify over the set of all those objects that I previously quantified over that conform to some pre-specified condition and so, in particular, I can include within the range of my new quantifier the set all those sets that I previously quantified over that are not members of themselves. But then, on pain of contradiction, this set cannot be one of the objects that I previously quantified over. In this way, the domain of quantification can always be extended and quantification over absolutely everything becomes impossible.

There is the danger of a certain kind of transcendental illusion here, an illusion in which we take ourselves to be capable of transcending a situation in which we necessarily find ourselves. For given the endless possibilities for extending the domain of quantification, I feel as if I can quantify over all of the domains of quantification that might be achieved through making such extensions. And if I can quantify over all of these domains, then I can quantify over all of the objects *in* these domains and thereby quantify over absolutely everything.

But this is like thinking we can survey all of space from a position outside of space. Just as there is no escape from our position in space, so there is no escape from the possibility of extending the domain of quantification. And no matter how hard we might try to leapfrog over all of the different domains through which the extension of given domain might be achieved, the possibility of further extending the given domain will always remain and the goal of achieving an absolutely unrestricted form of quantification will forever elude us. We are *trapped* within an essentially limited ontology just as we are trapped in space; and although we may always extend our horizon and take in more and more, there is no vantage point from which the horizon disappears.

We are now in a better position to understand the sense in which, in extending the number system, the new types of number are not ‘already there’. For it may be supposed that the way in which one extends the number system is exactly analogous to the way in which one might extend the domain of sets. In each case there is a potential, so to speak, for introducing new objects of the required sort into the domain and this potential is then realized by making the appropriate decision to introduce these objects in such and such a way. It is not that ‘number’ first means natural number, then means integer, and then means rational number or that ‘set’ first means set of things, then means set of things or set of sets of things. ‘Number’ and ‘set’ mean the same all along. But in each case, we adopt a more inclusive view of which objects we will take to fall under these categories.

We can now understand the metaphor of the dog. The dog represents the potential for extending the domain of quantification. But how is this potential realized? What is the mechanism by which the domain is extended to include new objects? We have rejected the view that the domain is extended – or perhaps I should say ‘pseudo-extended’ – through adopting a more liberal restriction on its objects. But what takes its place? How can the domain become larger without any change in the category of objects by which it is defined? We may understand the metaphor of the dog, but how should we understand the stick by which it is prodded from its slumbers?

To answer this question, we must turn to another piece of intellectual history, not so much in mathematics as in computer science. We are all familiar with the idea of a program. This is a set of instructions that enables a computer to perform some task – such as guiding a missile to its target or putting some words in alphabetic order. But how do we know that the program will perform its task – that it will actually succeed in guiding the missile to its target or putting the words in alphabetic order? An important branch of computer science is concerned with developing techniques for verifying whether a program will perform its task; and I shall be interested in a particular such technique, DPL or dynamic programming logic.

I want to take (and to modify) two ideas from DPL. The first is a a very simple idea of a programing language in which we may set out the instructions we wish the computer to perform. Consider the instructions you might make in ordinary life, perhaps to a child. You might say ‘if you want dinner then wash your hands’. This is a conditional instruction of the form:

if … then do —.

Or you might say ‘eat your spinach and drink your milk’. This is a composite instruction of the sort:

do — and then do —.

Or you might say ‘keep doing your homework until you have finished’. This is in effect an iterative instruction of the form:

keep iterating –

For it results from taking the conditional instruction ‘if you have not finished then continue to do your homework’ by requiring that it be iterated until there is nothing to be done. Thus if the child has not done his homework, he will obey the conditional instruction and continue with his homework. If after continuing with his homework for a few seconds, he is still not done then he will again obey the conditional and continue for a few seconds more; and so on until (God willing) the homework is done.

To these three basic forms of instruction from DPL – the conditional, the composite and the iterative – I wish to add two others. I might say to my child ‘kiss everyone here’. This is a general instruction of the form:

for all x, do … x….'

For it results from generalizing the conditional instruction ‘if x is here then kiss x’. The child is then meant to take x, check to see if x is here, and then to kiss x if x is indeed here.

I also wish to add a *simple* form of instruction. The forms of instruction so far introduced have been complex, they have enabled us to form more complex instruction from simpler instructions. Thus composition forms the complex instruction ‘eat your spinach and drink your milk’ from the simpler instructions ‘eat your spinach’ and ‘drink your milk’. But unless we have simple instructions to which the complex forms of instruction may apply, we will have no instructions at all.

Now the simple instructions from our examples were ones like ‘eat your spinach’, ‘kiss your aunt’, ‘continue with your homework’. These are clearly not appropriate within the mathematical context. What we require is a form of instruction, which I call Introduction and which enables us to introduce a new object into the domain suitably related to the pre-existing objects in the domain. Suppose, for example, that I have an apple and an orange in the domain. Then I might form the instruction:

introduce a set of which the apple and the orange is a member.

This will then result in the domain containing the pair of the apple and the orange. Forgive the pun, but this is the way one gets a ‘pear’ from an apple and an orange.

Of course, Introduction is not an instruction that a child or even an adult can actually perform. We might imagine that we have an obliging genie who performs each of these operations. But in reality these are intellectual operations in which the effect can be taken to come off simply through the appropriate laying down of the instruction.

Using these different forms of instruction, we then have the means by which we can specify how the domain is to be extended. We have the stick with which to prod the dog.

By way of illustration, let us see how we might generate the ontology of natural numbers. Suppose I lay down the following instruction:

Let there be a number; and then Keep iterating: for any number, let there be a successor of the number.

Let us see what happens when the genie executes the instruction. He first introduces a number (this will be 0). He then performs the second instruction and so introduces a successor to 0. He performs again the second instruction and thereby introduces a successor to 1 (0 already has a successor and so he need not do anything in this case); and he continues in this manner until all of the natural numbers have been introduced.

This example goes beyond our original edict, which was to explain how the system of natural numbers might be extended to include the rationals and the reals and the like. For what we have done is to introduce the natural numbers themselves in the very same way in which we had hoped to introduce the other types of number. Indeed, it is my belief that the whole ontology of mathematics can be generated in this way – starting off with absolutely nothing and then laying down appropriate postulates by which the objects from the different branches of mathematics can be introduced. Whether or not this is so, there is no difficulty in seeing how the various extensions of the number system can be seen to arise from laying down the appropriate sort of postulate.

The second thing I wish to to take from dynamic programming logic is the idea that we may use the idioms of possibility and necessity to describe the behavior of programs. Suppose I run a program on a computer. One possibility is that there will be no outcome – either because the program ‘crashes’ or because it never terminates. The program may ask me to do a piece of nonsense, like divide by 0, in which case it will crash; or it may keep asking me to do something without end (like count the natural numbers one after the other) in which case it will never terminate. The other possibility is that the program will terminate in a meaningful outcome, from which information can then be discerned.

One may use the language of possibility and necessity to describe these possible outcomes. Thus to say possibly φ, given the program P, is to say that there is a possible outcome of P in which φ is the case and to say necessarily φ, given the program P, is to say that every possible outcome of P is one in which φ is the case. Suppose, for example, that P is a program for computing the factorial of x when x = 5. Then to say necessarily the factorial is 60 given P is to say that every possible outcome of this program will be one in which the factorial is taken to be 60; and to say possibly something or the other given P is to say that there is a possible outcome of this program (since in any possible outcome something or other will hold). Thus the two claims together say that the program *will* terminate and that when it terminates it will take the factorial to be 60.

I should like to suggest that we adopt a similar language for describing the behavior of the postulates for extending the domain. In particular, we will be able to say that the procedure specified by a postulate will be executable, i.e. that it will terminate in an extension of the domain and we will be able to say how things are when it terminates. These are both key if we are put the method of procedural postulation to work.

Suppose I were to tell the genie to introduce an object that both is and is not a number. On the assumption that the genie had performed the procedure, I could then infer that this object was both a number and not a number. Clearly not a satisfactory result. This is a case in which it is obvious that the procedure cannot be performed. But other cases are less obvious. Suppose I tell the genie to keep introducing a number greater than all numbers so far introduced. The genie will then never stop. For suppose he does stop. ‘Here, I'm done’, he says to himself. But no, for he must introduce yet another number greater than all those that he has so far introduced.

What this means is that before I tell the genie to do anything I must make sure it can be done. I must demonstrate that the procedure will indeed terminate.

This is something I must do *before* specifying a procedure. But there is also something I must do *after* specifying the procedure. For given that the genie has executed a procedure, I will wish to determine what is true in the resulting domain. I will wish to ascertain, for example, that as a result of carrying out the procedure NUMBER above, the resulting domain will be one in which each number has a successor.

I have developed a calculus, called ‘procedural logic’, which enables one to carry out these tasks. It enables one on the input side, before specifying a procedure, to demonstrate that it can indeed be executed; and it enables one on the output side, once a procedure has been executed, to determine what will then be true.

With a procedural logic at hand, it is possible to develop a foundation for the whole of mathematics. One starts off with a completely empty domain of objects (though you can throw in some shoes and ships and sealing wax if you like). One then demonstrates the ‘consistency’ or executability of certain procedures for extending the domain. Given the demonstration of consistency, these procedures can then be executed and the axioms governing the resulting domain can be determined. And so it goes on.

One remarkable aspect of this approach is that the axioms of mathematics are themselves derived. It is a commonly supposed that the axioms of a theory cannot be derived from anything more basic. But that is not exactly so. What is true is that if we are going to derive truths from truths then we must begin with some axioms or basic truths that are not themselves derived from other truths. But that still leaves open the possibility that the basic truths may themselves may be derived from something that is not a truth. And this is what happens in the present case. We lay down the postulate NUMBER, for example, which is an instruction rather than a truth; and, from our having laid down this postulate, we then deduce that the standard axioms of number theory will indeed hold.

Thus the present approach to mathematics is essentially axiom-less. What is essential to mathematics is the postulation, not of truths, but of procedures; and it is only once the procedures have been specified that we can go about the normal business of determining what is true.

I began with the question ‘is mathematics invented or discovered?’, to which my answer is both. The possibilities for extending the domain are to be discovered. They are ‘out there’, so to speak, and in no way depend upon what we do or think. But how we realize those possibilities, which procedural postulates we lay down to extend the domain, is entirely up to us. We can extend the system of numbers in this or that way or extend the domain of sets to whatever infinite limit we choose. The only constraint is our imagination and what we find appropriate or pleasing.