OLD resolution with tabulation
Proceedings on Third international conference on logic programming
How to invent a prolog machine
New Generation Computing
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Specialisation of Prolog and FCP programs using abstract interpretation
New Generation Computing - Special Issue: Selected Papers from the Workshop on Partial Evaluation and Mixed
A finite presentation theorem for approximating logic programs
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical framework for the abstract interpretation of logic programs
Journal of Logic Programming
A type system for logic program
Journal of Logic Programming
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Compile-time derivation of variable dependency using 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
Specialising the other way around
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
Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Logic Program Specialisation: How To Be More Specific
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
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
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
A framework for the integration of partial evaluation and abstract interpretation of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Logic program specialisation through partial deduction: Control issues
Theory and Practice of Logic Programming
Improving the Decompilation of Java Bytecode to Prolog by Partial Evaluation
Electronic Notes in Theoretical Computer Science (ENTCS)
An Abstract Interpretation-based Approach to Mobile Code Safety
Electronic Notes in Theoretical Computer Science (ENTCS)
Convex hull abstractions in specialization of CLP programs
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
Abstract interpretation with specialized definitions
SAS'06 Proceedings of the 13th international conference on Static Analysis
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
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 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 that 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 subsequent phases of computation cannot be effectively specialised.In this paper the problem is tackled by introducing regular tree languages into a partial evaluation algorithm. A regular tree language is a set of terms defined by tree automata or tree grammars. In the algorithm, regular tree approximations of sets of terms encountered during partial evaluation are constructed. The critical point is that when generalisation is performed, the upper bound on regular tree languages can be combined with the msg, thus preserving recursive information about term structure. This approach also allows the specialisation of programs with respect to goals whose arguments range over regular tree languages.The algorithm is presented as an instance of Leuschel's framework for abstract specialisation of logic programs. This provides a generic algorithm parameterised by an abstract domain—regular trees in this case. The correctness requirements from his framework are established. The extension of the algorithm to propagate regular approximations of answers as well as calls is also presented, increasing the amount of specialisation that can be obtained. Finally a technique for increasing precision based on “wrapper functions” is introduced.