A machine-checked model for a Java-like language, virtual machine, and compiler


We introduce Jinja, a Java-like programming language with a formal semantics designed to exhibit core features of the Java language architecture. Jinja is a compromise between the realism of the language and the tractability and clarity of its formal semantics. The following aspects are formalised: a big and a small step operational semantics for Jinja and a proof of their equivalence, a type system and a definite initialisation analysis, a type safety proof of the small step semantics, a virtual machine (JVM), its operational semantics and its type system, a type safety proof for the JVM; a bytecode verifier, that is, a data flow analyser for the JVM, a correctness proof of the bytecode verifier with respect to the type system, and a compiler and a proof that it preserves semantics and well-typedness. The emphasis of this work is not on particular language features but on providing a <i>unified</i> model of the source language, the virtual machine, and the compiler. The whole development has been carried out in the theorem prover Isabelle/HOL.

DOI: 10.1145/1146809.1146811

Extracted Key Phrases

1 Figure or Table

Citations per Year

257 Citations

Semantic Scholar estimates that this publication has 257 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@article{Klein2006AMM, title={A machine-checked model for a Java-like language, virtual machine, and compiler}, author={Gerwin Klein and Tobias Nipkow}, journal={ACM Trans. Program. Lang. Syst.}, year={2006}, volume={28}, pages={619-695} }