In this paper, we describe a programming language based on constraints. Unlike former approaches, its interpreter propagates sets of possible values (rather than single values) through a network of constraints. During the propagation process, the value sets are filtered to obtain consistent subsets, or new values are computed for the undetermined variables from the set of given variables.
Constraint relations can be described in several ways. Finite relations can be represented straightforwardly by enumerating their extensions. Infinite relations can be described intensionally by patterns. More complex relations can be represented by constraint networks and hierarchies of constraint networks. Several control strategics are provided which compute local consistency as well as globally consistent solutions.
It is sketched how to realize a compiler for the language, which optimizes constraint descriptions at definition time. As a result, combinatorical explosion can be reduced, depending on the number of variables used in a constraint description.
[1]
Eugene C. Freuder.
A Sufficient Condition for Backtrack-Free Search
,
1982,
JACM.
[2]
Hans W. Guesgen,et al.
Some Fundamental Properties of Local Constraint Propagation
,
1988,
Artif. Intell..
[3]
Hans W. Guesgen,et al.
Constraints in a Hybrid Knowledge Representation System
,
1987,
IJCAI.
[4]
Guy L. Steele,et al.
The definition and implementation of a computer programming language based on constraints
,
1980
.
[5]
Hans Werner Gusgen.
Consat: A System for Constraint Satisfaction
,
1989
.
[6]
H. Voss,et al.
Architectural Issues for Expert Systems in Real-Time Control
,
1988
.