### How Do You Solve a Problem Like ?

Chaitin's work focuses on the problems of mathematical "truth" as a convenient fiction. There are infinitely many possible mathematical facts, but, according to Chaitin, the underlying relationships among them are impossible to establish. This isn't good news for anyone interested in a "theory of everything," since, if the foundation is built on cottage cheese, the tower is going to be a bit tippy at best. Even worse, Chaitin's results demonstrate that not only is there no structure to the foundation of mathematics, the foundation is in fact random. Bad news, reductionists!

In the end it all comes down to, well, the end: . Chaitin's constant, , is best thought of as the probability that a given program will halt when run on a universal Turing machine . This halting probability can be empirically explored, which is my favorite part of this whole enterprise. The idea of treating mathematics as an experimental science rather than just relying on a pseudo-philosophical (and some might even say dogmatic) footing is particularly exciting to me. Of course, I'm biased anyway, since I do experiments for a living, but that aside, empiricism seems to have a bit to offer to mathematics, especially in the domain Chaitin is interested in pursuing.

#### Chaitin's LISP

To provide some tools to explore his point, Chaitin gives us a slightly modified LISP interpreter--implemented in C, as a Java applet, and in Mathematica. The Mathematica implementation uses the kernel as a sort of batch processor, defining `run[]` as a function that takes an input file name, the contents of which are evaluated and an output file created.

To simplify input matters a bit, we can define the following function that will allow us to do our I/O directly from within Mathematica.

And here we run a simple expression.

Chaitin's LISP has all of the usual features, but it also includes a set of functions for exploring information, including `bits`, `read-bit`, `read-exp`, and `try`. Furthermore, as demonstrated above, constraining the built-in functions to have a fixed number of parameters allows for input in M-expression form, resulting in a serious reduction in the number of parentheses necessary.