[Math] Help me put these enormous numbers in order: googol, googol-plex-bang, googol-stack and so on

big numberscombinatoricselementary-number-theorylogic

Popular mathematics folklore provides some simple tools
enabling us compactly to describe some truly enormous
numbers. For example, the number $10^{100}$ is commonly
known as a googol,
and a googol
plex
is
$10^{10^{100}}$. For any number $x$, we have the common
vernacular:

  • $x$ bang is the factorial number $x!$
  • $x$ plex is the exponential number $10^x$
  • $x$ stack is the number obtained by iterated exponentiation
    (associated upwards) in a tower of height $x$, also denoted $10\uparrow\uparrow x$,
    $$10\uparrow\uparrow x = 10^{10^{10^{\cdot^{\cdot^{10}}}}}{\large\rbrace} x\text{ times}.$$

Thus, a googol bang is $(10^{100})!$, and a googol stack is
$10\uparrow\uparrow 10^{100}$. The vocabulary enables us to
name larger numbers with ease:

  • googol bang plex stack. (This is the exponential tower $10^{10^{\cdot^{\cdot^{^{10}}}}}$ of height $10^{(10^{100})!}$)
  • googol stack bang stack bang
  • googol bang bang stack plex stack
  • and so on…

Consider the collection of all numbers that can be named in
this scheme, by a term starting with googol and having
finitely many adjectival operands: bang, stack, plex, in
any finite pattern, repetitions allowed. (For the purposes
of this question, let us limit ourselves to these three
operations and please accept the base 10 presumption of the
stack and plex terminology simply as an artifact of its
origin in popular mathematics.)

My goal is to sort all such numbers nameable in this
vocabulary by size.

A few simple observations get us started. Once $x$ is large
enough (about 20), then the factors of $x!$ above $10$
compensate for the few below $10$, and so we see that
$10^x\lt x!$, or in other words, $x$ plex is less than $x$
bang. Similarly, $10^{10^{:^{10}}}x$ times is much larger
than $x!$, since $10^y\gt (y+1)y$ for large $y$, and so for
large values we have

  • $x$ plex $\lt$ $x$ bang $\lt$ $x$ stack.

In particular, the order for names having at most one
adjective is:

 googol
 googol plex
 googol bang
 googol stack

And more generally, replacing plex with bang or bang with
stack in any of our names results in a strictly (and much)
larger number.

Continuing, since $x$ stack plex $= (x+1)$ stack, it
follows that

  • $x$ stack plex $\lt x$ plex stack.

Similarly, for large values,

  • $x$ plex bang $\lt x$ bang plex,

because $(10^x)!\lt (10^x)^{10^x}=10^{x10^x}\lt 10^{x!}$.
Also,

  • $x$ stack bang $\lt x$ plex stack $\lt x$ bang stack,

because $(10\uparrow\uparrow x)!\lt (10\uparrow\uparrow
x)^{10\uparrow\uparrow x}\lt 10\uparrow\uparrow 2x\lt
10\uparrow\uparrow 10^x\lt 10\uparrow\uparrow x!$. It also
appears to be true for large values that

  • $x$ bang bang $\lt x$ stack.

Indeed, one may subsume many more iterations of plex and
bang into a single stack. Note also for large values that

  • $x$ bang $\lt x$ plex plex

since $x!\lt x^x$, and this is seen to be less than
$10^{10^x}$ by taking logarithms.

The observations above enable us to form the following
order of all names using at most two adjectives.

 googol
 googol plex
 googol bang
 googol plex plex
 googol plex bang
 googol bang plex
 googol bang bang
 googol stack
 googol stack plex
 googol stack bang
 googol plex stack
 googol bang stack
 googol stack stack

My request is for any or all of the following:

  1. Expand the list above to include numbers named using
    more than two adjectives. (This will not be an
    end-extension of the current list, since googol plex plex
    plex and googol bang bang bang will still appear before
    googol stack.) If people post partial progress, we can
    assemble them into a master list later.

  2. Provide general comparison criteria that will assist
    such an on-going effort.

  3. Provide a complete comparison algorithm that works for
    any two expressions having the same number of adjectives.

  4. Provide a complete comparison algorithm that compares
    any two expressions.

Of course, there is in principle a computable comparison
procedure, since we may program a Turing machine to
actually compute the two values and compare their size.
What is desired, however, is a simple, feasible algorithm.
For example, it would seem that we could hope for an
algorithm that would compare any two names in polynomial
time of the length of the names.

Best Answer

OK, let's attempt a sorting of the names having at most three operands. I'll make several observations, and then use them to assemble the order section by section, beginning with the part below googol stack.

  • googol bang bang bang $\lt$ googol stack. It seems clear that we shall be able to iterated bangs many times before exceeding googol stack. Since googol bang bang bang is the largest three-operand name using only plex and bang, this means that all such names will interact only with each below googol stack.

  • plex $\lt$ bang. This was established in the question.

  • plex bang $\lt$ bang plex. This was established in the question, and it allows us to make many comparisons in terms involving only plex and bang, but not quite all of them.

  • googol bang bang $\lt$ googol plex plex plex. This is because $g!!\lt (g^g)^{g^g}=g^{gg^g}=10^{100\cdot gg^g}$, which is less than $10^{10^{10^g}}$, since $100\cdot gg^g=10^{102\cdot 10^{100}}\lt 10^{10^g}$. Since googol bang bang is the largest two-operand name using only plex and bang and googol plex plex plex is the smallest three-operand name, this means that the two-operand names using only plex and bang will all come before all the three-operand names.

  • googol plex bang bang $\lt$ googol bang plex plex. This is because $(10^g)!!\lt ((10^g)^{10^g})!=(10^{g10^g})!=(10^{10^{g+100}})!\lt (10^{10^{g+100}})^{10^{10^{g+100}}}=10^{10^{g+100}10^{10^{g+100}}}= 10^{10^{(g+100)10^{g+100}}}\lt 10^{10^{g!}}$.

Combining the previous observations leads to the following order of the three-operand names below googol stack:

  googol
  googol plex
  googol bang
  googol plex plex
  googol plex bang
  googol bang plex
  googol bang bang
  googol bang bang
  googol plex plex plex
  googol plex plex bang
  googol plex bang plex
  googol plex bang bang
  googol bang plex plex
  googol bang plex bang
  googol bang bang plex
  googol bang bang bang
  googol stack

Perhaps someone can generalize the methods into a general comparison algorithm for larger smallish terms using only plex and bang? This is related to the topic of the Velleman article linked to by J. M. in the comments.

Meanwhile, let us now turn to the interaction with stack. Using the observations of the two-operand case in the question, we may continue as follows:

  googol stack plex
  googol stack bang
  googol stack plex plex
  googol stack plex bang
  googol stack bang plex
  googol stack bang bang

Now we use the following fact:

  • stack bang bang $\lt$ plex stack. This is established as in the question, since $(10\uparrow\uparrow x)!!\lt (10\uparrow\uparrow x)^{10\uparrow\uparrow x}!\lt$ $(10\uparrow\uparrow x)^{(10\uparrow\uparrow x)(10\uparrow\uparrow x)^{10\uparrow\uparrow x}}=$ $(10\uparrow\uparrow x)^{(10\uparrow\uparrow x)^{1+10\uparrow\uparrow x}} 10\uparrow\uparrow 4x\lt 10\uparrow\uparrow 10^x$. In fact, it seems that we will be able to absorb many more iterated bangs after stack into plex stack.

The order therefore continues with:

  googol plex stack
  googol plex stack plex
  googol plex stack bang
  • plex stack bang $\lt$ bang stack. To see this, observe that $(10\uparrow\uparrow 10^x)!\lt (10\uparrow\uparrow 10^x)^{10\uparrow\uparrow 10^x}\lt 10\uparrow\uparrow 2\cdot10^x$, since associating upwards is greater, and this is less than $10\uparrow\uparrow x!$. Again, we will be able to absorb many operands after plex stack into bang stack.

The order therefore continues with:

  googol bang stack
  googol bang stack plex
  googol bang stack bang
  • bang stack bang $\lt$ plex plex stack. This is because $(10\uparrow\uparrow x!)!\lt (10\uparrow\uparrow x!)^{10\uparrow\uparrow x!}\lt 10\uparrow\uparrow 2x!\lt 10\uparrow 10^{10^x}$.

Thus, the order continues with:

  googol plex plex stack
  googol plex bang stack
  googol bang plex stack
  googol bang bang stack

This last item is clearly less than googol stack stack, and so, using all the pairwise operations we already know, we continue with:

  googol stack stack
  googol stack stack plex
  googol stack stack bang
  googol stack plex stack
  googol stack bang stack
  googol plex stack stack
  googol bang stack stack
  googol stack stack stack

Which seems to complete the list for three-operand names. If I have made any mistakes, please comment below.

Meanwhile, this answer is just partial progress, since we have the four-operand names, which will fit into the hierarchy, and I don't think the observations above are fully sufficient for the four-operand comparisons, although many of them will now be settled by these criteria. And of course, I am nowhere near a general comparison algorithm.

Sorry for the length of this answer. Please post comments if I've made any errors.