Proving Java Type Soundness

This chapter describes a machine checked proof of the type soundness of a subset of Java (we call this subset JavaS). In Chapter 3, a formal semantics for approximately the same subset was presented by Drossopoulou and Eisenbach. The work presented here serves two roles: it complements the written semantics by correcting and clarifying some details; and it demonstrates the utility of formal, machine checking when exploring a large and detailed proof based on operational semantics.1 This work contributes to three distinct fields of formal reasoning: -The Formal Study of Java: We contribute a detailed analysis of a significant property of Java, and provide corrections to proofs that are interesting in their own right. -Tools for Formal Methods: This work is a major case study in so-called ‘declarative’ proof techniques. The tool we use, called DECLARE [Sym97], has been developed by the author to demonstrate the utility of these techniques. -Formally Checked Properties of Languages: This work contributes a tool and a methodology for the general task of machine checking properties of languages.

[1]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[2]  Tobias Nipkow,et al.  Formal Verification of Algorithm W: The Monomorphic Case , 1996, TPHOLs.

[3]  Natarajan Shankar,et al.  PVS: Combining Specification, Proof Checking, and Model Checking , 1996, FMCAD.

[4]  Michael Norrish An abstract dynamic semantics for C , 1997 .

[5]  N. Shankar,et al.  Pvs: Combining Speciication, Proof Checking, and Model Checking ? 1 Combining Theorem Proving and Typechecking , 1996 .

[6]  Sophia Drossopoulou,et al.  Java is Type Safe - Probably , 1997, ECOOP.

[7]  Tom Melham,et al.  Reasoning with Inductively Defined Relations in the HOL Theorem Prover , 1992 .

[8]  Piotr Rudnicki,et al.  An Overview of the MIZAR Project , 1992 .

[9]  John Harrison,et al.  HOL Light: A Tutorial Introduction , 1996, FMCAD.

[10]  Zhenyu Qian A formal specification of java(tin) virtual machine instructions , 1998 .

[11]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[12]  Sarfraz Khurshid,et al.  Is the Java Type System Sound? , 1999, Theory Pract. Object Syst..

[13]  Lawrence C. Paulson,et al.  Isabelle: The Next 700 Theorem Provers , 2000, ArXiv.

[14]  Donald W. Loveland,et al.  Mechanical Theorem-Proving by Model Elimination , 1968, JACM.

[15]  Lawrence C. Paulson,et al.  A Fixedpoint Approach to Implementing (Co)Inductive Definitions , 1994, CADE.

[16]  Don Syme DECLARE: A Prototype Declarative Proof System for Higher Order Logic , 1997 .

[17]  Journal of automated reasoning , 1986 .

[18]  John Harrison,et al.  Proof Style , 1996, TYPES.