George Tsavdaris wrote:Crafty has no zugzwang detection.
Some progammers think speed is everything, so they will never do it right.
I'm surprised by this comment. I always thought about Crafty as an all-around program that knows all the tricks of Chess, and that it is just not the strongest around.
 
You are right that this position has nothing to do with zugzwang, and that Crafty has an impressive amount of chess knowledge.  But Bernhard still has a good point:  The main reason 
why Crafty isn't the strongest chess program around is that Bob cuts too many little corners in an attempt to squeeze out more speed.  Bob is probably the most talented and experienced programmer of us all, and if he spent a month or two concentrating on correctness rather than speed, I think Crafty would be second only to Rybka.
Here are three examples of the many unsound shortcuts Crafty makes in order to improve the speed (based on Crafty 20.14, the latest version I have).
Crafty's static exchange evaluator considers X-ray attacks, which is fine, but it also considers X-ray attacks 
thorugh kings, which is obviously incorrect.  For instance, in a position like this:
[d]4r3/4k3/4p3/4K3/6Q1/8/8/8 w - -
Crafty will evaluate the capture Qxe6 as losing, because of the line Qxe6 Kxe6 Kxe6 Rxe6.
In the quiescence search, Crafty allows to return the static evaluation as a stand pat score even when the side to move is in check.  This can happen even when the side to move is checkmated.  As a consequence, it can happen that Crafty is checkmated at the position at the end of the main line, without the program being aware of it.
Crafty uses a concept called "tropism" as a cheap surrogate for king safety.  It does not consider which enemy pieces attack the squares around the king, but only which pieces are located geometrically close to the king. This is a lot faster, but obviously less precise.
Each of these three examples are quite unimportant by themselves:  Fixing any one of the would probably be worth no more than a couple of Elo points.  But you can find hundreds of similar examples scattered around in the code.  I think fixing them all would make Crafty 20-30% slower, but 200-300 Elo points stronger.
Tord