Trustworthy Systems

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

Authors

Gerwin Klein and Tobias Nipkow

NICTA, Sydney, Australia
UNSW, Australia

Abstract

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 realism of the language and tractability and clarity of the 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 initialization 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, i.e. dataflow analyzer for the JVM; a correctness proof of the bytecode verifiers w.r.t. the type system; a compiler and a proof that it preseves semantics and well-typedness.

The emphasis of this work is not on particular language features but on providing a unified model of the source language, the virtual machine and the compiler. The whole development has been carried out in the theorem prover Isabelle/HOL.

BibTeX Entry

  @article{Klein_Nipkow_06,
    author           = {Gerwin Klein and Tobias Nipkow},
    doi              = {10.1145/1146811},
    journal          = {ACM Transactions on Programming Languages and Systems},
    number           = {4},
    pages            = {619--695},
    paperurl         = {https://trustworthy.systems/publications/papers/Klein_Nipkow_06.pdf},
    title            = {A machine-checked model for a {Java}-like language, virtual machine, and compiler},
    volume           = {28},
    year             = {2006}
  }

Download