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.