Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Partial evaluation in logic programming
Journal of Logic Programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
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
Incremental analysis of constraint logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Regular Tree Languages as an Abstract Domain in Program Specialisation
Higher-Order and Symbolic Computation
Partial Evaluation, Self-Application and Types
ICALP '90 Proceedings of the 17th International Colloquium on Automata, Languages and Programming
Logic program specialisation through partial deduction: Control issues
Theory and Practice of Logic Programming
Abstract interpretation with specialized definitions
SAS'06 Proceedings of the 13th international conference on Static Analysis
Non-leftmost unfolding in partial evaluation of logic programs with impure predicates
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
Efficient local unfolding with ancestor stacks for full prolog
LOPSTR'04 Proceedings of the 14th international conference on Logic Based Program Synthesis and Transformation
Verification of java bytecode using analysis and transformation of logic programs
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Fast Offline Partial Evaluation of Large Logic Programs
Logic-Based Program Synthesis and Transformation
Decompilation of Java bytecode to Prolog by partial evaluation
Information and Software Technology
Fast and accurate strong termination analysis with an application to partial evaluation
WFLP'09 Proceedings of the 18th international conference on Functional and Constraint Logic Programming
Hi-index | 0.00 |
The interpretative approach to compilation allows compiling programs by partially evaluating an interpreter w.r.t. a source program. This approach, though very attractive in principle, has not been widely applied in practice mainly because of the difficulty in finding a partial evaluation strategy which always obtain ''quality'' compiled programs. In spite of this, in recent work we have performed a proof of concept of that, at least for some examples, this approach can be applied to decompile Java bytecode into Prolog. This allows applying existing advanced tools for analysis of logic programs in order to verify Java bytecode. However, successful partial evaluation of an interpreter for (a realistic subset of) Java bytecode is a rather challenging problem. The aim of this work is to improve the performance of the decompilation process above in two respects. First, we would like to obtain quality decompiled programs, i.e., simple and small. We refer to this as the effectiveness of the decompilation. Second, we would like the decompilation process to be as efficient as possible, both in terms of time and memory usage, in order to scale up in practice. We refer to this as the efficiency of the decompilation. With this aim, we propose several techniques for improving the partial evaluation strategy. We argue that our experimental results show that we are able to improve significantly the efficiency and effectiveness of the decompilation process.