Verification of java bytecode using analysis and transformation of logic programs
Elvira Albert,Miguel Gómez-Zamalloa,Laurent Hubert,Germán Puebla +3 more
- 14 Jan 2007
- pp 124-139
TL;DR: In this article, the authors propose to partially evaluate a jvml interpreter implemented in LP together with (an LP representation of) a JVM program and then analyze the residual program.
read more
Abstract: 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.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Systematic generation of glass-box test cases for functional logic programs
Sebastian Fischer,Herbert Kuchen +1 more
- 14 Jul 2007
TL;DR: This work employs the narrowing-based execution mechanism of the functional logic programming language Curry to automatically generate a system of test cases for glass-box testing of Curry programs, and presents a novel coverage criterion for this programming paradigm.
Microservice Architecture Reconstruction and Visualization Techniques: A Review
01 Aug 2022
TL;DR: In this paper , a review of the existing technologies for static and dynamic architectural reconstruction and related tools adopted to visualize the reconstructed architecture is presented, which can be useful both to practitioners and researchers that can further develop these methods to provide better support for architectural degradation.
45
Verifying Procedural Programs via Constrained Rewriting Induction
TL;DR: This article extends transformation methods based on integer term rewriting systems to handle arbitrary data types, global variables, function calls, and arrays, and to encode safety checks, and shows that it can automatically verify memory safety and prove correctness of realistic functions.
On Code Analysis Opportunities and Challenges for Enterprise Systems and Microservices
Tomas Cerny,Jan Svacina,Dipta Das,Vincent Bushong,Miroslav Bures,Pavel Tisnovsky,Karel Frajtak,Dongwan Shin,Jun Huang +8 more
TL;DR: This manuscript aims to challenge the mainstream research directions of code analysis and motivate for a transition towards code analysis of enterprise systems with interesting problems and opportunities and suggests one possible perspective of the problem area using aspect-oriented programming.
On Automatic Software Architecture Reconstruction of Microservice Applications
Andrew Walker,Ian Laird,Tomas Cerny +2 more
- 01 Jan 2021
TL;DR: In this article, the authors propose a method for automatically completing SAR of an MSA application through code analysis and demonstrate it on a case study on an existing microservice benchmark application.
31
References
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
Patrick Cousot,Radhia Cousot +1 more
- 01 Jan 1977
TL;DR: In this paper, the abstract interpretation of programs is used to describe computations in another universe of abstract objects, so that the results of abstract execution give some information on the actual computations.
•Book
The Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
- 19 Sep 1996
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
•Book
Partial evaluation and automatic program generation
Neil D. Jones,Carsten Krogh Gomard,Peter Sestoft +2 more
- 01 Jan 1993
TL;DR: This paper presents a guide to the literature the self-applicable scheme specializer, a partial evaluator for a subset of scheme for a first-order functional languages.
1.7K
The Coq proof assistant : reference manual, version 6.1
Bruno Barras,Samuel Boutin,Cristina Cornes,Judicaël Courant,Jean-Christophe Filliâtre,Eduardo Giménez,Hugo Herbelin,Gérard Huet,César A. Muñoz,Chetan Murthy,Catherine Parent,Christine Paulin-Mohring,Amokrane Saïbi,Benjamin Werner +13 more
- 01 Jan 1997
TL;DR: Coq V6.1 is a proof assistant based on a higher-order logic allowing powerful definitions of functions and is available by anonymous ftp at ftp.ens-lyon.fr/INRIA/Projects/coq/V 6.1.
1.2K
Partial Evaluation of Computation Process—AnApproach to a Compiler-Compiler
Yoshihiko Futamura
- 01 Dec 1999
TL;DR: A method to automatically generate an actual compiler from a formal description which is, in some sense, the partial evaluation of a computation process is described.
474
Related Papers (5)
Leonardo de Moura,Nikolaj Bjørner +1 more
- 29 Mar 2008
John W. Lloyd
- 01 Jan 1984
Neil D. Jones,Carsten Krogh Gomard,Peter Sestoft +2 more
- 01 Jan 1993
Elvira Albert,Puri Arenas,Samir Genaim,Germán Puebla,Damiano Zanardini +4 more
- 24 Mar 2007