(named for the British mathematician Bertrand Russell (1872- 1970))
Constraint language generator with rule-based specification; based on augmented term rewriting. Used to implement constraint languages. The user must explicitly specify the tree-search and the constraint propagation. Has a form of abstract data type as a first-class object
Constraint languages represent a new programming paradigm with applications in such areas as the simulation of physical systems, computer-aided design, VLSI, graphics, and typesetting. Constraint languages are declarative; a programmer specifies a desired goal, not a specific algorithm to accomplish that goal. As a result, constraint programs are easy to build and modify, and their nonprocedural nature makes them amenable for execution on parallel
This book is aimed at researchers investigating declarative programming languages and rewrite rule systems, and engineers interested in building useful systems using constraint-satisfaction techniques. It provides an introduction to the subject of constraint satisfaction, a survey of existing systems, and introduces a new technique that makes constraint-satisfaction systems easier to create and extend. A general-purpose specification language called Bertrand is defined that allows users to describe a constraint-satisfaction system using rules. This language uses a new inference mechanism called augmented term rewriting to execute the user's specification. Bertrand supports a rule-based programming methodology, and also includes a form of abstract data type. Using rules, a user can describe new objects and new constraint-satisfaction mechanisms. This book shows how existing constraint-satisfaction systems can be implemented using Bertrand, and gives examples of how to use Bertrand to solve algebraic word and computer-engineering problems, and problems in graphics involving computer-aided design, illustration, and mapping. It also gives a precise operational semantics for augmented term rewriting, and presents techniques for efficient execution, including interpretation using fast pattern matching, and compilation.
Preface, Constraint Programming Languages
(COurtesy of Primetime UNIX Freeware)