A type system for logic program
Journal of Logic Programming
Partial evaluation in logic programming
Journal of Logic Programming
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Tutorial on specialisation of logic programs
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Fast and precise regular approximations of logic programs
Proceedings of the eleventh international conference on Logic programming
Formal language, grammar and set-constraint-based program analysis by abstract interpretation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Program specialisation and abstract interpretation reconciled
JICSLP'98 Proceedings of the 1998 joint international conference and symposium on Logic programming
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Imperative Program Specialisation: An Approach Using CLP
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Global Control for Partial Deduction through Characteristic Atoms and Global Trees
Selected Papers from the Internaltional Seminar on Partial Evaluation
Regular Approximation of Computation Paths in Logic and Functional Languages
Selected Papers from the Internaltional Seminar on Partial Evaluation
Combining Abstract Interpretation and Partial Evaluation (Brief Overview)
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Advanced techniques for logic program specialisation
AI Communications
Program Derivation = Rules + Strategies
Computational Logic: Logic Programming and Beyond, Essays in Honour of Robert A. Kowalski, Part I
Abstract Conjunctive Partial Deduction Using Regular Types and Its Application to Model Checking
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
Abstract specialization and its applications
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
A framework for the integration of partial evaluation and abstract interpretation of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Demand analysis with partial predicates
Theory and Practice of Logic Programming
Decompilation of Java bytecode to Prolog by partial evaluation
Information and Software Technology
Solving planning problems by partial deduction
LPAR'00 Proceedings of the 7th international conference on Logic for programming and automated reasoning
Hi-index | 0.00 |
On-line partial evaluation algorithms include a generalisation step, which is needed to ensure termination. In partial evaluation of logic and functional programs, the usual generalisation operation applied to computation states is the most specific generalisation (msg) of expressions. This can cause loss of information, which is especially serious in programs whose computations first build some internal data structure, which is then used to control a subsequent phase of execution - a common pattern of computation. If the size of the intermediate data is unbounded at partial evaluation time then the msg will lose almost all information about its structure. Hence the second phase of computation cannot be effectively specialised.In this paper a generalisation based on regular approximations is presented. Regular approximations are recursive descriptions of term structure closely related to tree automata. A regular approximation of computation states can be built during partial evaluation. The critical point is that when generalisation is performed, the upper bound on regular descriptions can be combined with the msg, thus preserving structural information including recursively defined structure. The domain of regular approximations is infinite and hence a widening is incorporated in the generalisation to ensure termination. An algorithm for partial evaluation of logic programs, enhanced with regular approximations, along with some examples of its use will be presented.