Fast-growing hierarchy

A fast-growing hierarchy (FGH for short) is a certain hierarchy mapping ordinals \(\alpha < \mu\) to functions \(f_\alpha: \mathbb{N} \rightarrow \mathbb{N}\). For large ordinals \(\alpha\), \(f_\alpha\) may grow very rapidly. Due to its simple and clear definition, as well as its origins in professional mathematics, FGH is a popular benchmark for large number functions.

If you are unfamiliar with using ordinals in functions, you may want to read the introduction to the fast-growing hierarchy article. Also, be careful that there are many wrong descriptions of the computability of functions in a fast-growing hierarchy. Although googologists sometimes state that a given function is computable because it is given by a fast-growing hierarchy, it is a typical mistake. A function defined by a method using infinite ordinals such as a fast-growing hierachy is not necessarily computable. In order to ensure the computability of a function defined by a fast-growing hierarchy, we need to construct an explicit algorithm to compute it. Since an algorithm only accepts elements in a countable set with a fixed enumeration, infinite ordinals in a set without fixed enumeration are not allowed. In order to solve the issue on the computability, we often use ordinal notations.

Definition
A fast-growing hierarchy consists of an ordinal \(\mu\) and a fundamental sequence system \(S: \mu \cap \text{Lim} \rightarrow (\mathbb{Z}_0 \rightarrow \mu)\), where \(S(\alpha)(n)\) is denoted \(\alpha[n]\). The semantics are as follows:


 * \(f_0(n) = n + 1\)
 * \(f_{\alpha+1}(n) = f^n_\alpha(n)\), where \(f^n\) denotes function iteration
 * \(f_\alpha(n) = f_{\alpha[n]}(n)\) if and only if \(\alpha\) is a limit ordinal

The general case where \(f_0\) is any increasing function forms a fast iteration hierarchy.

For a fast-growing hierarchy to be useful to googologists, it is also expected to satisfy the property that for all \(\alpha < \beta < \mu\), \(f_\alpha\) is eventually dominated by \(f_\beta\).

Wainer hierarchy
Definitions of the fast-growing hierarchy and choices of fundamental sequence systems vary between authors, so it is generally problematic to speak of "the" fast-growing hierarchy. The most well-known FGH, however, is the Wainer hierarchy, which has \(\mu = \varepsilon_0 + 1\) and an FS system defined as follows:


 * \(\omega[n] = n\)
 * \(\omega^{\alpha + 1}[n] = \omega^\alpha n\) (where \(\omega^\alpha n = \omega^\alpha + \omega^\alpha + \cdots + \omega^\alpha + \omega^\alpha\) with n \(\omega^\alpha\)'s)
 * \(\omega^{\alpha}[n] = \omega^{\alpha[n]}\) if and only if \(\alpha\) is a limit ordinal
 * \((\omega^{\alpha_1} + \omega^{\alpha_2} + \cdots + \omega^{\alpha_{k - 1}} + \omega^{\alpha_k})[n] = \omega^{\alpha_1} + \omega^{\alpha_2} + \cdots + \omega^{\alpha_{k - 1}} + \omega^{\alpha_k}[n]\) where \(\alpha_1 \geq \alpha_2 \geq \cdots \geq \alpha_{k - 1} \geq \alpha_k\)
 * \(\varepsilon_0[0] = 0\) (alternatively \(1\))
 * \(\varepsilon_0[n + 1] = \omega^{\varepsilon_0[n]}\) = \(\omega\uparrow\uparrow (n-1)\) (alternatively \(\omega\uparrow\uparrow n\))

For example, the fundamental sequence for \(\omega^\omega\) is \(1, \omega, \omega^2, \omega^3, \ldots\). When authors refer to "the fast-growing hierarchy" without clarification, the Wainer hierarchy is usually meant.

Functions in Wainer hierarchy are known to be computable, because the whole system can be encoded into the ordinal notation associated to Iterated Cantor normal form with additional structures.

Veblen hierarchy
Every non-zero ordinal \(\alpha\) can be uniquely written in Veblen's variation of Cantor's normal form:

\(\alpha=\varphi_{\beta_1}(\gamma_1) + \varphi_{\beta_2}(\gamma_2) + \cdots + \varphi_{\beta_k}(\gamma_k)\), where \(\varphi_{\beta}(\gamma)\) is a function of Veblen's hierarchy, \(\varphi_{\beta_1}(\gamma_1) \ge \varphi_{\beta_2}(\gamma_2) \ge \cdots \ge \varphi_{\beta_k}(\gamma_k)\) and each \(\gamma_m < \varphi_{\beta_m}(\gamma_m)\),

For limit ordinals \(\alpha<\Gamma_0\), written in Veblen's variation of Cantor's normal form, the fundamental sequences for the Veblen's hierarchy are defined as follows:


 * \((\varphi_{\beta_1}(\gamma_1) + \varphi_{\beta_2}(\gamma_2) + \cdots + \varphi_{\beta_k}(\gamma_k))[n]=\varphi_{\beta_1}(\gamma_1) + \cdots + \varphi_{\beta_{k-1}}(\gamma_{k-1}) + (\varphi_{\beta_k}(\gamma_k) [n])\)
 * \(\varphi_0(\gamma)=\omega^{\gamma}\) and \(\varphi_0(\gamma+1) [n] = \omega^{\gamma} \cdot n\)
 * \(\varphi_{\beta+1}(0)[n]=\varphi_{\beta}^n(0)\), where \(\varphi^n\) denotes function iteration
 * \(\varphi_{\beta+1}(\gamma+1)[n]=\varphi_{\beta}^n(\varphi_{\beta+1}(\gamma)+1)\)
 * \(\varphi_{\beta}(\gamma) [n] = \varphi_{\beta}(\gamma [n])\) for a limit ordinal \(\gamma<\varphi_\beta(\gamma)\)
 * \(\varphi_{\beta}(0) [n] = \varphi_{\beta [n]}(0)\) for a limit ordinal \(\beta<\varphi_\beta(0)\)
 * \(\varphi_{\beta}(\gamma+1) [n] = \varphi_{\beta [n]}(\varphi_{\beta}(\gamma)+1)\) for a limit ordinal \(\beta\)

Veblen's function can be presented as a two-argument function \(\varphi_\beta(\gamma)=\varphi(\beta,\gamma)\).

Note: \(\varphi(0,\gamma)=\omega^\gamma\), \(\varphi(1,\gamma)=\varepsilon_\gamma\), \(\varphi(2,\gamma)=\zeta_\gamma\) and \(\varphi(3,\gamma)=\eta_\gamma\)

Functions in Wainer hierarchy are known to be computable, because the whole system can be encoded into the ordinal notation associated to Veblen's \(\varphi\) with additional structures.

Buchholz hierarchy
In An Independence Result for (\(\Pi_1^1\)-CA) + BI, Wilfried Buchholz discusses an ordinal hierarchy where \(\mu = \psi_0(\varepsilon_{\Omega_\omega + 1})\), where \(\psi\) is Buchholz's ordinal collapsing function and \(\psi_0(\varepsilon_{\Omega_\omega + 1})\) is the TFB ordinal.

Functions in Buchholz hierarchy are known to be computable, because the whole system can be encoded into Buchholz's ordinal notation with additional structures.

Other hierarchies
We can easily replace the Wainer hierarchy with a different one, such as a hierarchy that works for much larger ordinals such as the small Veblen ordinal or the Takeuti-Feferman-Buchholz ordinal. As long as fundamental sequences are defined, it is possible to extend FGH up to an arbitrary countable ordinal. However, it is impossible to create an effective system that works for all countable ordinals, since a system of fundamental sequences up to \(\omega_1\) would be nonconstructive.

Selecting fundamental sequences is not an easy problem, since some selections can lead to pathological hierarchies where \(\alpha < \beta\) does not necessarily imply \(f_\alpha <^* f_\beta\) (where \(<^*\) means eventual domination). In a 1976 paper, Diana Schmidt proved a theorem that is useful for identifying and guarding against pathological hierarchies. Given a fundamental sequence system, define \(P(\beta + 1) = \beta\) and \(\forall \beta \in \text{Lim} : P(\beta) = \beta[0]\). A fundamental sequence system is built-up if, for all \(\alpha\) and \(n\), \(\alpha[n] = P^k(\alpha[n+1])\) for some \(1 \leq k < \omega\). Schmidt showed that a built-up fundamental sequence system guarantees that all \(f_\alpha\) are monotonically increasing and that \(\alpha < \beta \Rightarrow f_\alpha <^* f_\beta\).

It is possible to define the fast-growing hierarchy for all recursive ordinals, and even for nonrecursive countable ordinals. However, the definitions will necessarily be nonrecursive, making analysis far more complicated. To our knowledge, there has been no research into the creation of nonrecursive fast-growing hierarchies.

For many cases, the computability of a fast-growing hierachy for a given system of fundamental sequences is non-trivial, although googologists often regard it trivial without understanding the issue.

Approximations
Below are some functions in the Wainer hierarchy and Veblen's hierarchy compared to other googological notations.

There are a few things to note:


 * Relationships denoted \(f_\alpha(n) > g(n)\) hold for sufficiently large \(n\), not necessarily all \(n\) (i.e. \(f_\alpha\) eventually dominates \(g\)).
 * \(m\) indicates any positive integer.
 * \(^ab\) indicates tetration.
 * \(\uparrow\) indicates arrow notation.
 * \(\text{Ack}\) indicates Harvey Friedman's single-argument Ackermann function \(\text{Ack}(n)\).
 * \(\lbrace \rbrace\) indicates BAN.

\begin{eqnarray*} f_0(n) &=& n + 1 \\ f_1(n) &=& f_0^n(n) = ( \cdots ((n + 1) + 1) + \cdots + 1) = n + n = 2n \\ f_2(n) &=& f_1^n(n) = 2(2(\ldots 2(2n))) = 2^n n > 2 \uparrow n \\ f_3(n) &\ge& 2^nn((2^{2^nn})\uparrow\uparrow (n-1)) \ge 2\uparrow\uparrow n\\ f_4(n) &\ge& f_3(n)\uparrow\uparrow\uparrow n \ge 2\uparrow\uparrow\uparrow n \\ f_m(n) &\ge& f_{m-1}(n)\uparrow^{m-1}n \ge 2\uparrow^{m-1} n \\ f_\omega(n) &>\ge& f_\omega(n-1)\uparrow^{n-1}n \ge 2\uparrow^{n-1} n = Ack(n) \\ f_{\omega+1}(n) &>& \lbrace n,n,1,2 \rbrace \\ f_{\omega+2}(n) &>& \lbrace n,n,2,2 \rbrace \\ f_{\omega+m}(n) &>& \lbrace n,n,m,2 \rbrace \\ f_{\omega2}(n) &>& \lbrace n,n,n,2 \rbrace \\ f_{\omega3}(n) &>& \lbrace n,n,n,3 \rbrace \\ f_{\omega m}(n) &>& \lbrace n,n,n,m \rbrace \\ f_{\omega^2}(n) &>& \lbrace n,n,n,n \rbrace \\ f_{\omega^3}(n) &>& \lbrace n,n,n,n,n \rbrace \\ f_{\omega^m}(n) &>& \lbrace n,m+2 [2] 2 \rbrace \\ f_{\omega^{\omega}}(n) &>& \lbrace n,n+2 [2] 2 \rbrace > \lbrace n,n [2] 2 \rbrace \\ f_{\omega^{\omega}+1}(n) &>& \lbrace n,n,2 [2] 2 \rbrace \\ f_{\omega^{\omega}+2}(n) &>& \lbrace n,n,3 [2] 2 \rbrace \\ f_{\omega^{\omega}+m}(n) &>& \lbrace n,n,m+1 [2] 2 \rbrace \\ f_{\omega^{\omega}+\omega}(n) &>& \lbrace n,n,n+1 [2] 2 \rbrace > \lbrace n,n,n [2] 2 \rbrace \\ f_{\omega^{\omega}+\omega+1}(n) &>& \lbrace n,n,1,2 [2] 2 \rbrace \\ f_{\omega^{\omega}+\omega2}(n) &>& \lbrace n,n,n,2 [2] 2 \rbrace \\ f_{\omega^{\omega}+\omega^2}(n) &>& \lbrace n,n,n,n [2] 2 \rbrace \\ f_{{\omega^{\omega}}2}(n) &>& \lbrace n,n [2] 3 \rbrace \\ f_{{\omega^{\omega}}3}(n) &>& \lbrace n,n [2] 4 \rbrace \\ f_{{\omega^{\omega}}m}(n) &>& \lbrace n,n [2] m+1 \rbrace \\ f_{\omega^{\omega+1}}(n) &>& \lbrace n,n [2] n+1 \rbrace > \lbrace n,n [2] n \rbrace \\ f_{\omega^{\omega+2}}(n) &>& \lbrace n,n [2] n,n \rbrace \\ f_{\omega^{\omega+3}}(n) &>& \lbrace n,n,n [2] n,n,n \rbrace \\ f_{\omega^{\omega+m}}(n) &>& \lbrace n,m [2] 1 [2] 2 \rbrace \\ f_{\omega^{\omega2}}(n) &>& \lbrace n,n [2] 1 [2] 2 \rbrace = \lbrace n,2 [3] 2 \rbrace \\ f_{\omega^{\omega3}}(n) &>& \lbrace n,n [2] 1 [2] 1 [2] 2 \rbrace = \lbrace n,3 [3] 2 \rbrace \\ f_{\omega^{\omega m}}(n) &>& \lbrace n,m [3] 2 \rbrace \\ f_{\omega^{\omega^2}}(n) &>& \lbrace n,n [3] 2 \rbrace \\ f_{\omega^{\omega^3}}(n) &>& \lbrace n,n [4] 2 \rbrace \\ f_{\omega^{\omega^m}}(n) &>& \lbrace n,n [m+1] 2 \rbrace \\ f_{\omega^{\omega^\omega}}(n) &>& \lbrace n,n [n+1] 2 \rbrace = \lbrace n,n [1,2] 2 \rbrace \\ f_{^4{\omega}}(n) &>& \lbrace n,n [1 [2] 2] 2 \rbrace \\ f_{^5{\omega}}(n) &>& \lbrace n,n [1 [1,2] 2] 2 \rbrace \\ f_{^6{\omega}}(n) &>& \lbrace n,n [1 [1 [2] 2] 2] 2 \rbrace \\ f_{\varepsilon_0}(n) &>& \lbrace n,n [ [1]] 2 \rbrace \\ f_{\varepsilon_02}(n) &>& \lbrace n,n [ [1]] 3 \rbrace \\ f_{\varepsilon_0m}(n) &>& \lbrace n,n [ [1]] m+1 \rbrace \\ f_{\varepsilon_0\omega}(n) &>& \lbrace n,n [ [1]] n+1 \rbrace \\ f_{\varepsilon_0{\omega^{\omega}}}(n) &>& \lbrace n,n [ [1]] 1 [2] 2 \rbrace \\ f_{\varepsilon_0{\omega^{\omega^{\omega}}}}(n) &>& \lbrace n,n [ [1]] 1 [1,2] 2 \rbrace \\ f_{\varepsilon_0{\omega^{\omega^{\omega^{\omega}}}}}(n) &>& \lbrace n,n [ [1]] 1 [1 [2] 2] 2 \rbrace \\ f_{\varepsilon_0^2}(n) &>& \lbrace n,n [ [1]] 1 [ [1]] 2 \rbrace \\ f_{\varepsilon_0^3}(n) &>& \lbrace n,n [ [1]] 1 [ [1]] 1 [ [1]] 2 \rbrace \\ f_{\varepsilon_0^{\omega}}(n) &>& \lbrace n,n [ [2]] 2 \rbrace \\ f_{\varepsilon_0^{\omega^{\omega}}}(n) &>& \lbrace n,n [ [1,2]] 2 \rbrace \\ f_{\varepsilon_0^{\omega^{\omega^{\omega}}}}(n) &>& \lbrace n,n 1 [2] 2 2 \rbrace \\ f_{\varepsilon_0^{\varepsilon_0}}(n) &>& \lbrace n,n 1 [ [1 2]] 2 \rbrace \\ f_{\varepsilon_0^{\varepsilon_0^{\varepsilon_0}}}(n) &>& \lbrace n,n 1 [ [1 1 [ [1]] 2]] 2 \rbrace \\ f_{\varepsilon_0^{\varepsilon_0^{\varepsilon_0^{\varepsilon_0}}}}(n) &>& \lbrace n,n 1 [[1 [ [1 2]] 2]] 2 \rbrace \\ f_{\varepsilon_1}(n) &>& \lbrace n,n [1] 2 \rbrace \\ f_{\varepsilon_2}(n) &>& \lbrace n,n [ [1]] 2 \rbrace \\ f_{\varepsilon_{\omega}}(n) &>& \lbrace n,n [1\backslash1,2] 2 \rbrace \\ f_{\varepsilon_{\omega^2}}(n) &>& \lbrace n,n [1\backslash1,1,2] 2 \rbrace \\ f_{\varepsilon_{\omega^{\omega}}}(n) &>& \lbrace n,n [1\backslash1 [2] 2] 2 \rbrace \\ f_{\varepsilon_{\omega^{\omega^{\omega}}}}(n) &>& \lbrace n,n [1\backslash1 [1,2] 2] 2 \rbrace \\ f_{\varepsilon_{\varepsilon_0}}(n) &>& \lbrace n,n [1\backslash1 [ [1]] 2] 2 \rbrace \\ f_{\varepsilon_{\varepsilon_{\varepsilon_0}}}(n) &>& \lbrace n,n [1\backslash1 [1\backslash1 [ [1]] 2] 2] 2 \rbrace \\ f_{\zeta_0}(n) &>& \lbrace n,n [1\backslash1\backslash2] 2 \rbrace \\ f_{\zeta_0^{\zeta_0}}(n) &>& \lbrace n,n [1 [1\backslash1\backslash2] 2\backslash1\backslash2] 2 \rbrace \\ f_{\varepsilon_{\zeta_0+1}}(n) &>& \lbrace n,n [1\backslash2\backslash2] 2 \rbrace \\ f_{\varepsilon_{\zeta_0+2}}(n) &>& \lbrace n,n [1\backslash3\backslash2] 2 \rbrace \\ f_{\varepsilon_{\varepsilon_{\zeta_0+1}}} &>& \lbrace n,n [1\backslash1 [1\backslash2\backslash2] 2\backslash2] 2 \rbrace \\ f_{\zeta_1}(n) &>& \lbrace n,n [1\backslash1\backslash3] 2 \rbrace \\ f_{\zeta_2}(n) &>& \lbrace n,n [1\backslash1\backslash4] 2 \rbrace \\ f_{\zeta_{\zeta_0}}(n) &>& \lbrace n,n [1\backslash1\backslash1 [1\backslash1\backslash2] 2] 2 \rbrace \\ f_{\eta_0}(n) &>& \lbrace n,n [1\backslash1\backslash1\backslash2] 2 \rbrace \\ f_{\varphi(4,0)}(n) &>& \lbrace n,n [1\backslash1\backslash1\backslash1\backslash2] 2 \rbrace \\ f_{\varphi(\omega,0)}(n) &>& \lbrace n,n [1 [2]\backslash2] 2 \rbrace \\ f_{\varphi(\varphi(\omega,0),0)}(n) &>& \lbrace n,n [1 [1 [1 [2]\backslash2]\backslash2] 2] 2 \rbrace \\ f_{\Gamma_0}(n) &>& \lbrace n,n [1/2] 2 \rbrace \\ f_{\varphi(1,0,0,0)}(n) &>& \lbrace n,n [1 [1\neg4] 2] 2 \rbrace \\ f_{\vartheta(\Omega^{\omega})}(n) &>& \lbrace n,n [1 [1\neg1,2] 2] 2 \rbrace \\ f_{\vartheta(\Omega^{\Omega})}(n) &>& \lbrace n,n [1 [1\neg1\neg2] 2] 2 \rbrace \\ f_{\vartheta(\Omega^{\Omega^{\Omega}})}(n) &>& \lbrace n,n [1 [1 [1\backslash_33] 2] 2] 2 \rbrace \\ f_{\vartheta(\vartheta_1(1))}(n) &>& \lbrace n,n [1 [1\sim3] 2] 2 \rbrace \\ f_{\vartheta(\vartheta_1(2))}(n) &>& \lbrace n,n [1 [1\sim1\sim2] 2] 2 \rbrace \\ f_{\vartheta(\vartheta_1(\omega))}(n) &>& \lbrace n,n [1 [1 [2/_32] 2] 2] 2 \rbrace \\ f_{\vartheta(\vartheta_1(\Omega))}(n) &>& \lbrace n,n [1 [1 [1/2/_32] 2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_2)}(n) &>& \lbrace n,n [1 [1 [1\sim2/_32] 2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_3)}(n) &>& \lbrace n,n [1 [1 [1 [1/_32/_42] 2] 2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\omega})}(n) &>& \lbrace n,n [1\bullet2] 2 \rbrace \\ f_{\vartheta(\Omega_{\varepsilon_0})}(n) &>& \lbrace n,n [1 [2/_{1 [1\backslash2] 2}2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\Gamma_0})}(n) &>& \lbrace n,n [1 [2/_{1 [1/2] 2}2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\vartheta(\Omega_2)})}(n) &>& \lbrace n,n [1 [2/_{1 [1 [1 [1\sim2/_32] 2] 2] 2}2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\vartheta(\Omega_3)})}(n) &>& \lbrace n,n [1 [2/_{1 [1 [1 [1 [1/_32/_42] 2] 2] 2] 2}2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\vartheta(\Omega_{\omega})})}(n) &>& \lbrace n,n [1 [2/_{1 [1\bullet2] 2}2] 2] 2 \rbrace \\ f_{\vartheta(\Omega_{\vartheta(\Omega_{\vartheta(\Omega_{\omega})})})}(n) &>& \lbrace n,n [1 [2/_{1 [2/_{1 [1\bullet2] 2}2] 2}2] 2] 2 \rbrace \end{eqnarray*}

Extended Grzegorczyk hierarchy
The is a hierarchy of functions (specifically - it contains all and only the primitive recursive functions) classified by growth rate. Although the 'extended Grzegorczyk hierarchy' can sometimes be an alternate name for the fast-growing hierarchy, it may also be used as a way of strictly classifying functions based on their growth rates, and a system of fundamental sequences.

Specific numbers

 * 160 is an integer equal to f2(5), and also the number of possible knight moves in 6×6 minichess.
 * 212 is the first number n, such that f2(n) is larger than the first noncanonical -illion.
 * The isotope -212 is the only radium nuclide with negative mass excess. No heavier elements have any isotopes with negative mass excess.
 * 384 is an integer equal to f2(6), 8!! and 12!!!!, and also the number of days in some years in the.
 * 896 is an integer equal to f2(7), and also the number of possible Rook moves in chess.
 * 1,651 is the smallest number n, for which f2(n) is larger than a googolding. Its prime factorization is 13 × 127.
 * It is also used in the conflurfin series by PlantStar.
 * 4,608 is an integer equal to f2(9), and also an and the number of possible Rook moves in.
 * 10,240 is an integer equal to f2(10), which Denis Maksudov calls that number 'balum'.
 * 491,520 is an integer equal to f2(15). Additionally, it has an unrelated property: As it is equal to 6C4 × 22 4−1, it also appears in -related combinatorics.