A website on large numbers and fast-growing functions

Numbers from extended array notation

Update note: those numbers are defined using an older version of exAN without the Rule 4.

Two row series

Those numbers are defined using expression s(a1,a2,…ak-1,ak{2}b1,b2,…bk-1,bk). The simplest ones are already defined in LAN numbers page, e.g.

In s(3,2{2}2), we start the process. We land at the 3rd entry – the 2 in s(3,2{2}2), and we meet case B2, so change s(3,2{2}2) into s(3,2{2}2{2}1). Then we focus on the first entry of the former {2}, and we meet case B3, so change s(3,2{2}2{2}1) into s(3,2{1}1{1}2{2}1). Since {1} is the comma, we get s(3,2{2}2) = s(3,2,1,2{2}1). That’s how exAN rules work. As a result,

Dimensional series

Those numbers are defined using arrays with separator {n} only (where n is a positive integer). A special result is that s(a,1,1…,1{n}2 #) = s(a,1,1…,1{n-1}2 #), so s(a,1,1…,1{n}2 #) = s(a,1,1…,1,2 #).

Linbel group

This group includes linbel, lintrienbel, linblinel, linbdulinel, linbdienlinel, dulinbel, dienlinbel and trienlinbel in order.

Linbel = s(3,2,2{2}1{2}2) = s(3,s(3,1,2{2}1{2}2),1{2}1{2}2) = s(3,s(3,1,1{2}1{2}2),1{2}1{2}2) = s(3,s(3,1,1{2}1,2),1{2}1{2}2) = s(3,s(3,3,3{2}1,1),1{2}1{2}2) = s(3,trientri,1{2}1{2}2) = s(3,trientri,1{2}1,1,…1,1,2) with trientri 1′s. It marks the end of 2-row arrays (arrays with only one {2} and no separator higher than {2})!

Tesseral = s(3,2,2{5}2) = s(3,27,1{5}2) = s(3,27,1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}1{4}2) – now you see how much tesseral is larger than cubel, but we only change the {4} into the {5}.

Finally penteral = s(3,2,2{6}2).

Post-dimensional series

In definition of those numbers, there’re at least layer-2 entries. Though rules for them are the same as before, the reducing process seems more complex. So let me explain more to you.

Dimentril group

This group includes dimensol, dimentriensol, dimenlinsol, dimenlinbsol, dimentril, diendimensol, lindimensol, and dimenbol in order.

Dimentril = s(3,3{1,2}3). To solve it, we start the process, and meet the 3 in s(3,3{1,2}3). It’s case B2, so change the “{1,2}3” into “{1,2}2{1,2}2“, and jump to the 1 in s(3,3{1,2}2{1,2}2). Then we meet the 2 in s(3,3{1,2}2{1,2}2). It’s case B1, so s(3,3{1,2}3) = s(3,3{3,1}2{1,2}2) = s(3,3{3}2{1,2}2). The next time we start the process, we first meet case B2 then case B3, and s(3,3{3}2{1,2}2) = s(3,3{2}1{2}1{2}2{1,2}2) = s(3,3{2}1{2}1,1,1,2{1,2}2) = s(3,3{2}3{2}3,3,3,1{1,2}2). Also s(3,1{1,2}1,1,2) = s(3,3{1,2}3,1,1) = dimentril, and s(3,3{1,2}1,2) = s(3,3{1,2}3,1) = dimentril. The name “dimentril” combines “dimension” and “-tril”, because it’s above dimensional arrays, and all entries at base layer are 3.

However, dimentril is too far above dimensional arrays, so let’s take some more steps to see its hugeness.

Dimensolplex group (New Naming System)

From now on, we start another naming system. In the system, we use 4 “namebases” to name numbers result from some typical expressions. They’re

“ol” – to name expressions s(3,3A2)

“trien” – to name expressions s(3,3,3A2)

“tril” – to name expressions s(3,3A3)

“bol” – to name expressions s(3,3A1A2)

where A is a separator. The first group beyond dimenbol is dimensolplex group. This group contains 19 numbers as follows. Though I use the same suffix “-plex” as before, they have fully different meaning.

dimentrienplex = s(3,3,3{2,2}2). Notice the change of the namebase from dimentril group. This time we have not just 3 dimension rows, because the {2,2} reduces only when you meet it in the process. Actually dimentrienplex = s(3,s(3,s(3,3,3{1,2}2),2{2,2}2),2{2,2}2), where s(3,n,2{2,2}2) reduces to an array with s(3,n-1,2{2,2}2) dimension rows!

So the suffix n-plex means that the separator A becomes {n+1,2}. However, there’s one missing number…

-dex group

Now we pick up the missing number – dimensoldex, but you may think that the missing number is dimensolbiplex. Actually they’re the same thing, because

Dimensoldex = s(3,3{1,3}2) = s(3,3{3,2}2) = dimensolbiplex. The reducing process is similar to dimensol or dimentril. First we start the process, and meet the “2” in s(3,3{1,3}2) – that’s case B2, so change the “{1,3}2” into “{1,3}2{1,3}1″, and jump to the “1“. Then we meet the “3” in s(3,3{1,3}2{1,3}1) – that’s case B3, so s(3,3{1,3}2) = s(3,3{3,2}2{1,3}1) = s(3,3{3,2}2).

The suffix “-dex” change the {1,2} into {1,3}, so we get dimentriendex = s(3,3,3{1,3}2), dimentrildex = s(3,3{1,3}3) and dimenboldex = s(3,3{1,3}1{1,3}2).

The {1,3} is not just {3,2} – it’s {b,2} where b is the iterator only when you meet it in the process. Dimensoldex = dimensolbiplex – that’s a bit weak. But could you imagine what’s the n such that dimentriendex ≈ dimentrien-n-plex? Try to reduce it, and you’ll get similar answer to what I said about dimentriensol and dimentrienplex.

Then we can add “n-plex” suffixes to those numbers, such as

dimensoldexplex = s(3,3{2,3}2)

dimentriendexplex = s(3,3,3{2,3}2)

dimentrildexplex = s(3,3{2,3}3)

dimenboldexplex = s(3,3{2,3}1{2,3}2)

dimentriendexbiplex = s(3,3,3{3,3}2)

dimentrildexbiplex = s(3,3{3,3}3)

dimenboldexbiplex = s(3,3{3,3}1{3,3}2)

(still with one missing stuff…) So the suffix “n-plex” means the first entry of the separator A changed from 1 to n+1.

The next step is adding “-plex” prior to the “-dex”. And we get some larger numbers –

And so on. The “n-plex” prior to the “-dex” means adding n to the 2nd entry of the separator A.

-bidex group

Here’s how the suffix “-bidex” works.

Dimensolbidex = s(3,3{1,1,2}2). To solve it, first we start the process, and meet the “2” in s(3,3{1,1,2}2) – that’s case B2, so change the “{1,1,2}2” into “{1,1,2}2{1,1,2}1″, and jump to the “1“. Then we meet the “2” in s(3,3{1,1,2}2{1,1,2}1) – that’s case B3, so s(3,3{1,1,2}2) = s(3,3{1,3,1}2{1,1,2}1) = s(3,3{1,3}2) – it’s still dimensoldex (or dimensolbiplex).

dimentrienbidex = s(3,3,3{1,1,2}2) – that’s much larger.

dimentrilbidex = s(3,3{1,1,2}3)

dimenbolbidex = s(3,3{1,1,2}1{1,1,2}2)

And adding “-plex” after “-biplex”:

dimensolbidexplex = s(3,3{2,1,2}2)

dimentrienbidexplex = s(3,3,3{2,1,2}2)

dimentrilbidexplex = s(3,3{2,1,2}3)

dimenbolbidexplex = s(3,3{2,1,2}1{2,1,2}2)

We can also add “-plex” prior to the “-biplex”, but this step is too big. The “-bidex” means two “-dex”es, so we can insert “-plex” between them, such as

And so on. Now have a look at effects of suffix “-dex” and “-plex”. First, both modify the “separator A” in the definition of namebases. The “n-dex” increase the (n+1)-th entry of A from 1 to 2, then the “n-plex” prior to m “-dex”es increase the (m+1)-th entry of A by n. However, since we start on A = {1,2}, names below dimensolbidex have an offset on the 2nd entry of A.

Naming space

Now I introduce an idea about naming numbers – the naming space. The size of naming space of a naming system shows how many regular names the system can produce.

Here’s how “-plex” and “-dex” works in my naming system. We can have arbitrary many “-plex”es, and shorten as “n-plex”, so this forms a naming space of . Notice that I don’t write because the levels of “-plex”, “-biplex”, “-triplex”, etc. are ordered. We want “-biplex” to be a higher-leveled modifier than “-plex”, and “-triplex” is even higher-leveled, and so on.

Next, a “-dex” is a stronger modifier than all the “n-plex”es, and “-dex” followed by “n-plex” form another naming space of , and of in total. Then “-plexdex” followed by “n-plex” form another , and so on. So “n-plexdex-m-plex” form a naming space of . We still want them to be ordered, e.g. “-plexdex” is higher-leveled than all the “-dex-n-plex”es.

Next, 2 “-dex”es separate “-plex”es into 3 groups, so they form a naming space of ; 3 “-dex”es separate “-plex”es into 4 groups, so they form a naming space of , and so on. Multi-dex and “-plex”es then form a naming space of .

What about the notation system? With “-plex”es and “-dex”es I named numbers up to separator {1{2}2}, which has recursion level – that’s equal to the size of the naming space, so we can have a name for numbers at every separator recursion level. However, function f(n) = s(n,n{1{2}2}2) has growth rate , so the naming space is not enough if I must name for every growth rate (in FGH scale). I indeed named numbers up to separator {1{2}2}, but you can see what’s wrong with the naming system. The problem is that there’re many naming holes. e.g. between two adjacent terms in the naming system, dimentrienquintidex (where s(n,n,3{1,1,1,1,1,2}2) has growth rate ) and dimentrilquintidex (where s(n,n{1,1,1,1,1,2}3) has growth rate ), there’re many “unnamed growth rate” (i.e. without any named numbers), so they form a naming hole.

So how to deal with naming holes? One way is to leave it empty, but we can’t feel the hugeness of the step from before the hole to after the hole – it’s not good. A second way is to change the order of the modifiers we use, to form a larger naming space, then it fit our need. But, the new order may be more chaotic, and the result names may be longer and unclear. That’s a “notational way”, with more and more rules, not suit for naming. Another way is to add new modifiers to the naming system, which can fill the naming holes. Then the types of modifiers will be greater as we go on. That’s a “naming way”, with more and more new modifiers, and we get more and more colorful names – that’s good. So I choose the last one for the next steps.

-threx group

Now I introduce a new modifier – the suffix “-threx”. It means the 3rd single modifier after “-plex” and “-dex”. Here’s the basic framework of the naming system. First, we have “n-threx”, meaning n “-threx”es, and this form a naming space of . Second, we insert “-dex”es between “-threx”es, and this step multiply the naming space by . Finally, we insert “-plex”es between suffixes already existing, and this step multiply the naming space by again. So the size of the naming space is . However, I still want the system can go up to separator recursion level ! So I must need more modifiers…

Let’s begin with a single “-threx”.

dimentrienthrex = s(3,3,3{1{2}2}2)

dimentrilthrex = s(3,3{1{2}2}3)

dimenbolthrex = s(3,3{1{2}2}1{1{2}2}2)

Then add “-plex”es after the “-threx”.

dimensolthrexplex = s(3,3{2{2}2}2)

dimentrienthrexplex = s(3,3,3{2{2}2}2)

dimentrilthrexplex = s(3,3{2{2}2}3)

dimenbolthrexplex = s(3,3{2{2}2}1{2{2}2}2)

dimensolthrexbiplex = s(3,3{3{2}2}2)

dimentrienthrexbiplex = s(3,3,3{3{2}2}2)

dimentrilthrexbiplex = s(3,3{3{2}2}3)

dimenbolthrexbiplex = s(3,3{3{2}2}1{3{2}2}2)

Then we can add “-plex”es prior to the “-threx”, such as

dimentrienplexthrex = s(3,3,3{1{2}3}2)

dimentrilplexthrex = s(3,3{1{2}3}3)

dimenbolplexthrex = s(3,3{1{2}3}1{1{2}3}2)

But wait! There’s a naming hole between {1,2{2}2} and {1{2}3}. To fill the naming hole, I use a new modifier.

A “-threx” and a “-dex” can form 3 places where “n-plex” can insert. The last place corresponds to increasing the 1st entry of {1{2}1,2}, the 2nd place for the 2nd entry of {1{2}1,2}, and the 1st place for the last entry. For more “-threx”es and “-dex”es, this still holds.

Generally, a “-dex” add an entry at the end of the layer-1 separator (i.e. the “separator A”). If you want some expressions with extra entry not at the end of the separator A, then you go into a naming hole, and you need “-dexi”es. e.g. dimensoldexthrexdexiplexdex = s(3,3{1{2}1,2{2}1,2}2) = s(3,3{1{2}3,1{2}1,2}2).

dimensolbithrexplex = s(3,3{2{3}2}2)

dimensolthrexplexthrex = s(3,3{1{2}2{3}2}2). Hey! There’s an extra entry! This entry corresponds to {1{2}2}, or the strength of a “-threx”.

dimensolthrexthrexidexiiplexthrex = s(3,3{1{2}1,2{2}2{3}2}2) – now “-dexii” appears. That’s a way to fill an “2nd-order” naming hole, where even with “-dexi” and “-threxi” we still can’t cover. If there’re still naming holes, we’ll use more Roman numerals such as “-dexiii”, “-dexiv”, “-dexv”, “-dexvi”, etc.

Now I show you how the main naming system (excluding the filling naming hole part) works for the “-threx” level.

At the beginning, 4 namebases are mapped into expressions. Separator A is initialized as {1,2}.

Append “-threx”es to the name. The entry inside the separator inside A increases 1 every appending.

Insert “-dex”es to the name. For every insertion, look at the position from the end of the name. If it’s the k-th position, the A will add an entry at the end, where the separator corresponds to the result of “appending k ‘-threx’es at step 2”.

Insert “-plex”es to the name. For every insertion, look at the position from the end of the name. If it’s the k-th position, the k-th entry of A will increases 1.

Using ordinals, the naming process can be more clear. A “-threx” means , a “-dex” means , and a “-plex” means in separator recursion level, where the β is defined by the result of adding k suffixes in previous steps, where k is the position of the suffix we focus from the end of the name. What’s more important, this way works even beyond the “-threx” group!

So an “n-ex” means (where the α is at the n-th level of the power tower), where β is defined by the result of adding k suffixes in previous steps, where k is the position of the suffix we focus from the end of the name. Extending the suffixes to “n-ex” for any n, we have a naming space of , which is certainly not enough for every separator recursion level in exAN. But we can add modifiers “n-ex-r” (where r is in Roman numerals), then we have a naming space of – that’s enough for every separator recursion level in exAN.

What’s more, ε0 is the first ordinal that separator recursion level catches up with growth rate (in FGH scale). If we build a “junior” naming system, where the only difference from the normal one is that the “n-ex” rule is for growth rate instead of separator recursion level, then the “n-ex” is analogous to the “(n+2)-ex” in the “junior” naming system. e.g.

dimensolennex jr. = s(3,3{1{1{1{2}2}2}2}2) = dimensolheptex

So we can name every growth rate if we use the “junior” naming system. But here I don’t use that because I don’t want to left “-plex” and “-dex” below separators (which happens in the “junior” naming system), and separators are important in parts beyond exAN.

To add two ordinals together (that is s(3,3 A 2 B 2) where A has lower recursion level), replace “sol” with the name of the other separator and if it’s greater than dimensol put hyphens around it. So Dimenplandex = s(3,3{3}2{1,3}2) and Dimen-Dimensoldex-threxplex = s(3,3{1,3}2{2{2}2}2).

To replace the final 2 by a 3, 4, 5, or 6, replace the “sol” with “tril”, “tetril”, “pentil”, and “hexil”. So Dimenpentilplex = s(3,3{2,2}5).

To multiply ordinals (that is s(3,3 A 1 B 2) where B has lower recursion level) put the name of separator A before B and add the “-on-” operator. So Dimensol-on-Dimensolthrex = s(3,3{1{2}2}1{1,2}2). If it is lower than dimensol, just put the name before it; Plandimensolbidex = s(3,3{1,1,2}1{3}2).

To make 2, 3, 4, or 5 copies of the separator A, replace the “sol” with “bol”, “trol”, “quadrol”, and “quintol”. So Dimenquadrolplex = s(3,3{2,2}1{2,2}1{2,2}1{2,2}2).

And with these four constructions, one can name any growth rate up to epsilon-zero. If you want, I can provide a list of names under this system with their expressions.

Not so complicated. Using suffix “-minex” and “-nulex” is enough, where the “n” in “n-ex” starts with -1, then the normal naming system can name every growth rate, just like what “junior” naming system does.

That works too. But I think mine works better because it is consistent with the name-bases you use.

I look forward to the EAN page – although if you plan to give a name to every single recursion level from e_0 to BHO, you may have to split it up. (I tried to figure out how it could start but only got up to level e_0*2…although with the “dexi” type modifiers I got up to e_1.)

With an omega size series of modifiers, we can now come up with names for s(3,3 A 2) where A is a separator below {1{1,2}2}. And the naming space is w^w^w size. But there’s still gaps in the naming system, and the notation goes up to w^w^w^w^w.

n-linex increases the entries on the n+1-th row on separator A.
n-planex increases the entries on the n+1-th ‘{2} separator’ on separator A.
n-cubex increases the entries on the n+1-th ‘{3} separator’ on separator A.
…

But what’s the name of s(3,3{2{1,2}2}2) and s(3,3{1{1,2}3}2)? They’re between s(3,3{1{1,2}2}2) and s(3,3{1{2,2}2}2). Unless we create a naming space of ε(0), we can always find some unnamed recursion levels.