Figaro: Yet Another Constraint Programming Library

Existing libraries and languages for nite domain constraint programming usually have depth-rst search (with branch and bound) built-in as the only search algorithm. Exceptions are the languages claire and Oz, which support the programming of diierent 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. Figaro is an experimentation platform being designed to study non-standard search algorithms, diierent memory policies for search (trailing vs copying), consistency algorithms, failure handling and support for modeling. 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.