Skip to Content
EntropyEntropy
  • Article
  • Open Access

26 April 2026

The Largest Number Representable in 64 Bits

Independent Researcher, 1111CP Diemen, The Netherlands

Abstract

We investigate how large an output can be computed by programs fitting inside a single register, using languages not designed for generating large outputs. We propose lambda calculus-based Busy Beaver functions that offer various advantages over the existing Turing machine-based ones, including a direct relation to Kolmogorov complexity.

1. Introduction

Most people believe 2 64 1 = 18 , 446 , 744 , 073 , 709 , 551 , 615 , or FFFFFFFFFFFFFFFF in hexadecimal, to be the largest number representable in 64 bits. In English, it is quite the mouthful: eighteen quintillion four hundred and forty-six quadrillion seven hundred and forty-four trillion seventy-three billion seven hundred and nine million five hundred and fifty-one thousand six hundred and fifteen.
That is indeed the maximum possible value of 64 bit-unsigned integers, available as data type uint64_t in C or u64 in Rust. Floating point data types can represent much larger values, courtesy of their base 2 exponent. The 64-bit floating point standard known as IEEE-754, available as data type double in C or f64 in Rust, has a largest (finite) representable value of 2 1024 ( 1 2 53 ) 1.8 × 10 308 .
But we need not limit ourselves to plain data types. What if we allow richer types of representations? Since we want representations to remain computable, the most general kind of representation would be (the output of) a program in some programming language. But the program must be small enough to fit in 64 bits. Our quest then will be for the largest number programmable in 64 bits.

2. Small Programs

Some programming languages are not suitable for this task, due to required scaffolding. A popular language like C, for instance, while sporting the famous IOCCC (International Obfuscated C Code Contest) featuring small programs doing unbelievable things, requires every valid program to declare the main function such as main(){}, consisting of eight ASCII characters. While technically, ASCII is a 7-bit character encoding standard representing 128 unique characters, all modern computers use 8-bit bytes to store either plain ASCII or UTF-8, a Unicode character encoding that is backward compatible with ASCII. So main(){} is essentially the only valid 64-bit C program.
Plenty other languages require no such scaffolding. For instance, Linux features the arbitrary precision calculator bc, which happily evaluates programs like 9^999999 to the 954,242 digit number 35 , 908 , 462 48 , 888 , 889 , making it programmable in 8 bytes. So is the much larger 9^9^9^99  = 9 9 9 99 with over 10 10 94 digits, which bc is less happy to compute. If bc supported the symbol ! for computing factorials, then 9!!!!!!! would represent a much larger number still.

3. To Cheat or Not to Cheat

Allowing such primitives feels a bit like cheating though. Would we allow a language that has the Ackermann function predefined, letting the 8 byte expression ack(9,9) represent a truly huge number?
Many people will be quick to dismiss our quest entirely, arguing that whatever number N may be the largest representable in 64 bits, they can propose a new language in which the 1-bit program 0 is defined to “evaluate” to N+1. That is a clear example of cheating, i.e., designing a language to get the results you want. Those people may then also ask exactly what qualifies as non-cheating, but this is something that cannot be formalized, only recognized after the fact.
Our quest is for the largest number programmable in 64 bits without cheating. It is precisely our self-imposed program size limit that necessitates considerations of cheating. If we are only concerned with asymptotic behavior, then cheating ceases to be a concern, as we will see in Section 12.

4. Ackermann Considered Unhelpful

As it turns out, the question of whether Ackermann is allowed, is moot. One can blow way past ack(9,9) in under 64 bits in a language with no built-in primitive whatsoever. A language with no basic arithmetic; not even numbers themselves. A language in which all those must be defined from scratch.
But let us first look at another language lacking the usual programming primitives, one that has been particularly well studied for producing largest possible outputs. That is the language of Turing machines.

5. The Busy Beaver

The famous Busy Beaver function, introduced by Tibor Radó in 1962 [1], which we will denote BB(n), is defined as the maximal number of steps taken by an n-state Turing Machine (TM) with a binary tape alphabet, starting from an all 0 tape, before halting.
Here we have a discrepancy between how the size of a TM is measured, in states, versus how program size is measured, in bits. Fortunately there is a straightforward binary encoding of n-state TMs, which is entirely determined by its transition function. For each of the n states that the machine’s finite control can be in, and each of its two tape symbols that could be scanned by its tape head, the transition function specifies what new symbol to write in the scanned tape cell (1 bit), whether to move the tape head left or right (1 bit), and what new state (or special halt state) to transition to ( log 2 ( n + 1 ) bits). This encoding takes 6 × 2 × ( 2 + 3 ) = 60 bits for a 6-state TM, and 7 × 2 × ( 2 + 3 ) = 70 bits for a 7-state TM.
We are also stretching the meaning of “representable” a bit since BB considers the runtime of the machine instead of its output. Besides the above BB (that Radó called S), Radó also defined another function called Σ that considers the output of the machine as a number in unary, i.e., the number of 1s in the final tape contents. But BB has received more attention, as it allows one to determine from BB(n) all halting n-state machines. For 6-states and up though, there is no discernible difference in magnitude between the two functions (even an exponential difference fades between tetrational values) so we could have just as easily used Σ .
So the largest number TM programmable in 64 bits is BB(6).

6. How Large Is BB(6)?

Unfortunately, we may never know. While BB(n) has been determined (and even formally proven) for all n 5 [2], there are some 6-state TMs whose halting behavior is closely related to very hard mathematical problems. Most of these so-called cryptids are likely not to halt, while some, like one called “Lucy’s Moonlight”, are likely to halt but unlikely to beat the current champion.
The current 6-state champion shows that B B ( 6 ) > 2 2 2 10 . Here, m n is Knuth’s up-arrow notation for an exponential tower of n m’s, so that for example 2 3 = 2 2 2 . As large as this number is, it is still very small compared to ack ( 9 , 9 ) = 2 7 12 3 = 2 12 3 , where m k + 1 n denotes m k ( m k ( m k m ) ) with n ms.
It is known, however, that B B ( 7 ) > 2 11 2 11 3 > ack ( 9 , 9 ) . Several leading BB researchers believe that B B ( 7 ) is even larger than the famous Graham’s Number, which iterates the function ( n 3 n 3 ) 64 times starting from n = 4 . This is a rather bold belief, considering that the smallest known Graham exceeding TM has twice as many states (14)—bold enough for me to offer a $1000 bet that a proof of BB(7) > Graham’s Number will not be found within 10 years, which leading BB researcher Shawn Ligocki was happy to accept.
Meanwhile, Graham’s Number is easily surpassed within 64 bits, by moving beyond Turing machines.

7. Lambda Calculus

Alonzo Church conceived the λ -calculus in 1932 [3] as a formal logic system for expressing computation based on function abstraction and application using variable binding and substitution.
The Graham beating lambda term originates in a Code Golf [4] challenge asking for the “Shortest terminating program whose output size exceeds Graham’s number”, answered by user Patcail and further optimized by user 2014MELO03. The following 49-bit program
01 00 01 10 10 00 01 10 01 10 00 00 01 01 10 110 00 00 01 110 01 110 10
is the Binary Lambda Calculus [5] encoding of the term
( λ 11 ) ( λ 1 ( 1 ( λ λ 12 ( λ λ 2 ( 21 ) ) ) ) )
where λ (lambda) denotes an anonymous function, and number i is the variable bound by the i-th nested λ . This is known as De Bruijn notation, a way to avoid naming variables. A more conventional notation using variable names would be
( λ J . J J ) ( λ y . y ( y ( λ g λ m . m g ( λ f λ x . f ( f x ) ) ) ) )
The last 16 bits of the program, making up almost a third of its size, encodes the term λ f λ x . f ( f x ) , which takes arguments f and x in turn, and iterates f twice on x. In its generalized form, the function λ f λ x . f n x , called Church numeral n, is the most common way of representing natural numbers in the λ -calculus. The encoding n ^ of Church numeral n is 0000 ( 01110 ) n 10 , of size 5 n + 6 bits. The program, which we will name after its discoverer, can be expressed more legibly as
Melo = let { 2 = λ f λ x . f ( f x ) ; H = λ g λ m . m g 2 ; J = λ y . y ( y H ) } in J J
Melo evaluates to a Church numeral, “Melo’s Number”, that comfortably exceeds Graham’s Number, as we will prove after three supporting Lemmas.
Lemma 1.
J J = 2 6 ( H H ) 2 .
The following proof is formatted to show the redex on the left and unaffected arguments on the right.
Proof. 
J J = J ( J H ) = J ( H ( H H ) ) = H ( H H ) ( H ( H H ) H ) = H ( H H ) H ( H H ) 2 = H ( H H ) 2 ( H H ) 2 = 2 ( H H ) 2 ( H H ) 2 = H H ( H H 2 ) ( H H ) 2 = H H 2 H 2 ( H H ) 2 = 2 H 2 H 2 ( H H ) 2 = H ( H 2 ) H 2 ( H H ) 2 = H ( H 2 ) 2 2 ( H H ) 2 = 2 ( H 2 ) 2 2 ( H H ) 2 = H 2 ( H 2 2 ) 2 ( H H ) 2 = H 2 2 2 2 2 ( H H ) 2 = 2 2 2 2 2 2 ( H H ) 2 = 2 6 ( H H ) 2
Lemma 2.
For k , n 2 , k H 2 n > 3 k ( 1 + n ) .
Proof. 
By induction on k.
Base: Since H 2 ( 2 i ) = ( 2 i ) 2 2 = 2 2 2 i = 2 ( i + 2 ) ,
2 H 2 n = H ( H 2 ) n = n ( H 2 ) 2 = 2 ( 1 + 2 n ) > 3 2 ( 1 + n ) already at n = 2 , since 2 5 = 2 2 16 > 3 27 = 3 3 .
Step: ( k + 1 ) H 2 n = H ( k H 2 ) n = n ( k H 2 ) 2 > L m 2 3 k ( 1 + 3 k ( 1 + 3 k ( 1 + 2 ) ) ) > 3 k 3 k 3 k 3 = 3 k + 1 ( 1 + n ) . □
Lemma 3.
For n 2 , H H ( H H n ) > 3 n 3 .
Proof. 
Lemma 1’s proof shows H H ( H H 2 ) = 2 6 > 3 2 3 . Now suppose m = n 1 2 . Then H H ( H H n ) = H H n H 2 = ( 1 + m ) H 2 H 2 = H ( m H 2 ) H 2 = H ( m H 2 ) 2 2 = 2 ( m H 2 ) 2 2 = m H 2 ( m H 2 2 ) 2 > L m 2 3 m ( 1 + 3 m ( 1 + 2 ) ) 2 > ( 3 m 3 m 3 ) 2 = 2 3 n 3 > 3 n 3 . □
Theorem 1.
Melo > G r a h a m s N u m b e r G ( 64 ) , where G ( n ) = n ( n 3 n 3 ) 4 .
Proof. 
Melo = J J = L m 1 2 6 ( H H ) 2 > L m 3 ( 2 6 / 2 ) ( n 3 n 3 ) 2 = ( 2 6 / 2 1 ) ( n 3 n 3 ) ( 3 2 3 ) > ( 2 6 / 2 1 ) ( n 3 n 3 ) 4 = G ( 2 6 / 2 1 ) > G ( 64 ) . □

8. Leaving Melo’s Number in the Dust

With 64 49 = 15 bits to spare, opportunities for vastly boosting Melo abound. Discord users 50_ft_lock and Sam found the following term that extends Melo’s H with an extra argument:
ω 218 = let   { 2 = λ f λ x . f ( f x ) ; A = λ a λ b λ c . c a b 2 ; T = λ y . y ( y A ) }   in   T T T
which desugars to lambda term
( λ T . T T T ) ( λ y . y ( y ( λ a λ b λ c . c a b ( λ f λ x . f ( f x ) ) ) ) )
in conventional notation, or
( λ 1 1 1 ) ( λ 1 ( 1 ( λ λ λ 1 3 2 ( λ λ 2 ( 2 1 ) ) ) ) )
in De Bruijn notation, with 61-bit encoding
01 00 01 01 10 10 10 00 01 10 01 10 00 00 00 01 01 01 10 1110 110 00 00 01 110 01 110 10 .
Illustrated below are Melo and ω 218 as so-called lambda diagrams [6].
Entropy 28 00494 i001
Let us first establish an analogue of Lemma 1:
Lemma 4.
T T T = 2 18 A 2 2 2 2 2 2 2 2 2 2 .
The following reduction was verified with the program symbolic.Blc featured in Section “Symbolic Lambda Calculus reduction” of my 2012 IOCCC entry [7].
Proof. 
T T T = T ( T A ) T = T ( A ( A A ) ) T = A ( A A ) ( A ( A A ) A ) T = T ( A A ) ( A ( A A ) A ) 2 = A A ( A A A ) ( A ( A A ) A ) 2 = A ( A A ) A A ( A A A ) 22 = A ( A A ) A 2 ( A A A ) 22 = 2 ( A A ) A 2 ( A A A ) 22 = A A ( A A A ) 2 ( A A A ) 22 = 2 A ( A A A ) 2 ( A A A ) 22 = A ( A ( A A A ) ) 2 ( A A A ) 22 = A A A ( A ( A A A ) ) 2222 = A ( A A A ) A A 22222 = A ( A A A ) A 2 22222 = 2 ( A A A ) A 222222 = A A A ( A A A A ) 222222 = A A A A A A 2222222 = A A A 2 A A 2222222 = 2 A A 2 A A 2222222 = A ( A A ) 2 A A 2222222 = A ( A A ) 2 2 A 2222222 = 2 ( A A ) 2 2 A 2222222 = A A ( A A 2 ) 2 A 2222222 = 2 A ( A A 2 ) 2 A 2222222 = A ( A ( A A 2 ) ) 2 A 2222222 = A ( A ( A A 2 ) ) 2 2 2222222 = 2 ( A ( A A 2 ) ) 2 22222222 = A ( A A 2 ) ( A ( A A 2 ) 2 ) 2 2222222 = 2 ( A A 2 ) ( A ( A A 2 ) 2 ) 22222222 = A A 2 ( A A 2 ( A ( A A 2 ) 2 ) ) 22222222 = A A 2 ( A ( A A 2 ) 2 ) A 2222222222 = A ( A A 2 ) 2 A 22 A 2222222222 = A ( A A 2 ) 2 2 22 A 2222222222 = 2 ( A A 2 ) 2 222 A 2222222222 = A A 2 ( A A 2 2 ) 222 A 2222222222 = A A 2 2 A 22222 A 2222222222 = 2 A 2 2 A 22222 A 2222222222 = A ( A 2 ) 2 A 22222 A 2222222222 = A ( A 2 ) 2 2 22222 A 2222222222 = 2 ( A 2 ) 2 222222 A 2222222222 = A 2 ( A 2 2 ) 2 22222 A 2222222222 = 2 2 ( A 2 2 ) 222222 A 2222222222 = 4 ( A 2 2 ) 2 22222 A 2222222222 = A 2 2 ( A 2 2 ( A 2 2 ( A 2 2 2 ) ) ) 22222 A 2222222222 = A 2 2 ( A 2 2 ( A 2 2 2 ) ) 22222222 A 2222222222 = A 2 2 ( A 2 2 2 ) 22222222222 A 2222222222 = A 2 2 2 22222222222222 A 2222222222 = 2 2 2 2 22222222222222 A 2222222222 = 2 18 A 2 2 2 2 2 2 2 2 2 2
These 2 18 iterations of A let us relate its magnitude to the Fast Growing Hierarchy, a family of ordinal indexed functions [ α ] from natural numbers to natural numbers.
Definition 1.
The (slightly accelerated) Fast Growing Hierarchy (FGH) below ω ω , mapping Church numerals to Church numerals, is defined as
  • [ 0 ] n = 2 n = n 2
  • [ α + 1 ] n = n 2 [ α ] 2 = A 2 [ α ] n
  • [ ω i + 1 ( α + 1 ) ] n = [ ω i + 1 α + ω i n ] 2
We deviated from the standard FGH’s [ 0 ] n = n + 1 and [ α + 1 ] n = n [ α ] n to make the following Lemma exact rather than a mere lower bound.
Lemma 5.
For k 0 , n 2 : ( k + 1 ) A 2 [ ω k α ] n = [ ω k ( α + 1 ) ] n .
Proof. 
Base k = 0 : ( 0 + 1 ) A 2 [ ω 0 α ] n = A 2 [ α ] n = n 2 [ α ] 2 = [ α + 1 ] n .
Step k > 0 : ( k + 1 ) A 2 [ ω k α ] n = A ( k A 2 ) [ ω k α ] n = n ( k A 2 ) [ ω k α ] 2 = [ ω k α + ω k 1 n ] 2 = [ ω k ( α + 1 ) ] n . □
Lemmas 4 and 5 give ω 218 = 2 18 A 2 [ 0 ] 2 2 2 2 2 2 2 2 = 2 2 2 2 2 2 2 ( [ ω 2 18 1 ] 2 ) . In comparison, Graham’s and Melo’s Numbers are known to be much smaller at around [ ω + 1 ] 64 and [ ω + 1 ] ( 2 6 ) respectively.

9. A Functional Busy Beaver

The λ -calculus analogue to BB is as follows.
Definition 2.
BB λ ( n ) = the maximum beta normal form size of any closed lambda term of size n.
This appears in the Online Encyclopedia of Integer Sequences (OEIS) as sequence A333479. Besides being simpler than BB, it has the advantage of using the standard unit of information theory, bits rather than states.
The much more fine-grained use of bits allows the first 36 values of BB λ to be currently known, versus only five values of BB.
As a Church numeral, term Melo implies that BB λ ( 49 ) 5 ( Melo s   Number ) + 6 , and ω 218 implies a similar lower bound on BB λ ( 61 ) .

10. BB Compared Bit-by-Bit to BB λ

The growth rates of the TM-based BB function and the lambda calculus-based BB λ may be compared by how quickly they are known to reach certain ordinal milestones in the Fast Growing Hierarchy. We informally say that some huge number N reaches ordinal α if α is the least ordinal whose corresponding natural number function [ α ] in the FGH is sufficiently fast growing to comfortably express an upper bound on N. This is to say that N is exceeded by [ α ] n for a moderately small value of n, while exceeding N with any [ α < α ] n would require a huge value of n itself.
Lambda terms for the sizes given below can be found at the bbchallenge webpage [8].
For Graham’s Number, at ordinal ω + 1 , we saw earlier that Melo’s 49 bits compares with 14 states, which take 14 × 2 × ( 2 + 4 ) = 168 bits to encode. If I lose my bet, then the comparison becomes rather closer at 49 vs. 70 bits.
For Goodstein’s function, at ordinal ϵ 0 , 111 bits [9] compares with 51 states [10] taking 51 × 2 × ( 2 + 6 ) = 816 bits.
The ϵ 0 growth term is actually obsoleted by a 100-bit [11] term, recently discovered by Patcail, that grows at the unfathomably larger Bucholz’ Ordinal, the catching point between the Slow Growing Hierarchy (SGH) and the FGH. As such, that term easily exceeds another famously large number, TREE(3).
For the limit of Bashicu Matrix System (BMS), at (presumed) ordinal PTO ( Z 2 ) , 331 bits [12] compares with 150 states [10] taking 150 × 2 × ( 2 + 8 ) = 3000 bits.
Finally, for Loader’s Number, at (presumed) ordinal PTO ( Z ω ) , 1850 bits [13] compares with 1015 states [14] taking 1015 × 2 × ( 2 + 10 ) = 24360 bits.
One reason for TMs taking many more bits to achieve comparable growth, especially at the larger milestones, is the extremely poor programmability of TMs. The λ -calculus, despite its similar bare bones nature, does not share this drawback. Modern high-level pure functional languages like Haskell are essentially just syntactically sugared λ -calculus, with programmer friendly features like Algebraic Data Types translating directly through Scott encodings. The “bruijn” programming language is an even thinner layer of syntactic sugar for the pure untyped lambda calculus, whose extensive standard library contains many datatypes and functions. It is this excellent programmability of the λ -calculus that facilitated the construction of highly optimized programs for BMS and Loader.
Because programming a Turing machine is so impossibly tedious, people have resorted to implementing higher-level languages like Not-Quite-Laconic for writing nontrivial programs, such as the TM that halts only upon finding an inconsistency in ZFC. The above 1015 state TM for exceeding Loader’s Number even includes a λ -calculus interpreter written in NQL in order to emulate the BB λ champion.

11. But Why Turing Machines?

In his paper [15] “The Busy Beaver Frontier”, Scott Aaronson poses and tries to answer this question:
For all their historic importance, haven’t Turing machines been completely superseded by better alternatives—whether stylized assembly languages or various codegolf languages or Lisp? As we’ll see, there is a reason why Turing machines were a slightly unfortunate choice for the Busy Beaver game: namely, the loss incurred when we encode a state transition table by a string of bits or vice versa.
He continues to point out two supposedly massive advantages that TMs have over alternatives, which we can assess for the case of the λ -calculus.

11.1. Interesting Behavior at Small Sizes

Aaronson continues:
because Turing machines have no “syntax” to speak of, but only graph structure, we immediately start seeing interesting behavior even with machines of only 3, 4, or 5 states, which are feasible to enumerate.
The number of uniquely behaving TMs with 5 states is 4 10 × 632700 = 663,434,035,200 (see OEIS sequence A107668), which is more than the number of closed lambda terms of size at most 52 bits (513,217,604,750). The latter exhibits just as much interesting behavior, so TMs hold little advantage here.

11.2. Ancient and Fixed Computational Model

Aaronson ends his answer with:
because the Turing machine model is so ancient and fixed, whatever emergent behavior we find in the Busy Beaver game, there can be no suspicion that we cheated by changing the model until we got the results we wanted.
The λ -calculus is slightly more ancient and arguably more fixed, without any of the TM’s choices: tape alphabet size, whether the tape head moves in every transition, halting and output convention, number of tapes or tape heads. Both TMs and the λ -calculus are maximally non-cheating, so again TMs hold little advantage here.
The only remaining advantage of BB over BB λ is the many decades of research behind, and publications about it.
Is BB λ then an ideal Busy Beaver function? Not quite. Andreev [16] rightly criticizes BB for being too dependent on the Turing machine model, with small changes in the model yielding different growth rates. Similarly, BB λ is too dependent on the lambda calculus and its binary encoding. Grounding a busy beaver in Algorithmic Information Theory (AIT) instead yields a more invariant approach.

12. Kolmogorov Complexity

The main object of study in AIT is the (plain) Kolmogorov complexity C ( x ) of a string x, defined as the length of a shortest description of x, i.e., a program that halts with output x. While that seems to define a different complexity measure for every possible programming language, the Invarariance theorem guarantees the existence of an additively optimal language L o p t , one that offers descriptions at most a constant longer than those in any other language: L c x : C L o p t ( x ) C L ( x ) + c .
Li and Vitányi’s standard reference [17] proves it in Theorem 2.1.1 for Turing machines with inputs delimited by blanks, and in Theorem 3.1.1 for self-delimiting machines, which lack a blank tape symbol and must therefore determine when to stop reading input bits based only on what bits have been read so far. It follows that different optimal languages yield complexities differing by at most a constant.
AIT typically proceeds with assuming an arbitrary but fixed optimal (also called universal) language, and then studying properties of C ( ) and its self-delimiting counterpart K ( ) expressed with undetermined O ( 1 ) constants. For example, the basic result that complexity of a binary string is, up to a constant, at most its length: C ( x ) l ( x ) + O ( 1 ) . None of these results need to be concerned with cheating, as any cheating benefits get absorbed by the O ( 1 ) terms.
I designed the Binary Lambda Calculus (BLC) programming language [5] to make Kolmogorov complexity more concrete, following in the footsteps of Gregory Chaitin [18] with his custom LISP languages. A BLC program consists of the binary encoding of a lambda term L, followed by arbitrary binary data s { 0 , 1 } * . For the data to be operated on, it must be represented as a lambda term itself, along with a choice of whether it is delimited. A bit b is represented as λ x 0 λ x 1 . x b , and a sequence is represented by nested pairing with the pairing function cons = λ x λ y λ z . z x y . The term representing s delimited by some delimiter term del is denoted ( s : d e l ) .
The Invariance theorem for BLC is proven with the universal lambda machine term U defined in Section 4.1 of [5], which satisfies U ( L ^ : N ) = L N for all terms N. By appropriate choice of input delimiter, one can thus concretely define the plain Kolmogorov complexity function and its self-delimiting counterpart:
K S ( x ) = min { l ( p ) | U ( p : nil ) = x }
K P ( x ) = min { l ( p ) | U ( p : Ω ) = x }
Here, nil = λ x λ y . y provides delimited input, while Ω = ( λ x . x x ) ( λ x . x x ) is a self-loop enforcing self-delimiting behavior.
We can now prove concrete theorems like K S ( x ) l ( x ) + 4 , where 4 is the size of the identity function λ x . x .

13. An Optimal Busy Beaver

The same notion of invariance/optimality can be applied to busy beavers. An optimal busy beaver BBopt should surpass any busy beaver function b b with at most a constant increase in program size:
b b c n : BB opt ( n + c ) b b ( n )
Just like any closed lambda term L defines a description language, so it defines a busy beaver. Let a self-delimiting halting L-program be any binary string s such that L ( s : Ω ) has a normal form but L ( s : Ω ) has no normal form for any proper prefix s of s. This means that L is “reading” all the bits of s before halting.
Definition 3.
For any closed lambda term L, define its corresponding busy beaver function as b b L ( n ) = the maximum normal form size of any halting self-delimiting L-program of length n (or 0 if there is none). Define BB λ 2 ( n ) = b b U .
Theorem 2.
BB λ 2 is optimal.
The proof is almost identical to the Invariance theorem for BLC.
Proof. 
Since U satisfies U ( L ^ : N ) = L N for all terms N, we get BB λ 2 ( n + l ( L ^ ) ) b b L ( n ) . □
BB λ 2 appears as sequence A361211 in the OEIS.

14. An Inverse Kolmogorov Complexity

Instead of Definition 3, one can simply define a busy beaver as an inverse of Kolmogorov complexity, B ( n ) = max { x N : C ( x ) n } , as Vereschagin et al. did in [19], and which Andreev followed in [16]. They also defined B B ( n ) as the maximal runtime of delimited programs of length at most n, and B P ( n ) as the maximal runtime of self-delimited programs of length at most n. Both papers study the asymptotic properties of these functions.
BB λ 2 is almost an inverse complexity. Consider the following variant whose definition resembles B ( ) :
Definition 4.
Let N F be the set of closed terms in normal form. BB λ 2 ( n ) = max { 0 } { l ( x ^ ) : x N F K P ( x ) n } .
Just like B ( ) , this function is necessarily nondecreasing. But BB λ 2 is not. For instance BB λ 2 ( 28 ) = BB λ ( 26 ) = 52 > BB λ 2 ( 29 ) = BB λ ( 27 ) = 44 .
Since BB λ 2 ( n ) is the maximum normal form size of terms with complexity at most n, it is the maximum over all n n of (the maximum normal form size of terms with a BLC program of size n ), with the latter being exactly BB λ 2 ( n ) . This proves
Theorem 3.
BB λ 2 ( n ) = max { B B λ 2 ( n ) : n n } ,
It makes sense to prefer the nondecreasing version for its nicer asymptotic properties, but for computing concrete Busy Beaver values, having more champions is to be preferred.

15. BB λ vs. BB λ 2

Since ( λ _ . t ) , applied to any binary data term, equals t, BB λ champions provide lower bounds for BB λ 2: for all n, BB λ 2 ( 2 + n ) B B λ ( n ) .
In BB λ 2 and BB λ ( n ) , we thus have a moderately simple optimal Busy Beaver function and a really simple one that closely approximates it for all the smaller values of n that we can hope to analyze.
In the coming years we can look forward to many more values of BB λ ( n ) being determined beyond the first 37. As with BB, this effort promises to generate an interesting set of open mathematical problems that challenge the limits of mathematical knowledge.

16. Conclusions

The largest number (currently known to be) representable in 64 bits without cheating is ω 218, which lower bounds both BB λ ( 61 ) and BB λ 2 ( 63 ) , with BB λ 2 being the first instance of a concretely defined optimal Busy Beaver.

Funding

This research received no external funding.

Data Availability Statement

Data are contained within the article.

Acknowledgments

Thanks to the editor and anonymous reviewers for helping with substantial improvement of the paper.

Conflicts of Interest

The author declares no conflicts of interest.

References

  1. Radó, T. On non-computable functions. Bell Syst. Tech. J. 1962, 3, 877–884. [Google Scholar] [CrossRef] [Scilit]
  2. The bbchallenge Collaboration; Blanchard, J.; Briggs, D.; Deka, K.; Fenner, N.; Forster, Y.; Georgiev, G.; House, M.L.; Hunter, R.; Kądziołka, M.; et al. Determination of the fifth Busy Beaver value. arXiv 2025, arXiv:2509.12337. [Google Scholar] [CrossRef] [Scilit]
  3. Church, A. A set of postulates for the foundation of logic. Ann. Math. 1932, 33, 346–366. [Google Scholar] [CrossRef] [Scilit]
  4. Code Golf. Available online: https://codegolf.stackexchange.com/ (accessed on 14 March 2026).
  5. Tromp, J. Binary Lambda Calculus and Combinatory Logic. In Randomness And Complexity, from Leibniz To Chaitin; Calude, C.S., Ed.; World Scientific Publishing Company: Singapore, 2008; pp. 237–260. [Google Scholar]
  6. Lambda Diagrams. Available online: https://tromp.github.io/cl/diagrams.html (accessed on 14 April 2026).
  7. 2012/Tromp—Most Functional. Available online: https://www.ioccc.org/2012/tromp/ (accessed on 14 April 2026).
  8. Busy Beaver for Lambda Calculus. Available online: https://wiki.bbchallenge.org/wiki/Busy_Beaver_for_lambda_calculus (accessed on 14 March 2026).
  9. BBE0.lam. Available online: https://github.com/tromp/AIT/blob/master/fast_growing_and_conjectures/BBE0.lam (accessed on 14 March 2026).
  10. Champions. Available online: https://wiki.bbchallenge.org/wiki/Champions (accessed on 14 March 2026).
  11. BO.lam. Available online: https://github.com/tromp/AIT/blob/master/fast_growing_and_conjectures/BO.lam (accessed on 14 March 2026).
  12. bms.lam. Available online: https://github.com/tromp/AIT/blob/master/fast_growing_and_conjectures/bms.lam (accessed on 14 March 2026).
  13. Binary Lambda Calculus: 1850 Bits. Available online: https://codegolf.stackexchange.com/questions/176966/golf-a-number-bigger-than-loaders-number/274634#274634 (accessed on 14 March 2026).
  14. Metamath-Turing-Machines. Available online: https://github.com/CatsAreFluffy/metamath-turing-machines/tree/master (accessed on 14 March 2026).
  15. Aaronson, S. The Busy Beaver Frontier. SIGACT News 2020, 3, 32–54. [Google Scholar] [CrossRef] [Scilit]
  16. Andreev, M. Busy Beavers and Kolmogorov complexity. arXiv 2016, arXiv:1703.05170. [Google Scholar]
  17. Li, M.; Vitányi, P. An Introduction to Kolmogorov Complexity and Its Applications, 3rd ed.; Springer: Berlin/Heidelberg, Germany, 2008; ISBN 978-0-387-49820-1. [Google Scholar]
  18. Chaitin, G. Algorithmic Information Theory, 1st ed.; Cambridge University Press: Cambridge, UK, 1987; p. 175. [Google Scholar]
  19. Vereshchagin, N.K.; Uspensky, V.A.; Shen, A. Kolmogorov Complexity and Algorithmic Randomness; American Mathematical Soc.: Providence, RI, USA, 2013; Available online: http://www.lirmm.fr/~ashen/kolmbook-eng.pdf (accessed on 16 March 2026).
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Article Metrics

Citations

Article Access Statistics

Multiple requests from the same IP address are counted as one view.