Introduction to Extensible-E

The Extensible-E System (ExE) is an array notation invented by Sbiis Saibian, centered around powers of 10. This article will serve as a walk through, or an introduction to the notation, meant to give an easy-to-understand explanation for those who don't get it yet. Make sure to read carefully, and really try to interpret what's going on.
== Hyper-E Notation (E#) ==
This is the most basic form of Extensible-E, and thus most certainly the place to start off. An expression in hyper-E notation consists of the letter "E", then alternating natural numbers and "#" symbols (which are called "hyperions").
The rules are simple:
*E[n]a = na
*E[n]a#b#c#...#x#y#z#1 = E[n]a#b#c#...#x#y#z (where # is a hyperion)
*E[n]a#b#c#...#x#y#z = E[n]a#b#c#...#x#(E[n]a#b#c#...#x#y#z-1)
Here the [n] means "in base n". If it is not there, it defaults to base 10, and Ea becomes 10a. The default is used much, much more often than any modified base, and as the expressions become larger and larger, the difference quickly become much less significant.
=== Examples ===
*E100 = 10100 = googol (10,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,000,000,000,000,000,000,000,000)
*En = 10n (n-plex)
*E100#2 = E(E100) = 1010100 = googolplex
*E100#100 = E(E(E(...(E(E(E100)))...))) with 100 "E"s = 101010...1010100 with 100 "10"s = grangol
*Ea#b = 101010...1010a with b "10"s
*E100#100#2 = E100#(E100#100) = E100#grangol = grangoldex
*E100#100#100 = E100#(E100#(E100#(...(E100#(E100#(E100#100)))...))) with 100 "100#"s = greagol
*E100#100#100#100 = E100#100#(E100#100#(E100#100#...(E100#100#100)...))) with 100 "100#100#"s = gigangol
*etc.
You should notice a pattern here.
Bonus: E1#1#1#...#1#1#1#a with b "1"s = 10↑↑↑...↑↑↑a with b+1 arrows
== Extended Hyper-E Notation (xE#) ==
This is where the fun begins. On this notation, concatenated hyperions are introduced. However, to denote an undefined amount of hyperions at once, we will use (#n). (Saibian himself uses carets instead of superscripts)
The rules regarding multi-hyperions are:
*E(...)a(#c)b = E(...)a(#c-1)a(#c-1)a(#c-1)...(#c-1)a(#c-1)a(#c-1)a with b "a"s
All other rules remain unchanged.
=== Examples ===
*E100##2 = E100#100 = grangol
*E100##100 = E100#100#100#...#100#100#100 with 100 "100"s = gugold
*E100##100#2 = E100##gugold = gugolda-suplex
*E100##100#100 = E100##(E100##(...(E100##(E100##100))...)) with 100 "100##"s = graatagold
*E100##100#100#100 = E100##100#(E100##100#...(E100##100#100)...)) = greegold
*etc.
*E100##100##100 = E100##100#100#...#100#100#100 with 100 "100"s after the "##" = gugolthra
*E100###100 = E100##100##100##...##100##100##100 with 100 "100"s = throogol
*E100####100 = E100###100###100###...###100###100###100 with 100 "100"s = tetroogol
*etc.
== Cascading-E Notation (E^) ==
The notation starts to become really complex at this point, so hang in there. Remember #^n? Here, that operator actually has use, except now it's #^#.
Here's the definition:
*E(...)a#^#b = E(...)a####...####a with b hyperions ("#^#b" always means "(#^b)a")
*E(...)a#^#*#b = E(...)a#^#a#^#a#^#...#^#a#^#a#^#a with b "a"s (remember the previous rules!!)
*E(...)a#^#*(#c)b = E(...)a#^#*(#c-1)a#^#*(#c-1)...#^#*(#c-1)a#^#*(#c-1)a with b "a"s
*E(...)a#^(#c)b = E(...)a#^(#c-1)*#^(#c-1)*...*#^(#c-1)*#^(#c-1)a with b "#^(#^c-1)"s
*E(...)a#^(#c)*#b = E(...)a#^(#c)a#^(#c)a#^(#c)...#^(#c)a#^(#c)a#^(#c)a with b "a"s
All other rules remain unchanged.
Told you it would get complex. If you can't keep up at this point, that's understandable.
=== Examples ===
*E100#^#2 = E100##100 = gugold
*E100#^#100 = E100####...####100 with 100 hyperions = godgahlah
*E100#^#100#100 = E100#^#(E100#^#(...(E100#^#(E100#^#100))...)) with 100 "100#^#"s = grandgahlah
*E100#^#100##100 = E100#^#100#100#...#100#100#100 with 100 "100"s after the "#^#" = gugoldgahlah
*E100#^#*#3 = E100#^#100#^#100 = E100#^#100####...(100 hyperions)...####100 = gotrigahlah
*E100#^#*#100 = E100#^#100#^#100#^#...#^#100#^#100#^#100 with 100 "100"s = godgoldgahlah
*E100#^#*##100 = E100#^#*#100#^#*#100#^#*#...#^#*#100#^#*#100#^#*#100 with 100 "100"s = godthroogahlah
*E100#^##2 = E100#^#*#^#100 = E100#^#*####...(100 hyperions)...####100 = deutero-godgahlah
*E100#^##100 = E100#^#*#^#*#...*#^#*#^#100 with 100 "#^#"s = gridgahlah
*E100#^###100 = E100#^##*#^##*#...*#^##*#^##100 with 100 "#^##"s = kubikahlah
*E100#^#^#100 = E100#^####...(100 hyperions)...####100 = godgathor
*etc.
== Extended Cascading-E Notation (xE^) ==
If you think Cascading-E notation is complicated, you ain't seen nothing yet!
a^^b = a^a^a...a^a^a with b a's. So Ea#^^#b = Ea#^#^#...#^#^#a with b #'s.
Now we can stack #^^#'s just like we stacked #'s in Cascading-E notation.
Now (#^^#)^^# represents the limit of #^^#, (#^^#)^(#^^#), (#^^#)^(#^^#)^(#^^#). Remember that ^'s are evaluated right to left.
We can keep applying ^^#'s to expressions to get ((#^^#)^^#)^^#. (((#^^#)^^#)^^#)^^#, etc.
That process can even be continued transfinitely with the caret-top (>) to denote iterations, with #^^#># meaning ((...((#^^#)^^#)...)^^#)^^# with b "^^#'s, and #^^(a+#) meaning (...((#^^#>a)^^#)...)^^# with b ^^#'s (not including the (#^^#>a)).
#^^## is the fixed-point of x -> #^^#>x, or #^^#>#^^#...#^^#>#^^# with b "#^^#"'s
We can even apply #^^## multiple times to get (#^^##)^^##, etc.
The fundamental sequence of a^^## is a^^#>a^^#...a^^#>a^^# with b "a^^#"'s
We can iterate #^^##>x to get #^^###, iterate #^^###>x with #^^####, etc.
#^^#^# is the limit of #^^##, #^^###, etc.
#^^(a*#) is just iterated #^^(a)>x
The limit of all of this is #^^^#
We can do all of this on #^^^#, just replace ^ with ^^ and ^^ with ^^^, so for example #^^^## is #^^^#>#^^^#...#^^^#>#^^^#.
We can even create #^^^^#, #^^^^^#, etc. which continue the sequence of hyper-operators.
=== Examples ===
*E100#^^#100 = E100#^#^#^#...#^#^# with 100 #'s = tethrathoth
*E100#^^#*#100 = E100#^^#100#^^#100...100#^^#100#^^#100 with 100 "#^^#"'s = tethrathoth-by-hyperion
*E100(#^^#)^#100 = E100#^^#*#^^#*#^^#...#^^#*#^^#100 with 100 "#^^#"'s = tethrafact
*E100(#^^#)^^#100 = E100(#^^#)^(#^^#)...(#^^#)^(#^^#) with 100 "(#^^#)"'s = terrible tethrathoth
*E100#^^#>#100 = E100((...((#^^#)^^#)...)^^#)^^#100 with 100 "^^#"'s = tethriterator
*E100#^^#>(#+#)100 = E100((...((#^^#>#)^^#)...)^^#)^^#100 with 101 "^^#"'s including the one in #^^#># = tethriditerator
*E100#^^##100 = E100#^^#>#^^#...#^^#>#^^#100 with 100 "#^^#"'s = tethracross
*E100#^^###100 = E100#^^##>#^^##...#^^##>#^^##100 with 100 "#^^##"'s = tethracubor
*E100#^^#^#100 = E100#^^###...### with 100 #'s in the ###...### = tethratope
*E100#^^^#100 = E100#^^#...#^^# with 100 "#"'s = pentacthulhum
*E100#^^^##100 = E100#^^^#>#^^^#...#^^^#>#^^# with 100 "#^^^#"'s = pentacthulcross
*E100#^^^^#100 = E100#^^^#^^^#....#^^^#^^^# with 100 "#"'s = hexacthulhum
== Hyper-Extended Cascading-E Notation (#xE^) ==
With Hyper-Extended Cascading-E Notation, we can even have transiently man ^'s, denoted by {}, {1} means ^, {2} means ^^, {3} means ^^^, etc. We can even have {#}, which means the limit of ^, ^^, ^^^, which acts like the lower operators, so {a+1} means iterating {a}, and #{a}(b*#) = #{a}#>#{a}#...#{a}#>#{a}#, with b "#{a}#'s. Also, the {#,#,1,2} delimiter means iterating #{a}#, by {#,1,1,2} = #, {#,n,1,2} = ##
=== Examples ===
*E100#{#}#100= E100#^^...^^#100 with 100 "^"'s = godsgodgulus
*E100(#{#}#){#}#100 = E100(#{#}#)^^^...^^^#100 with 100 "^"'s
*E100#{#}## = E100#{#}#>#{#}#...#{#}#>#{#}#100 with 100 "#{#}#"'s = godsgodgulcross
*E100#{#+1}#100 = E100#{#}#...#{#}#100 with 100 "#{#}#"s 
*E100#{#+#}#100 = E100#{#+100}#100 = godsgodeus
*E100#{##}#100 = E100#{#+#...#+#}#100 with 100 "#"'s
*E100#{#^#}#100 = E100#{####...####}# with 100 "#"'s inside "{}" = the centurion
*E100{#,#,1,2}100 = E100#{#{...#{#}#...}#}#100 with 100 "#"'s centered out (alternatively, with 199 #'s on both sides, including the innermost one) = blasphemorgulus
== External links ==
* 4.3 - Extensible-E, Sbiis Saibian's Large Number Site
Category:Introduction articles
Category:Functions by Sbiis Saibian