3.1.1 - A New Paradigm

3.1.1

A New Paradigm

A Look ahead Towards a New Paradigm

Everything that we have seen so far comprises the conventional approach to large numbers. One develops a system of numeration, or a naming scheme, and then uses this scheme to skip ahead to a very large, specific number, whose representation is small enough so that we can make a "call" to it. In a very general way we can think of systems of numeration and naming schemes as "maps" from the collection of symbolic representations to the collection of counting numbers. The key to this approach is that the map must be complete, meaning one must develop a scheme that assigns a symbolic representation for EVERY counting number. For example, decimal notation assigns a string of digits for every number. Once this scheme has been established and understood one can then make a call to a very large number by writing a decimal expression such as:

1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

To continue further we can of coarse keep adding zeroes to the string. However this is not the best way to continue. With the decimal notation firmly in mind we may resort to word descriptions. For example:

"One followed by ten billion zeroes"

This is certainly much much larger than the previous number. We may think that we've some how transcended the conventional approach. However, the wordy description still is making reference to a decimal expression, and still relying on an assignment of every number to some decimal expansion. Above all, we used the word "ten billion" to express the number of zeroes. Again this relies on the idea that we have a naming scheme in which we know what "ten billion" is. One might continue in this manner, but one has to have words for the numbers of zeroes to continue:

"One followed by a trillion zeroes"

"One followed by a quadrillion zeroes"

...

"One followed by a decillion zeroes"

...

"One followed by a vigintillion zeroes"

...

"One followed by a centillion zeroes"

...

"One followed by a millillion zeroes"

etc.

While we may be producing very large numbers by ordinary standards we are quickly encountering the same problem that plagued us before. How can we talk about how many zeroes there are without a name for that number? To continue past 10000000...00000000 (millillion zeroes) we would need a naming scheme that went past a millillion. As we saw towards the end of Chapter 2.4 this can quickly become a laborious and complex task. So how can we progress in a way faster than we have before...

The trick is very simple. Instead of coming up with a special name for the number of zeroes we simply use:

"One followed by X zeroes"

where X can be any number. Of coarse this doesn't define a large number, but now we can let

X = "One followed by a millillion zeroes"

and now we have a definite number WAY beyond all the numbers previously mentioned. It's important to note that we don't have a name for every number from 1 to X, and that we don't need one. We are even further from having a system to name every number from 1 to "1 followed by X zeroes" and yet this presents no difficultly. We can rest assured that we have described a definite and "real" integer, and not some "fictitious" one like a zillion.

Although this may seem a simple and obvious step it represents a categorical leap in thinking. We are now not thinking in terms of representational systems, but rather in terms of something we can call "number-to-number maps".

What do I mean by that? Let me first explain what I mean by a "map". A "map" is, for our purposes, an informal mathematical concept about relations between "objects". These objects can be just about anything, real, unreal, concrete, imaginary, conceptual, etc. Specifically a map is a rule of how to relate one collection of objects to another. This is an extremely broad and fundamental concept, and can't really be explained with simpler mathematical ideas, just like we can't really break down the concept of "number" and "set". Maps are very fundamental to googology (the study of large numbers) because it is only by mapping certain VERY large numbers to small mathematical expressions that we are able to talk and think about them at all!

In Sections I and II we have implicitly been developing symbolic maps that relate a string of symbols to a specific number (ie. decimal notation). This idea relates symbols to numbers. One can just as easily develop verbal maps (ie. the illion series) for the same purpose. This is a powerful idea that enabled men of antiquity like Archimedes to create staggeringly huge numbers! Yet this idea has some important drawbacks. Every "symbolic map" must have an expression for every number. This must be established prior to the naming of any specific large number. So for example Archimedes laid down the fundamentals of his system first, before he was able to use it to measure the grains of sand required to fill the whole universe. If the map is incomplete, then there is an inherent limitation to what can be expressed in that system. Even if the system however is a complete map, there will only be a finite number of expressions small enough to write out in full. Hence, every such map has a built in limitation.

The trick we just used however to get the number "One followed by X zeroes where X is One followed by a millillion zeroes" is something very different: it's not a map from symbols-to-numbers, or utterances-to-numbers, but it's a map from numbers-to-numbers. A map from numbers-to-numbers is known as a function (we will be exploring this concept in some considerable depth throughout the rest of this chapter). Functions will be very important to our development of large numbers from now on. To aid in our understanding of this basic concept let's look again at the above example. We take the statement:

"One followed by x zeroes"

This can be rewritten using an arithmetic expression. Recall that:

10x = 10000...0000 (with x zeroes)

(See Scientific Notation article)

So we can replace the above statement with the arithmetic expression 10x. "x" is what we can call the input of the function, and 10x is the output. Here is a table of examples:

Every input "x" is mapped to some output "10x". With this simple idea we can actually skip vast fields of large numbers in a single bound. One key thing to note is that the output is comprised of only a very limited subset of all the counting numbers in the sense that for any input x, most numbers less than 10x are not the output for any input less than x. For example, let x=2. The there are 99 counting numbers less than 102, and out of these there is only one other output of 101. Therefore there are 98 numbers in this range which are not outputs of the function. So only 2% of the counting numbers from 1 to 100 are outputs. This trend only gets worse and worse. For example only 0.04% of the counting numbers from 1 to 10,000 are outputs. If we can consider 101 , 102 , 103 , 104 , ... as a representational system, it's different from systems of representation like the decimal system or roman numerals, because it doesn't represent every counting number, but only a special selection of them. These terms are given meaning not purely by their sequential nature but by their basis in arithmetic. If we agree that 10n is a counting number assuming that n is a counting number, and that 10 is a counting number, then we must conclude that every output of our function is also a counting number. This is the basis of what will become our new approach, and it all rests on this new concept of a function.

It get's even better though, because once we have established a function which maps some small and simple number to some very large and complex numbers we can apply another very important trick: recursion. It might occur to you that continuing down the sequence 101 , 102 , 103 , 104 , 105 , 106 , ... isn't much of an improvement and still relies on establishing the whole sequence a step at a time. If anything, the continuation relies on decimal notation to supply the inputs. So yes we could jump to 101,000,000,000,000,000,000,000,000,000,000 but that's still part of the old paradigm. The new paradigm says we don't need to develop a representation for every number to continue. Instead we begin with some reasonably large input, say a millillion (103003) and get the tremendous output 10millillion. Call this a millillionplex, and now plug this into the function to obtain 10millillionplex call it a millillionduplex, plug this into the function to obtain 10millillionduplex and continue this way for as long as you can, or as long as you wish, whichever comes first ;)

By repeatedly feeding the output back into the input we are performing something known as recursion. We will provide a more thorough explanation later, but this should give you the gist of the concept.

What we have just done is actually only the simplest and most elementary form of recursion. This is what I will refer to as the "base-recursion". With recursion it is possible to define "recursive functions", which represent the application of base-recursion to any function. For example we can define a new function with the sequential outputs:

millillion , 10millillion , 10millillionplex , 10millillionduplex , ...

Where each new output is 10 raised to the power of the previous output. Now take this sequence and map 1 to the first member, 2 to the second, 3 to the third, etc. So we have a map from the counting numbers to a sequence of rapidly growing counting numbers ... thus by definition this too is a function. Not only that, it also can have base-recursion applied to it. In fact, every function can have base-recursion applied to it, and every application of base-recursion on a function produces a new function! The result is a hierarchy of recursive functions, each more powerful than the last. Even this process of generating new functions from old is recursive in nature. By extending base-recursion in this manner we begin to develop recursive-structures. What are recursive-structures? How far do they extend? How do they work? These are the questions we will explore and attempt to answer throughout Section III and Section IV. We will very quickly outstrip everything discussed prior to Section III as we move forward.

For the next two sections our goals will be two-fold:

    • Continue to develop Large Numbers well beyond what is "reasonable" by using recursive techniques

    • Develop a coherent and sufficiently general theory of recursive-structures

In the process of this development not only will your concept of Large Numbers and the infinite expand beyond your wildest dreams (provided this is new for you), but we will gain insights into the fundamental nature of computation and it's inherent limitations.

In this Chapter we are first going to lay the groundwork from which to begin our exploration of both "recursion" and "extremely large numbers". As we progress we will gradually get a broader understanding of what recursion is, and how it works.

Welcome to the next level of googology!