Fast-growing hierarchy

A fast-growing hierarchy (FGH for short) is a certain hierarchy mapping ordinals \(\alpha\) (below the supremum \(\mu\) of a fixed system of fundamental sequences) 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.

WARNING: A reader should be very careful that there are many wrong "introductions" in personal web sites, videos, and user blogs,, since concepts like ordinals and fundamental sequences are abstract, although they are unfortunately preferred by beginners. An important point is that precise descriptions of them are actually needed to understand the fast-growing hierarchy.

If you are unfamiliar with using ordinals in functions, you may want to read the introduction to the fast-growing hierarchy article which explains it. Also, just because a function has a Fast-growing hierarchy, does not mean it's computable. The uncomputability of a function does not mean that it eventually dominates all total computable functions. It's possible to make an uncomputable function that only outputs 0 or 1.

Definition
A fast-growing hierarchy consists of an ordinal \(\mu\) and a fundamental sequence system \(S:\mu\cap\textrm{Lim} \rightarrow (\mathbb{Z}_0 \rightarrow \mu)\), where \(S(\alpha)(n)\) is denoted \(\alpha[n]\), and where \(\textrm{Lim}\) denotes the class of limit ordinals. 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)\) iff \(\alpha\) is a limit ordinal

Here, \(\alpha[n]\) denotes the \(n\)th term of a fixed fundamental sequence assigned to ordinal \(\alpha\). A system of fundamental sequences for limit ordinals below a given supremum is not unique, and fast-growing hierarchy heavily depends on the choice of such a system. In particular, fast-growing hierarchy is ill-defined unless a specific choice of a system of fundamental sequences is explicitly fixed in the context. Beginners should be very careful about this issue, because it frequently appears when googologists talk about "catching ordinals", "ordinal regarded as the growth rate", "the proof-theoretic ordinal in fast-growing hierarchy" and so on without understanding the dependency of the choice of a system of fundamental sequences. 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 essentially 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\). (Although the proof assume that a given hierarchy satisfies \(f_{\alpha}(1) < f_{\alpha+1}(1)\), which is false in the fast-growing hierarchy, it is easy to modify the proof so that it becomes applicable to the fast-growing hierarchy.)

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}}}(n) &>& \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.