
Languages & Solvers



AKL

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 portbased communication, a novelty of AKL. It also provides assorted builtin agents, libraries, and other support.
Penny is a parallel implementation of AKL. It utilizes both and and orparallelism without user annotations. The Penny system is public available for research purposes. For more information send mail to Johan Montelius (jm@sics.se)).

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 PATRII 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 PATRII grammars, DCG grammars, Prolog, PrologII, 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 highlyinteractive, graphical, direct manipulation user interfaces significantly easier, including a prototypeinstance object model, constraints, highlevel 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 oneway 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 userinterface components, if desired.

BProlog

BProlog 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 WAMemulatorbased 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 canonicalform 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 finitedomain constraint solver with which constraint satisfaction problems can be specified declaratively but solved efficiently.

Bertrand

Bertrand (after Bertrand Russell) is the language developed by Wm Leler and described in his book "Constraint Programming Languages", AddisonWesley, 1988, 0201062437. 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 nonlinear real arithmetic constraints.
Source code is available from the web page.

Cassowary

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 oneway finite domain subsolver.

CHIP

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: CHIPC++, CHIPC and CHIP++/Prolog. CHIP V5
integrates symbolic constraints, syntactic constraints and highlevel
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 XPRESSMP Linear Programming engine from
DashOptimization is also available.

Choco

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

CLAIRE is a highlevel functional and objectoriented 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++ preprocessor because it generates humanreadable 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 resale. Inquiries should be made to caseau@dmi.ens.fr.

clp(Q,R)

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

CSPlab in Scheme

An implementation of various CSP algorithms in Scheme.

ECLiPSe

ECLiPSe is a software system for the costeffective 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 highlevel modelling and control language, interfaces to thirdparty solvers, an integrated development environment and interfaces for embedding into host environments.

EFC

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 nonlinear), builtin global constraints (difference, cardinality, sorting etc.) and search and optimization goals. FaCiLe allows as well to build easily userdefined constraints and goals (including recursive ones), making pervasive use of OCaml higherorder 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

Gödel is a declarative, generalpurpose programming language in the family of logic programming languages. It is a strongly typed language, the type system being based on manysorted logic with parametric polymorphism. It has a module system. Gödel supports infinite precision integers, infinite precision rationals, and also floatingpoint 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 metaprograms that do analysis, transformation, compilation, verification, debugging, and so on.

GNU Prolog

Prolog compiler with finite domain constraint solver.

ILOG OPL Studio

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

ILOG Solver

A powerful commercial constraintbased optimization engine from ILOG.

JaCoP

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 ConstraintSatisfaction Problems (CSPs). It contains the algorithms implemented by Peter Van Beek in CLIB 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 ftp://ftp.cert.fr/pub/verfaillie/ijcai95.ps ). 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 ftp://ftp.cert.fr/pub/verfaillie/rdsaaai96.ps , and several benchmark problems. The library is available at ftp://ftp.cert.fr/pub/lemaitre/LVCSP/ .

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, constraintbased inference, distributed computing, and humancomputer interfaces.
Oz is a concurrent constraint programming language designed for applications that require complex symbolic computations, organization into multiple agents, and soft realtime control.

NCL

NCL combines Boolean logic, integer constraints and set reasoning over finite domains. Concerning its syntax, NCL fully adopts mathematical notations and provides literatestyle solutions. Concerning constraint handling capability, logical and meta controls such as quantification, search strategy, logical switch, multicriteria 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.

Screamer

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).
