The 8000th Busy Beaver number eludes ZF set theory (2016)
scottaaronson.com
scottaaronson.com
This is a remarkable claim, given that we did encounter this program by random chance, and it only took about 10 billion years (the estimated age of the universe) give or take a few billion years.
As for the first replicator, we simply do not yet know how (or even when) that came about, though random chance does seem likely. So I guess if you add enough layers of "built the machine that..." then you do end up with pure randomness (probably). But I would conjecture that there's a lot less "informational distance" between the cosmos and the first replicator than there is between the first replicator and Adam Yedidia.
This was consciously aiming a gun at an explicitly-named remote target, ricocheting the bullet off an unprecedentedly-reasonable number of explicitly-chosen elements, and hitting the target.
Don't let semantics muddy the water about this achievement
The universe has produced things that basically must exist given the laws of physics (when certain chemicals exist together under certain conditions we know they will react in certain ways, etc).
We are one of those things, and the things we make are things that we are compelled to make by our very nature.
So it's not chance. Our universe as constructed necessarily gives rise to the things we see and experience.
Just because you have a random process choosing between outcomes A and B doesn't mean that there is a 50/50 chance you'll see either outcome.
For a related interesting result relating to this see the recent paper where they analysed the Drake equation using probability distributions.
Or perhaps this consists of (slight) evidence that favourable conditions for the evolution of intelligence are more common than we currently suspect.
This was not his first try. His other efforts all ended in "Poof".
But this effort yielded life that figured out the equations! So, the equations generated life smart enough to figure out the equations.
So, the equations were both (1) general enough to generate life and (2) simple enough that the generated life could figure out the equations.
IMHO, amazing juxtaposition!
Is this set of equations essentially the only possible set of equations with both (1) and (2)?
The more precise statement is that you'd never encounter this number by uniform sampling within the range of objects of (some reasonable choice of finite size)
If you mean evolution, yes. But nothing about the big bang for example makes it a "goal directed process".
(In fact even evolution only looks that way from hindsight -- there's not some end goal there either).
This distinction, between chance and goal-directed physical processes, is artificial, though.
It's artificial because it was produced by humans.
:-)
† or, rather, you'd have a vanishingly small probability of doing so
Does anyone know of any speed-optimized tests of ZFC currently running? I'd expect that they're not using Turing machines. . .
Statements like this make me suspicious that one day we will redefine the axioms of mathematics so that such a function is no longer considered “perfectly well-designed”. Just feels like it will lead to paradox, like the set of all sets which do not contain themselves. I am not a professional mathematician though ;-)
https://math.stackexchange.com/questions/90393/why-euclidean...
There isn't "a" mathematics; at this level there's lots of them, and you need to state which one you are using, which is why the title mentions ZF set theory by name. ZF is a very popular one, and is more-or-less the underpinnings of what most people learn in K-12 and even into college [1], but it is not the only one.
We can be confident about this because we can produce contradictions if some axiom set "claims" to be able to prove all of them and thereby prove the axiom set inconsistent.
[1]: I wouldn't say this is 100% true, but more because "school" mathematics simply accepts some contradictions and/or fuzziness in it in the interests of keeping it simple. For instance, in the probably-about-three-day intro to set theory you got in high school, Russel's Paradox ("the set of all sets that don't contain themselves") is probably best thought of as not so much being a paradox as simply ill-defined; school set theory isn't strong enough to hold up such a statement long enough for it to contradict itself, so to speak. If you take a good calculus course in high school you can also run up against some limitations of the somewhat informal definition of "real numbers" that you tend to get, but then you end up just sort of backing away, because the next step up in rigor from there is generally college-level-math-specialist (math major, comp sci masters, etc.)... even if a given student could handle it, it's not something we can ask for from our math teachers at scale.
[0] https://en.wikipedia.org/wiki/Constructivism_(mathematics)
Why did you say that the 6th busy beaver number "shall never be known"? The best refinement of the formal proof by Aaronson's student puts the 1919th value absolutely out of reach (per a link from HN user panic), but that's a ways away from 6...
I know some authors, I think including Martin Gardner and maybe Donald Knuth, have said that they don't necessarily expect humanity to establish the 6th busy beaver number with current mathematical methods, but "shall never be found" seems a bit too strong to me.
He then managed to test it on a simple statement about square numbers.
Sounds unimaginably complex.
How many people could help you write unit tests for such a thing?
I don't get this. You write "BB(10000)" and they write "BB(10000)+1". Why don't they win?
Yes, under the hypothesis they are innocent of computability theory. That just means they have no idea what "BB(10000)" means, but all they need to know for the biggest-number-naming-contest is that (1) it is a number, and (2) adding 1 to any number produces a bigger number.
I think that even little kids figure out #2 and will use it when confronted with a number they do not understand in such a contest. You might be able to challenge them on #1 and if they are young they might not realize that if their number is disqualified for not being a number then so is your number.
Or are we assuming you had the foresight to specify in the rules that players can only use numbers that they can personally explain, thus allowing you to use BB(10000) because of your familiarity with computability theory, but forbidding them from doing so because they only know it is something that you claim represents a big number?
(1) You don't know about the BB function.
(2) We put our money in the pot.
(3) Secretly you write down the digits of the largest number you can think of.
(4) Secretly I see what BB(10,000) is and write down its digits. Uh, we are able to write quickly and have a lot of paper!
(5) We show our numbers, and the person with the largest number wins.
From the article: > BB(5) ≥ 47,176,870 > BB(23) > Graham’s number[1]
See https://www.scottaaronson.com/writings/bignumbers.html .
So is BB(10000) computable or no? If not, does "greater than" still have meaning?
(And while "Aha: BB(10000) is NOT 5", one could make some function BBOBB(N) := BB(N)/BB(N-1), and maybe BBOBB(N) for whatever reason is 5 for some large N, but is not computable and thus can't be proven so. Or something like that. Which also takes some of the drama away).
Sure, although BB(3) is already larger than 5 and every BB number is much larger than the previous one, so the specific estimate of 5 is probably going to be more of an understatement than almost anything anyone has ever said. :-)
> (And while "Aha: BB(10000) is NOT 5", one could make some function BBOBB(N) := BB(N)/BB(N-1), and maybe BBOBB(N) for whatever reason is 5 for some large N, but is not computable and thus can't be proven so. Or something like that. Which also takes some of the drama away).
BBOBB(N) also grows faster than any computable function, and for N≥4, BB(N+1)>BB(N)². So also it's not going to be 5 for any large N.
Though really that's what (computable.bb)(n) already is, in a far more interesting fashion. So really, never mind this.
Incomputable but always 0 or 1.
Chaitin's Constants are not computable. They're some fraction (between 0 and 1) which is the probability of a randomly chosen program for some Turing equivalent system halting. This constant will vary depending on how the system works, but we can't compute it for any system at all for obvious reasons.
Any recommendations for books or youtube videos?
So it seems like this paper is about a very small Turing machine, and so seems very concrete, but it's also about very long-running behaviors that are likely to be indistinguishable from an infinite loop in practice, so it avoids any practical result?
The site is slow to load, probably from traffic, but it explicitly blocks the Internet Archive. Who does that?
User-agent: ia_archiver
Disallow: /At least, that's the only thing I could guess :/
The author kind of acknowledges this when he says: `Theoretical computer scientists might object that this is “merely a question of constants.”'. But then he brushes that aside with some irrelevant non-sequitur about the origin of life in our universe.
It's like if you found a zero-day exploit in Windows, typed up an implementation in QBasic, printed that out on size A4 paper (one-sided, double-spaced), and then held a press conference that "80 pages of code suffices to hijack Windows"
> Some people might wonder “why Turing machines,” as opposed to a more reasonable programming language like C or Python. Well, first of all, we needed a language that could address an unlimited amount of memory. Also, the BB function is traditionally defined in terms of Turing machines. But the most important issue is that we wanted there to be no suspicion whatsoever that our choice of programming language was artificially helping to make our machine small. And hopefully everyone can agree that one-tape, two-symbol Turing machines aren’t designed for anyone’s convenience!
The reason is precisely that C cannot "address an unlimited amount of memory", even if an unlimited amount were available. For more information, see:
https://cs.stackexchange.com/questions/60965/is-c-actually-t...
This is in contrast to languages such as Lisp and Prolog: Conceptually, they can reason about arbitrarily large structures such as lists and terms, and can faithfully model any Turing machine.
That, by itself, though gets us only as far as Push Down Automaton (PDA), not Universal Turing Machine.
If we regard the stack as the machine's tape, the problem is that the tape gets erased when the machine rewinds (terminations of scopes obliterate local variables).
The C language also describes an I/O facility: streams. Streams have no inherent bound on their length. If the functions `fgetpos` and `fsetpos` are not used, but only relative positioning, then the stdio stream gives us a tape that is infinite, in terms of language semantics.
If we use streams as an oracle, then we can represent an unbounded tape, and C together with such streams let us model any Turing machine. However, this is not sufficient to prove that C is Turing-complete: To show that (in this context), one has to express also the semantics of such streams within C! It is at this point that the mentioned limitation manifests itself with this approach.
C also has declarations and for loops. If you use them to build your Universal Turing Machine, why doesn't the same objection apply to those features? I mean: "but you're not expressing declarations or for loops in C, you're just invoking these ready-made feature by their convenient, ready-made syntax!"
This assumes facilities that are not prescribed by the C standard though, such as a data structure whose semantics cannot be expressed in C in general. This is a rather striking difference to other constructs such as declarations and for loops: If pressed, we could express their semantics within C while relying exclusively on features that are prescribed by the standard.
How to specify such a system with C remains unsolved though, unless you assume its existence and availability via streams in the first place. This is in contrast to the other languages I mentioned, where you can specify the semantics of an unbounded storage system via built-in mechanisms and data structures of these languages.
That's given by a conforming, hosted implementation of ISO C (the usual kind). You seem to have been writing about freestanding implementations. We are then severely restricted; there might not be a malloc.
C99 4. Conformance ¶6: "The two forms of conforming implementation are hosted and freestanding. A conforming hosted implementation shall accept any strictly conforming program. A conforming freestanding implementation shall accept any strictly conforming program that does not use complex types and in which the use of the features specified in the library clause (clause 7) is confined to the contents of the standard headers <float.h>, <iso646.h>, <limits.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, and <stdint.h>."
If we are talking hosted, then <stdio.h> streams have to be present as a required feature.
> you can specify the semantics of an unbounded storage system via built-in mechanisms and data structures of these languages.
Which language states that programs must be successfully processed by an implementation, regardless of the resources that they require? The next cons call in your Lisp image could fail. That's no different from a stream-related resource problem.
The thought experiment behind "can this programming language express Turing computation" requires us to imagine, for all languages, that the resource constraints don't exist. The question is whether there are some limitations in the language semantics which cannot be thus hand-waved away. Freestanding C (without streams) has those limitations in the abstract semantics; hosted C doesn't. The abstract semantics of streams is available, and if we imagine that to be free of platform-related resource limitation, then we are in the same league as the other languages that we have imagined to be free of platform-related resource limitations.
#deathtoturingmachines