We mathematicians like big numbers.

The concept of using terms such as "2^6" to represent 2^{6} = 2*2*2*2*2*2 = 64 has been around for a long time. In 1976 Donald Knuth took the original definition and extended it further. Just as multiplication can be thought of (in a way) as repeated addition, and just as raising numbers powers can be thought of as repeated multiplication, so the newly-defined ^^ operator is repeated exponentiation (if that is, indeed, a word), so ^^^ is repetition of ^^, and so on.

Actually, arrow notation is kind of hard to explain in these abstract terms, and I find interpretations written entirely in algebra to be somewhat hard to follow, so it's better for both of us if I instead give lots of examples until you spot the pattern.

NOTE: Exponent arrows are right-associative. This is a mathematical convention which also happens to save on brackets space below. That is;

3^4^2^6 = 3^(4^(2^6)), not ((3^4)^2)^6

Also, more arrows take precedence over fewer arrows in the same way that multiplication is calculated before addition;

4^7^^8 = 4^(7^^8), not (4^7)^^8

## ^

You'll see that the definition of ^ remains unchanged here from the usual meaning of raising numbers to powers. I merely list these examples here because firstly they *do* comprise part of the meaning of arrow notation, and secondly they serve as a template for later definitions.

1^n = 1 for all n
2^1 = 2
2^2 = 2*2 = 4
2^n = 2 raised to the power of n
3^1 = 3
3^2 = 3*3 = 9
3^3 = 3*3*3 = 27
3^n = 3 raised to the power of n
4^1 = 4
4^2 = 4*4 = 16
4^3 = 4*4*4 = 64
4^4 = 4*4*4*4 = 256
4^n = 4 raised to the power of n
...
m^n = m raised to the power of n

## ^^

The ^^ operator serves to show just how big the numbers can get extremely quickly, even using extremely small integers in the place of m and n. It's also a nicely quick way to express power towers. Note: for comparison, a googolplex is slightly larger than 4^^4.

1^^n = 1 for all n
2^^1 = 2
2^^2 = 2^2 = 4
2^^3 = 2^2^2 = 2^4 = 16
2^^4 = 2^2^2^2 = 2^2^4 = 2^16 = 65536
2^^5 = 2^2^2^2^2 = 2^2^2^4 = 2^2^16 = 2^65536 = a 19728-digit number
2^^n = a power tower of n 2s
3^^1 = 3
3^^2 = 3^3 = 27
3^^3 = 3^3^3 = 3^27 = 7,625,597,484,987
3^^4 = 3^3^3^3 = 3^3^27 = 3^7,625,597,484,987 = a 3.6 billion-digit number
3^^n = a power tower of n 3s
4^^1 = 4
4^^2 = 4^4 = 256
4^^3 = 4^4^4 = 4^256 = a 154-digit number
4^^n = a power tower of n 4s
...
m^^n = a power tower of n m's

## ^^^

Where ^^ generated large numbers quickly, ^^^ generates *abominably* large numbers almost instantaneously.

1^^^n = 1 for all n
2^^^1 = 2
2^^^2 = 2^^2 = 4
2^^^3 = 2^^2^^2 = 2^^4 = 65536
2^^^4 = 2^^2^^2^^2 = 2^^65536 = a power tower of 65536 2s
2^^^n = 2^^2^^...^^2^^2 where there are n 2s
3^^^1 = 3
3^^^2 = 3^^3 = 7,625,597,484,987
3^^^3 = 3^^3^^3 = 3^^7625597484987 = a power tower of 7,625,597,484,987 3s
3^^^4 = 3^^3^^3^^3 = 3^^(a power tower of 7,625,597,484,987 3s)
= a power tower of k 3s (where k = a power tower of 7,625,597,484,987 3s)
3^^^n = 3^^3^^...^^3^^3 where there are n 3s
...
m^^^n = m^^m^^...^^m^^m where there are n m's

## In general

Here's how arrow notation works in its most general form.

n
/-------------------------------------------\
m^^^...^^^n = m^^^...^^^m^^^...^^^m^^^... ...^^^m^^^...^^^m
\_______/ \_______/ \_______/ \_______/
k k-1 k-1 k-1

For example

4
/-----------------\
2^^^^^^4 = 2^^^^^2^^^^^2^^^^^2
\____/ \___/ \___/ \___/
6 5 5 5
5^^5 = 5^5^5^5^5 = roughly 10^{102184}
(compare googolplex = 10^{10100})
10^^^^^^^^^^^^^3 = 10^^^^^^^^^^^^10^^^^^^^^^^^^10
7^^^^^2 = 7^^^^7
2^^^^^^^^2 = 2^^^^^^^2
= 2^^^^^^2
= 2^^^^^2
= 2^^^^2
= 2^^^2
= 2^^2
= 2^2
= 4

etc.

The number of arrows can increase without limit, but it would be foolish for me to attempt to describe the effects of using more than three arrows, since at this point the numbers become impossible to describe in anything *but* arrow notation. But hopefully by now you're getting the gist of how the function works.

As we have seen above, the operator ^^^...^^^ (where there are k arrows) is effectively repeated application of the corresponding operator ^^^...^^^ (with k-1 arrows). The definition extends backwards to addition and forwards for as large a k as one wishes.

##### Recursive definition of addition

m+1 = s(m), the successor function
m+(n+1) = (m+n)+1

##### Recursive definition of multiplication

m*1 = m for all m
m*(n+1) = m+(m*n)

##### Recursive definition of exponentiation

m^1 = m for all m
m^(n+1) = m*(m^n)

##### Recursive definition of ^^

m^^1 = m for all m
m^^(n+1) = m^(m^^n)

##### Recursive definition of ^^^

m^^^1 = m for all m
m^^^(n+1) = m^^(m^^^n)

...

##### Recursive definition of ^^^...^^^ (where there are k arrows)

m^^^...^^^1 = m for all m
\_______/
k
m^^^...^^^(n+1) = m^^^...^^^(m^^^...^^^n)
\_______/ \_______/ \_______/
k k-1 k

## Hyper operator

It is convenient to abbreviate very large numbers of arrows to a single additional integer, thus forming a function with three arguments, known as the hyper operator.

m^^^...^^^n = hyper(m,k,n)
\_______/
k

From this we can get a recursive hyper operator definition:

hyper(m,k,1) = 1
hyper(m,1,n) = m+n
hyper(m,k+1,n+1) = hyper(m,k,hyper(m,k+1,n))

Other alternate expressions for arrow notation include Conway's chained arrow notation:

m^^^...^^^n = m->k->n
\_______/
k

and Bowers' linear array notation:

m^^^...^^^n = m<k>n or <m,n,k>
\_______/
k

Chained arrow notation is more powerful than arrow notation since it can be extended to three, four or more arrows and thus used to express much larger numbers. Array notation can be extended to arrays with four entries, which are mathematically comparable in scale with general chained arrow expressions. Array notation, however, is more powerful still, as it can be extended to expressions in five, six and more entries - all such expressions dwarf anything chained arrow notation can muster. However, both such notations are best dealt with in their respective nodes.

- 1^^^...^^^n = 1 for any n and for any number of arrows.
- m^^^...^^^1 = m for any m and for any number of arrows.
- 2^^^...^^^2 = 4 for any number of arrows.
- Numbers of the form hyper(A,A,A) for integers A (1^1, 2^^2, 3^^^3, 4^^^^4) etc. are called Ackermann numbers.
- The superfactorial numbers n$ are defined as n$ = (n!)^^(n!), where n! is n factorial.
- 3^^^^3 is the first stage in the construction of Graham's Number, an integer so large it cannot be expressed even in standard arrow notation.
- Technically, since this
*is* "arrow notation", all of the carets ("^") in the above working can be replaced with up-arrows without altering the meaning in the slightest. But either symbol is acceptable, and this way is likely to be easier on your browser.