The basic idea of the proof — known as a diagonal argument — predates the idea of virtual reality. It was first used by the nineteenth-century mathematician Georg Cantor to prove that there are infinite quantities greater than the infinity of natural number (1, 2, 3…). The same form of proof is at the heart of the modern theory of computation developed by Alan Turing and others in the 1930s. It was also used by Kurt Gödel to prove his celebrated ‘incompleteness theorem’, of which more in Chapter 10.
Each environment in our machine’s repertoire is generated by some program for its computer. Imagine the set of all valid programs for this computer. From a physical point of view, each such program specifies a particular set of values for physical variables, on the disks or other media, that represent the computer’s program. We know from quantum theory that all such variables are quantized, and therefore that, no matter how the computer works, the set of possible programs is discrete. Each program can therefore be expressed as a finite sequence of symbols in a discrete code or computer language. There are infinitely many such programs, but each one can contain only a finite number of symbols. That is because symbols are physical objects, made of matter in recognizable configurations, and one could not manufacture an infinite number of them. As I shall explain in Chapter 10, these intuitively obvious physical requirements — that the programs must be quantized, and that each of them must consist of a finite number of symbols and can be executed in a sequence of steps — are more substantive than they seem. They are the only consequences of the laws of physics that are needed as input for the proof, but they are enough to impose drastic restrictions on the repertoire of any physically possible machine. Other physical laws may impose even more restrictions, but they would not affect the conclusions of this chapter.
Now let us imagine this infinite set of possible programs arranged in an infinitely long list, and numbered Program 1, Program 2, and on. They could, for instance, be arranged in ‘alphabetical’ order with respect to the symbols in which they are expressed. Because each program generates an environment, this list can also be regarded as a list of all the environments in the machine’s repertoire; we may call them Environment 1, Environment 2, and so on. It could be that some of the environments are repeated in the list, because two different programs might in effect perform the same calculations, but that will not affect the argument. What is important is that each environment in our machine’s repertoire should appear at least once in the list.
A simulated environment may be limited or unlimited in apparent physical size and apparent duration. An architect’s simulation of a house, for example, can be run for an unlimited time, but will probably cover only a limited volume. A video game might allow the user only a finite time for play before the game ends, or it might render a game-universe of unlimited size, allow an unlimited amount of exploration and end only when the user deliberately ends it. To make the proof simpler, let us consider only programs that continue to run for ever. That is not much of a restriction, because if a program halts we can always choose to regard its lack of response as being the response of a sensory-isolation environment.
Let me define a class of logically possible environments which I shall call Cantgotu environments, partly in honour of Cantor, Gödel and Turing, and partly for a reason I shall explain shortly. They are defined as follows. For the first subjective minute, a Cantgotu environment behaves differently from Environment 1 (generated by Program 1 of our generator). It does not matter how it does behave, so long as it is, to the user, recognizably different from Environment 1. During the second minute it behaves differently from Environment 2 (though it is now allowed to resemble Environment 1 again). During the third minute, it behaves differently from Environment 3, and so on. Any environment that satisfied these rules I shall call a Cantgotu environment.
Now, since a Cantgotu environment does not behave exactly like Environment 1, it cannot be Environment 1; since it does not behave exactly like Environment 2, it cannot be Environment 2. Since it is guaranteed sooner or later to behave differently from Environment 3, Environment 4 and every other environment on the list, it cannot be any of those either. But that list contains all the environments that are generated by every possible program for this machine. It follows that none of the Cantgotu environments are in the machine’s repertoire. The Cantgotu environments are environments that we can’t go to using this virtual-reality generator.
Clearly there are enormously many Cantgotu environments, because the definition leaves enormous freedom in choosing how they should behave, the only constraint being that during each minute they should not behave in one particular way. It can be proved that, for every environment in the repertoire of a given virtual-reality generator, there are infinitely many Cantgotu environments that it cannot render. Nor is there much scope for extending the repertoire by using a range of different virtual-reality generators. Suppose that we had a hundred of them, each (for the sake of argument) with a different repertoire. Then the whole collection, combined with the programmable control system that determines which of them shall be used to run a given program, is just a larger virtual-reality generator. That generator is subject to the argument I have given, so for every environment it can render there will be infinitely many that it cannot. Furthermore, the assumption that different virtual-reality generators might have different repertoires turns out to be over-optimistic. As we shall see in a moment, all sufficiently sophisticated virtual-reality generators have essentially the same repertoire.
Thus our hypothetical project of building the ultimate virtual-reality generator, which had been going so well, has suddenly run into a brick wall. Whatever improvements may be made in the distant future, the repertoire of the entire technology of virtual reality will never grow beyond a certain fixed set of environments. Admittedly this set is infinitely large, and very diverse by comparison with human experience prior to virtual-reality technology. Nevertheless, it is only an infinitesimal fraction of the set of all logically possible environments.
What would it feel like to be in a Cantgotu environment? Although the laws of physics do not permit us to be in one, it is still logically possible and so it is legitimate to ask what it would feel like. Certainly, it could give us no new sensations, because a universal image generator is possible and is assumed to be part of our high-technology virtual-reality generator. So a Cantgotu environment would seem mysterious to us only after we had experienced it and reflected on the results. It would go something like this. Suppose you are a virtual-reality buff in the distant, ultra-high-techhnology future. You have become jaded, for it seems to you that you have already tried everything interesting. But then one day a genie appears and claims to be able to transport you to a Cantgotu environment. You are sceptical, but agree to put its claim to the test. You are whisked away to the environment. After a few expedients you seem to recognize it — it responds just like one of your favourite environments, which on your home virtual-reality system has program number X. However, you keep experimenting, and eventually, during the Xth subjective minute of the experience, the environment responds in a way that is markedly different from anything that Environment X would do. So you give up the idea that this is Environment X. You may then notice that everything that has happened so far is also consistent with another renderable environment, Environment Y. But then, during the Yth subjective minute you are proved wrong again. The characteristic of a Cantgotu environment is simply this: no matter how often you guess, no matter how complex a program you contemplate as being the one that might be rendering the environment, you will always be proved wrong because no program will render it, on your virtual reality generator or on any other.