The first step is to explain what a sequence of coverings An is. Well, a covering is an infinite set of subintervals of the unit interval, which we'll use to cover sets of reals in the unit interval. [The unit interval is the set of reals between zero and one.] And a computable or constructive formulation of this is as a LISP function (A n), a LISP expression which never halts and which generates and outputs using display an infinite set of bit strings α, β, γ, ...
Each of these bit strings is the prefix for a set of reals, all reals with binary expansions starting with α, β, γ, ... respectively:
And we'll prohibit these subintervals from overlapping, so that the bit strings generated by (A n) must be a prefix-free set. That condition on the bit strings α, β, γ, ... is equivalent to the geometrical constraint that the subintervals in the covering cannot overlap. The reason for this prefix-free set requirement, is that then it's easy to compute the measure μ{An} of the covering An.
That's defined to be the total length of all the subintervals in the covering, which is, since there's no overlap, simply equal to the sum of two raised to negative powers which are the sizes or lengths of all the generated prefixes. Thus
So, for example, if
then
Now what do we do with these parameterized coverings An?
Well, the first thing that Martin-Löf did was to define a set of measure zero, or null set, in a constructive way.
A set of measure zero is a set of reals, a subset of the unit interval with the property that we can cover it with coverings that are arbitrarily small. More precisely, Martin-Löf defines a set X to be of measure zero (constructively) if there is a computable sequence of coverings An all of which cover X, that is,
and with the property that
Finally, Martin-Löf defines a real x to be Martin-Löf random if it is not in any constructive null set. That is, x fails to be Martin-Löf random if and only if there is a computable sequence of coverings An which always contain x and with μ{An} ≤ 2−n. Note that since we represent subintervals of the unit interval via binary prefixes, x is in the covering An iff x is an extension of some prefix in An. In other words, we think of An both as a set of reals and as a set of bit strings.
This is a very natural statistical definition of a random real x. It just says that a real is random if it cannot be constructively pushed into an arbitrarily small piece of the measure space. And if a (suitably constructive) property is true with probability one, then a random real must have that property, for sure, not just with probability one. As we shall see in the next chapter, using Solovay randomness, constructive measure zero sets correspond to properties of x that are infinitely unlikely, like not having the same limiting relative frequency of 0's and 1's.
In fact, in this chapter I'll show you just how natural Martin-Löf's definition is: it's equivalent to mine! I'll break the proof into two parts.
First let me explain the proof, then I'll tell you the example that our software works its way through.
Let's suppose that the real number x is not Martin-Löf random. In other words, there is a computable sequence of coverings An which always contain x and with μ{An} ≤ 2−n.
From these An, we'll build a computer C, by generating a list of (program, size-of-output) requirements for C.
Let's start by noting that the following series converges and is in fact less than 1:
Note that no negative powers of two are repeated, and so this sum is less than ∑k = 1,2,3,... 2−k = 1. This will be our Kraft inequality ΩC ≤ 1, because our set of requirements consists precisely of all (output, size-of-program) pairs defined as follows:
So everything works, and x is in all of these An2, and therefore for each n ≥ 2 there are prefixes s of x for which HC(s) ≤ |s|−n, and x is not Chaitin random.
That completes the proof. Now what's the example that martin-lof.l works its way through?
The program martin-lof.l goes through the special case in which An is precisely the singleton set consisting of the n-bit string of n 1's. So the measure of An is precisely 2−n. And the list of requirements produced by martin-lof.l is
as it should be.
In fact, take a good look at what we've done. We started with the fact that the infinite binary sequence 11111... isn't Martin-Löf random, and from that we've shown that it isn't Chaitin random either, because
for all n ≥ 2. So this is a good example of the general idea.
Okay, now let's work in the opposite direction!
First let me explain the proof, then I'll tell you the example that our software works its way through.
Let's suppose that the infinite binary sequence r isn't Chaitin random. In other words, that for every k, for some n there is an n-bit prefix rn of r such that H(rn) ≤ n − k.
Now let's define a computable sequence of coverings Ak as follows: Ak covers all reals r having any n-bit prefix rn with H(rn) ≤ n − k.
In other words, Ak is the set of bit strings of any size that can be compressed by at least k bits using U. By hypothesis, r is in each of the Ak. What's the measure of Ak? Well, let's find out.
We saw in the first chapter of Part III that for an n-bit string β
In other words, there's a c such that (the probability that the complexity of an n-bit string is less than or equal to n + H(n) − k) is less than or equal to 2−k+c.
Substituting H(n)+k for k, and substituting rn, the first n bits of r, for β, gives us
Let's sum this over all positive integers n. That gives us
So the measure of our Ak is bounded by 2c−k instead of 2−k. But that's easy to fix. The sequence of coverings that we use to show that r isn't Martin-Löf random is actually Ak' = Ak+c, whose measure is bounded by 2−k, as it should be.
Hence a real r with prefixes whose complexity dips arbitrarily far below their length will be in all of the Ak' and hence will not be Martin-Löf random.
That completes the proof. Now what's the example that martin-lof2.l works its way through?
Well, we were supposed to generate an Ak' = Ak+c that covers all reals r having an n-bit prefix rn with H(rn) ≤ n − k − c for any n. Instead we just generate Ak, which covers all reals r having an n-bit prefix rn with HC(rn) ≤ n − k for any n. The case C = U is what we need to prove the theorem, but to test our software we've chosen instead a computer C(p) that doubles each bit in its program up to and including the first 1 bit. So, C(0i1) = 02i11, and n-bit programs turn into 2n-bit results.
The program martin-lof2.l generates a finite part of the infinite set A8, that is, of the set of strings s with HC(s) ≤ |s| − 8, the set of strings that can be compressed by at least 8 bits using C:
[[[[[
Show that a real r is Martin-Lof random
iff it is Chaitin random.
]]]]]
[First part: not M-L random ===> not Ch random]
[We create the following set of requirements]
[(output, size-of-program)]
[ (s, |s|-n) : s in A_{n^2}, n >= 2 ]
[Stage k>=0, look at all A_{n^2} n = 2 to 2+k for time k.]
[Then have to combine stage 0, stage 1,...]
[and eliminate duplicates]
[infinite computation that displays strings]
[in cover A_m with measure mu <= 1/2^m]
define (A m)
cdr cons
[test case, A_m = string of m 1's]
display base10-to-2 - ^ 2 m 1
nil
define (is-in? x l) [is x in the list l?]
if atom l false
if = x car l true
(is-in? x cdr l)
define (convert-to-requirements cover n) [display requirements]
if atom cover requirements [finished?]
let s car cover [get first string]
let cover cdr cover [get rest of strings]
let requirement
cons s cons - length s n nil [form (s, |s|-n)]
if (is-in? requirement requirements) [duplicate?]
[yes] (convert-to-requirements cover n)
[no] let requirements cons display requirement requirements
(convert-to-requirements cover n)
define (stage k)
if = k 4 stop! [[[stop infinite computation!!!]]]
let (loop i) [i = 0 to k]
if > i k (stage + k 1) [go to next stage]
let n + 2 i [n = 2 + i]
let expr cons cons "' cons A nil
cons * n n nil
let cover caddr try k expr nil [caddr = displays]
let requirements (convert-to-requirements cover n)
(loop + i 1) [bump i]
[initialize i]
(loop 0)
[to remove duplicates]
define requirements ()
[run it]
(stage 0)
http://www.cs.umaine.edu/~chaitin/ait/martin-lof.l http://www.cs.umaine.edu/~chaitin/ait/martin-lof.r http://www.cs.umaine.edu/~chaitin/ait/martin-lof2.l http://www.cs.umaine.edu/~chaitin/ait/martin-lof2.r http://www.cs.auckland.ac.nz/CDMTCS/chaitin/ait/martin-lof.l http://www.cs.auckland.ac.nz/CDMTCS/chaitin/ait/martin-lof.r http://www.cs.auckland.ac.nz/CDMTCS/chaitin/ait/martin-lof2.l http://www.cs.auckland.ac.nz/CDMTCS/chaitin/ait/martin-lof2.r
(make-requirements-from
(set-subtraction (stage + n 1)
(stage n)
)
)
If not, why not? If so, do it!