From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Symbolic

Viktor Vasnetsov - Sirin and Alkonost [1]

a chess playing program by Steven Edwards with the whiff of a real artificial intelligence inference engine incorporating pattern recognition, planning and an iterative search, able to explain move selection process live in natural language. The underlying Symbolic Toolkit is an advanced OO-approach, using a ChessLisp interpreter and C++ for low level stuff. Moves, positions, and many other types are organized in lists instead of fixed length arrays [2].

Tournament Play

Symbolic played various CCT Tournaments, ACCA Americas' Computer Chess Championships and ACCA World Computer Rapid Chess Championships.

Selected Games

WCRCC 2008, round 2, Buzz - Symbolic [3]

[Event "WCRCC 2008"]
[Site "Internet Chess Club"]
[Date "2008.06.21"]
[Round "2"]
[White "Buzz"]
[Black "Symbolic"]
[Result "0-1"]

1.d4 d5 2.c4 c6 3.Nc3 e6 4.Nf3 Nf6 5.e3 Nbd7 6.Bd3 dxc4 7.Bxc4 b5 8.Bd3 Bb7 
9.e4 b4 10.Na4 c5 11.e5 Nd5 12.Nxc5 Nxc5 13.dxc5 Bxc5 14.Qa4+ Kf8 15.O-O h6 
16.Bd2 Kg8 17.Qb5 Qb6 18.Rac1 Qxb5 19.Bxb5 Rc8 20.Rfe1 g5 21.Rc4 a6 22.Rec1 
Nc3 23.Bd7 Bxf2+ 24.Kxf2 Rxc4 25.bxc3 Bxf3 26.Kxf3 Kg7 27.cxb4 Rd4 28.Rc7 
Rxd2 29.Bxe6 Rf8 30.Bb3 Kg6 31.Rc6+ Kf5 32.Rxa6 g4+ 33.Ke3 Rxg2 34.Rxh6 Kxe5 
35.b5 f6 36.Kd3 f5 37.b6 f4 38.Rh5+ Kf6 39.Bd5 f3 40.b7 Rb2 41.a4 f2 42.Bg2 
Rxb7 43.Rb5 Re7 44.h3 Rd8+ 45.Kc4 Rc7+ 46.Kb4 Rd4+ 47.Ka5 Ra7+ 48.Kb6 Raxa4 
49.hxg4 Rxg4 50.Bh3 Rab4 51.Rxb4 Rxb4+ 52.Kc5 Rb1 53.Kd4 Re1 54.Kd3 Kg5 
55.Bf1 Rxf1 56.Ke2 Rd1 57.Kxf2 Kf4 58.Ke2 Rd7 59.Kf2 Rd2+ 60.Ke1 Ke3 61.Kf1 
Ra2 62.Kg1 Kf3 63.Kh1 Kg3 64.Kg1 Ra1# 0-1

Iterative Search

Steven Edwards on using goto and performing an Iterative Search [4]

Symbolic's search has no recursion. There is the one routine Node() which has a big switch statement with each case being a different phase. The routine's main loop hits the switch each time through until the current phase is PhaseExit. At the top of the loop is is single check of a volatile boolean which, if triggered, sets the phase to PhaseExit. There is no unwinding as there is nothing to unwind. There is nothing hidden on the stack to deconstruct as there is no recursion. The search can be paused, and it can also be stopped and restarted at any phase at any depth.
A lot of chess programmers still use a recursive search because they've copied it out of a textbook or from someone else's program. If they would take the time to learn about the alternative of no recursion, then they just might a more elegant -- and possibly faster -- program.  


Movepath enumerations (perft) generated by Symbolic for the Initial Position [5].

See also

Forum Posts






External Links

feat. Helmut Reinhardt, Albert Mangelsdorff, Hans Hammerschmid, Peter Trunk, Rudi Sehring


Up one level