Constraints Archive - Cork Constraint Computation Centre
4C Constraints Archive

JSP Page

Languages & Solvers


AKL (AGENTS Kernel Language) is a concurrent constraint programming language developed at the Swedish Institute of Computer Science (SICS). In AKL, computation is performed by agents interacting through stores of constraints. This notion accomodates multiple programming paradigms; in appropriate contexts, AKL agents may be thought of as processes, objects, functions, relations, or constraints. AGENTS is a system for programming in AKL. It provides a complete implementation of AKL with records, finite domain constraints (over integers), and port-based communication, a novelty of AKL. It also provides assorted built-in agents, libraries, and other support. Penny is a parallel implementation of AKL. It utilizes both and- and or-parallelism without user annotations. The Penny system is public available for research purposes. For more information send mail to Johan Montelius (

ALE : Attribute Logic Engine

ALE 2.0, a freeware system written in Prolog by Bob Carpenter and Gerald Penn, integrates phrase structure parsing and constraint logic programming with typed feature structures as terms. This generalizes both the feature structures of PATR-II and the terms of Prolog II to allow type inheritance and appropriateness specifications for features and values. Arbitrary constraints may be attached to types, and types may be declared as having extensional structural identity conditions. Grammars may also interleave unification steps with logic program goal calls (as can be done in DCGs), thus allowing parsing to be interleaved with other system components. While ALE was developed to handle HPSG grammars, it can also execute PATR-II grammars, DCG grammars, Prolog, Prolog-II, and LOGIN programs, etc. With suitable coding, it can also execute several aspects of LFG grammars.

Amulet and Garnet

Amulet is a user interface development environment for C++ and is portable across X11, Microsoft Windows 95 and NT, and the Macintosh. Amulet helps you create graphical, interactive user interfaces for your software. More than just another free virtual toolkit, Amulet includes many features specifically designed to make the creation of highly-interactive, graphical, direct manipulation user interfaces significantly easier, including a prototype-instance object model, constraints, high-level input handling including automatic undo, and a full set of widgets." Amulet is the successor to Garnet. GARNET The Garnet system is a fully functional user interface development environment and toolkit implemented on top of a comprehensive one-way constraint system. It is in CommonLisp for X/11. All widgets and other user interface elements are implemented using the constraint. The constraints are implemented as part of the object system, and the object system with constraints can be used independently of the user-interface components, if desired.


B-Prolog is a fast, portable, and robust Prolog implementation. It is based on a new abstract machine called ATOAM (yet Another matching Tree Oriented Abstract Machine) and is significantly faster than most WAM-emulator-based Prolog systems. It runs on SPARC, HP, PC running either MSDOS or Linux, and can be ported to other machines. Functionally, it is basically compatible with ISO standard for Prolog, but also provides several new facilities. It can compile canonical-form programs where input and output unifications are separated, and determinism is denoted explicitly. It provides a special data structure called state tables that can be used to represent graphs, simple and complex domains in constraint satisfaction problems, and situations in various combinatorial search problems. In addition, it includes a finite-domain constraint solver with which constraint satisfaction problems can be specified declaratively but solved efficiently.


Bertrand (after Bertrand Russell) is the language developed by Wm Leler and described in his book "Constraint Programming Languages", Addison-Wesley, 1988, 0-201-06243-7. Bertrand is available from Prime Time Freeware .

Brandeis Interval Arithmetic Constraint Solver

Brandeis Interval Arithmetic Constraint Solver
Tim Hickey has developed the Brandeis Interval Arithmetic Constraint Solver,an applet which runs under Netscape 3.0 or higher. The solver handles non-linear real arithmetic constraints. Source code is available from the web page.


Cassowary is an incremental constraint solving toolkit that efficiently solves systems of linear equalities and inequalities. Constraints may be either requirements or preferences. Client code specifies the constraints to be maintained, and the solver updates the constrained variables to have values that satisfy the constraints. Version 0.50 of the solving toolkit adds support for a one-way finite domain subsolver.


CHIP (Constraint Handling In Prolog) was originally developed at ECRC in Munich and has been extended by the same team at COSYTEC in Paris. CHIP V5 now relies on a constraint kernel written completely in C and is available under 3 versions: CHIP-C++, CHIP-C and CHIP++/Prolog. CHIP V5 integrates symbolic constraints, syntactic constraints and high-level global constraints (cumulative, diffn, cycle, sequence and others). The system is available with optional interfaces for X11 and NT graphics (XGIP), Oracle or Ingres database connections (QUIC), a C language interface (CLIC) and an embedded application interface (EMC). An interface with the XPRESS-MP Linear Programming engine from DashOptimization is also available.


The Choco constraint programming system defines a software architecture for variables domains, constraints, propagation and tree search and implements the basics of a constraint system. Choco is covered by a public licence supporting a liberal use for means of research as well as commercial applications.


CLAIRE is a high-level functional and object-oriented language with advanced rule processing capabilities. It is intended to allow the programmer to express complex algorithms with fewer lines and in an elegant and readable manner. CLAIRE was designed to implement constraint satisfaction systems that need to be enriched with techniques from operations research. Its most spectacular application has been a jobshop scheduling program that achieved new world records. CLAIRE is a complete programming system with an interpreter, a compiler and a set of tools (tracer, debugger, object inspector) that works both on the compiled and interpreted code. CLAIRE can also be used as a C++ pre-processor because it generates human-readable C++ code. The interpreter can serve as a query language because of the logic and set capabilities. CLAIRE is made available for anyone to use free of charge. The source code for the CLAIRE system (in CLAIRE) is provided so that each user can fully experiment with the language. Permission is only granted for use and not for re-sale. Inquiries should be made to


A solver for linear equations over rational or real valued variables.

CSPlab in Scheme

An implementation of various CSP algorithms in Scheme.


ECLiPSe is a software system for the cost-effective development and deployment of constraint programming applications, e.g. in the areas of planning, scheduling, resource allocation, timetabling, transport etc. It is also ideal for teaching most aspects of combinatorial problem solving, e.g. problem modelling, constraint programming, mathematical programming, and search techniques. It contains several constraint solver libraries, a high-level modelling and control language, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments.


C++ library of constraint satisfaction algorithms (with nogood mechanisms).

FaCiLe: A Functional Constraint Library

FaCiLe is a constraint programming library over integer finite domain 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.


Gödel is a declarative, general-purpose programming language in the family of logic programming languages. It is a strongly typed language, the type system being based on many-sorted logic with parametric polymorphism. It has a module system. Gödel supports infinite precision integers, infinite precision rationals, and also floating-point numbers. It can solve constraints over finite domains of integers and also linear rational constraints. It supports processing of finite sets. It also has a flexible computation rule and a pruning operator which generalises the commit of the concurrent logic programming languages. Considerable emphasis is placed on Gödel's meta- logical facilities which provide significant support for meta-programs that do analysis, transformation, compilation, verification, debugging, and so on.

GNU Prolog

Prolog compiler with finite domain constraint solver.


A commercial platform for developing programs to solve problems using ILOG's Scheduler, Solver or CPLEX.

ILOG Solver

A powerful commercial constraint-based optimization engine from ILOG.


JaCoP is a Java based Constraint Programming solver. It is available under open source license. Its primary focus lies on modeling power, intuitiveness and ease of use as well as efficiency. JaCoP is under continous development since 2001

Java Constraint Library (JCL)

The Java Constraint Library (JCL) was developed in the Artificial Intelligence laboratory at the Swiss Federal Institute of Technology in Lausanne, Switzerland. Its purpose is to provide application services related to binary and discrete Constraint-Satisfaction Problems (CSPs). It contains the algorithms implemented by Peter Van Beek in C-LIB plus some extensions. Now maintained by Marc Torrens.

KOALOG Constraint Solver

A constraint solver written in java.

Michel Lemaitre's Lisp library

Michel Lemaitre has written a Common Lisp library dedicated to the resolution of "Valued Constraint Satisfaction Problems" (for a description of VCSP, see ). The library has been designed with efficiency in mind. It includes Branch and Bound extensions of the Backtrack and Forward checking algorithm as well as the "Russian Doll Search" algorithm described in , and several benchmark problems. The library is available at .

Mozart / Oz

The Mozart Programming System is an advanced development platform for intelligent, distributed applications. The system is the result of a decade of research in programming language design and implementation, constraint-based inference, distributed computing, and human-computer interfaces.
Oz is a concurrent constraint programming language designed for applications that require complex symbolic computations, organization into multiple agents, and soft real-time control.


NCL combines Boolean logic, integer constraints and set reasoning over finite domains. Concerning its syntax, NCL fully adopts mathematical notations and provides literate-style solutions. Concerning constraint handling capability, logical and meta controls such as quantification, search strategy, logical switch, multi-criteria optimization, and meta expression are introduced in a natural and flexible fashion.

Peter van Beek's C library

Peter van Beek has written a set of constraint libraries for C.


An Constraint Library for Common Lisp.

SICStus Prolog

A version of Prolog which has Boolean, finite domain, real and CHR constraint libraries.

Tudor Hulubei's C++ CSP Library

The CSP Library consists of a set of classes that can be used to efficiently represent and solve Constraint Satisfaction Problems (CSPs).