Results 1 - 10
of
41
Constraint Logic Programming: A Survey
"... Constraint Logic Programming (CLP) is a merger of two declarative paradigms: constraint solving and logic programming. Although a relatively new field, CLP has progressed in several quite different directions. In particular, the early fundamental concepts have been adapted to better serve in differe ..."
Abstract
-
Cited by 704 (20 self)
- Add to MetaCart
Constraint Logic Programming (CLP) is a merger of two declarative paradigms: constraint solving and logic programming. Although a relatively new field, CLP has progressed in several quite different directions. In particular, the early fundamental concepts have been adapted to better serve in different areas of applications. In this survey of CLP, a primary goal is to give a systematic description of the major trends in terms of common fundamental concepts. The three main parts cover the theory, implementation issues, and programming for applications.
Logic program specialisation through partial deduction: Control issues
- THEORY AND PRACTICE OF LOGIC PROGRAMMING
, 2002
"... Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It ..."
Abstract
-
Cited by 46 (12 self)
- Add to MetaCart
Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It is achieved through a well-automated application of parts of the Burstall-Darlington unfold/fold transformation framework. The main challenge in developing systems is to design automatic control that ensures correctness, efficiency, and termination. This survey and tutorial presents the main developments in controlling partial deduction over the past 10 years and analyses their respective merits and shortcomings. It ends with an assessment of current achievements and sketches some remaining research challenges.
A Logic Programming View of CLP
- International Conference on Logic Programming
, 1993
"... We address the problem of lifting definitions, results, and even proofs for the theory of logic programming, so that they apply to constraint logic programming (CLP). We attempt to systematize this lifting, where it is possible, and delineate where it is not possible. We show that the Independence o ..."
Abstract
-
Cited by 44 (9 self)
- Add to MetaCart
We address the problem of lifting definitions, results, and even proofs for the theory of logic programming, so that they apply to constraint logic programming (CLP). We attempt to systematize this lifting, where it is possible, and delineate where it is not possible. We show that the Independence of Negated Constraints property of constraint domains is fundamental to several different aspects of constraint logic programming. This is a principal cause for the inability to lift some traditional logic programming results to constraint logic programming. 1 Introduction We address the problem of lifting definitions, results, and even proofs for the theory of logic programming, so that they apply to constraint logic programming (CLP). (In viewing the theory of constraint logic programming as lifted from the theory of logic programming, we are taking a logic programming view of CLP.) Several papers have dealt with this problem for specific results, mostly inspired by the CLP Scheme [10, 11...
Transformations of CLP Modules
- Theoretical Computer Science
, 1995
"... We propose a transformation system for Constraint Logic Programming (CLP) programs and modules. The framework is inspired by the one of Tamaki and Sato for pure logic programs [37]. However, the use of CLP allows us to introduce some new operations such as splitting and constraint replacement. We pr ..."
Abstract
-
Cited by 25 (6 self)
- Add to MetaCart
We propose a transformation system for Constraint Logic Programming (CLP) programs and modules. The framework is inspired by the one of Tamaki and Sato for pure logic programs [37]. However, the use of CLP allows us to introduce some new operations such as splitting and constraint replacement. We provide two sets of applicability conditions. The first one guarantees that the original and the transformed programs have the same computational behaviour, in terms of answer constraints. The second set contains more restrictive conditions that ensure compositionality: we prove that under these conditions the original and the transformed modules have the same answer constraints also when they are composed with other modules. This result is proved by first introducing a new formulation, in terms of trees, of a resultants semantics for CLP. As corollaries we obtain the correctness of both the modular and the non-modular system w.r.t. the least model semantics. AMS Subject Classification (1991)...
Independence in Constraint Logic Programs
, 1993
"... Studying independence of literals, variables, and substitutions has proven very useful in the context of logic programming (LP). Here we study independence in the broader context of constraint logic programming (CLP). We show that a naive extrapolation of the LP definitions of independence to CLP is ..."
Abstract
-
Cited by 25 (12 self)
- Add to MetaCart
Studying independence of literals, variables, and substitutions has proven very useful in the context of logic programming (LP). Here we study independence in the broader context of constraint logic programming (CLP). We show that a naive extrapolation of the LP definitions of independence to CLP is unsatisfactory (in fact, wrong) for two reasons. First, because interaction between variables through constraints is more complex than in the case of logic programming. Second, in order to ensure the efficiency of several optimizations not only must independence of the search space be considered, but also an orthogonal issue -- "independence of constraint solving." We clarify these issues by proposing various types of search independence and constraint solver independence, and show how they can be combined to allow different independence-related optimizations, from parallelism to intelligent backtracking. Sufficient conditions for independence which can be evaluated "a-priori" at run-time a...
Freeness Analysis in the Presence of Numerical Constraints
- In Tenth International Conference on Logic Programming
, 1993
"... This paper describes a novel application of abstract interpretation dealing with mixed systems of numerical and unification constraints. In general, the abstraction of such systems cannot be separated into two independent parts, since a program variable is often involved in both types of constraints ..."
Abstract
-
Cited by 12 (5 self)
- Add to MetaCart
This paper describes a novel application of abstract interpretation dealing with mixed systems of numerical and unification constraints. In general, the abstraction of such systems cannot be separated into two independent parts, since a program variable is often involved in both types of constraints. The proposed abstraction deals in an elegant way with the interaction between the two types of constraints. The abstract domain extends the notion of possible sharing information in the context of logic programs towards possible dependencies established by constraint systems. The usefulness of the information on possible dependencies between program variables is twofold: (1) it is used to derive definite freeness information needed for low-level optimisations; (2) it also allows to delay the addition of constraints in a computation -- i.e. high-level optimisation -- thus augmenting the opportunity for constraint specialisation. Coupled with results from other analyses, the derived information is highly valuable in the compilation of CLP programs to reduce the overhead of the general constraint solver.
An Assertion Language for Debugging of Constraint Logic Programs
- In Proceedings of the ILPS'97 Workshop on Tools and Environments for (Constraint) Logic Programming
, 1997
"... this document is to serve as a basis for the design of an assertion language which suffices for the purpose of debugging in the context of constraint logic programming (CLP) [15] languages, while remaining tractable. There is a clear trade-off between the expressive power of the language of assertio ..."
Abstract
-
Cited by 11 (7 self)
- Add to MetaCart
this document is to serve as a basis for the design of an assertion language which suffices for the purpose of debugging in the context of constraint logic programming (CLP) [15] languages, while remaining tractable. There is a clear trade-off between the expressive power of the language of assertions and the difficulty of dealing with it. The assertion language proposed is parametric w.r.t. the constraint domain and the particular CLP platform being used and thus can be used for any of them. For example, an instance of the assertion language we propose has been implemented in the CIAO system [12, 2]. Details can be found in [11].
Effectiveness of Optimizing Compilation for CLP(R)
- In Proceedings of the Joint International Conference and Symposium on Logic Programming
, 1996
"... Constraint Logic Programming (CLP) languages extend logic programming by allowing constraints from different domains such as real numbers or Boolean functions. They have proved to be ideal for expressing problems that require interactive mathematical modelling and complex combinatorial optimization ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
Constraint Logic Programming (CLP) languages extend logic programming by allowing constraints from different domains such as real numbers or Boolean functions. They have proved to be ideal for expressing problems that require interactive mathematical modelling and complex combinatorial optimization problems. However, CLP languages have mainly been considered as research systems, useful for rapid prototyping, but not really competitive with more conventional programming languages when performance is crucial. One promising approach to improving the performance of CLP systems is the use of powerful program optimizations to reduce the cost of constraint solving. We extend work in this area by describing a new optimizing compiler for the CLP language CLP(R). The compiler implements six powerful optimizations: reordering of constraints, bypass of the constraint solver, splitting and dead code elimination, removal of redundant constraints, removal of redundant variables, and specialization of...

