Hyper-E Notation for Large Numbers

Lecture



Hyper-E notation (abbreviated E#) is a notation for large numbers developed by Sbiis Saibian. It was first introduced in his web book “One to Infinity: A Finite Journey” on November 19, 2011, and was later generalized into Extended Hyper-E Notation (abbreviated xE#). Hyper-E notation is an improved version of a notation Sbiis Saibian developed in his childhood.Not to be confused with the ε-function or the E-function of the nihilist absolutists.

The function E# is not primitive recursive, and in particular, the function E(n) = En##n eventually dominates all primitive recursive functions. In fact, within the fast-growing hierarchy it dominates for all values and is itself dominated in turn.

E# and xE# are part of a larger notation system, the Extensible-E System, which also includes Cascading-E Notation.

Nathan Ho and Wojowu proved the termination of the Hyper-E notation rules.

Original Definition

The original hyper-E notation consists of a sequence a n of one or more positive integer arguments, separated by hyperions (or hyper marks) #. We denote this as E[ b ] a 1 # a 2 #...# a n . b is called the base if it is omitted, as is often the case, it defaults to 10. "E[ b ] d " is also equal to " b ^ d ".

The three rules are as follows:

  • Rule 1. If there are no hyperions:

    .Hyper-E Notation for Large Numbers

  • Rule 2. If the last entry equals 1:

    .Hyper-E Notation for Large Numbers

  • Rule 3. Otherwise (the last iteration):

Hyper-E Notation for Large Numbers

In simpler terms:

  1. If there is only one argument x, then the value of the expression equals b x..
  2. If the last entry equals 1, it can be removed.
  3. Otherwise...
    1. Evaluate the original expression, but with the last element decreased by 1. Call this value z .
    2. Remove the last two entries of the expression.
    3. Append z to the end of the expression.

The priority of the rules is stated on the original web page below the definition: “3 rules are used. If you are given an E# expression, first check whether rule 1 applies. If not, check rule 2. If that doesn't apply either, move on to rule 3”. This corresponds to the 1st clause of rule 3 and avoids duplicating the case classification.

Extended Definition

Extended hyper-E notation allows placing multiple hyperions between each entry. The number of hyperions following entry n is denoted h ( n ) . For simplicity of this definition, #n— is shorthand for n consecutive hyperion marks. For example, the full expression would be written as E( b ) a 1 # h (1)a 2 # h (2)...# h ( n - 1)an # h ( n )​Saibian uses the symbol @ to denote the rest of the expression, whereas Bowers uses the symbol # to denote the rest of the array.

The difference between the original and extended notation is that the extended hyper-E notation allows more than one sequence of digits.

  • Rule 1. If there are no hyperions:

    .Hyper-E Notation for Large Numbers

  • Rule 2. If the last entry equals 1:

    .Hyper-E Notation for Large Numbers

  • Rule 3. If h(n-1)>1:

    .Hyper-E Notation for Large Numbers

  • Rule 4. Otherwise:

    Hyper-E Notation for Large Numbers

(note=).

This is similar to the rules for writing linear arrays. We can also rewrite this in plain language:

  1. If there is only one argument x, then the value of the expression equals b x..
  2. If the last entry equals 1, it can be removed.
  3. Let h — be the length of the last set of hyperion marks. If h > 1:
    1. Remove the last entry of the expression and call it r .
    2. Remove the last entry of the expression again; this time call it z .
    3. Repeat " z " r times, inserting h - 1 hyperion marks between each repetition. Append this to the end of the expression. (Restore the removed sequence of hyperion marks to join the two expressions.)
  4. If the last set of hyperion marks has length one:
    1. Evaluate the original expression, but with the last element decreased by 1. Call this value z .
    2. Remove the last two entries of the expression.
    3. Append z to the end of the expression. (Again restore the removed sequence of hyperion marks to join the two expressions.)

Examples

  • E6 = E6#1 = 10 6= a million
  • E100 = E100#1 = 10 100= a googol

    This is an example of rule 1 with an expression consisting of a single entry. Since the base defaults to 10, we can shorten E(10)100 to E100.

  • E100#2 = E(E100#1) = E10 100= 10 10 100= a googolplex
  • E100#3 = E(E100#2) = E10 10 100 = 10 10 10 100= a googolduplex

    This is an example of rule 3 (rule 4 upon expansion) with a two-entry expression. In the second expression the parentheses can be omitted: E(E100#1) = EE100#1.

  • E303#1 = E303 = a cetonion = a centillion = 10 303
  • E303#2 = cetonionplex = EE303 = 10 10 303
  • E303#3 = EEE303 = 10 10 10 303 = cetonionduplex
  • E1#3 = EEE1 = 10 10 10 = trilogue
  • E1#4 = EEEE1 = 10 10 10 10 = tetralogue
  • E1#10 = EEEEEEEEEE1 = 10^^10 = decker
  • E303#6 = EEEEEE303 = 10 10 10 10 10 10 303 = cetonionquintiplex
  • E1#100 = EEE...EEE1 (100 E's) = giggol

    Repeated application of rule 3: E1#100 = EE1#99 = EEE1#98 = ...

  • E100#100 = EEE...EEE100 (100 E's) = grangol

    This is the same as E1#100, but with a different first entry.

  • E100#101 = EEE...EEE100 (101 E's) = grangolplex

    E100#101 = EE100#100 = 10 grangols Hence the name.

  • E100#100#2 = E100#(E100#100) = EEE...EEE100 (grangol E's) = grangoldex

    Now let's move on to three-entry expressions.

  • E100#100#3 = E100#(E100#100#2) = E100#(E100#(E100#100)) = EEE...EEE100 (grangoldex E's) = grangoldudex

    Increasing the value of the third entry leads to deeper and deeper nesting.

  • E100#100#100#100 = E100#100#(E100#100#100#99) = E100#100#(E100#100#(E100#100#100#98)) = ... gigangol

    Four-entry expressions are similar — they create ever deeper nesting at the array level below. This can also be written as E100##4; the beginning of the next level of notation.

  • E100##100 = E100#100#100#...#100#100#100 with 100 repetitions of 100 = gugold

    Now we've arrived at extended hyperion notation. Two consecutive hyperions ( deuterohyperions ) indicate repetition at the lower level.

  • E100##100#100 = Graatagold graatagold

    This expression decomposes into expressions of the form E a ## b by repeated application of rule 4.

  • E100##100##100 = E100##100#100#...#100#100 with 100 repetitions of 100 = gugolthra

    We ignore the first ## symbol until the second one is expanded and all the hundreds are resolved.

  • E100###100 = E100##100##...##100##100 with 100 repetitions of 100 = trogol

    Three hyperion marks ( trito-hyperions ) represent a repetition of two hyperion marks. Remember that double marks are resolved from right to left.

  • E100####100 = E100###100###...###100###100 with 100 repetitions of 100 = terogol

    Quadruple hyperions decompose into triple ones.

  • Godgahlah = E100#####...#####100 with 100 hyperion marks or E100# 100 100

    Sets of 100 hyperion marks decompose into 99, 99 — into 98, and so on. Also note that the superscript 100 means there are 100 marks and should not be confused with E100#( 100 100 ).

Relation to other notations

The first segments of Hyper-E notation are based on exponentiation, i.e. En equals 10 n . Nesting in the single-entry Hyper-E notation leads to iterated exponentiation, e.g. EEEn=10 10 10 n . Then the hyperion marks come into play. Since hyperion marks are crucial to the recursion in this notation, certain combinations of hyperions can indicate similarities to other notations defined by recursion.

Hyper-E can be related to up-arrow notation by the following rule:

for positive integers a, b, c. For example,

  • a↑b = E(a)b
  • a↑↑b = E(a)1#b
  • a↑↑↑b = E(a)1#1#b
  • a↑↑↑↑b = E(a)1#1#1#b

Sbiis Saibian showed that it is the first function in the fast-growing hierarchy that eventually dominates all functions in the E# hierarchy.

Pseudocode

For a fixed number of variables, the original Hyper-E notation is primitive recursive, although the values it produces vastly exceed the capabilities of any computer. The extended Hyper-E notation is not primitive recursive for two or more variables.

function Eb( a1,a2 , ..., an-1,an ): //The default value of b is 10

    if n = 1:
        return   b a1

    if an = 1:
         return  Eb(a1,a2 , ..., an-1 )

    z := E b (a1,a2,..., an-1,an-1)

    return Eb (a1,a2,..., an-2, z )

function xEb(a1 ,a2, ..., an-1, an ;
              h1, h2, ..., hn-2,hn-1): //The default value of b is 10

    if  n = 1:
         return b a 1

    if  an = 1:
         return xEb ( a1 , a2 , ..., an-1 ;
                    h1 , h2 , ..., hn-2 )

    if  hn-1 > 1:
         r := a n
         z := a n-1 
        zseq := z , z , ..., z , z (r times)
         h := a h - 1 
        hseq := h , h , ..., h , h (r-1 times)
         return xE b ( a1 , a2 , ..., an-2 , zseq ;
                    h1 , h2 , ..., hn-2 , hseq )

    z := xE b ( a1 , a2 , ..., an-1;
              h1 , h2 , ..., hn-2 , hn-1 )
     return xEb ( a1 , a2 , ..., an-2 , z ;
                h1 , h2 , ..., hn-2 )

See also

  • Category: Hyper-E numbers
  • Exponentiation
  • Cascading-E Notation

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Arithmetic"

Terms: Arithmetic