Wolfram Library Archive

Courseware Demos MathSource Technical Notes
All Collections Articles Books Conference Proceedings

CFLP: a Mathematica Implementation of a Distributed Constraint System

Mircea Marin
Organization: Austrian Academy of Sciences
Department: Radon Institute for Computational Applied Mathematics
Wolfgang Schreiner
Organization: Johannes Kepler University
Department: Research Institute for Symbolic Computation (RISC-Linz)
Tetsuo Ida
Organization: University of Tsukuba
Department: Institute of Information Sciences and Electronics

1999 International Mathematica Symposium

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.

*Mathematics > Calculus and Analysis
*Wolfram Technology > Linking Technology > MathLink

CFLP, Constraint Functional Logic Programming, Distributed Constraint System, functional logic interpreter, Lazy Narrowing Calculus, LNC, higher order term rewriting, constraint solving process