Hyperfactorial array notation

Hyperfactorial array notation is a large number notation invented by Lawrence Hollom. It is was first developed in 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 n\uparrow^{m} 3 \uparrow^{m} 2 \uparrow^{m} 1\)

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]\).

Rules
Define the active entry as the first entry in the array that is not 1.


 * 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 and not 1:
 * \(f(a) = a![k-1,@]\)
 * \(n![k,@] = f^n(n)\)
 * If the active entry is an array \(A\), replace it with \(n!A\).
 * Otherwise:
 * \(n![1,1,\cdots,1,1,k,@] = n![1,1,\cdots,1,[1,1,\cdots,1,1,1,@],k-1,@]\)

By convention, \(@\) indicates the rest of the array.

This definition is very different from Jonathan Bowers', since in Hollom's notation nested arrays don't always evaluate, it makes behavior of his notation similar to ordinals. Hollom claimed that the strength of his linear notation is \(\phi(\omega,0)\), which diagonalizes over Bowers' up-arrow notational arrays (\(\{X,X,n\}\) structures).

Extended definition
In the source, we can see that

\(n? = n![_{[_{\ldots _{[n^{n}]} \ldots}n]}n]\) with nested n in the sq brackets. See apocalypxul, an example of a number that uses the question mark.