Nondeterministic Lisp as a Substrate for Constraint Logic Programming

We have implemented a comprehensive constraint-based programming language as an extension to COMMON LISP. This constraint package provides a unified framework for solving both numeric and non-numeric systems of constraints using a combination of local propagation techniques including binding propagation, Boolean constraint propagation, generalized forward checking, propagation of bounds, and unification. The backtracking facility of the nondeterministic dialect of COMMON LISP used to implement this constraint package acts as a general fallback constraint solving method mitigating the incompleteness of local propagation.