Symbolic

Home * Engines * Symbolic



Symbolic, 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.

=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 [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 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.

=Perft= Movepath enumerations (perft) generated by Symbolic for the Initial Position.
 * Perft(10) 20 draft 9 Positions
 * Perft(10) 400 draft 8 Positions
 * Perft(11) 20 draft 10 Positions
 * Perft(11) 400 draft 9 Positions
 * Perft(12) 20 draft 11 Positions
 * Perft(12) 400 draft 10 Positions
 * Perft(13) 20 draft 12 Positions
 * Perft(13) 400 draft 11 Positions
 * Initial Position Summary

=See also=
 * CookieCat
 * Paradise
 * Pattern Recognition
 * Planner
 * Planning
 * Spector

=Forum Posts=

2003

 * Symbolic by Steven Edwards, CCC, December 02, 2003
 * Symbolic: progress report by Steven Edwards, CCC, December 31, 2003

2004

 * Symbolic: code example by Steven Edwards, CCC, January 22, 2004
 * Symbolic: movepath enumeration revisited by Steven Edwards, CCC, January 24, 2004 » Perft
 * Symbolic: progress report 2004.02.09
 * Comparison: Paradise and Symbolic by Steven Edwards, CCC, February 13, 2004 » Paradise
 * Symbolic: A doomed effort, or it's time to get my lead-lined jockstrap by Steven Edwards, CCC, February 16, 2004
 * Symbolic: ChessLisp (Part I) by Steven Edwards, CCC, February 17, 2004
 * Symbolic: Threads by Steven Edwards, CCC, February 18, 2004 » Thread
 * Symbolic: 40 goals by Steven Edwards, CCC, February 19, 2004
 * Symbolic: Intelligent annotations by Steven Edwards, CCC, February 20, 2004
 * Symbolic: The KBNK recognizer by Steven Edwards, CCC, February 23, 2004 » KBNK Endgame
 * Symbolic: KBNK merit sample code by Steven Edwards, CCC, February 24, 2004 » KBNK Endgame
 * Symbolic: Opening book move selection by Steven Edwards, CCC, March 01, 2004 » Opening Book
 * Symbolic: status report 2004.03.07 by Steven Edwards, CCC, March 03, 2004
 * Symbolic: Sample narratives by Steven Edwards, CCC, March 07, 2004
 * Symbolic: Lisp source: function Symbolic (Main.lsp) by Steven Edwards, CCC, March 03, 2004
 * Symbolic: Lisp source: function Select (Select.lsp) by Steven Edwards, CCC, March 08, 2004
 * Symbolic: Progress report 2004.03.13 by Steven Edwards, CCC, March 13, 2004
 * Symbolic: From bitboards to ideas by Steven Edwards, CCC, March 13, 2004 » Bitboards, Knight Forks
 * Symbolic: Search, planning, and a prospective by Steven Edwards, CCC, March 15, 2004 » Search, Planning
 * Symbolic: On patterns by Steven Edwards, CCC, March 16, 2004 » Pattern Recognition
 * Symbolic: Example outline of a search by Steven Edwards, CCC, March 17, 2004
 * Symbolic: Progress report 2004.03.20 by Steven Edwards, CCC, March 13, 2004
 * Symbolic: First benchmark result by Steven Edwards, CCC, March 20, 2004
 * Symbolic: mini-progress report 2004.03.25 by Steven Edwards, CCC, March 25, 2004
 * Symbolic: First pattern instance generation by Steven Edwards, CCC, March 27, 2004 » Pattern Recognition
 * Symbolic: Demo: a few more bootstrap patterns by Steven Edwards, CCC, March 29, 2004 » Pattern Recognition
 * Symbolic: Status report 2004.04.13 by Steven Edwards, CCC, April 13, 2004
 * Symbolic: Status report 2004.04.21 by Steven Edwards, CCC, April 21, 2004
 * Symbolic: Status report 2004.04.29 by Steven Edwards, CCC, April 29, 2004
 * Symbolic: Status report 2004.05.03 by Steven Edwards, CCC, May 03, 2004
 * Symbolic: Status report 2004.05.17 by Steven Edwards, CCC, May 17, 2004
 * Symbolic: Status report 2004.05.19 by Steven Edwards, CCC, May 19, 2004
 * Symbolic: Status report 2004.06.03 by Steven Edwards, CCC, June 03, 2004
 * Symbolic: Status report 2004.06.14 by Steven Edwards, CCC, June 14, 2004
 * Symbolic: Status report 2004.06.24 by Steven Edwards, CCC, June 24, 2004
 * Symbolic: Status report 2004.07.14 by Steven Edwards, CCC, July 14, 2004
 * Symbolic: Status report 2004.07.20 by Steven Edwards, CCC, July 20, 2004
 * Symbolic: Status report 2004.07.22 by Steven Edwards, CCC, July 22, 2004
 * Symbolic: Status report 2004.07.26 by Steven Edwards, CCC, July 26, 2004
 * Symbolic: Status report 2004.07.30 by Steven Edwards, CCC, July 30, 2004
 * Symbolic: Status report 2004.08.02 by Steven Edwards, CCC, August 02, 2004
 * Symbolic: Status report 2004.08.05 by Steven Edwards, CCC, August 05, 2004
 * Symbolic: Status report 2004.08.09 by Steven Edwards, CCC, August 09, 2004
 * Symbolic: Status report 2004.08.11 by Steven Edwards, CCC, August 11, 2004
 * Symbolic: Status report 2004.08.19 by Steven Edwards, CCC, August 19, 2004
 * Symbolic: Status report 2004.08.23 by Steven Edwards, CCC, August 23, 2004
 * Symbolic: Status report 2004.11.05 by Steven Edwards, CCC, November 05, 2004

2005

 * Symbolic: Status report 2005.02.14 by Steven Edwards, CCC, February 14, 2005
 * Symbolic: Status report 2005.02.24 by Steven Edwards, CCC, February 24, 2005
 * Symbolic: Status report 2005.03.03 by Steven Edwards, CCC, March 03, 2005
 * Symbolic: sample ChessLisp source: Tracker.lsp by Steven Edwards, CCC, March 03, 2005
 * Symbolic: Status report 2005.03.08 by Steven Edwards, CCC, March 08, 2005
 * Symbolic: Status report 2005.03.14 by Steven Edwards, CCC, March 14, 2005
 * Symbolic: Status report 2005.03.17 by Steven Edwards, CCC, March 17, 2005
 * Symbolic: Status report 2005.03.31 by Steven Edwards, CCC, March 31, 2005
 * Symbolic: Status report 2005.04.04 by Steven Edwards, CCC, April 04, 2005
 * Symbolic: Status report 2005.04.10 by Steven Edwards, CCC, April 10, 2005
 * Symbolic: Status report 2005.04.12 by Steven Edwards, CCC, April 12, 2005
 * Symbolic: Status report 2005.04.17 by Steven Edwards, CCC, April 17, 2005
 * Symbolic: Status report 2005.04.23 by Steven Edwards, CCC, April 23, 2005
 * Symbolic: Status report 2005.04.25 by Steven Edwards, CCC, April 25, 2005
 * Symbolic: Status report 2005.04.27 by Steven Edwards, CCC, April 27, 2005
 * Symbolic: Status report 2005.04.29 by Steven Edwards, CCC, April 29, 2005
 * Symbolic: Status report 2005.05.02 by Steven Edwards, CCC, May 02, 2005
 * Symbolic: Status report 2005.05.16 by Steven Edwards, CCC, May 16, 2005
 * Symbolic: Status report 2005.05.28 by Steven Edwards, CCC, May 28, 2005
 * Symbolic: Status report 2005.06.02 by Steven Edwards, CCC, June 02, 2005
 * Symbolic: Status report 2005.06.12 by Steven Edwards, CCC, June 12, 2005
 * Symbolic: Status report 2005.06.23 by Steven Edwards, CCC, June 23, 2005
 * Symbolic: Light at the end of the tunnel by Steven Edwards, CCC, July 01, 2005
 * Symbolic: Status report 2005.07.13 by Steven Edwards, CCC, July 13, 2005
 * Symbolic: Status report 2005.08.13 by Steven Edwards, CCC, August 13, 2005
 * Symbolic: Status report 2005.08.22 by Steven Edwards, CCC, August 22, 2005
 * Symbolic: Status report 2005.08.25 by Steven Edwards, CCC, August 25, 2005

2013

 * Re: goto thread (split) by Steven Edwards, CCC, August 01, 2013 » Iterative Search
 * Symbolic: I/O handling and sample logfile by Steven Edwards, CCC, August 14, 2013 » Logging
 * Steven's Symbolic engine's games by Julien Marcel, CCC, August 25, 2013

2015

 * Thread synchronization questions for experts by Steven Edwards, CCC, April 21, 2015 » [[Thread]
 * Revised source for the random game generator by Steven Edwards, CCC, May 12, 2015]
 * A colorful tale by Steven Edwards, CCC, May 19, 2015 » Logging
 * Bitboard database code samples by Steven Edwards, CCC, May 25, 2015 » Bitboards
 * Deep split perft by Steven Edwards, CCC, May 29, 2015 » Perft, Thread
 * Making Symbolic's opening book by Steven Edwards, CCC, July 16, 2015 » Opening Book
 * Ratio reduction by Steven Edwards, CCC, September 20, 2015 » Late Move Reductions
 * Symbolic vs tscp: 1,000 game match results by Steven Edwards, CCC, September 23, 2015 » TSCP
 * Symbolic vs tscp: more match results by Steven Edwards, CCC, September 28, 2015
 * Symbolic vs FairyMax: match results by Steven Edwards, CCC, October 01, 2015 » Fairy-Max
 * Symbolic vs KingSlayer by Steven Edwards, CCC, October 01, 2015 » KingSlayer
 * Position #70 from Fine's _Basic Chess Endings_ by Steven Edwards, CCC, October 05, 2015 » Lasker-Reichhelm Position

=External Links=
 * Symbolics from Wikipedia
 * Symbol (disambiguation) from Wikipedia
 * Symbol (formal) from Wikipedia
 * Symbol grounding from Wikipedia
 * Symbol (programming) from Wikipedia
 * Symbolic system from Wikipedia
 * Symbolism (arts) from Wikipedia
 * Religious symbolism from Wikipedia
 * Hans Koller - Back In Paradise, from Minor Meetings 1958, YouTube Video
 * feat. Helmut Reinhardt, Albert Mangelsdorff, Hans Hammerschmid, Peter Trunk, Rudi Sehring

=References=

Up one level