Thursday, October 1, 2009

Never look a gift weasel in the mouth

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.

Technical Details

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.


  1. Thank you, Tom. There is never enough of ridicule of William Dembski and Weasel. He just keeps digging his hole deeper.

  2. Thanks for the very nice debunking of Dembski's long-running nonsense. I hope you'll pass it on to the editors of the journal where he and Robert Marks recently published a paper repeating their incorrect assertions about Dawkins' algorithm.

    Looking at the two programs, it strikes me that neither follows the description in The Blind Watchmaker nor are they biologically realistic. The change to one and only one letter in each generation, rather than a (low) probability for each letter to change seems odd. When I coded directly from the book I saw nothing to indicate such a mutation mechanism.

    I look forward to more of your posts.

  3. 1. my first weasel worked the same way as Weasel1. Why? As I said elsewhere, it has a certain appeal for a mathematician - but less for a biologist, I suppose.
    2. my Markov models of the various weasel are programmed in R, but they fit your numbers :-)
    3.for Weasel1, I get an expected number of generations of ~47 (σ=11.7). At least this would fit the numbers of Dawkins book: 41, 64 and 43 generations
    4.the whole quest for the original weasel was bizarre: Fact is that the math of W. Dembski's and R. Mark's paper isn't applicable to Dawkins's algorithm - or weasel1. So, they weren't talking about it - contrary to W. Dembski's claim.

  4. weasel2 was definitely not described in the book: each generation exists from two elements, the parent and just one mutated child. It takes 2969 steps on average (σ = 959.2) - so 41, 64 and 43 generations just wouldn't happen...
    If it was used for the BBC clip, it was just a kind of background illumination.

  5. David vun Kannon,

    Glad you stopped by.

    There is never enough of ridicule of William Dembski and Weasel. He just keeps digging his hole deeper.

    Dembski also brings ridicule on himself with his refusal to acknowledge error in his formulations of the explanatory filter and complex specified information. His long-term treatment of the Weasel program as though it were an inkblot in a Rorschach test is downright surreal.

    BTW, I saw that you visited Brno, the place where Mendel did his pea-plant experiments. That's where I met Garry Greenwood, the coauthor of my book chapter critiquing ID, and the present editor-in-chief of the IEEE Transactions on Evolutionary Computation.

  6. Patrick,

    I saw your "More Weasling" page when someone linked to it from Uncommon Descent, as I recall. You did a nice job there.

    The damned Weasel really should be dead by now. I am jumping into the fracas at this point because it appears that Dembski is trying to stomp up a cloud of dust around his and Marks' false attribution of "partitioned search" to Dawkins in their IEEE article. Looking into my hazy crystal ball, I see Dembski and Marks claiming that there are many takes on the Weasel program, and that they did not deliberately misconstrue TBW in their article.

    I believe now that Dembski and Marks started out with the objective of pinning "information smuggling" on Dawkins. In other words, the "cultural war" was more important than honest scholarship. They could not analyze the active information of the actual algorithm in TBW, but evidently felt that partitioned search, which they could analyze, was "close enough."

    In my opinion, it was out-and-out academic dishonesty for Dembski and Marks to attribute partitioned search to Dawkins.

  7. DiEb,

    I'd have responded to the posts at your blog if I'd understood at the time how to log in. One thing that is quite strange about the Weasel programs, from anyone's perspective, is that "mutation" does not necessarily change the character. This is nothing but a bug in Weasel2, where there is no reason whatsoever to evaluate a perfect copy of the parent. In Weasel1, it decreases the probability of a decrease in fitness from one generation to the next, but slows convergence somewhat (set OUTCOMES = 26 in my program).

    I'm glad to hear that your results agree with mine (though I did check very carefully before posting). R is a better choice of language, but C++ seems to remain the lingua franca of programmers. Writing code for binomial coefficients, scalar exponentiation, and square-matrix exponentiation was kind of silly, but it took me very little time.

  8. The "god of the weasels" has Dembski under his protection. Dembski announced the publication of his paper while I was in the midst of packing for a move. What with moving and a new job, plus house-hunting, plus some other crisis-to-crisis time demanded, I've had but little time to devote to writing a formal response to Dembski and Marks to send in to the IEEE SM&C journal. I'm hoping to get some time this weekend to put in on it. So far, I've got a section put together on the sordid history of the "partitioned search == Dawkins' weasel" falsehood. In the current draft, this ends with:

    "This intentional and willful propagation by Dembski and Marks of a known inaccurate description of prior work is a subversion of the scientific process."

    I'm working to make it less accommodating in further drafts.

    I don't know whether it is better for we critics to separately submit manuscripts to IEEE SM&C, or if we should consider a collaboration to present one unified manuscript to them.

  9. It does seem that by now you're beating a dead weasel. I guess it's fun though, if you're not the weasel.

    Tom - I hope this is the first blog post of many from you.

  10. Bob O'H,

    I considered the title, "Die, Weasel, die!"

  11. Wes (and others),

    I've lined up contact information for the provosts at Dembski's and Marks' institutions, as well as the student newspaper at Baylor. We need to speak to them in terms of academic dishonesty, and the consequences students would suffer if they pulled similar stunts. I've had trouble figuring out where to go in the IEEE to complain about ethics violations by members, and have asked a fellow of the IEEE for advice.

    I'll post tomorrow whatever information I have, as well as my thoughts on the academic dishonesty in the article. It's not just partitioned search. The last two analyses are of heavily studied evolutionary algorithms, and I'm sure Bob Marks knew that.

    I hope to get your ideas on how to push the buttons of people with the power to call Dembski and Marks to account for their actions.

  12. I'm not sure the Baylor administration is interested in attempting to rein in Marks, and it is almost a certainty that SWBTS would happily cheer on Dembski in whatever scheme he told them was good. I think about the only options are to make clear to the IEEE SM&C journal that they've been used as an outlet for propaganda, and that it was done to them willfully and with full knowledge of the propagandistic purpose in mind.

  13. Hi Tom,

    You claim that you "bothered to do the math" of the Weasel programs. Can you please give me a link to a pdf file of your work? Because your link "main.cpp" is not working. I would be very interested in reading your paper as I did the math too. You can download my paper from