Towards certificate generation for linear heap consumption

We present a program logic for verifying the heap consumption of programs written in an abstract representation of the Java virtual machine language. The logic is defined by an expansion into the more general program logic presented in [2], but concrete program program verification may be performed purely on the abstract level, without recourse to the base logic. Format and interpretation of assertions closely match the interpretation of [9]’s type system for functional programs where the consumption of heap space is bounded by a linear function on the input size. The derived proof rules enable us to replay typing derivations in a theorem prover, given assertions about individual methods. The resulting verification conditions are of limited complexity, and may be discharged without significant programmer intervention.

[1]  Norihisa Suzuki Automatic Verification of Programs with Complex Data Structures , 1976, Outstanding Dissertations in the Computer Sciences.

[2]  David C. Luckham,et al.  Verification of Array, Record, and Pointer Operations in Pascal , 1979, TOPL.

[3]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[4]  Wolfgang Thomas Semantik und Verifikation , 1993, Perspektiven der Informatik.

[5]  K. R Leino,et al.  Towards Reliable Modular Programs , 1995 .

[6]  Martín Abadi,et al.  A Logic of Object-Oriented Programs , 1997, Verification: Theory and Practice.

[7]  Thomas Kleymann,et al.  Hoare logic and VDM : machine-checked soundness and completeness proofs , 1998 .

[8]  Richard Bornat,et al.  Proving Pointer Programs in Hoare Logic , 2000, MPC.

[9]  Hongseok Yang,et al.  Local reasoning for stateful programs , 2001 .

[10]  Martin Hofmann,et al.  Another Type System for In-Place Update , 2002, ESOP.

[11]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[12]  Francis Hin-Lun Tang Towards feasible, machine-assisted verification of object-oriented programs , 2002 .

[13]  Tobias Nipkow,et al.  Hoare Logics for Recursive Procedures and Unbounded Nondeterminism , 2002, CSL.

[14]  Richard Bornat,et al.  Local reasoning, separation and aliasing , 2003 .

[15]  Tobias Nipkow,et al.  Proving Pointer Programs in Higher-Order Logic , 2003, CADE.

[16]  Martin Hofmann,et al.  Static prediction of heap space usage for first-order functional programs , 2003, POPL '03.

[17]  Kenneth MacKenzie,et al.  Grail: a functional form for imperative mobile code , 2003, Electron. Notes Theor. Comput. Sci..

[18]  Kenneth MacKenzie,et al.  Camelot and Grail: resource-aware functional programming for the JVM , 2003, Trends in Functional Programming.

[19]  Kenneth MacKenzie,et al.  O'Camelot: adding objects to a resource-aware functional language , 2003, Trends in Functional Programming.

[20]  Martin Hofmann,et al.  A Program Logic for Resource Verification , 2004, TPHOLs.

[21]  Lars Birkedal,et al.  Local reasoning about a copying garbage collector , 2004, POPL '04.