TY - JOUR
T1 - The CLP(R) Language and System
AU - Jaffar, Joxan
AU - Michaylov, Spiro
AU - Stuckey, Peter J.
AU - Yap, Roland H.C.
PY - 1992/1/5
Y1 - 1992/1/5
N2 - The CLPR programming language is defined, its underlyingphilosophy and programming methodology are discussed, importantimplementation issues are explored in detail, and finally, a prototypeinterpreter is described. CLPR is designed to be an instance of the Constraint LogicProgramming Scheme, a family of rule-based constraint programminglanguages defined by Jaffar and Lassez. The domain of computation R of this particular instance is the algebraic structureconsisting of uninterpreted functors over real numbers. An importantproperty of CLP R is that the constraints are treated uniformly in thesense that they are used to specify the input parameters to a program,they are the only primitives used in the execution of a program, andthey are used to describe the output of a program. Implementation of a CLP language, and of CLPR in particular, raises new problems in the design of aconstraint-solver. For example, the constraint solver must be incremental in the sensethat solving additional constraints must not entail the resolving of oldconstraints. In our system, constraints are filtered through aninference engine, an engine/solver interface, an equation solver and aninequality solver. This sequence of modules reflects a classificationand prioritization of the classes of constraints. Modules solving higherpriority constraints are isolated from the complexities of modulessolving lower priority constraints. This multiple-phase solving ofconstraints, together with a set of associated algorithms, gives rise toa practical system.
AB - The CLPR programming language is defined, its underlyingphilosophy and programming methodology are discussed, importantimplementation issues are explored in detail, and finally, a prototypeinterpreter is described. CLPR is designed to be an instance of the Constraint LogicProgramming Scheme, a family of rule-based constraint programminglanguages defined by Jaffar and Lassez. The domain of computation R of this particular instance is the algebraic structureconsisting of uninterpreted functors over real numbers. An importantproperty of CLP R is that the constraints are treated uniformly in thesense that they are used to specify the input parameters to a program,they are the only primitives used in the execution of a program, andthey are used to describe the output of a program. Implementation of a CLP language, and of CLPR in particular, raises new problems in the design of aconstraint-solver. For example, the constraint solver must be incremental in the sensethat solving additional constraints must not entail the resolving of oldconstraints. In our system, constraints are filtered through aninference engine, an engine/solver interface, an equation solver and aninequality solver. This sequence of modules reflects a classificationand prioritization of the classes of constraints. Modules solving higherpriority constraints are isolated from the complexities of modulessolving lower priority constraints. This multiple-phase solving ofconstraints, together with a set of associated algorithms, gives rise toa practical system.
KW - constraints
KW - logic programming
UR - http://www.scopus.com/inward/record.url?scp=0026884407&partnerID=8YFLogxK
U2 - 10.1145/129393.129398
DO - 10.1145/129393.129398
M3 - Article
AN - SCOPUS:0026884407
SN - 0164-0925
VL - 14
SP - 339
EP - 395
JO - ACM Transactions on Programming Languages and Systems
JF - ACM Transactions on Programming Languages and Systems
IS - 3
ER -