The partial evaluation of imperative programs using Prolog
Meta-programming in logic programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An Assertion Language for Constraint Logic Programs
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
Analysis of Imperative Programs through Analysis of Constraint Logic Programs
SAS '98 Proceedings of the 5th International Symposium on Static Analysis
More Precise Yet Efficient Type Inference for Logic Programs
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Abstract interpretation with specialized definitions
SAS'06 Proceedings of the 13th international conference on Static Analysis
Systematic generation of glass-box test cases for functional logic programs
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Improving the Decompilation of Java Bytecode to Prolog by Partial Evaluation
Electronic Notes in Theoretical Computer Science (ENTCS)
Data-flow testing of declarative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Type-Based Homeomorphic Embedding and Its Applications to Online Partial Evaluation
Logic-Based Program Synthesis and Transformation
A Flexible, (C)LP-Based Approach to the Analysis of Object-Oriented Programs
Logic-Based Program Synthesis and Transformation
Test Data Generation of Bytecode by CLP Partial Evaluation
Logic-Based Program Synthesis and Transformation
Decompilation of Java bytecode to Prolog by partial evaluation
Information and Software Technology
Turbo DiSL: partial evaluation for high-level bytecode instrumentation
TOOLS'12 Proceedings of the 50th international conference on Objects, Models, Components, Patterns
Hi-index | 0.00 |
State of the art analyzers in the Logic Programming (LP) paradigm are nowadays mature and sophisticated. They allow inferring a wide variety of global properties including termination, bounds on resource consumption, etc. The aim of this work is to automatically transfer the power of such analysis tools for LP to the analysis and verification of Java bytecode (jvml). In order to achieve our goal, we rely on well-known techniques for meta-programming and program specialization. More precisely, we propose to partially evaluate a jvml interpreter implemented in LP together with (an LP representation of) a jvml program and then analyze the residual program. Interestingly, at least for the examples we have studied, our approach produces very simple LP representations of the original jvml programs. This can be seen as a decompilation from jvml to high-level LP source. By reasoning about such residual programs, we can automatically prove in the CiaoPP system some non-trivial properties of jvml programs such as termination, run-time error freeness and infer bounds on its resource consumption. We are not aware of any other system which is able to verify such advanced properties of Java bytecode.