Ordinal notation

An ordinal notation is, generally, a method for systematically naming ordinals (usually countable ones). More specifically, it is a partial function from finite strings in a finite alphabet to ordinals, although in practice the term is applied to more general cases than this.

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

Veblen's \(\phi\)
Oswald Veblen's \(\phi\) function is not only 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 Veblen uses the convention where ordinals start with 1, and thus all letters (Greek or Latin) below are \(\geq 1\).

Before we can discuss the function itself, we first define a well-ordering \(\prec\) of arrays. An array is a function \(A : \eta \mapsto \omega_1\) for some countable ordinal \(\eta\). Veblen denotes its arguments by using \(x_\alpha\) to indicate the value of \(A(\alpha)\), and, say, \(1_\alpha\) to indicate that \(A(\alpha) = 1\). 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. \(\phi(1_1, 1_2, \ldots, 1_{\alpha + 1}) = \sup_\prec\{\phi(1_1, 1_2, \ldots, x_\alpha): x \in \text{On}\}\).
 * B. \(\phi(1_1, 1_2, \ldots, 1_\alpha) = \sup_\prec\{\phi(1_1, 1_2, \ldots, 1_\beta): \beta < \alpha\}\) where \(\alpha \in \text{Lim}\)
 * C. \(\phi((x + 1)_1, y_2, \ldots, z_\beta) \succ \phi(x_1, \ldots, z_\beta)\), and there is no array between them
 * D. \(\phi(1_1, \ldots, (x + 1)_{\alpha + 1}, \ldots, y_\beta) = \sup_\prec\{\phi(1_1, \ldots, (x + 1)_\alpha, x_{\alpha + 1}, \ldots, y_\beta)\}\)
 * E. \(\phi(1_1, \ldots, x_{\alpha + 1}, y_{\alpha + 2}, \ldots, z_\beta) = \sup_\prec\{\phi(1_1, \ldots, w_{\alpha + 1}, y_{\alpha + 2}, \ldots, z_\beta) : w < x\}\) where \(x \in \text{Lim}\)
 * F. \(\phi(1_1, \ldots, (x + 1)_\alpha, \ldots, y_\beta) = \sup_\prec\{\phi(1_1, \ldots, 2_\gamma, \ldots, x_\alpha, \ldots, y_\beta) : \gamma < \alpha\}\) where \(\alpha \in \text{Lim}\)
 * G. \(\phi(1_1, \ldots, x_\alpha, \ldots, y_\beta) = \sup_\prec\{\phi(1_1, \ldots, z_\alpha, \ldots, y_\beta) : z < x\}\) where \(x, \alpha \in \text{Lim}\)

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


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

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

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

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

Ordinal collapsing function
An ordinal collapsing function (OCF) is a method of naming large ordinals using even larger ones. More specifically, ordinal collapsing functions take the structures found in large (often uncountable) ordinals and mirror those structures onto smaller ordinals. OCFs are employed as notations for large recursive ordinals, for which they have the most relevance to googology.

There are many OCFs in use, often similar to each other and easily confused (some even use the same symbols).

Bachmann's \(\psi\)
Heinz Bachmann's \(\psi\) function was the first true ordinal collapsing function. It is somewhat cumbersome as it depends on fundamental sequences for all limit ordinals.

Rathjen suggests a "recast" of the system as follows. Let \(\Omega\) be an uncountable ordinal such as \(\aleph_1\). Then define \(C^\Omega(\alpha, \beta)\) as the closure of \(\beta \cup \{0, \Omega\}\) under \(+, (\xi \mapsto \omega^\xi), (\xi \mapsto \psi_\Omega(\xi))_{\xi < \alpha}\), and \(\psi_\Omega(\alpha) = \min \{\rho < \Omega : C^\Omega(\alpha, \rho) \cap \Omega = \rho\}\).

\(\psi_\Omega(\varepsilon_{\Omega + 1})\) is the Bachmann-Howard ordinal, the proof-theoretic ordinal of Kripke-Platek set theory.

Feferman's \(\theta\)
Feferman's \(\theta\)-functions constitute a hierarchy of single-argument functions \(\theta_\alpha: \text{On} \mapsto \text{On}\) for \(\alpha \in \text{On}\). It is often considered a two-argument function with \(\theta_\alpha(\beta)\) written as \(\theta\alpha\beta\). It is defined like so:

\begin{eqnarray*} C_0(\alpha, \beta) &=& \beta \cup \{0, \omega_1, \omega_2, \ldots, \omega_\omega\}\\ C_{n+1}(\alpha, \beta) &=& \{\gamma + \delta, \theta_\xi(\eta) | \gamma, \delta, \xi, \eta \in C_n(\alpha, \beta); \xi < \alpha\} \\ C(\alpha, \beta) &=& \bigcup_{n < \omega} C_n (\alpha, \beta) \\ \theta_\alpha(\beta) &=& \min\{\gamma | \gamma \not\in C(\alpha, \gamma) \wedge \forall \delta < \beta: \theta_\alpha(\delta) < \gamma\} \\ \end{eqnarray*}

Informally:


 * An ordinal \(\beta\) is considered \(\alpha\)-critical iff it cannot be constructed with the following elements:
 * all ordinals less than \(\beta\),
 * all ordinals in the set \(\{0, \omega_1, \omega_2, \ldots, \omega_\omega\}\),
 * the operation \(+\),
 * applications of \(\theta_\xi\) for \(\xi < \alpha\).
 * \(\theta_\alpha\) is the enumerating function for all \(\alpha\)-critical ordinals.

The Feferman theta function is considered an extension of the two-argument Veblen function &mdash; for countable arguments, \(\theta\alpha\beta = \varphi_\alpha(\beta)\). For this reason, \(\varphi\) may be used interchangeably with \(\theta\) even for uncountable arguments, so for example \(\varphi_\Omega(0) = \theta\Omega 0 = \Gamma_0\). The supremum of the range of the function is the Takeuti-Feferman-Buchholz ordinal \(\theta\varepsilon_{\Omega_\omega + 1}0\).

Buchholz discusses a set he calls \(\theta(\omega + 1)\), which is the set of all ordinals describable with \(\{0, \omega_1, \omega_2, \ldots, \omega_\omega\}\) and finite applications of \(+\) and \(\theta\).

Buchholz's \(\psi\)
Buchholz's \(\psi\) is a hierarchy of single-argument functions \(\psi_v: \text{On} \mapsto \text{On}\) for \(v \leq \omega\), with \(\psi_v(\alpha)\) abbreviated as \(\psi_v\alpha\). Define \(\Omega_0 = 1\) and \(\Omega_v = \aleph_v\) for \(v > 0\), and let \(P(\alpha)\) be the set of distinct terms in the Cantor normal form of \(\alpha\) (with each term of the form \(\omega^\xi\) for \(\xi \in \text{On}\)):

\begin{eqnarray*} C_v^0(\alpha) &=& \Omega_v\\ C_v^{n+1}(\alpha) &=& C_v^n(\alpha) \cup \{\gamma | P(\gamma) \subseteq C_v^n(\alpha)\} \cup \{\psi_v\xi | \xi \in \alpha \cap C_v^n(\alpha) \wedge \xi \in C_u(\xi) \wedge u \leq \omega\} \\ C_v(\alpha) &=& \bigcup_{n < \omega} C_v^n (\alpha) \\ \psi_v\alpha &=& \min\{\gamma | \gamma \not\in C_v(\alpha)\} \\ \end{eqnarray*}

The limit of this system is \(\psi_0 \varepsilon_{\Omega_\omega + 1}\), the Takeuti-Feferman-Buchholz ordinal.

Madore's \(\psi\)
David Madore (under "Gro-Tsen" on Wikipedia) defined the following simpler variant of Buchholz's function as a demonstration of how ordinal collapsing functions work. The popularity of the article led to widespread use of the modified function.

\begin{eqnarray*} C_0(\alpha) &=& \{0, 1, \omega, \Omega\}\\ C_{n+1}(\alpha) &=& \{\gamma + \delta, \gamma\delta, \gamma^{\delta}, \psi(\eta) | \gamma, \delta, \eta \in C_n (\alpha, \beta); \eta < \alpha\} \\ C(\alpha) &=& \bigcup_{n < \omega} C_n (\alpha) \\ \psi(\alpha) &=& \min\{\beta \in \Omega|\beta \notin C(\alpha)\} \\ \end{eqnarray*}

Informally:


 * \(C(\alpha)\) is the set of all ordinals constructible using only \(0\), \(1\), \(\omega\), \(\Omega\), and finite applications of the following functions: addition, multiplication, exponentiation, and \(\kappa \mapsto \psi(\kappa)\) (the latter only if \(\psi(\kappa)\) has yet been defined).
 * \(\psi(\alpha)\) is the smallest countable ordinal not in \(C(\alpha)\).

Chris Bird uses this function throughout his googological papers.

Bird's \(\theta\)
Chris Bird devised the following shorthand for the extended (zero-indexed) Veblen function \(\phi\):

\[\theta(\Omega^{n - 1}a_{n - 1} + \cdots + \Omega^2a_2 + \Omega a_1 + a_0, b) = \phi(a_{n - 1}, \ldots, a_2, a_1, a_0, b)\]

\(\theta(\alpha, 0)\) is abbreviated as \(\theta(\alpha)\). This function is only defined for arguments less than \(\Omega^\omega\), and its outputs are limited by the small Veblen ordinal. In his papers, Bird erroneously uses \(\theta(\Omega^\omega)\) and higher values without properly defining the function.

Wilken's \(\vartheta\)
Wilken's \(\vartheta\) is more generic than other OCFs. Let \(\Omega_0\) be either \(1\) or a number of the form \(\varepsilon_\alpha\), let \(\Omega_1 > \Omega_0\) be an uncountable regular cardinal and for \(0 < i < \omega\) let \(\Omega_{i+1}\) be the successor cardinal to \(\Omega_i\). Then, for \(0 < n < \omega\) and \(0 \leq m < n\), define the following for \(\beta < \Omega_{m+1}\):

\begin{eqnarray*} \Omega_m \cup \beta &\subseteq& C_m^n(\alpha, \beta) \\ \xi, \eta \in C_m^n(\alpha, \beta) &\Rightarrow& \xi + \eta \in C_m^n(\alpha, \beta) \\ \eta \in C_m^n(\alpha, \beta) \cap \Omega_{k + 2} &\Rightarrow& \vartheta_k^n(\xi) \in C_m^n(\alpha, \beta) \text{ for } m < k < n \\ \eta \in C_m^n(\alpha, \beta) \cap \alpha &\Rightarrow& \vartheta_m^n(\xi) \in C_m^n(\alpha, \beta) \\ \vartheta_m^n(\alpha) &=& \min(\{\xi < \Omega_{m+1}|C_m^n(\alpha, \xi) \cap \Omega_{m+1} \subseteq \xi \wedge \alpha \in C_m^n(\alpha, \xi)\} \cup \{\Omega_{m+1}\}) \\ \end{eqnarray*}

\(n\) is needed to define the function, but the actual value of \(n\) does not affect the function's behavior. So, for example, \(\vartheta_0^1(\alpha) = \vartheta_0^2(\alpha) = \vartheta_0^3(\alpha) = \cdots\) So we can safely eliminate \(n\) and express the function using only two arguments \(\vartheta_m(\alpha)\).

Wilken and Weiermann's \(\bar\vartheta\)
Wilken and Weiermann's \(\bar\vartheta\) is closely related to Wilken's \(\vartheta\), and their paper closely analyzes the relationship between the two. As before, let \(\Omega_0\) be either \(1\) or a number of the form \(\varepsilon_\alpha\), let \(\Omega_1 > \Omega_0\) be an uncountable regular cardinal and for \(0 < i < \omega\) let \(\Omega_{i+1}\) be the successor cardinal to \(\Omega_i\), and finally let \(\Omega_\omega = \sup_{i < \omega} \Omega_i\). For all \(\beta \leq \Omega_{i+1}\) define the following:

\begin{eqnarray*} \Omega_i \cup \beta &\subseteq& \bar{C}_i(\alpha, \beta) \\ \xi, \eta \in \bar{C}_i (\alpha, \beta) &\Rightarrow& \xi + \eta \in \bar{C}_i(\alpha, \beta) \\ j \leq i < \omega \wedge \xi \in \bar{C}_j(\xi, \Omega_{j + 1}) \cap \bar{C}_i(\alpha, \beta) \cap \alpha &\Rightarrow& \bar{\vartheta}_j(\xi) \in \bar{C}_i(\alpha, \beta) \\ \bar{\vartheta}_i(\alpha) &=& \min(\{\xi < \Omega_{i + 1} | \alpha \in \bar{C}_i(\alpha, \xi) \wedge \bar{C}_i(\alpha, \xi) \cap \Omega_{i + 1} \subseteq \xi\} \cup \{\Omega_{i + 1}\}) \\ \end{eqnarray*}

Weiermann's \(\vartheta\)
The \(\vartheta\) function has the advantage of having only a single argument, at the cost of some added complexity.

\begin{eqnarray*} C_0(\alpha, \beta) &=& \beta \cup \{0, \Omega\}\\ C_{n+1}(\alpha, \beta) &=& \{\gamma + \delta, \omega^{\gamma}, \vartheta(\eta) | \gamma, \delta, \eta \in C_n (\alpha, \beta); \eta < \alpha\} \\ C(\alpha, \beta) &=& \bigcup_{n < \omega} C_n (\alpha, \beta) \\ \vartheta(\alpha) &=& \min \{\beta < \Omega | C(\alpha, \beta) \cap \Omega \subseteq \beta \wedge \alpha \in C(\alpha, \beta)\} \\ \end{eqnarray*}

Rathjen and Weiermann showed that \(\vartheta(\alpha)\) is defined for all \(\alpha < \varepsilon_{\Omega+1}\), but do not discuss higher values.

\(\vartheta\) follows the archetype of many ordinal collapsing functions &mdash; it is defined inductively with a "marriage" to the \(C\) function. Interpreting the equations:


 * \(C(\alpha, \beta)\) is the set of all ordinals constructible using only the following:
 * Zero, all ordinals less than \(\beta\), and \(\Omega\).
 * Finite applications of addition, \(\kappa \mapsto \omega^\kappa\), \(\kappa \mapsto \vartheta(\kappa)\) (the latter only if \(\vartheta(\kappa)\) has yet been defined).
 * \(\vartheta(\alpha)\) is the smallest ordinal \(\beta\) so that \(\alpha \in C(\alpha, \beta)\), and \(\beta\) is greater than all the countable ordinals in \(C(\alpha, \beta)\).

Stegert's notation
As part of his 2010 Ph.D. dissertation, Jan-Carl Stegert developed a powerful ordinal notation based on the work of Rathjen.

Taranovsky's C
Dmytro Taranovsky, much more recently, described the following meta-ordinal-notation system in a self-published web page. Let \(\eta\) be an ordinal, and let \(0^S\) and let \(\text{Ld}(a, b)\) be the statement that \(a\) is a limit of ordinals \(c\) such that \((c, b) \in D\). Let \(D\) be the following binary relation over \(\eta\):


 * \(\forall a < \eta: (a, 0) \in D\)
 * \(\forall a < \eta: a \neq 0 \Rightarrow (0, a) \notin D\)
 * \(\forall b \in \text{Lim} \cup \eta: (a, b) \in D \Leftrightarrow \forall c < b: (a, c) \in D\).
 * \(\forall b: (a, b) \in D \Leftrightarrow \text{Ld}(a, b + 1)\)
 * \(\forall b: \exists d \in \text{Lim} \cup \eta: d \leq b \Rightarrow \forall c: (c, a + 1) \in D \Leftrightarrow (c \leq d \vee \text{Ld}(c, b))\)

Then \(C(a, b) = \min\{c : c \in \eta \wedge c > b \wedge (c, a) \in D\}\).

Define a partial ordinal notation system \(O\) as a partial mapping from ordinals to finite strings comprised of symbols and ordinals such that \(O(\alpha)\) is undefined if \(\alpha\) occurs in a string in the range of \(O\). Given a partial ordinal notation system \(O\), 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 \(n\)-built from below by \(b\)" over ordinals as follows:


 * \(a\) is \(0\)-built from below by \(b\) iff \(a \leq 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 \(n\)-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 \(a\).

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-ordering of set \(K\), and let \(\mathcal{O}: K \mapsto \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 ordinal notations
Below is a table comparing the different ordinal notations in this article.