I've had a lot of success answering questions like this by asking an LLM. It turns out they understand each other and do a great job explaining.
Here's a link for this paper:
https://claude.ai/share/81b1380d-ca03-4ecb-8475-8e0bb95ea87e
That said, functionally, they're more or less a restatement of the halting problem, essentially "if the halting problem was a sequence of numbers". Also see Godel's incompleteness. A bit mind-blowing that you have sequences of integers you can't "know" (i.e., compute or verify), but that's about it. There's no chance of this being useful in the system of mathematics we have today.
BB(10) > G > BB(5) = 47,176,870.Graham's number is not a sequence, so it doesn't matter that the BB sequence grows faster than any computable sequence.
Since f(n) is trivially computable, we know that BB(n) grows faster than f(n). It follows that there must be some n such that BB(n) > C.
> Since f(n) is trivially computable
That only is true if C is computable.
Would the following statement be correct?
"There is a turing machine that cannot be proven whether it will terminate or not. For any n we can construct a proof that it will run longer than n. But we cannot construct a proof that for any n it will run longer than n. Due to this particular turing machine, BB(k) cannot be determined for k large enough to admit that turing machine."
Source: https://wiki.bbchallenge.org/wiki/Logical_independence
There is a point where these values become uncomputable, but they still exist (for some definition of exist).
I guess this is the crux of the issue for me and what I'm struggling with. This does not seem obvious to me.
As a simple example, we know that BB(1000) <= BB(1001) (since you can encode the longest running 1000-TM with an extra, unused state as a 1001-TM) even though we will never know either of those values.
The argument that it grows faster than any computable function is similar in that it proves things without knowing concrete numbers. (I'd have to look up the details of the proof to say more)
Assume f(x) is computable and grows faster than BB(x). We can create a computable g(x) where g(x) > BB(x) for all x, by setting g(x) = f(x) + C for some suitable constant.
Now we create a computer program that does the following. 1. Get the size of the input program and compute g(n). 2. Run the input program for g(n) steps. 3. If it stopped, return true. If it's still running, return false.
This solves the halting problem. Since a computer program can't solve the halting problem, this program can't exist. Everything except "compute g(n)" is straightforward, so there must be no such function g, and no such function f.
There is also a proof that the function BB(n) (with the free argument n) is uncomputable. However, this alone doesn't mean that e.g. BB(6) (a function with no free parameter) is or isn't intuitively computable. Though if you allow cheating, which is the case for the conventional academic definition of "computability", every particular constant function (that is, without a free parameter) would be considered "computable". Though that definition doesn't mean it is intuitively computable, because if you cheat, you aren't really computing the result, you are just reporting something without having computed it.
Every BB(n) is trivially computable, since any integer is computable. So for every BB(n), there is a computable sequence that grows faster than the BB numbers through n (annoyingly, given the word "grows", this can just be the constant sequence of BB(n) + 1).
So for any given computable number, the fact that it's computable gives no intrinsic reason to believe it's smaller than BB(n) for any particular n.
Even for very small n you can create Turing machines where it's incredibly hard to prove that they halt: for n=25 you can create a Turing machine that stops only if the Goldbach conjecture is false.
Though that isn't enough to prove it's not computable, the point stands that if you could compute BB(n) for arbitrary n, you could run a Turing machine for BB(n)+1 steps and if it hasn't stopped yet then you know that the input corresponds to a machine that never halts. So it's impossible to write a program that computes BB(n) for arbitrary n, because doing so is equivalent to the halting problem.
And worse, there are some Turing machines where "proving the Turing machine stops" means "proving that a given set of axioms is consistent", where Gödel's incompleteness theorem says that it's impossible to build such a proof. So, that is how there is some n after which the busy beaver number is defined, but is not computable at all.
The busy beaver sequence is not computable (I am aware that somewhere around BB(700), you've encoded the consistency of ZFC). You cannot necessarily compute that BB(n) is a given number. But you can compute larger numbers. There is no such thing as integer that is too large to be computable.
I did slightly fuck up--the English language "every BB(n) is computable" is a bit ambiguous. What I should say is: "for all n, BB(n) is trivially computable, since it is a single integer".
It is not computable, because for high enough n you can't prove that you got the right integer.
And also you can prove that if a sequence a_n is always larger than BB(n) for some n, that sequence a_n is also not computable.
The busy beaver function is uncomputable. That is well understood. However, for any given n, there is a number BB(n). Since that number is an integer, it is computable, even though it is the value of an incomputable function applied to a particular n. In particular, for numbers > 5, we have no idea what that number is. But whatever number it is, that number is computable.
Look at the post that I was responding to. It made the bad inference that because Graham's Number is computable, it ought to be smaller than BB(10). That confuses computability of a given number with computability of a function.
for all n there is some natural number x such that BB(n) = x
x like all natural numbers is trivially computable.
But BB(n) as a function that you could run and _find_ x, is not computable in general, because it would entail solving the halting problem.
Consider TREE(3) -> https://www.youtube.com/watch?v=3P6DWAwwViU
Graham's Number is notable for being one of the first, being an actual relevant bound in an unrelated proof (not just the output of a function), of teaching people the Up Arrow Notation.
To me, BB(10), TREE(3) etc. being so large is only minorly more impressive than GG(1) where I define I define GG(x) as "Graham's Number + X"
I'd call it absolutely mind boggling, actually.
it's... not?
it is useful for understanding BB()
you can't have upper bound without breaking Turing and solving halting problem
> But second, out of all large numbers, does this one give any information? The fact in itself is useless.
yes, it gives info of "OMG BIG NUMBER I KNOW ABOUT, THAT'S SO COOL" quality, like all the rest of recreational mathematics :)
Graham's number is simply a nice checkpoint that invites everyone to learn more about function hierarchies
Not in general, no. But for a fixed n, you can. For example, people have settled the exact value of BB(5).
And this is a fine example of this.
I've been hearing stories of mathematicians who are developing a new found appreciation for LLMs by having them explain the other LLM's paper. I guess the paper has the necessary details but possibly not the best exposition.
EDIT:
Here's a link explaining this paper:
https://claude.ai/share/81b1380d-ca03-4ecb-8475-8e0bb95ea87e
How do I know when I read Claude's interpretation of the paper that it's not hallucinating.
And nowadays LLMs are the experts. So. It will explain it to you if you ask. And it does a very nice job. You'll probably need to lose the attitude, tho.