COSC5010: Formalizing the JVM in ACL2


Classroom: EN 2101
Time: TTh 1:20-2:35 PM
Textbooks: Kaufmann, M., P. Manolios, and J S. Moore. Computer Aided Reasoning: An Approach. 2002. Copies are available from the instructor.
Instructor: John Cowles (
Office Hours:
Web page:






Course Objectives

We will study a formal model of the Java Virtual Machine (JVM). The JVM is a stack-based, object-oriented, type-safe byte-code interpreter on which compiled Java programs are executed.

A ``formal model'' is a collection of mathematical formulas that describe precisely the functionality of (part of) the machine. The mathematical logic used to describe the machine is Pure Lisp. The subset of Lisp used is quite small (compared to all of Common Lisp).

This course is not about the Java programming language but the underlying byte-code machine.

The Java Virtual Machine Specification is available at

The subset of Lisp used is called ACL2. ACL2 is both a programming language in which you can model computer systems and a tool to help you prove properties of those models. ACL2 is described at