A machine-checked model for a Java-like language, virtual machine, and compiler
Top Cited Papers
- 1 July 2006
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 28 (4) , 619-695
- https://doi.org/10.1145/1146809.1146811
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 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 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.Keywords
This publication has 24 references indexed in Scilit:
- Verified bytecode verification and type-certifying compilationThe Journal of Logic and Algebraic Programming, 2004
- Compiler verificationACM SIGSOFT Software Engineering Notes, 2003
- Verified bytecode verifiersTheoretical Computer Science, 2003
- Lightweight Bytecode VerificationJournal of Automated Reasoning, 2003
- Type-preserving compilation of Featherweight JavaACM Transactions on Programming Languages and Systems, 2002
- Formalizing the safety of Java, the Java virtual machine, and Java cardACM Computing Surveys, 2001
- Verified lightweight bytecode verificationConcurrency and Computation: Practice and Experience, 2001
- Featherweight JavaACM Transactions on Programming Languages and Systems, 2001
- Standard fixpoint iteration for Java bytecode verificationACM Transactions on Programming Languages and Systems, 2000
- A Syntactic Approach to Type SoundnessInformation and Computation, 1994