Ordinal notation

An ordinal notation is, generally, a method for systematically naming ordinals (usually countable ones). More specifically, it is a primitive recursive well-ordering on a recursive set of finite strings in a finite alphabet, although in practice the term is applied to more general cases than this. The primitive recursiveness is often loosened to be a recursiveness, because it is known that the notion of a notation equipped with a recursive well-ordering is essentially equivalent to that of an ordinal notation. The well-ordering induces an injective function onto ordinals below the limit given as its ordinal type, and hence it actually names all ordinals below the limit.

On the other hand, a set of finite strings in a finite alphabet equipped with a function to ordinals is not derived from an ordinal notation unless the pull-buck of the \(\in\)-relation is verified to be primitive recursive and the function is a bijection onto the limit. Unfortunately, many googologists comfound these distinct notions. Therefore we need to be careful when they are talking about results on their own "ordinal notations".

Ordinal notation associated to iterated Cantor normal form
Cantor normal form (CNF) expresses an ordinal \(\alpha\) as a sum of a finite decreasing sequence of ordinals of the form \(\omega^\beta\). If we require each \(\beta\) to be in CNF and restrict the system to finite levels of nesting, then we have an ordinal notation -- the "iterated Cantor normal form" -- that uniquely describes all ordinals \(< \varepsilon_0\), because it is known that the \(\in\)-relation can be encoded into a restriction of the lexicographic ordering to formal strings corresponding to ICNFs, which is a primitive recursive relation.

Fundamental Sequences for ICNF :
 * 1) \(\omega^{\beta+1}[n]=\omega^\beta n\)
 * 2) \(\omega^{\beta}[n]=\omega^{\beta[n]}\) for limit \(\beta\)
 * 3) \((\omega^{\beta_0}+\omega^{\beta_1}+\cdots+\omega^{\beta_m})[n]=\omega^{\beta_0}+\omega^{\beta_1}+\cdots+\omega^{\beta_m}[n]\) given \(\beta_0\ge\beta_1\ge\cdots\ge\beta_m\)

Ordinal notation associated to Veblen's \(\varphi\)
Oswald Veblen's \(\varphi\) function is not only a portion of an early ordinal notation, but it could also be considered the first-ever array notation, preceding BEAF by more than 90 years. Due to the time when the paper was written, Veblen's definitions of the rules of his function are very cumbersome. Here, a conservative amount of modernization has been applied in the interest of brevity. Note that although Veblen used the dated convention where ordinals start with 1, we instead start ordinals with 0 and thus all letters (Greek or Latin) below are \(\geq 0\).

Before we can discuss the function itself, we first define a well-ordering \(\prec\) of arrays. An array is a function \(A : \eta \to \omega_1\) for some countable ordinal \(\eta\). Veblen denotes its arguments by using \(x_\alpha\) to indicate the value of \(A(\alpha)\), and, say, \(0_\alpha\) to indicate that \(A(\alpha) = 0\). We use \(\sup_\prec\) to denote a supremum under the ordering \(\prec\). It is very important to note that we are not defining ordinals, but an ordering of arrays.


 * A. \(\varphi(0_0, 0_1, \ldots, 1_{\alpha + 1}) = \sup_\prec\{\varphi(0_0, 0_1, \ldots, x_\alpha): x \in \text{On}\}\).
 * B. \(\varphi(0_0, 0_1, \ldots, 1_\alpha) = \sup_\prec\{\varphi(0_0, 0_1, \ldots, 1_\beta): \beta < \alpha\}\) where \(\alpha \in \text{Lim}\)
 * C. \(\varphi((x + 1)_0, y_1, \ldots, z_\beta) \succ \varphi(x_0, \ldots, z_\beta)\), and there is no array between them
 * D. \(\varphi(0_0, \ldots, (x + 1)_{\alpha + 1}, \ldots, y_\beta) = \sup_\prec\{\varphi(0_0, \ldots, (x + 1)_\alpha, x_{\alpha + 1}, \ldots, y_\beta)\}\)
 * E. \(\varphi(0_0, \ldots, x_{\alpha + 1}, y_{\alpha + 2}, \ldots, z_\beta) = \sup_\prec\{\varphi(0_0, \ldots, w_{\alpha + 1}, y_{\alpha + 2}, \ldots, z_\beta) : w < x\}\) where \(x \in \text{Lim}\)
 * F. \(\varphi(0_0, \ldots, (x + 1)_\alpha, \ldots, y_\beta) = \sup_\prec\{\varphi(0_0, \ldots, 1_\gamma, \ldots, x_\alpha, \ldots, y_\beta) : \gamma < \alpha\}\) where \(\alpha \in \text{Lim}\)
 * G. \(\varphi(0_0, \ldots, x_\alpha, \ldots, y_\beta) = \sup_\prec\{\varphi(0_0, \ldots, z_\alpha, \ldots, y_\beta) : z < x\}\) where \(x, \alpha \in \text{Lim}\)

Now we can create an actual ordinal notation. Define \(\varphi(x)\) as a continuous (under the order topology) increasing function with \(\varphi(0) > 0\); conventionally this is chosen to be \(\varphi(\alpha) = \omega^\alpha\), although Veblen focused on the case \(\varphi(\alpha) = 1 + \alpha\). Then:


 * \(\varphi(x_0, 0_1, \ldots, 1_\beta) = \) the \(x_0\)th element of the set \(\{y: \forall \gamma < \beta: \varphi(0_0, 0_1, \ldots, y_\gamma) = y\}\)
 * for \(y > 1\), \(\varphi(x_0, 0_1, \ldots, y_\alpha, \ldots, z_\beta) = \) the \(x_0\)th element of the set \(\{v: \forall \gamma < \alpha: \forall w < y: \varphi(0_0, 0_1, \ldots, v_\gamma, 0_{\gamma+1}, \ldots, w_\alpha, z_{\alpha+1}, \ldots, z_\beta) = v\}\)

where "the \(x_0\)th element" is according to the ordering defined by the seven rules above.

The supremum of the range of Veblen's function is the large Veblen ordinal. If arrays are restricted to finite sizes (i.e. the domain of the array is \(< \omega\)), the supremum of the range is the small Veblen ordinal. The restriction of the Veblen's function to small Veblen ordinal gives an ordinal notation, because it is known that the ordering of formal strings corresponding to finite arrays of orginals restricted to a certain recursive subset of "normal forms" can be encoded into a primitive recursive relation.

Modern conventions
In practice, "Veblen \(\varphi\) function" typically refers to a far simpler two-argument form, defined as \(\varphi_0(\alpha) = \omega^\alpha\) (or some other normal function), and \(\varphi_\beta\) as the enumerating function for all the common fixed points of \(\varphi_\gamma\) for all \(\gamma < \beta\). More concisely, \(\varphi_\alpha\) is the \(\alpha\)'th derivative of \(\varphi_0\). The original is thus often called the "extended Veblen function."

Veblen's dated convention of starting ordinals at 1 is often corrected for in modern usage, so instead of, Veblen writing, say, \(\varphi(2, 1, 1)\), we would write \(\varphi(1, 0, 0)\); this modern convention is used in the above section. Using the zero-indexed version, we have the even simpler equality \(\varphi_\beta(\alpha) = \varphi(\alpha, \beta)\).

Ordinal notation associated to ordinal collapsing function
There are many ordinal notations associated to ordinal collapsing functions. Be careful that an OCF itself can never be an ordinal notation. For more details, see the main article.

Taranovsky's C
Dmytro Taranovsky described in a self-published web page the following general frame work to construct a binary function \(C\) from a well-ordered set \((S,<)\) equipped with an additional structure \(D \subset S \times S\) satisfying a suitable condition explained later. Let \(0_S\) denote the least element of \((S,<)\). For an \(a \in S\), we put \(C_a := \{c \in S : (c,a) \in D\}\), \(a+1 := \min \{c \in S : a < c\}\) (assume the existence), and \((a) := \{c \in S : c < a\}\). For an \(S' \subset S\), we denote by \(\lim(S') \subset S\) the subset of limits of elements of \(S'\) in \((S,<)\). We say that \(D\) is a degree for \((S,<)\) if the following hold:


 * \(C_{0_S} = S\)
 * \(\forall a \in S: a \neq 0_S \Rightarrow 0_S \notin C_a\)
 * \(\forall a \in \lim(S): C_a = \bigcup_{b < a} C_b\).
 * \(\forall a \in S: C_{a+1} = \lim(C_a) \lor \exists d \in \lim(S) \cap (a+1) \land C_{a+1} = \lim(C_a) \cup (d+1)\)

If \(D\) is a degree for \((S,<)\), then set \(C(a,b) := \min\{c \in C_a : b < c\}\). In particular, this construction works for a limit ordinal \(\eta\) equipped with a degree \(D \subset \eta \times \eta\) for \((\eta,\in)\). Since \(D\) is not unique, the resulting function \(C\) heavily depends on the choice of \(D\). Taranovsky introduced several explicit examples of degrees.

Define a partial ordinal notation system \(O\) as a partial mapping from ordinals below \(\eta\) to finite strings comprised of symbols and ordinals such that \(O(a)\) is undefined if \(a\) occurs in a string in the range of \(O\). Given a partial ordinal notation system \(O\) and a degree \(D\) for \((\eta,\in)\), we define Taranovsky's notation for \(a\):


 * If \(O(a)\) is defined, then we simply use the string \(O(a)\) to notate \(a\).
 * Otherwise, let \(b,c\) be ordinals so that \(a = C(b, c) \wedge b'>b \Rightarrow C(b', c) > C(b, c) \wedge c' < c \Rightarrow C(b, c') < C(b, c)\). We then use the string "\(C(b,c)\)."

Second-order arithmetic
One implementation Taranovsky conjectures to reach further than the proof-theoretic ordinal of second-order arithmetic, which if true would make it an exceptionally strong system.

For \(k \geq 0\), define the binary relation "\(a\) is \(k\)-built from below by \(b\)" over ordinals as follows:


 * \(a\) is \(0\)-built from below by \(b\) iff \(a < b\).
 * \(a\) is \(k+1\)-built from below by \(b\) iff the standard representation of \(a\) does not use ordinals above \(a\) except in the scope of an ordinal \(k\)-built from below by \(b\).

Taranovsky's notation, then, is an infinite family of notations indexed by positive integer \(n\) defined individually as follows:


 * The language consists of constants "\(0\)" and "\(\Omega_n\)" and a binary function "\(C\)" written in reverse Polish notation.
 * Ordering is lexicographic with "\(C\)" < "\(0\)" < "\(\Omega_n\)".
 * The strings "\(0\)" and "\(\Omega_n\)" are in standard form.
 * The string "\(abC\)" is in standard form iff all the following are true:
 * "\(a\)" and "\(b\)" are in standard form.
 * If "\(a\)" is of the form "\(cdC\)", \(b \leq d\) according to the aforementioned lexicographic ordering.
 * "\(b\)" is \(n\)-built from below by "\(abC\)".

For \(n = 1\), Taranovsky showed that the system reaches the Bachmann-Howard ordinal.

Nonrecursive notations
The notations in this section are nonrecursive. Some authors do not consider them to be real ordinal notations.

Kleene's \(\mathcal{O}\)
Kleene's \(\mathcal{O}\) is a notation for all recursive ordinals. Let \(f_0, f_1, f_2, \ldots\) be an enumeration of all the partial recursive functions. (One way to do this is to order all the s lexicographically.)

Let \(<_\mathcal{O}\) be an operator indicating a well-founded partial ordering of set \(K\), and let \(\mathcal{O}: K \to \omega_1\). These three are defined inductively as follows:


 * \(0 \in K\) and \(\mathcal{O}(0) = 0\).
 * If \(n \in K\) and \(\mathcal{O}(n) = \alpha\), then \(2^n \in K\), \(\mathcal{O}(2^n) = \alpha + 1\), and \(n <_\mathcal{O} 2^n\).


 * If for all natural numbers \(n\), we have \(f_i(n) \in K\) and \(f_i(n) <_\mathcal{O} f_i(n + 1)\), then \(3 \cdot 5^i \in K\), \(\mathcal{O}(3 \cdot 5^i) = \lim_{k \rightarrow \omega} \mathcal{O}(f_i(k))\), and for all \(k\) \(f_i(k) <_\mathcal{O} 3 \cdot 5^i\).
 * \(a <_\mathcal{O} b\) and \(b <_\mathcal{O} c\) implies \(a <_\mathcal{O} c\).

Klev's \(\mathcal{O}^+\)
Ansten Mørch Klev extended Kleene's \(\mathcal{O}\) to the set of all writable ordinals. Let \(f_0, f_1, f_2, \ldots\) be an enumeration of all ITTM-computable partial functions (where the output of an ITTM is based on the tape when it halts). The rules are otherwise identical to Kleene's \(\mathcal{O}\):


 * \(0 \in K\) and \(\mathcal{O}^+(0) = 0\).
 * If \(n \in K\) and \(\mathcal{O}^+(n) = \alpha\), then \(2^n \in K\), \(\mathcal{O}^+(2^n) = \alpha + 1\), and \(n <_{\mathcal{O}^+} 2^n\).
 * If for all natural numbers \(n\), we have \(f_i(n) \in K\) and \(f_i(n) <_{\mathcal{O}^+} f_i(n + 1)\), then \(3 \cdot 5^i \in K\), \(\mathcal{O}^+(3 \cdot 5^i) = \lim_{k \rightarrow \omega} \mathcal{O}^+(f_i(k))\), and for all \(k\) \(f_i(k) <_{\mathcal{O}^+} 3 \cdot 5^i\).
 * \(a <_{\mathcal{O}^+} b\) and \(b <_{\mathcal{O}^+} c\) implies \(a <_{\mathcal{O}^+} c\).

\(\mathcal{O}^+\) is capable of expressing all ordinals \(< \lambda\) (all writable ordinals).

Klev's \(\mathcal{O}^{++}\)
In the same paper, Klev introduced \(\mathcal{O}^{++}\), which has \(f_i\) enumerates all eventually computable partial functions (that is, the output of an ITTM is based on what the tape converges to). The rules are otherwise identical:


 * \(0 \in K\) and \(\mathcal{O}^{++}(0) = 0\).
 * If \(n \in K\) and \(\mathcal{O}^{++}(n) = \alpha\), then \(2^n \in K\), \(\mathcal{O}^{++}(2^n) = \alpha + 1\), and \(n <_{\mathcal{O}^{++}} 2^n\).
 * If for all natural numbers \(n\), we have \(f_i(n) \in K\) and \(f_i(n) <_{\mathcal{O}^{++}} f_i(n + 1)\), then \(3 \cdot 5^i \in K\), \(\mathcal{O}^{++}(3 \cdot 5^i) = \lim_{k \rightarrow \omega} \mathcal{O}^{++}(f_i(k))\), and for all \(k\) \(f_i(k) <_{\mathcal{O}^{++}} 3 \cdot 5^i\).
 * \(a <_{\mathcal{O}^{++}} b\) and \(b <_{\mathcal{O}^{++}} c\) implies \(a <_{\mathcal{O}^{++}} c\).

It is capable of expressing all ordinals \(< \zeta\) (all eventually writable ordinals).

It is worth noting that the concepts of \(\mathcal{O}^+\) and \(\mathcal{O}^{++}\) cannot be extended to all accidentally writable ordinals, because many ITTMs accidentally write more than one ordinal. Indeed, there exist "universal" ITTMs accidentally writing all accidentally writable ordinals. No ordinal notation is known that specifically targets all ordinals \(< \Sigma\).

Table of conventions
Below is a table comparing the different conventions of ordinals and ordinal functions in this article and the article on ordinal collapsing functions.