Verification of Java Programs with Generics

Several proof systems allow the formal verification of Java programs, and a specification language was specifically designed for Java. However, none of these systems support generics that were introduced in Java 5. Generics are very important and useful when the collection framework (lists, sets, hash tables etc.) is used. Though they are mainly dealt with at compile time, they have some effect on the run-time behavior of a Java program. Most notably, heap pollutioncan cause exceptions. A verification system for Java must incorporate these effects. In this paper we describe what effects can occur at run time, and how they are handled in the KIV system [18] [2]. To the authors knowledge, this makes KIV the first verification system to support Java's generics.

[1]  Jean-Louis Lanet,et al.  Java Applet Correctness: A Developer-Oriented Approach , 2003, FME.

[2]  Martin Wirsing,et al.  An Event-Based Structural Operational Semantics of Multi-Threaded Java , 1999, Formal Syntax and Semantics of Java.

[3]  Kurt Stenzel A Formally Verified Calculus for Full Java Card , 2004, AMAST.

[4]  Jim Alves-Foss,et al.  Formal Syntax and Semantics of Java , 2002, Lecture Notes in Computer Science.

[5]  Kurt Stenzel Verification of Java card programs , 2005 .

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

[7]  Kurt Stenzel,et al.  ASN1-light: A Verified Message Encoding for Security Protocols , 2007, Fifth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007).

[8]  Guy L. Steele,et al.  Java(TM) Language Specification , 2005 .

[9]  Peter H. Schmitt,et al.  Verifying the Mondex Case Study , 2007, Fifth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007).

[10]  Perdita Stevens,et al.  Modelling Recursive Calls with UML State Diagrams , 2003, FASE.

[11]  Gary T. Leavens,et al.  A JML Tutorial: Modular Specification and Verification of Functional Behavior for Java , 2007, CAV.

[12]  David R. Cok,et al.  ESC/Java2: Uniting ESC/Java and JML , 2004, CASSIS.

[13]  Jean-Louis Lanet,et al.  JACK - A Tool for Validation of Security and Behaviour of Java Applications , 2006, FMCO.

[14]  Akinori Yonezawa,et al.  Software Security — Theories and Systems , 2003, Lecture Notes in Computer Science.

[15]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[16]  Bart Jacobs,et al.  Java Program Verification at Nijmegen: Developments and Perspective , 2003, ISSS.

[17]  Jerzy Tiuryn,et al.  Dynamic logic , 2001, SIGA.

[18]  Bernhard Beckert,et al.  Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino , 2007, The KeY Approach.

[19]  James Gosling The Java Language Specification - Second Edition , 2000 .

[20]  Markus Bischof,et al.  Verification of Mondex Electronic Purses with KIV: From a Security Protocol to Verified Code , 2008, FM.

[21]  J. Davenport Editor , 1960 .

[22]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[23]  Yde Venema,et al.  Dynamic Logic by David Harel, Dexter Kozen and Jerzy Tiuryn. The MIT Press, Cambridge, Massachusetts. Hardback: ISBN 0–262–08289–6, $50, xv + 459 pages , 2002, Theory and Practice of Logic Programming.

[24]  Kurt Stenzel,et al.  Formal System Development with KIV , 2000, FASE.

[25]  Stephen Gilmore,et al.  Mobile Resource Guarantees for Smart Devices , 2004, CASSIS.

[26]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[27]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[28]  Bart Jacobs,et al.  Formal Verification of a Commercial Smart Card Applet with Multiple Tools , 2004, AMAST.

[29]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, Electron. Notes Theor. Comput. Sci..

[30]  Claude Marché,et al.  The KRAKATOA tool for certificationof JAVA/JAVACARD programs annotated in JML , 2004, J. Log. Algebraic Methods Program..