Java Program Verification via a JVM Deep Embedding in ACL2

In this paper, we show that one can “deep-embed” the Java bytecode language, a fairly complicated language with a rich semantics, into the first order logic of ACL2 by modeling a realistic JVM. We show that with proper support from a semi-automatic theorem prover in that logic, one can reason about the correctness of Java programs. This reasoning can be done in a direct and intuitive way without incurring the extra burden that has often been associated with hand proofs, or proofs that make use of less automated proof assistance. We present proofs for two simple Java programs as a showcase.

[1]  David von Oheimb,et al.  Mujava: embedding a programming language in a theorem prover , 1999 .

[2]  Tobias Nipkow Java Bytecode Verification , 2004, Journal of Automated Reasoning.

[3]  Mandayam K. Srivas,et al.  A Tutorial Introduction to PVS , 1998 .

[4]  Bart Jacobs,et al.  Java Program Verification via a Hoare Logic with Abrupt Termination , 2000, FASE.

[5]  Robert S. Boyer,et al.  Automated proofs of object code for a widely used microprocessor , 1996, JACM.

[6]  Egon Börger,et al.  Java and the Java Virtual Machine: Definition, Verification, Validation , 2001 .

[7]  Lawrence Charles Paulson,et al.  Isabelle: A Generic Theorem Prover , 1994 .

[8]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[9]  MooreRobert,et al.  Formal Models of Java at the JVM Level A Survey from the ACL2 Perspective , 2001 .

[10]  J. S. Moore,et al.  Inductive assertions and operational semantics , 2003, International Journal on Software Tools for Technology Transfer.

[11]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[12]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[13]  James Moore,et al.  Proving Theorems about Java and the JVM with ACL2 , 2002 .

[14]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[15]  Prof. Dr. Robert F. Stärk,et al.  Java and the Java Virtual Machine , 2001, Springer Berlin Heidelberg.

[16]  S. Griffis EDITOR , 1997, Journal of Navigation.

[17]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[18]  Hanbing Liu,et al.  Executable JVM model for analytical reasoning: A study , 2005, Sci. Comput. Program..