Existing libraries and languages for finite domain constraint programming usually have depth-first search (with branch and bound)
built-in as the only search algorithm. Exceptions are the languages
CLAIRE and Oz, which support the programming of different search
algorithms through special purpose programming language
constructs. The goal of this work is to make abstractions for
programming search algorithms available in a language-independent
setting by using the concept of a room.
Figaro is an experimentation platform being designed to study
non-standard search algorithms, different memory policies for search
(trailing vs copying), consistency algorithms, failure handling and
support for modeling. Figaro is conceived as a C++ library providing
abstractions based on the concept of a room. This paper focuses on the
use and implementation of such abstractions for investigating
programmable search algorithms and memory policies in a C++ constraint
programming library.