Joined: 13 Mar 2006
Location: Mud, Bugs, and Taxes, NH, USA
|Post subject: Symbolic: Status Report 2007.05.25 Posted: Sat May 26, 2007 12:58 am
|Symbolic: Status Report 2007.05.25
Making progress two days in a row! Some kind of record for me, no doubt.
I finished the rewrite of the Lisp source for variation extension. The new code is more general in the sense that it can be potentially applied at any leaf node and not just the tail of the predicted variation. The motivational idea is that certain recognizers will properly stop an analysis along a non draw line in the main search and in at least some of these cases a full variation is wanted for a later display.
What are these recognizers? The assumption is that sufficiently strong human players can look at certain positions and can almost immediately say things like "that's a mate in two" or "that endgame is won for White". So, Symbolic has several ChessLisp primitives that mimic this behavior. Some of these built in predicates are:
Draw? MateIn1? LoseIn1? MateIn2? LoseIn2? MateIn3?
and an example non predicate:
TBProbe [tablebase access]
Symbolic can also quickly recognize that a position has only a single, non draw move available.
All of the above (and perhaps a few more in the future) are used in the new variation extension routines. Currently, only the predicted variation is eligible for extension treatment, although this is somewhat likely to change. Extending using tablebase knowledge is not very fast: it runs at only about twelve moves per second as it does it through the production system and that activates a lot of extra machinery. It would also be possible to extend using book knowledge (built in primitive BKProbe); I might add this later.
Authors of traditional A/B searchers could use a similar technique in their programs. I think Crafty already does this with respect towards tablebases.
More to come on the incremental updating for determining the best permissible untried mating threat.