Dynamic Logic with Non-rigid Functions

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]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

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

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

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

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

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

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

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

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

[10]  Peter A. Lindsay,et al.  FME 2002:Formal Methods—Getting IT Right , 2002, Lecture Notes in Computer Science.

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

[12]  Jean-Louis Lanet,et al.  Construction and Analysis of Safe, Secure, and Interoperable Smart Devices: International Workshop, CASSIS 2004, Marseille, France, March 10-14, 2004, ... Papers (Lecture Notes in Computer Science) , 2005 .

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

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

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

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

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

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

[19]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[20]  Donald Sanella What Does the Future Hold for Theoretical Computer Science , 1997 .

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

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

[23]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

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

[25]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[26]  Thomas Jensen,et al.  Java on Smart Cards:Programming and Security , 2001, Lecture Notes in Computer Science.

[27]  Robert F. Stärk,et al.  A Logic for Abstract State Machines , 2001, CSL.

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

[29]  Martin Wirsing,et al.  Extraction of Structured Programs from Specification Proofs , 1999, WADT.