The Mathematica Journal
Departments
Feature Articles
Columns
New Products
New Publications
Classifieds
Calendar
News Bulletins
Mailbox
Letters
FAQ
Write Us
About the Journal
Staff and Contributors
Submissions
Subscriptions
Advertising
Back Issues
Home
Download this Issue

Introduction

Recent refinements of lazy narrowing calculi for solving equations over the domain of the terms lead to successful implementations that can be used as the starting point for developing a system based on equational reasoning. There are, however, many applications such as theorem proving and computational geometry where the expressive power of pure functional logic programming is not sufficient. These problems usually involve solving systems of constraint over various, like polynomial equations, differential equations, linear equations, and inequations. The CLP (Constraint Logic Programming) scheme proposed by Jaffar and Lassez [1] showed the possibility of integrating constraint solving capabilities over domains like reals, booleans, finite domains, and rational and infinite trees in logic programming languages. Notably, almost all of these languages have a sequential implementation. Our investigation showed that it is possible to refine a lazy narrowing calculus with inference rules for handling constraints, and to develop a model for solving the constraints in a distributed environment.

The system is called CFLP (Constraint Functional Logic Programming System) [2], and consists of a functional logic interpreter based on a higher-order lazy narrowing calculus and a number of constraint solvers that may run on different machines. The interpreter is implemented in Mathematica. The cooperation between interpreter and constraint solvers is coordinated by a constraint scheduler, which schedules the individual constraint solvers to handle the solving tasks generated by the interpreter.

The paper is structured as follows. First, we illustrate by example the system capabilities. Next, we describe the system architecture. The following subsections describe the three main components of the system: interpreter, scheduler, and constraint solvers. Finally, we draw some conclusions and directions of further research.


Copyright © 2001 Wolfram Media, Inc. All rights reserved.

[Article Index][Next Page]