# Welcome to CaSPER

the friendly constraint solver :)

Also available in presentation modeā¦

**efficient,**

**extensible**and

**easy to understand**. It currently features:

- A clean implementation of the set of idioms proved useful for
constraint solving such as event-driven execution, callback scheduling,
garbage collection, trail-aware generic data structures, etc.
- Full control over many aspects of the solving process such as propagator scheduling, search strategies, low-level domain implementation selection, and more.
- Powerful interface for adding new constraints due to efficient domain delta information availability (information about what has changed in the variable's domains).
- Powerful interface for adding new reasoning domains.
- Constructs for modeling search available directly
in C++ (a la OPL).
- Builtin modules for finite domain variables, finite set domain variables, graph domain variables, generic (possibly real-valued) interval-based reasoning and for 3d space reasoning.
- A black-box solver for problems expressed in CSPXML.
- Competitive performance compared with other state-of-the-art solvers.

Disclaimer After a long development period, the project is finally becoming stable enough for general use. This said, there is still a lot of work to do, namely on improving robustness and documentation. You might consider using more mature and complete alternatives such as Gecode or ILOG Solver (comercial). |

## Download

CaSPER comes either packaged, or through the subversion version control system. The packaged distribution contains the subset of features which have been more exposed to testing, so it should be more stable. You can get it from here.

For using the version control system you have to install subversion or use one of the subversion plugins for eclipse. You can then download the current stable branch from the shell:

svn checkout http://proteina.di.fct.unl.pt/svn/casper/branches/0.1.x

or the main development branch which contains all the features (plus all the bugs):

svn checkout http://proteina.di.fct.unl.pt/svn/casper/trunk

If you are using the eclipse IDE, then this can be done using the menu command "File->New->Other->Project from SVN".

See Building and/or installing CaSPER for the next step.

## License

CaSPER is open source (Apache v2.0 license).

## Credits

The design and concepts that make this library are the product of the latest developments in the research field of Constraint Programming [mackworth85]. More specifically, we integrate original work [correia05,azevedo07,viegas07,krippahl02,perriquet07] with work from others on similar libraries such as ILOG Solver [puget94,puget95] or Gecode [gecode,shulte04,shulte06], and on related modeling languages such as OPL [hentenryck00].

All code is original except in the following cases:

- The code for the generalized arc consistent version of the distinct filter was taken from the Gecode library.
- The code for the bounds consistent version of the distinct filter was taken from an implementation of [ortiz03] available in http://ai.uwaterloo.ca/~vanbeek/software/.

Please see the corresponding source files for detailed authorship, license and copyright information. See also the AUTHORS file.