This directory contains domain theories for generating the legal moves
of chess. Six different encodings written in pure prolog are included.
The six encoding are briefly described below:
1) chess_flann_new: Written by flann@cs.orst.edu. Employs a geometric
representation for states, with each square designated by an X,Y
coordinate and square connectivity computed by vectors. Generates
legal moves by first generating peusdo moves then eliminating those
that result in the moving player being in check.
2) chess_flann_wyl: Written by flann@cs.orst.edu. Employs a relational
representation for states, with each square given a unique name and
square connectivity computed by an enumeration of connected relations.
Generates legal moves by first generating peusdo moves then eliminating
those that result in the moving player being in check.
3) chess_russell_wyl: Originally written by Stuart Russell in MRS,
translated into prolog by flann@cs.orst.edu. Employs a geometric
representation for states, with each square designated by an X,Y
coordinate and square connectivity computed by vectors. Generates
legal moves by determining whether the moving side is in check.
If the moving side is in check, moves are generated that destroy the
check threat. If the moving side is not in check, moves are generated
that do not create a check threat. Note that if the moving side
is in check from multiple threats then the domain theory generates
incorrect moves.
4) chess_vijay_1: Written by vijay@cs.orst.edu. Employs a relational
representation for states, with each square given a unique name and
square connectivity computed by an enumeration of connected relations.
Generates legal moves by first generating peusdo moves then eliminating
those that result in the moving player being in check.
5) chess_vijay_2: Written by vijay@cs.orst.edu. Employs a geometric
representation for states, with each square designated by an X,Y
coordinate and square connectivity computed by vectors. Generates
legal moves by first generating peusdo moves then eliminating those
that result in the moving player being in check.
6) chess_vijay_3: Written by vijay@cs.orst.edu. Employs a special linear
representation for states, with each square designated by a single number
and square connectivity computed by a single delta value. Generates
legal moves by first generating peusdo moves then eliminating those
that result in the moving player being in check.
Each domain theory includes a sample state called state1 that describes
the board position illustrated as Figure 4(d) in Flann and Dietterich,
"A study of explanation-based methods for inductive learning" in
Machine Learning, 4 187-226. See file test_domain_theories for an example
of loading and running the domain theories.
In addition to the domain theories, a file called support_code is
included that contains some useful prolog routines. One routine
takes a generic chess board description and a domain theory name, and
produces a prolog state description suitable for use with the given
domain theory. See file test_domain_theories for an example of
generating state descriptions.