Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: Status report 2005.06.12

Author: Steven Edwards

Date: 21:16:17 06/11/05


Symbolic: Status report 2005.06.12

With the prospect of hosting Symbolic on an Apple Macintosh with an iAPX32 CPU,
I've revised the toolkit's compile time configuration preprocessor symbols to
allow for this, as well as allowing for running under Linux on a PowerPC.
Inside the ChessLisp interpreter, I deleted the old "platform" intrinsic and
added a "host-cpu" intrinsic along with a "host-os" intrinsic for supplying host
specific identification data to a Lisp program.

The configuration symbols really don't affect too much.  There is only one line
of PowerPC assembly language and one line of iAPX32 assembly language; these are
found in routines that support toolkit bitboard operations.  When used, there is
an overall 15% speed up in toolkit performance.  Of course, for the sake of
purity there is the option of specifying no specific host CPU data and so not to
use assembly language at all.  On a Macintosh, there is also a compile time
option to support voice synthesis that is not present on a typically configured
Linux host.

Within Symbolic's Lisp source, the host-os intrinsic is used but not the
host-cpu function.  The host OS is referenced only once in the Lisp, and that's
at Symbolic Lisp file load time where the Lisp load intrinsic constructs
absolute file pathnames.  I suppose I could eliminate this dependency as well,
but it's not a high priority item.

--------

I did a bit of clean-up work in the ChessLisp interpreter.  In its early days I
had included all of the common MacLisp predicates (e.g., null atom listp numberp
evenp  plusp) so that I could cut and paste textbook Lisp samples for testing.
But I prefer a more consistent and Scheme like style for predicate names (e.g.,
null? atom? list? number? even? plus?) and so these were also included.  Now
that the interpreter is much more mature, I've gone through its code and deleted
all the old style predicates.  The observed adage is not to do the same thing in
two places when it should be done in one place.

--------

The still-to-be-written KsExpPlayMove Lisp routine is called during the plan
exploration process when the current goal in the plan indicates that a specific
move is to be made.  However, it is possible that the given move may not be
legal or not fully specified (e.g., flags for checking, checkmating, notation
construction).  To handle this particular plan failure detection and to supply
any flags, I've added a new ChessLisp primitive function "LegalMove?".  It takes
a position and a move as operands.   It returns nil if the move is not legal,
else it returns a new atom representing the move with any flag bits added.

The related function for move synthesis is the new intrinsic "SynthMove".  It
takes five arguments: the from man, the from square, the to man, the to square,
and the move special case indicator.  For example:

  (SynthMove WhitePawn SqE2 VacantMan SqE4 RegularMove)

will return

  #<Move e4>

Currently there is no provision for manually adding move flags; this can be done
with the new LegalMove? function and also with the handy DecodeSAN instrinsic
when a position value is available.

--------

I'm still working on some of the details of the general transformation utilities
that perform plan elaboration.  One of the difficulties is that when a higher
level goal is transfromed to a lower level, the substitution is not always going
to be either a single goal or a chain of single goals.  It's more like a
fantastic tree surgery where an intermediate branch is removed and a whole new
set of replacement subtrees are grafted into its place; also, every subbranch of
the orignal has to be cloned and then attached to every terminal point in the
collection of replacements.  I hope to have this running in the next week or so.

--------

Let me thank everyone for their concern about my erratic ticker.  I was the
hospital for less than a day for the cardiac examination and it wasn't as
uncomfortable as I had thought it might be.  I don't yet have the full prognosis
but will find out more soon.  I do know that the Tc99 radioisotope (half life of
six hours) injections used for part of the imaging process does not make one
glow in the dark, but it does give one the runs.  I'll try to take it easy for a
while.

--------

More to come.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.