CFLP: a Mathematica Implementation of a Distributed Constraint System

Mircea Marin, Wolfgang Schreiner
Research Institute for Symbolic Computation (RISC-Linz), Johannes Kepler University, A-4040 Linz, Austria, mircea.marin@risc.uni-linz.ac.at, wolfgang.schreiner@risc.uni-linz.ac.at

Tetsuo Ida, Institute for Information Sciences and Electronics, University of Tsukuba, Tsukuba 305-8573, Japan,
ida@score.is.tsukuba.ac.jp

Abstract
The need for combining different solvers into a system that is able to process
constraints that can not be solved by a single solver is widely recognized. Of
particular interest is the design of a distributed system based on a flexible
architecture that supports an easy integration and cooperation of new constraint
solvers.

CFLP(Constraint Functional Logic Programming system) is a distributed software
system consisting of a functional logic interpreter running on one machine and
various specialized constraint solvers that may run on different machines in a
network environment. A scheduler running as a separate process serves to coordinate
the constraint solving processes.

The system is fully implemented in Mathematica 3.0 as a collection of packages
which extend the solving capabilities of a normal Mathematica session. The
functional logic interpreter is based on an extension of the calculi LNC (Lazy
Narrowing Calculus) and Higher-Order LNC, which are known to be sound and complete
for many equational theories of practical interest. Since Mathematica is based on a
higher order term rewriting evaluation strategy, the implementation of the calculus
is straightforwardly supported. The calculus was extended in two main directions:
* special inference rules for handling equational constraints over various domains
  were added,
* the capability to specify AND and OR parallelism.
A computational model for solving these constraints in a distributed manner was
designed and implemented. The communication among the system components is based on
the MathLink library.

The constraint solvers integrated in the current implementation are implemented
on top of the constraint solving libraries provided with Mathematica. It provides
an easy-to-use tool for solving problems in equational theories that can be
presented by conditional term rewriting systems. The user interface allows the user
to specify the configuration of the distributed system, to type in formulas in
mathematical notation, to design his own equational theory, and to examine the
evolution of the constraint solving process.

The system is currently under development in the frame of the joint project,
having as collaborators the institute RISC-Linz (Bruno Buchberger, Wolfgang
Schreiner, Hoon Hong, Mircea Marin) and SCORE (Tetsuo Ida, Aart Middeldorp). It is
available as a collection of Mathematica packages and notebooks that also represent
the documented code of CFLP.