## Proving theorems about Java and the JVM with ACL2 (2003)

Venue: | Models, Algebras and Logic of Engineering Software |

Citations: | 18 - 9 self |

### BibTeX

@INPROCEEDINGS{Moore03provingtheorems,

author = {J Strother Moore},

title = {Proving theorems about Java and the JVM with ACL2},

booktitle = {Models, Algebras and Logic of Engineering Software},

year = {2003},

pages = {227--290},

publisher = {IOS Press}

}

### OpenURL

### Abstract

We describe a methodology for proving theorems mechanically about Java methods. The theorem prover used is the ACL2 system, an industrial-strength version of the Boyer-Moore theorem prover. An operational semantics for a substantial subset of the Java Virtual Machine (JVM) has been defined in ACL2. Theorems are proved about Java methods and classes by compiling them with javac and then proving the corresponding theorem about the JVM. Certain automatically applied strategies are implemented with rewrite rules (and other proof-guiding pragmas) in ACL2 “books” to control the theorem prover when operating on problems involving the JVM model. The Java Virtual Machine or JVM [27] is the basic abstraction Java [17] implementors are expected to respect. We speculate that the JVM is an appropriate level of abstraction at which to model Java programs with the intention of mechanically verifying their properties. The most complex features of the Java subset we handle – construction and initialization of new objects, synchronization, thread management, and virtual method invocation – are all supported directly and with full abstraction as single atomic instructions in the JVM. The complexity of verifying JVM bytecode program stems from the complexity of Java’s semantics, not