Rayo's number

Rayo's number is the largest named number, coined in a large number battle pitting Agustín Rayo against Adam Elga. Rayo's number is, in Rayo's own words, "the smallest number bigger than any finite number named by an expression in the language of first order set theory with a googol symbols or less."

By replacing "googol" with any positive integer, we get a very quickly growing function \(\text{Rayo}(n)\). Rayo's function is uncomputable; it is impossible for a (and, by the Church-Turing thesis, any modern computer) to calculate \(\text{Rayo}(n)\) or \(\text{Rayo}(10^{100})\) without using infinite time and memory. In fact, even an, or any order-\(n\) Turing machine, cannot compute it.

Rayo and Elga's number duel was based on an article by Scott Aaronson.

The second largest named number is meameamealokkapoowa oompa by Jonathan Bowers, which, in contrast to Rayo's number, is computable.

Definition
Let \([\phi]\) and \([\psi]\) be Godel-coded formulas and \(s\) and \(t\) be variable assignments. Define \(\text{Sat}([\phi], s)\) as follows:

∀R { {    ∀[ψ], s: R([ψ],t) ↔ ([ψ] = "xᵢ ∈ xⱼ" ∧ t(xᵢ) ∈ t(xⱼ)) ∨ ([ψ] = "xᵢ = xⱼ" ∧ t(xᵢ) = t(xⱼ)) ∨ ([ψ] = "(¬θ)"   ∧ ¬R([θ], t)) ∨ ([ψ] = "([θ]∧ξ)" ∧ R([θ], t) ∧ R([ξ], t)) ∨ ([ψ] = "∃xᵢ(θ)" ∧ ∃t′: R([θ], t′)) (where t′ is a copy of t with xᵢ changed) } ⇒ R([ϕ],s) }

Call a natural number \(m\) "Rayo-namable" if there is a formula \(\phi(x_1)\) with less than \(10^{100}\) symbols and \(x_1\) as its only free variable that satisfies the following properties:


 * 1) There is a variable assignment \(s\), assigning \(x_1 := m\), such that \(\text{Sat}([\phi(x_1)], s)\).
 * 2) For any variable assignment \(t\), if \(\text{Sat}([\phi(x_1)], t)\), \(t\) must have \(x_1 = m\).

Rayo's number is the smallest number greater than all Rayo-namable numbers.

Explanation
A variable assignment is some infinite sequence of objects such as \((3, 2, 6, 1/2, \{4, \pi\}, \text{Canada}, \omega, 65, \ldots)\). A formula is some statement about a variable assignment, such as "the third variable is relatively prime to the second one" or "the second variable is the set of all real numbers except for 3.2".

Rayo defined a very specific and abstract micro-language for describing how a formula works:


 * "a∈b" means that the ath member of the sequence is an element of bth member of the sequence.
 * "a=b" means that the ath member of the sequence is equal to the bth member of the sequence.
 * "(¬e)", for formula e, is the negation of e.
 * "(e∧f)", for formulas e and f, indicates the logical and operation.
 * "∃a(e)" indicates that we can modify the ath member of the sequence such that the formula e is true.

For example, take the formula "1∈2". This says "the member 1 is an element of the member 2," so we can plug in the variable assignment \((\text{apple}, \text{set of all types of fruits}, \ldots)\) and the result will be true, since apple is a type of fruit. If instead we plug in \((\text{cheese}, \text{set of all types of fruits}, \ldots)\), the result is not true because cheese is not a type of fruit.

A more complicated example: "(¬∃1(1∈2))". This says, "it is not true that there exists a member 1 such that member 1 is an element of member 2." In other words, we cannot pick member 1 such that member 1 ∈ member 2. This works when member 2 is the empty set, such as in the variable assignment \((3, \{\}, \ldots)\) No matter what we change the \(3\) to, it can never be a member of the empty set.

If a formula returns true when a variable assignment is plugged into it, we say that the variable assignment is "good" with respect to the formula.

Now we arrive at the core concept of Rayo-nameability, ignoring the length restriction:


 * There is a formula \(\phi\) such that all good variable assignments must have \(m\) as their first argument, and there is at least one such assignment.

First we shall prove that 0 is Rayo-nameable. In the ordinal system, \(0 = \{\}\). We need to craft a formula \(\phi\) that forces \(\{\}\) as its first argument. One such string is "(¬∃2(2∈1))" = "we cannot pick variable 2 such that variable 2 is a member of variable 1" = "we cannot pick an element of variable 1" = "variable 1 has no elements".

Now we need to find a way to Rayo-name \(1 = \{\{\}\}\). We first put the empty set in variable 2 using the same trick as above: "(¬∃3(3∈2))". We also need "2∈1". To ensure that 1 does not have any other elements, we use "(¬∃3((3∈1∧(¬3=2))))" = "we cannot pick variable 3 such that variable 3 is an element of variable 1, but is not the same as variable 2" = "if variable 3 is an element of variable 1, it must be variable 2" = "variable 2 is the only element of variable 1". We "and" all these statements together, we get "(((¬∃3(3∈2))∧2∈1)∧(¬∃3((3∈1∧(¬3=2)))))".

We can continue with this pattern, defining each natural number using this method. It allows us to name the number \(n\) in \((9n^2 + 43n)/2\) symbols. With larger values, it is possible to define recursive operations, allowing us to Rayo-name larger and larger numbers using compact notation. Given a sufficiently large number, a Rayo string that defines exponentiation would need less symbols than our naïve technique.

Author
Dr. Agustín Rayo is an Associate Professor of Linguistics and Philosophy at the Massachusetts Institute of Technology where he received his PhD in 2001.

Number Navigator
Previous: meameamealokkapoowa oompa'''