At least ten years ago, William Dembski misunderstood the description of the Weasel program in Richard Dawkins' 1986 book The Blind Watchmaker. (Take it from an experienced teacher of computer science: Some mathematicians cannot think algorithmically.) Many people have tried to persuade him that there is only one reasonable reading in the context of a book on biological evolution. His response has been to ignore context, and to play up ambiguity in his attempts to save face.
Now Dembski reports that "Oxfordensis" emailed him two Weasel programs, claiming that Dawkins ran Weasel1 in preparing the book, and Weasel2 for a demonstration in a 1987 TV show based on the book. The programs accord well with Dembski's misconceptions, so he has posted gelatinous "analysis" leading to the conclusion that "unless further evidence is presented, ... the single-mutation algorithm implemented by WEASEL1 is the one used by Dawkins in TBW."
I will save for another day the details of how Dembski got himself speared by looking a gift weasel in the mouth. Suffice it to say that both programs are easy to model formally as Markov chains, and that I, unlike Dembski and his colleagues at the Evolutionary Informatics Lab, actually bothered to do the math. (Furthermore, I translated the Weasels from Pascal to C++, and cross-checked my models and programs.) Dawkins gives an example run in which the number of correct characters in the parent goes from 3 to 22 in 19 generations. Dembski is perfectly happy to say that this is what we would expect from Weasel1. In fact, the probability that the program improves the parent so quickly (as quickly as it possibly can) is just .037.
It is quite unlikely that Dawkins used Weasel1 in preparing his book. The probability that a Weasel program like that described in Wikipedia (200 offspring per generation, mutation rate of .05) goes from 3 to 12 correct characters in generations 1 to 10, and from 12 to 22 correct characters in generations 10 to 20, is in the range of .05 to .06. (I am working on a Markov model that will yield a precise probability.) The likelihood of the conventional Weasel program, though low, is greater than that of the apocryphal Weasel1.
We cannot regard "Oxfordensis" as a reliable source of information on the program(s) Dawkins used. Thus, even though 32% of Weasel2 runs obtain the target sentence as quickly as the run in the TV show does, we must worry about a hoax. I will have more to say later as to whether a conventional Weasel program is more likely than Weasel2 to yield the run in the TV show.
Markov model source code: main.cpp. Modify constants according to comments, compile, and run. IOU a LaTeX document explaining the math behind the code.
Output files: weasel1.txt, weasel1-TBW.txt, weasel2.txt [8 MB]. The long lines of numbers give the probabilities of having 0 characters correct, 1 character correct, ..., and 28 characters correct after the specified number of transitions. In the "TBW" output, the initial state corresponds to generation 1, not generation 0 as in the other outputs. Thus 9, 19, and 42 transitions yield the probability distributions for generations 10, 20, and 43, respectively.