Dynamic logic with non-rigid functions a basis for object-oriented program verification

We introduce a dynamic logic that is enriched by non-rigid functions, i.e., functions that may change their value from state to state (during program execution), and we present a (relatively) complete sequent calculus for this logic. In conjunction with dynamically typed object enumerators, non-rigid functions allow to embed notions of object-orientation in dynamic logic, thereby forming a basis for verification of object-oriented programs. A semantical generalisation of substitutions, called state update, which we add to the logic, constitutes the central technical device for dealing with object aliasing during function modification. With these few extensions, our dynamic logic captures the essential aspects of the complex verification system KeY and, hence, constitutes a foundation for object-oriented verification with the principles of reasoning that underly the successful KeY case studies.

[1]  Bernhard Beckert,et al.  A Dynamic Logic for the Formal Verification of Java Card Programs , 2000, Java Card Workshop.

[2]  Bernhard Beckert,et al.  A Sequent Calculus for First-Order Dynamic Logic with Trace Modalities , 2001, IJCAR.

[3]  Bart Jacobs,et al.  A Logic for the Java Modeling Language JML , 2001, FASE.

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

[5]  Bart Jacobs,et al.  A Type-Theoretic Memory Model for Verification of Sequential Java Programs , 1999, WADT.

[6]  Robert F. Stärk,et al.  A Logic for Abstract State Machines , 2001, J. Univers. Comput. Sci..

[7]  Tobias Nipkow Jinja: Towards a Comprehensive Formal Semantics for a Java-like Language , 2003 .

[8]  Anand R. Tripathi,et al.  Issues with Exception Handling in Object-Oriented Systems , 1997, ECOOP.

[9]  Bernhard Beckert,et al.  Software Verification with Integrated Data Type Refinement for Integer Arithmetic , 2004, IFM.

[10]  Bernhard Beckert,et al.  The KeY tool , 2005, Software & Systems Modeling.

[11]  Richard L. Mendelsohn,et al.  First-Order Modal Logic , 1998 .

[12]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[13]  David Harel,et al.  First-Order Dynamic Logic , 1979, Lecture Notes in Computer Science.

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

[15]  Tobias Nipkow,et al.  Hoare Logic for NanoJava: Auxiliary Variables, Side Effects, and Virtual Methods Revisited , 2002, FME.

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

[17]  Bernhard Beckert,et al.  A Program Logic for Handling JAVA CARD's Transaction Mechanism , 2003, FASE.

[18]  Frank S. de Boer,et al.  A Syntax-Directed Hoare Logic for Object-Oriented Programming Concepts , 2003, FMOODS.

[19]  Arnd Poetzsch-Heffter,et al.  A Programming Logic for Sequential Java , 1999, ESOP.

[20]  Wojciech Mostowski,et al.  Formal Development of Safe and Secure Java Card Applets , 2005 .