YACS version 0.1.1
==================

Copyright (C) 2005 by Wolfgang Runte (woru@users.sourceforge.net)

YACS is licensed under the GNU LGPL (Lesser General Public License),
see copyright notice below.


What is YACS?
-------------

YACS ("Yet Another Constraint Solver") is a Java library and an
object-oriented framework for constraint solvers. It supports
propagating and solving of constraint satisfaction problems with
finite and infinite domains (discrete values and real intervals).


Features:
---------

YACS is a Java library for propagating and solving constraint
satisfaction problems (CSPs). The name "YACS" is an abbreviation for
"Yet Another Constraint Solver".

In artificial intelligence a CSP is the formal description of a
constraint problem. YACS is an object-oriented framework for so called
constraint solvers. A constraint solver contains algorithms for
propagating and solving CSPs. The YACS framework includes already a
small library of constraint solving algorithms for establishing
consistency and the searching for solutions in CSPs.

The choice which constraint solvers has to be adopted to deal with a
specific CSP is done in YACS within a strategy based approach: Every
CSP is associated with a 3-phase constraint solving strategy. The
three phases of a constraint solving strategy are "preprocessing",
"consistency" and "search". During every phase multiple constraint
solvers may be called to process the CSP.

YACS is a hybrid constraint solving system. It includes the
environment and constraint solvers for classical finite domain CSPs
with discrete values, as well as for real interval CSPs with infinite
domains. YACS comes with a text interface allowing the convenient
specification of constraint problems.


Files:
------

This archive contains the following content:

dist/                   contains a JAR with the Java bytecode of YACS
doc/                    Javadoc API documentation
lib/                    required libraries
licenses/               licenses of YACS and other components
src/                    source code of YACS
CHANGELOG.TXT           version history of YACS
makeJavadoc.bat         generates the Javadoc documentation (Windows)
makeJavadoc.sh          same as the above for Linux
README.TXT              this readme file
run.bat                 starts the test program "YacsTester" (Windows)
run.sh                  same as the above for Linux
TODO.TXT                TODO list of YACS
yacs_strategies.dtd     XML DTD for constraint solving strategies
yacs_strategies.xml     some sample strategies
YacsTester.class        test/demonstration program

Note: The API documentation and the comments in the source code are
still in german language only!


Running the Test Program:
-------------------------

Running the test program "YacsTester" on Windows is done by simple
double clicking on the icon of "run.bat" or by executing it in a DOS
box.

On Linux OSes maybe before starting the executable flag of "run.sh"
has to be set, e.g. in a console:

> chmod a+x run.sh

The properly starting is done by executing "run.sh":

> ./run.sh


Requirements:
-------------

- Java 2 Platform, Standard Edition, version 1.4.2 (J2SE 1.4.2)

- YACS was developed and tested on Windows NT/2000 and Linux but
  should also run on any other OS supported by the Java platform.


Project Homepage:
-----------------

URL: http://sourceforge.net/projects/constraints


Credits:
--------

The YACS framework uses the following extern open source components
developed by the respectively named authors:

- JLex: A Lexical Analyzer Generator for Java
  Authors: Elliot Joel Berk and C. Scott Ananian
  URL: http://www.cs.princeton.edu/~appel/modern/java/JLex/

- CUP Parser Generator for Java
  Authors: Scott Hudson, Frank Flannery and C. Scott Ananian
  URL: http://www.cs.princeton.edu/~appel/modern/java/CUP/

- IAMath: a 100% Java, verifiable implementation of interval
  arithmetic operations
  Author: Timothy J. Hickey
  URL: http://interval.sourceforge.net/interval/index.html

- Log4J: a fast and flexible framework for logging application
  debugging messages
  Authors: Ceki Gulcu and various other authors from the Log4J project
  URL: http://logging.apache.org/log4j/


Copyright Notice:
-----------------

This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
