FaCiLe: A Functional Constraint Library


La page d'accueil de FaCiLe est aussi disponible en français.


FaCiLe is a constraint programming library on integer and integer set finite domains written in OCaml. It offers all usual facilities to create and manipulate finite domain variables, arithmetic expressions and constraints (possibly non-linear), built-in global constraints (difference, cardinality, sorting etc.) and search and optimization goals. FaCiLe allows as well to build easily user-defined constraints and goals (including recursive ones), making pervasive use of OCaml higher-order functionals to provide a simple and flexible interface for the user. As FaCiLe is an OCaml library and not "yet another language", the user benefits from type inference and strong typing discipline, high level of abstraction, modules and objects system, as well as native code compilation efficiency, garbage collection and replay debugger, all features of OCaml (among many others) that allow to prototype and experiment quickly: modeling, data processing and interface are implemented with the same powerful and efficient language. For a more complete description, you may consult the preface and foreword of the online documentation.


FaCiLe is distributed under the terms of the GNU Lesser General Public License:

The FaCiLe distribution and documentation are available at:

Installation is described in the README file of the distribution and in the foreword. Documentation is also available online. Questions, bug reports, comments... are welcome and should be mailed to:


Some slides (in french) presenting FaCiLe are also available.

Last Update: