An application of abstract interpretation of logic programs: occur check reduction
Proc. of the European symposium on programming on ESOP 86
LIPS on MIPS: results from Prolog compiler for a RISC
Logic programming
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
The benefits of global dataflow analysis for an optimizing Prolog compiler
Proceedings of the 1990 North American conference on Logic programming
Analysis of constraint logic programs
Proceedings of the 1990 North American conference on Logic programming
The CLP( R ) language and system
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract interpretation and application to logic programs
Journal of Logic Programming
Multiple specialization using minimal-function graph semantics
Journal of Logic Programming
Compile-time derivation of variable dependency using abstract interpretation
Journal of Logic Programming
An abstract machine for CLP(R)
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
The 3 R's of optimizing constraint logic programs: refinement, removal and reordering
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Experimental evaluation of a generic abstract interpretation algorithm for PROLOG
ACM Transactions on Programming Languages and Systems (TOPLAS)
Redundancy of variables in CLD R
ILPS '93 Proceedings of the 1993 international symposium on Logic programming
Implementation of multiple specialization in logic programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Global analysis of constraint logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
PPCP '94 Proceedings of the Second International Workshop on Principles and Practice of Constraint Programming
Abstract Specialization and Its Application to Program Parallelization
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
A Comparison of Three Occur-Check Analysers
SAS '96 Proceedings of the Third International Symposium on Static Analysis
An Optimizing Compiler for CLP(R)
CP '95 Proceedings of the First International Conference on Principles and Practice of Constraint Programming
Source to Source Optimizations of CLP($\Re_{Lin}$)
Source to Source Optimizations of CLP($\'Re_{Lin}$)
Incremental analysis of constraint logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Model for Inter-module Analysis and Optimizing Compilation
LOPSTR '00 Selected Papers form the 10th International Workshop on Logic Based Program Synthesis and Transformation
When do bounds and domain propagation lead to the same search space
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Flexible access control policy specification with constraint logic programming
ACM Transactions on Information and System Security (TISSEC)
Efficient groundness analysis in Prolog
Theory and Practice of Logic Programming
When do bounds and domain propagation lead to the same search space?
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Constraint Logic Programming (CLP) languages extend logic programming by allowing the use of constraints from different domains such as real numbers or Boolean functions. They have proved to be ideal for expressing problems that require interactive mathematical modeling and complex combinatorial optimization problems. However, CLP languages have mainly been considered as research systems, useful for rapid prototyping, by not really competitive with more conventional programming languages where efficiency is a more important consideration. 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, removal of redundant variables, and specialization of constraints which cannot fail. Each program optimization is designed to remove the overhead of constraint solving when possible and keep the number of constraints in the store as small as possible. We systematically evaluate the effectiveness of each optimization in isolation and in combination. Our empirical evaluation of the compiler verifies that optimizing compilation can be made efficient enough to allow compilation of real-world programs and that it is worth performing such compilation because it gives significant time and space performance improvements.