The need for combining and making various constraint solvers cooperate is widely recognized. Such an integrated system would
allow solving problems that cannot be solved by a single solver.
CFLP (Constraint Functional Logic Programming System) is a distributed software system consisting of a functional logic programming interpreter running on one
machine and a number of constraint-solving engines running on other machines. The interpreter is based on a deterministic
version of a lazy narrowing calculus which was extended in two main directions: (a) the possibility to specify explicit OR-parallelism,
and (b) the possibility to specify constraints over various domains. The OR-parallel features of the interpreter allow the
decomposition of the solution space into different subspaces denoted by various sets of constraints; the individual sets are
solved by different constraint-solving engines in parallel and joined together to form the total solution set. This allows
the user to investigate problems with large solution spaces using the computational power available in large computer networks.
The CFLP system is written entirely in Mathematica and uses the MathLink protocol for interprocess communication. The current implementation can solve problems expressable in functional logic and
involving constraints such as systems of linear, polynomial, and differential equations, and equations with invertible functions.