Hyperfactorial array notation

Hyperfactorial array notation is a large number notation invented by Lawrence Hollom. It was first developed in April 2013.

Basics
Now we need to define arrays. Each array consists of a finite sequence of zero or more entries. Each entry consists of either a positive integer or another array (and these arrays can only nest finitely). An example of a valid array is


 * [1,1,[1,2,[3],4,[],1,1],1,3,10,1,[4,[4,3,1],5,6],1,[1,2],1,1]

First, we define the following notation:
 * \(n!m = n\uparrow^{m}(n-1)\uparrow^{m}(n-2)\cdots 4\uparrow^{m} 3 \uparrow^{m} 2 \uparrow^{m} 1\),

where \(\uparrow\) is the arrow notation for the hyper operator.

Hyperfactorial array notation defines a function n!A, where A is an array. An example of a well-formed expression in hyperfactorial array notation is 5![6, [7, 8], 9].

In mathematics, the notion of a map is defined as a pair of the domain and the assignment, but the domain of hyperfactorial array notation, i.e. the set of all valid expressions in hyperfactorial array notation, is undefined. In particular, it is ambiguous when n!m is a valid exprssion for integers n and m. If we only consider the basic idea using the arrow notation, which is orginally defined for tuples of positive integers, n!m is a valid expression only for positive integers n and m, but the creator considers more general a case.

According to the creator, n!0 coincides with n! because the creator perhaps uses an extention of the hyperoperator to allow \(\uparrow^0\) to be the multiplication. Also, n!(-1) is expressed as "addition", which perhaps was a typo of the explanation that the creator considers extention of the hyperoperator to allow \(\uparrow^{-1}\) to be the addition. In that case, n!(-1) coincide with (n-1)(n+2)/2 for any positive integer n.

Linear arrays
Define the active entry as the first entry in the array that is not 1. This is analogous to BEAF's pilot.

Define the receiving entry as the entry before the active entry, if the active entry is not the first entry.

The first entry is the main entry.

The symbol ◆ can be anything.

The symbol ◇ means only 1's and separators


 * Any ones may be cropped off the end of an array:
 * [@, 1] = [@]
 * Any empty array can simply be replaced with n:
 * [] = n
 * If the first entry is a number k>1:
 * f(a) = a![k-1,@]
 * n![k,@] = fn(n)
 * Otherwise:
 * n![1,k] = n![n,k-1]
 * n![◇1,k@] = n![◇[◇1,1@],k-1@]
 * Sometimes the active entry is an array. In that case:
 * Use its main entry
 * If the main entry is 1 reduce the array separately until either it produces a number or the main entry is no longer 1.

Where @ indicates the rest of the array.

Dimensional arrays
(n) means next n-space. A comma is the same as (0). ▲ is any w/ chain. ▼ is an array with something before the first (k) divider. ▽ is an array without anything before the first (k) divider. ▬ is a string of ▽w(x)/'s for any x ◆ is any array or list of entries and separators. ▮ is a chain of ['s.
 * ◆[▬▽w(k)/[q◆]▲]◆ = ◆[▬[1(k)1(k)1(k)...(k)1(k)2]w(k)/[1◆]▲]◆
 * The ▽ in ◆[▬▽w(k)/[q◆]▲]◆ becomes [1(k)1(k)...1(k)2] with q copies of 1, q is replaced with 1, and the rest of the array does not change.
 * ◆[▬▼w(k)/[q◆]▲]◆
 * Evaluate ▼ like this:
 * When it is necessary to replace the receiving array with ▼ but the active entry changed to 1, or to make a w/ chain of ▼'s with the active entry decreased by one, use ▼w(k)/[q◆]▲ with the changes to ▼.
 * Remove trailing 1's.
 * If no k is specified for w(k)/, use 0, or w,/

Analysis
HAN's growth rate has not yet been agreed on. Hollom believes that it reaches all the way to the Takeuti-Feferman-Buchholz ordinal without a proof. n!n is smaller than the n+1th Ackermann number, and larger than the n-1th Ackermann number.