2.03. The Weak Hyper-Operators


In the last article we examined the hyper-operators, operators that extend upon addition, multiplication, and exponentiation. However, those aren't the only way to define operators past exponentiation. There's an alternate less powerful version of the hyper-operators which are sometimes known as the weak hyper-operators. In this article we'll examine the behavior of these operators and see if they can keep up with the usual hyper-operators.

An Alternative to the Hyper-Operators

To understand how we can make an alternative to the hyper-operators, let's look back at how the normal hyper-operators are defined. They are defined as so:

Tetration: a^^b = a^(a^(a^ ... (a^a)) ... ))))) with b copies of a
Pentation: a^^^b = a^^(a^^(a^^ ... (a^^a)) ... ))))) with b copies of a

and so on.

The parentheses indicate that the expression evaluates right to left. But what if we defined them like so:

Tetration: a^^b = ((((( ... ((a^a)^a) ... ^a)^a)^a with b copies of a
Pentation: a^^^b = ((((( ... ((a^^a)^^a) ... ^^a)^^a)^^a with b copies of a (using ^^ to mean tetration as defined above)

and so on?

Those operators evaluate expressions left to right, and they're far less commonly used then the normal hyper-operators (we'll see why later). Those are the weak hyper-operators. To avoid ambiguity with the names of the strong hyper-operators, we can call these operators weak tetration, weak pentation, and so on.

Notating the Weak Hyper-Operators

How can we notate and name the weak hyper-operators to avoid confusion with the strong hyper-operators? There are two main notations used for that.

Robert Munafo's Operator Notation

When we looked at some alternate notations for the hyper-operators, I made a passing mention of a notation Robert Munafo invented to notate the hyper-operators. He discusses this notation here and here. He uses a notation involving numbers placed in circles. But before we look at it, we'll look at this history of this notation.

When Robert Munafo was about 10-12 years old, he invented an operator after exponentiation which he called powerlog. Aside from usage of the word "power", it's not clear how he derived that name. He admits that the name is a bit misleading because "log" suggests the logarithm, a function that typically outputs a smaller number than what you input. According to Sbiis Saibian's unfinished article on the weak hyper-operators, in an email correspondence between him and Robert Munafo, Munafo told Saibian that he originally denoted the "powerlog" operator with an eight-pointed star (✴), like so:

ab [pronounced a powerlog b] = (((...(((a^a)^a)^a) ... )^a (b copies of a)

For convenience's sake, we can denote the eight-pointed star as (*), to avoid confusion with the * symbol for multiplication. As it turns out, the "powerlog" operator is the same operation as "weak tetration".

Robert Munafo explains on the bottom of this page that he defined "powerlog" as


and not


because in his 7th-grade textbook he saw exponentiation defined as a^b = (((...(a*a)*a)...*a)*a). He also chose to work with these weaker hyper-operators because he felt that the numbers they produced were easier to work with.

Robert Munafo then realized that we could have yet another hyper-operator, which he denoted with a plus sign in a circle ():

ab = (((...(((aa)a)a) ... )a (b copies of a)

That is the same operation as "weak pentation". For convenience we can denote it as (+), an easy-to-type approximation of the symbol. The symbol Munafo used for weak pentation is also an astronomical symbol for Earth.

He further generalized this by using a notation involving numbers in circles. Although there are Unicode characters for numbers in circles, for convenience's sake we can use (a) to denote "a" in a circle. He denoted the hyper-operators like so:

a(1)b = a+b
a(2)b = a*b = a(1)a(1)a(1) ... a(1)a with b copies of a (note: solve all these expressions left to right)
a(3)b = a^b = a(2)a(2)a(2) ... a(2)a with b copies of a
a(4)b = a(*)b = a(3)a(3)a(3) ... a(3)a with b copies of a
a(5)b = a(+)b = a(4)a(4)a(4) ... a(4)a with b copies of a
a(6)b = a(5)a(5)a(5) ... a(5)a with b copies of a
a(7)b = a(6)a(6)a(6) ... a(6)a with b copies of a


Eventually, Munafo realized that you could make stronger hyper-operators by evaluating them right to left instead of left to right. Those are the strong hyper-operators, the same ones denoted with up-arrow notation; turns out that Munafo reinvented up-arrow notation with his creative mind alone. When he discovered the difference between weak and strong hyper-operators, he distinguished them by notating the strong hyper-operators with a raised circle:

addition: a+b = a(1)b
multiplication: a*b = a(2)b
exponentiation: ab = a(3)b
tetration: a^^b = a(4)b
pentation: a^^^b = a(5)b
hexation: a^^^^b = a(6)b

and the weak hyper-operators with a lowered circle:

weak tetration: a(4)b
weak pentation: a(5)b
weak hexation: a(6)b


We can make a recursive definition of this notation like so:

a(1)b = a(1)b = a+b
n > 1: a(n)1 = a
n > 1, b > 1: a(n)b = a(n-1)(a(n)(b-1))
n > 1, b > 1: a(n)b = (a(n)(b-1))(n-1)a

and you can imagine it as:

a(n)b = a(n-1)(a(n-1)(a(n-1)( ... (a(n-1)a) ... ))) with b copies of a


a(n)b = ((( ... (a(n-1)a) ... )(n-1)a)(n-1)a)(n-1)a with b copies of a

Note that a(n)b is the same as a(n)b if n is 1, 2, or 3 (both denote addition, multiplication, and exponentiation respectively), but not true for higher n. This is because while

((( ... (a+a) ... )+a)+a)+a with b copies of a


a+(a+(a+ ... (a+a) ... ))) with b copies of a

both equal a*b (since addition is associative), and

((( ... (a*a) ... )*a)*a)*a with b copies of a


a*(a*(a* ... (a*a) ... ))) with b copies of a

both equal ab (since multiplication is associative), the same is not true if we replace the * with ^, ^^, or higher operators. This is because from exponentiation onwards, the hyper-operators are not associative.

Robert Munafo's operator notation is a pretty neat system. However, it would also be convenient to have a notation analogous to up-arrow notation, the most-common notation for hyper-operators. This is where the second notation for the weak hyper-operators comes in.

Down-Arrow Notation

If we can use up-arrows for the normal hyper-operators, then by analogy we can use down-arrows for the weak hyper-operators. That notation is called down-arrow notation. I am not certain who was the first to invent down-arrow notation that way, other than that it was not me. It is likely that multiple people independently devised the idea, just like the name "googolduplex" isn't credited to a specific individual. It is denoted using down-arrows (↓) in analogy to up-arrows (↑), and it notates the weak hyper-operators as:

weak tetration = a↓↓b
weak pentation = a↓↓↓b
weak hexation = a↓↓↓↓b


with a↓b defined to be ab. We can also use "v" (a lowercase letter V) as an ASCII substitute for a down arrow, analogous to ^ as a substitute for an up-arrow, although when typing it that way (e.g. weak tetration = avvb) it tends to look a bit ugly. Nonetheless this is a convenient notation. We can define it formally like so, using ↓n to represent n down-arrows:

a↓b = ab
a↓n0 = 1
n > 1, b > 1: a↓nb = (a↓n(b-1))↓n-1a

which you can imagine as:

a↓nb = ((( ... (a↓n-1a) ... )↓n-1a)↓n-1a)↓n-1a) with b copies of a

One more note before we continue: Analogous to how expressions using up-arrow notation evaluate right to left, expressions with down-arrow notation evaluate left to right. For example:

3↑↑4 = 3↑3↑3↑3 = 3↑3↑27 = 3↑7,625,597,484,987 ~ 103.68*10^12
3↓↓4 = 3↓3↓3↓3 = 27↓3↓3 = 19,683↓3 = 7,625,597,484,987

This distinction means that while single up-arrows and single down-arrows both represent exponentiation, they don't work quite the same way because of the evaluation order.

With this handy notation, we're ready to examine the weak hyper-operators, starting with weak tetration.

Weak Tetration

History of Weak Tetration

As with regular tetration, weak tetration is an operator that has a long-running history as the next operator after exponentiation. We already went over Robert Munafo's "powerlog" operator, which is one such example of what we're calling "weak tetration".

Another example is Alistair Cockburn's fuga- prefix, which we can define as n↓↓n using down-arrow notation. It is interesting to note that weak tetration is what he had in mind there, not the stronger tetration. A friend of Cockburn's suggested "megafuga" for the name of a prefix similar to fuga- but using strong tetration. We'll learn more about the fuga- and megafuga- prefixes pretty soon.

So how powerful is weak tetration? To find out, let's work out some examples.

Examples of Weak Tetration

We'll start examples of weak tetration with the base of 2, not the base of 1. As with up-arrow notation, down-arrow notation expressions that start with 1 degenerate to 1. For example:

1vv4 = 1v1v1v1 = (11)v1v1 = 1v1v1 = (11)v1 = 1v1 = 11 = 1

Similarly, we can skip over cases of the form nvv1. This is because such expressions always evaluate to n, and are therefore degenerate cases, just like those with the base of 1.

Now we're ready to look at some proper examples of weak tetration. First we have:

2vv2 = 2v2 = 22 = 4

This case, 2vv2 = 4, mirrors the fact that 2^^2 = 4. Fours are a prevalent case with both the strong hyper-operators and the weak hyper-operators. In fact, 2vn2 and 2^n2, no matter what n is, will both always evaluate to 4. So let's go up a level by increasing the second argument to 3. This gives us:

2vv3 = 2v2v2 = (22)v2 = 4v2 = 42 = 16

Interestingly, this is the same result we get when evaluating 2^^3. So far, 2vvn is the same value as 2^^n. But does this trend continue? Let's try 2vv4 and find out.

2vv4 = 2v2v2v2 = 4v2v2 = 16v2 = 162 = 256

This is quite a lot smaller than 2^^4 = 65,536. In fact, 65,536 is the square of 256. So no, the trend doesn't continue. How does 2vv5 compare against 2^^5? We have:

2vv5 = 2v2v2v2v2 = 4v2v2v2 = 16v2v2 = 256v2 = 2562 = 65,536

This is the same value as 2^^4. 2^^5, on the other hand, is 265,536, which has 19,729 digits! 65,536 just can't compare with 2^^5. Also, we can see a trend here: each number is the square of the previous term. This is easy enough to prove if you think back to the rule:

a↓nb = (a↓n(b-1))↓n-1a

If we plug in 2 as a and 2 as n, we get:

2vvb = (2vv(b-1))v2 = (2vv(b-1))2

So 2vvb is just the square of 2vv(b-1). This makes the next terms pretty easy to calculate:

2vv6 = (2vv5)2 = 65,5362 = 4,294,967,296

This lags even further behind its up-arrow counterpart, 2^^6 = 22^65,536! While 2vv6 has a mere 10 digits, 2^^6 has about 1019,729 digits, way more digits than the number of Planck volumes in the universe, even if you raise the value to the 100th power!

The next few values are:

2vv7 = (2vv6)2 = 4,294,967,2962 = 18,446,744,073,709,551,616

That's 18.447 quintillion, a 20-digit number. It's a pretty big number by itself, but FAR smaller than 2^^7, which has about 2^^6 digits!

2vv8 = 18,446,744,073,709,551,6162 = 340,282,366,920,938,463,463,374,607,431,768,211,456

That's 340 undecillion. It has exactly 39 digits. As you can see the number of digits in each number is roughly doubling with each term. The next two are:

2vv9 = 340,282,366,920,938,463,463,374,607,431,768,211,4562 ~ 1.1579*1077

2vv10 ~ 1.3408*10154

2vv10 still doesn't even surpass 2^^5, let along the gigantic 2^^10. So the sequence 2vvn can't come anywhere close to keeping up with the sequence 2^^n! But it still makes for some pretty respectable numbers. 2vv10 already surpasses a googol, and if you jump to something like 2vv40, you get around 10165,492,990,270, a number with over 100 billion digits! Storing all these digits would take roughly a thousand dictionaries, or 100 gigabytes! Still, this is easily crushed by the sequence 2^^n, where only the 6th term is already WAY too big to write out.

Can weak tetration keep up with strong tetration if we increase the base to 3? Let's find out.

3vv2 = 3v3 = 33 = 27

This is the same value as 3^^2 = 33 = 27. In fact, nvv2 and n^^2 are always the same value: nn. The next value is:

3vv3 = 3v3v3 = (33)v3 = 27v3 = 273 = 19,683

That is much less than 3^^3 = 7,625,597,484,987, which is the cube of 19,683. So this sequence is already falling behind the sequence 3^^n. Next we have:

3vv4 = 3v3v3v3 = 27v3v3 = 19,683v3 = 19,6833 = 7,625,597,484,987

Compare this to 3^^4 = 37,625,5967,484,987, a number with 3.68 trillion digits. As you can see, each number of the form 3vvn is the cube of the previous one. Here are the next few values:

3vv5 = 7,625,597,484,9873 ~ 4.4342*1038

3vv6 ~ 8.7190*10116

3vv7 ~ 6.6282*10347

3vv8 ~ 2.9120*101043

3vv9 ~ 2.4692*103130

3vv10 ~ 1.5054*109391

As you can see this sequence grows noticeably faster than the sequence 2vvn. It takes only six steps to surpass a googol, and 3vv10 already has over 9000 digits (compared to 2vv10 which has only 155 digits) ... but it's waaaaayyyy too slow to keep up with tetration sequences. Let's try some examples with the base of four:

4vv2 = 4v4 = 44 = 256

4vv3 = 4v4v4 = 256v4 = 2564 = 4,294,967,296

As you can see, each number is the fourth power of the previous. Continuing we have:

4vv4 ~ 3.4028*1038

4vv5 ~ 1.3408*10153

This is the same value as 4^^3 using up-arrow notation.

4vv6 ~ 3.2317*10616

4vv7 ~ 1.0907*102466

4vv8 ~ 1.4155*109864

4vv9 ~ 4.0141*1039,456

4vv10 ~ 2.5964*10157,826

This is a pretty impressive growth rate, with the 10th term having about 158,000 digits, putting 3vv10 to shame. However, it still can't even keep up with tetration. By now, the pattern of growth rates should be clear: each member of the sequence 5vvn is the 5th power of the previous term, each member of the sequence 6vvn is the 6th power of the previous term, and so on. So what if we skipped all the way up to the base of 100, where each number in the sequence is the 100th power of the previous? This gives us the sequence:

100vv2 = 100100 = 10200

100vv3 = (10200)100 = 10200*100 = 1020,000

100vv4 = (1020,000)100 = 1020,000*100 = 102,000,000

100vv5 = 10200,000,000

100vv6 = 1020,000,000,000

100vv7 = 102*10^12

100vv8 = 102*10^14

100vv9 = 102*10^16

100vv10 = 102*10^18


100vv51 = 102*10^100 (that's a googolplex squared)


100vv100 = 102*10^198

Even with this growth rate, we can't come anywhere near the power of tetration. It even takes a lot of effort for us to surpass a googolplex. But nonetheless, hopefully you get the idea of weak tetration; now, we can take a closer look at how it compares against the usual hyper-operators.

How Powerful is Weak Tetration?

Weak tetration pretty obviously falls between exponentiation and tetration in terms of how powerful it is. But let's take a closer look at what's going on with weak tetration.

avvb always evaluates to (((...(aa)...)a)a with b copies of a. With the laws of exponents that evaluates to:

aa*a*a ... *a with b total copies of a, which has b-1 copies of a in the exponent

and since x*x*x ... *x with y copies of x simplifies to xy, the above expression simplifies to:


Therefore, weak tetration has the equality:

avvb = aa^b-1

This means that the growth rate of weak tetration is in general double exponential. Double exponential growth is also sometimes referred to as hyper-exponential growth, but the term "double exponential" is less ambiguous because "hyper-exponential" could be confused with tetration, which is sometimes referred to as [superlative prefix]-exponentiation. Double-exponential growth is growth equivalent to that of functions of the form f(x) = aa^x. Since we examined sequences with that growth rate extensively a little while ago, you should now be familiar with the power of double exponential growth. In double exponential functions, the number of digits of their outputs increases exponentially.

Also, notice that weak tetration can be expressed quite concisely in terms of exponents. Because of that, weak tetration isn't really that much of a new hyper-operator. This is why strong tetration is the standard choice for the next hyper-operator after exponentiation.

Weak tetration also isn't as mathematically interesting as strong tetration. An example is the famous problem of generalizing tetration to real inputs. For example, we know what 5^^3 or 1.5^^10 evaluate to (5^5^5 and 1.5^1.5^1.5^1.5^1.5^1.5^1.5^1.5^1.5^1.5 respectively), but what would something like 100^^5.6 or π^^e evaluate to? Many solutions have been proposed, but it is difficult to devise a solution that has the nice continuities of exponentiation with real inputs. Some of the solutions, such as Daniel Geisler's, have expressions like 10^^1.5 evaluate to complex numbers. This crazy behavior is largely justified by this quote from Daniel Geisler:

"Among at least the first four arithmetic operators, each successive operator brings new phenomena into play. Multiplication adds the rational numbers, exponentiation the complex numbers, and tetration gives rise to chaos."
~ Daniel Geisler (source)

Strong tetration has no agreed-upon solution for generalization, but weak tetration can be generalized pretty trivially with the formula, avvb = aa^b-1.

As you can see, weak tetration isn't really all that interesting of a hyper-operator, especially compared to tetration. Weak pentation, however, is something pretty interesting and unusual.

Weak Pentation

Weak pentation is the second of the weak hyper-operators. It's much less known than weak tetration. While weak tetration is often giving passing mention in introductions to the hyper-operators to tell people what tetration isn't, none of the higher weak hyper-operators are usually mentioned at all. In this sub-heading I will reveal how powerful weak pentation really is, and compare it against the usual hyper-operators.

Examples of Weak Pentation

As with weak tetration and the strong hyper-operators, we can ignore cases of the form 1vvvb or avvv1 because those evaluate to 1 and a respectively. So let's begin with cases with the base of 2.

2vvv2 = 2vv2 = 2v2 = 22 = 4

Yet another case of hyper-operators evaluating to 4. This is, as usual, a trivial case. The next case, however, is:

2vvv3 = 2vv2vv2 = 4vv2 = 4v4 = 44 = 256

This is the previous case raised to its own power. I think you can start to see a pattern. The next value is:

2vvv4 = 2vv2vv2vv2 = 4vv2vv2 = 256vv2 = 256256 3.2317*10616

That is 256 to the 256th power, a 617-digit number. Notice how quickly we got up to this number. How big do you think the next number will be? We get:

2vvv5 = 2vv2vv2vv2vv2 = 4vv2vv2vv2 = ... = (3.2317*10616)vv2 = (3.2317*10616)(3.2317*10616) 101.9924*10^619

This is already bigger than a googolplex, or even 100vv100! As you can see, we're moving very quickly. Next we have:

2vvv6 = (2vvv5)(2vvv5) 1010^(1.9924*10^619)

I think you get the pattern. As you can see, this sequence grows at a tetrational rate, the same growth rate we saw when examining strong tetration. So far, weak pentation easily beats the growth rate of weak tetration, and it's on par with the usual tetration. Let's continue to the base of 3.

3vvv2 = 3vv3 = 19,683

This isn't too big, but the next is:

3vvv3 = 3vv3vv3 = 19,683vv3 = 19,68319,683^2 2.1982*101,663,618,948

Already we have a number with over a billion digits!

3vvv4 = (3vvv3)vv3 = (3vvv3)(3vvv3)^2 108.0387*10^3,327,237,905

So far this sequence seems to be growing a little faster than typical tetrational growth—makes sense because unlike the last sequence, we're weak-tetrating each prior number by three, which is more powerful than raising it to the power of itself. This number has a 3.3-billion-digit number of digits! Next we have:

3vvv5 = (3vvv4)vv3 = (3vvv4)(3vvv4)^2 1010^(1.6077*10^3,327,237,906)

Unlike with the previous number, this number doesn't look that much different from ten to the power of the previous number; maybe the growth rate really is just on par with tetration. So we'll try the next few values:

3vvv6 1010^10^(1.6077*10^3,327,237,906)

3vvv7 1010^10^10^(1.6077*10^3,327,237,906)

So it seems that this weak-pentation sequence really isn't much more powerful than tetration, despite the apparent initial boost. How much better will it be with a base of 4? Let's try some examples:

4vvv2 = 4vv4 3.4028*1038

This is a pretty sizable starting value. How fast do you think this sequence will grow? Let's try the next value:

4vvv3 = 4vv4vv4 = (4vv4)(4vv4)^3 101.5182*10^117

This is already comparable to a googolplex. It may seem only slightly bigger, but it actually has 151 quadrillion times more digits than a googolplex! As you can see, we're moving VERY quickly. So does this sequence significantly outdo tetration? Well, the next value is:

4vvv4 = 4vvv3vv4 = (4vvv3)(4vvv3)^3 1010^(4.5547*10^117)

So it seems that this sequence doesn't outpace tetration much after all. 4vvv5 can be approximated simply as 10 to the power of the previous number, 4vvv6 as 10 to the power of 4vvv5, and so on.

So let's try going up to the base of 100. How fast does this weak-pentation sequence grow?

100vvv2 = 100vv100 = 102*10^198

100vvv3 = 100vv100vv100 ≈ 1010^(1.98*10^200)

100vvv4 = 100vv100vv100vv100 ≈ 1010^10^(1.98*10^200)

100vvv5 = 100vv100vv100vv100vv100 ≈ 1010^10^10^(1.98*10^200)

Hmm. These STILL aren't surpassing tetrational growth. Let's take a closer look at what's going on with these numbers and how powerful weak pentation really is.

How Powerful is Weak Pentation?

Weak pentation seems to be an operator that is on par with tetration. But how precisely can we bound it in terms of tetration?

We can show that (with a few exceptions) avvvb > a^^b by bounding expressions of the form avvvb in terms of tetration. We can get the following results:

avvv1 = a = a^^1

This is a trivial case of course.

avvv2 = avva = aa^(a-1) ≥ aa = a^^2

When a is 1 or 2, avvv2 is equal to a^^2. Otherwise, avvv2 is greater than a^^2. Continuing we have:

avvv3 = avvv2vva > (aa)vva > (aa)(a^a) > a(a^a) = a^^3

This time the only exception to avvv3 > a^^3 is when a is 1, in which case they're both equal to 1. This is true for all higher cases, and in fact it's the only exception for any higher cases.

avvv4 = avvv3vva > (aa^a)vva > (aa^a)(a^a^a) > a(a^a^a) = a^^4

I think you can see a pattern here. But to prove this for sure, we need to test using variables. If we assume that avvvb is greater than a^^b, then can we show that avvv(b+1) is greater than a^^(b+1)? Let's see:

avvv(b+1) = avvvbvva > (a^^b)vva > (a^^b)(a^^b) > a(a^^b) = a^^(b+1)

So this equality does hold. Thus we have proven that avvvb is always greater than or equal to a^^b, with no exceptions.

Can we upper-bound avvvb? One way we can is using the Knuth Arrow Theorem, a theorem proven by Sbiis Saibian which states that, for all a ≥ 2, b ≥ 1, c ≥ 1, x ≥ 2, (a^xb)^xc < a^x(b+c), and that (a^xb)^xc is always less than or equal to a^x(b+c). Let's see what results we can obtain using the Knuth Arrow theorem. So let's try this, skipping over the trivial case of avvv1.

= avva
= a^a^(a-1)
< a^a^a
= a^^3

= avvavva
< (a^^3)vva
= (a^^3)^(a^^3)^(a-1)
< (a^^3)^(a^^3)^(a^^3)
= (a^^3)^^3
< a^^6 [Knuth Arrow Theorem]

= avvv3vva
< (a^^6)vva
= (a^^6)^(a^^6)^(a-1)
< (a^^6)^(a^^6)^(a^^6)
= (a^^6)^^3
< a^^9

I think we can see a pattern here. In general, when b > 1, avvvb < a^^(3b-3). But that is a VERY weak upper-bound. To see why, let's examine the sequence of outputs of f(x) = a^^(3b-3) when a = 3, and compare that to 3vvvb.

So the second sequence clearly grows MUCH faster than the first. Even though we've confirmed that weak pentation lags way behind regular pentation, these bounds are not good for approximating numbers created with weak pentation. But we can do a little better. We'll try upper-bounding specific cases of avvvb and see if we can find a pattern. First we have:

= avva
= a^a^(a-1)
< a^a^a
= a^^3

That was pretty easy. Next we have:


This one's a little trickier. We'll first simplify the expression:

= avvavva
= (a^a^(a-1))vva
= (a^a^(a-1))^(a^a^(a-1))^(a-1)
= (a^a^(a-1))^(a^(a^(a-1)*(a-1)))
= (a^a^(a-1))^(a^(a^a - a^(a-1)))
≤ (a^a^(a-1))^(a^(a^a - a)))
= a^(a^(a-1)*a^(a^a-a))
= a^(a^(a-1)*a^(a^a-a))
= a^a^(a-1+a^a-a)
= a^a^(a^a-1)

Now that is clearly less than a^a^(a^a) = a^a^a^a = a^^4. Therefore, avvv3 < a^^4.

To make sure this upper-bound works, let's try the case of a = 10: we'll calculate 10vvv3 and compare it against 10^^4. We evaluate the first:

= 10vv10vv10
= (10^10^9)vv10
= (10^1,000,000,000)vv10
= (10^1,000,000,000)^(10^1,000,000,000)^9
= (10^1,000,000,000)^(10^(9*1,000,000,000))
= (10^1,000,000,000)^(10^9,000,000,000))
= (10^1,000,000,000)^(10^9,000,000,000)
= 10^(1,000,000,000*10^9,000,000,000)
= 10^(10^9*10^9,000,000,000)
= 10^10^(9,000,000,000+9)
= 10^10^9,000,000,009

and the second:

= 10^10^10^10
= 10^10^10,000,000,000

The second is clearly greater than the first. So this bound works like expected in this case.

Next up is avvv4. We bound like so:

= avvv3vva
= (avvv3)^(avvv3)^(a-1)
< (a^a^(a^a-1))^(a^a^(a^a-1))^(a-1))
= (a^a^(a^a-1))^(a^(a^(a^a-1)*(a-1)))

Now let's evaluate the part colored in red. It evaluates to:

= a^(a^(a^a-1)*a - a^(a^a-1)*1)
= a^(a^(a^a-1)*(a^1) - a^(a^a-1))
= a^(a^(a^a-1+1) - a^(a^a-1))
= a^(a^a^a - a^(a^a-1))
< a^(a^a^a - a^a)

Now we go back to the whole thing:

(a^a^(a^a-1))^(a^(a^a^a - a^a))
< a^(a^(a^a-1)*a^(a^a^a - a^a))

= a^a^(a^a-1 + a^a^a - a^a)
= a^a^(a^a - a^a - 1 + a^a^a)
= a^a^(a^a^a-1)
< a^a^a^a^a = a^^5

So we have shown that avvv4 < a^^5.

I think we can see a pattern here. It appears that avvvb is always less than a^^(b+1). This is pretty evident if you solve these expressions for higher and higher expressions using weak pentation.

So we can see that weak pentation has the bounds:

a^^b < avvvb < a^^(b+1)

Let's move on to weak hexation.

Weak Hexation

Weak hexation is the first of the weak hyper-operators whose behavior is really interesting. While weak tetration collapses to a simple exponential expression and weak pentation is on par with tetration, weak hexation is a much more unusual operator. Let's jump right in to some examples of weak hexation.

Examples of Weak Hexation

2vvvv2 = 4 (trivial case)

2vvvv3 = 2vvv2vvv2 = 4vvv2 = 4vv4 ~ 3.4028*1038

Still not that big compared to numbers we've looked at earlier. Next up is:

2vvvv4 = (2vvvv3)vvv2 ~ (3.4*1038)vv(3.4*1038 ~ 10^10^(1.31*10^40)

Now we're talking! This is a jump from an astronomical number, straight up to something roughly in the vicinity of Skewes' number (roughly 10^10^10^34). Next is:

2vvvv5 = (2vvvv4)vvv2 ~ 10^10^10^10^(1.31*10^40)

We're moving pretty quickly as you can see. This sequence grows quite noticeably faster than weak pentation or tetration, and each number is the previous one weak-pentated to two (in other words weak-tetrated to itself). Here are the next few values:

2vvvv6 ~ 10^10^10^10^10^10^(1.31*10^40)

2vvvv7 ~ 10^10^10^10^10^10^10^10^(1.31*10^40)

2vvvv8 ~ 10^10^10^10^10^10^10^10^10^10^(1.31*10^40)

So this sequence seems to be growing twice as fast (in terms of power tower height) as a tetrational sequence does, but MUCH slower than pentation. How fast do you think the base of 3 grows? Let's look at some values.

3vvvv2 = 3vvv3 = (3vv3)vv3 = 19,683vv3 = 19,683^19,683^2 ~ 101,663,000,000

This is a pretty big starting value. Next is:


Now this is a lot harder of a value to evaluate. Calculating it gives us:

= 3vvv3vvv3

= (3vvv3)vv(3vvv3)vv(3vvv3)

= [(3vvv3)^(3vvv3)^(3vvv3-1)]vv(3vvv3)

~ (10^10^10^1,663,000,000)vv(3vvv3)

~ (10^10^10^1,663,000,000)^(10^10^10^1,663,000,000)^(3vvv3-1)

~ 10^10^10^10^1,663,000,000

As you can see, weak hexation with the base of three is getting difficult to even evaluate! This is does not relate as much to the size of the numbers as it does to the nature of the weak hyper-operators. You can't make neat visual representations of numbers formed with the weak hyper-operators like you can with the strong hyper-operators.

So let's instead try estimating numbers formed with weak hexation, in terms of up-arrows.

Estimating Weak Hexation

Let's try to come up with some sort of general bound for weak hexation (avvvvb), like we did for weak pentation. We can bound like so (skipping avvvv1):

avvvv2 = avvva, which is between a^^a and a^^(a+1)

avvvv3 = avvvavvva

Lower bound:


> (avvva)^^a

> (a^^a)^^a

= (a^^a)^(a^^a) ... ^(a^^a) with a copies of a^^a

= a^a^a^a^ ... a^(a^^a) with a-1 copies of a to the left of (a^^a)

= a^^(a+a-1)

= a^^(2a-1)

Upper bound:


< (a^^(a+1))vvva

< (a^^(a+1))^^(a+1)

< a^^(a+1+a+1)

= a^^(2a+2)

An example of a number we can bound this way is:

3^^5 < 3vvvv3 < 3^^8

These bounds are admittedly not particularly strong, but with higher values they are pretty sufficient. For example:

100^^199 < 100vvvv3 < 100^^202

In general, we can roughly approximate avvvv3 as a^^(2a).

We can get similar bounds for avvvv4:


> (avvvv3)^^a

> (a^^(2a-1))^^a

= (a^^(2a-1))^(a^^(2a-1))^ ... ^(a^^(2a-1)) with a copies of a^^(2a-1)

> a^a^a^a^ ... ^a^(a^^(2a-1)) with a-1 a's to the left of a^^(2a-1)

= a^^(2a-1+a-1)

= a^^(3a-2)



< (avvvv3)^^(a+1)

< (a^^(2a+2))^^(a+1)

< a^^(2a+2+a+1) [Knuth Arrow Theorem]

= a^^(3a+3)

Similar to previously, we can approximate avvvv4 as a^^(3a).

Now let's try avvvv5:


> (avvvv4)^^a

> (a^^(3a-2))^^a

= (a^^(3a-2))^(a^^(3a-2))^ ... ^(a^^(3a-2)) with a copies of a^^(3a-2)

> a^a^a^a^ ... ^a^(a^^(3a-2)) with a-1 a's to the left of a^^(3a-2)

= a^^(3a-2+a-1)

= a^^(4a-3)



< (avvvv4)^^(a+1)

< (a^^(3a+3))^^(a+1)

< a^^(3a+3+a+1)

= a^^(4a+4)

I think you can see the pattern. If we continue this way, it's clear that avvvvb will fall between a^^(b*a-(b-1)) and a^^(b*a+b), and is roughly equal to a^^(b*a). An example of a number we can approximate this way is 100vvvv100 ~ 100^^(100*100) = 100^^10,000.

So weak hexation falls between tetration and pentation in terms of how powerful it is (closer to tetration). It's a weird operator, and a bit of a redundant one since the numbers weak hexation produces can generally be approximated compactly in terms of weak pentation (this is because numbers formed with weak hexation can generally be approximated in terms of tetration and weak pentation is on par with tetration). For example, 100vvvv100 is roughly the same value as 100vvv10,000 ~ 10^^10,000.

Here's a quick recap of the hyper-operators we've seen and how fast they grow:

  • Weak tetration grows at a doublexponential rate (between exponentiation and tetration), avvb = a^a^(b-1).

  • Weak pentation is on par with tetration, avvvb ~ a^^b.

  • Weak hexation grows faster than tetration but much slower than pentation, avvvvb ~ a^^(a*b).

So let's move on to the higher weak hyper-operators. How fast do you think they will grow? Let's find out.

Higher Weak Hyper-Operators

In this section we'll try and figure out how powerful the higher weak hyper-operators are (weak heptation, weak octation, ... ) and bound them in terms of up-arrows.

First let's try weak heptation (avvvvvb). At this point we canu se the notation vn to denote n down-arrows, just like ^n denotes n up-arrows. This is because due to our limited number sense, it's often hard to recognize more than four objects in a row at once. Let's try and figure out how powerful weak heptation is.

av52 = av4a ~ a^^(a*b)


= av4av4a

~ (a^^(a*b))v4a

~ (a^^(a*b))^^(a^^(a*b)*a)

~ a^^(a*b+a^^(a*b)*a)

~ a^^a^^(a*b)


= av53v4a

~ (a^^a^^(a*b))v4a

~ (a^^a^^(a*b))^^((a^^a^^(a*b))*a)

~ a^^(a^^(a*b) + a^^a^^(a*b) * a)

~ a^^a^^a^^(a*b)

Once again, there's a pretty obvious pattern here: av5b will generally be about a^^a^^ ... a^^(a*b) with b total copies of a, which falls between a^^^b and a^^^(b+1). This means that weak heptation is an operator that is on par with pentation.

Next is weak octation (av6b):


= av5a

~ a^^^a


= av5av5a

~ (a^^^a)v5a

~ (a^^^a)^^^a

~ a^^^(2a)


= av63v5a

~ (a^^^(2a))v5a

~ (a^^^(2a))^^^a

~ a^^^(3a)

and in general we can see the pattern:


= (av6(b-1))v5a

~ (a^^^((b-2)*a))v5a

~ (a^^^((b-2)*a))^^^a

~ a^^^((b-1)*a)

You may be noticing a pattern with all the hyper-operators. If you recall each comparison we've seen:

  • weak tetration is between exponentiation and tetration

  • weak pentation is on par with tetration

  • weak hexation is between tetration and pentation

  • weak heptation is on par with pentation

  • weak octation is between pentation and hexation

If we extrapolate this pattern, we get:

  • weak enneation is on par with hexation

  • weak decation is between hexation and heptation

  • weak 11-ation is on par with heptation


It's easy to see why this pattern works. If you bump each weak hyper-operator used in the bounds we saw a bit earlier up by 2 (e.g. v4 to v6), and each strong hyper-operator by 1 (e.g. ^4 to ^5), we get results that are as what we'd expect. This is because the Knuth Arrow Theorem, the most prominent part of proving bounds for the weak hyper-operators, works the same for all hyper-operators.


The weak hyper-operators mostly serve to show how there's an alternate way to define the hyper-operators that isn't quite as convenient for a googologist's purposes, but just as reasonable to define. They aren't usually covered in much detail in googology, but I still covered them for completeness's sake. It was especially worth covering these because not a lot of other people online have covered those operators. Let's continue with another one of the popular notations for large numbers, the Ackermann function.

2.04. The Ackermann Function