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]:

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


Since Veblen's \(\varphi\) is so complicated that many googologists do not understand the precise definition, there are several common mistakes. For example, \(\varphi(\omega,0)\) is often confounded with \(\Gamma_0\) although the latter one is strictly greater than the former one, and \(\varphi(\Gamma_0,\Gamma_0)\) is often confounded with \(\Gamma_0\) although the former one is strictly greater than the latter one.

Ordinal notation associated to ordinal collapsing function

Main article: 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.[3] 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}\)

See the article about Kleene's \(\mathcal{O}\).

Klev's notations

See the article about Klev's \(\mathcal{O}^+\) and \(\mathcal{O}^{++}\).

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.

NotationSupremum of expressible ordinals
Cantor normal form\(\varepsilon_0\)
Veblen function (two arguments)Feferman-Schütte ordinal \(\Gamma_0\)
Bird's \(\theta\)Small Veblen ordinal
Extended Veblen functionLarge Veblen ordinal
Bachmann's \(\psi\)Bachmann-Howard ordinal
Madore's \(\psi\)Bachmann-Howard ordinal
Weiermann's \(\vartheta\)Bachmann-Howard ordinal
Feferman's \(\theta\)Takeuti-Feferman-Buchholz ordinal
Buchholz's \(\psi\)Takeuti-Feferman-Buchholz ordinal
Rathjen's \(\psi\)> Rathjen's ordinal (proof-theoretic ordinal of KPM)
Taranovsky's CUnknown, but recursive and very large
Kleene's \(\mathcal{O}\)Church-Kleene ordinal \(\omega_1^\text{CK}\)
Klev's \(\mathcal{O}^+\)Supremum of writable ordinals \(\lambda\)
Klev's \(\mathcal{O}^{++}\)Supremum of eventually writable ordinals \(\zeta\)


  2. Veblen, Oswald. "Continuous increasing functions of finite and transfinite ordinals". Retrieved 2014-10-11.
  3. Taranovsky, Dmytro. Ordinal Notation. Retrieved 2014-09-26.

See also

Ordinals, ordinal analysis and set theory

Basics: cardinal numbers · normal function · ordinal notation · ordinal numbers · fundamental sequence · ordinal collapsing function
Theories: Robinson arithmetic · Presburger arithmetic · Peano arithmetic · KP · second-order arithmetic · ZFC
Countable ordinals: \(\omega\) · \(\varepsilon_0\) · \(\zeta_0\) · \(\Gamma_0\) · \(\vartheta(\Omega^3)\) · \(\vartheta(\Omega^\omega)\) · \(\vartheta(\Omega^\Omega)\) · \(\vartheta(\varepsilon_{\Omega + 1}) = \psi(\Omega_2)\) · \(\psi(\Omega_\omega)\) · \(\psi(\varepsilon_{\Omega_\omega + 1})\) · \(\psi(\psi_I(0))\)‎ · \(\omega_1^\mathfrak{Ch}\) · \(\omega_1^\text{CK}\) · \(\omega_\alpha^\text{CK}\) · \(\lambda,\zeta,\Sigma,\gamma\) · List of countable ordinals
Ordinal hierarchies: Fast-growing hierarchy · Slow-growing hierarchy · Hardy hierarchy · Middle-growing hierarchy · N-growing hierarchy
Uncountable cardinals: \(\omega_1\) · omega fixed point · inaccessible cardinal \(I\) · Mahlo cardinal \(M\) · weakly compact cardinal \(K\) · indescribable cardinal · rank-into-rank cardinal · more...

Community content is available under CC-BY-SA unless otherwise noted.