Multiple specialization of logic programs with run-time tests
Logic programming
Can logic programming execute as fast as imperative programming?
Can logic programming execute as fast as imperative programming?
Abstract interpretation and application to logic programs
Journal of Logic Programming
Compiling dataflow analysis of logic programs
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Global flow analysis as a practical compilation tool
Journal of Logic Programming
Proceedings of the eleventh international conference 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
Abstract interpretation and low-level code optimization
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Warren's Abstract Machine: A Tutorial Reconstruction
Warren's Abstract Machine: A Tutorial Reconstruction
Multiple Specialization of WAM Code
PADL '99 Proceedings of the First International Workshop on Practical Aspects of Declarative Languages
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
Hi-index | 0.00 |
The abstract interpretation framework has been used mainly in the global analysis of programs. Most often also, this interpretation is applied to the source Prolog program. In this paper we present an abstract interpretation of more local nature, and applied to the intermediate code (WAM). The purpose of obtaining a more efficient specialized version of the program remains the same as in global analysis approaches. Our specialization is multiple, meaning that we generate a different version for each entry pattern detected by analysis. This poly-variant unfolding of predicates allows the local (predicate level) analysis to propagate inter-procedurally relevant information. Besides time and complexity reduction of local versus global analysis, our approach is suited for goal-independent specialization, and for the partial selection of predicates to specialize. The evaluation of this more general specialization of programs in a full compiler shows that it is an alternative to global and goal-dependent methods.