Pointer Theory and Weakest Preconditions without Addresses and Heap

Theories of programming languages formalize pointers by formalizing the addresses, the heap and the stack of a computer storage. These are implementation concepts. The aim of this paper is a theory that formalizes pointers in terms of concepts from high-level programming languages. We begin with a graph theory, which formalizes the implementation concepts but avoids some common distinctions. From it, we calculate the theory of trace equivalences, which formalizes concepts of high-level programming languages. From that theory, we calculate definitions in terms of weakest (liberal) preconditions. We consider the assignment and the copy operation, which is introduced in the paper; the object creation (i.e. the new-statement) is a sequential composition of them. Those wlp/wp-definitions and the concept of trace equivalence are the result of the paper. They are intended as a foundation for program design; in particular, for an object-oriented one.

[1]  Robin Milner,et al.  Theories for the Global Ubiquitous Computer , 2004, FoSSaCS.

[2]  Peter W. O'Hearn,et al.  Semantic analysis of pointer aliasing, allocation and disposal in Hoare logic , 2000, PPDP '00.

[3]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[4]  Manfred Broy,et al.  Calculational system design , 1999 .

[5]  Ana Cavalcanti,et al.  A Weakest Precondition Semantics for an Object-Oriented Language of Refinement , 1999, World Congress on Formal Methods.

[6]  Alex K. Simpson,et al.  Computational Adequacy in an Elementary Topos , 1998, CSL.

[7]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[8]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[9]  Bernhard Möller,et al.  Calculating with pointer structures , 1997, Algorithmic Languages and Calculi.

[10]  Frank S. de Boer,et al.  Reasoning about dynamically evolving process structures , 1994, Formal Aspects of Computing.

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

[12]  C. A. R. Hoare,et al.  A Trace Model for Pointers and Objects , 1999, ECOOP.

[13]  S. Anderson,et al.  Secure Synthesis of Code: A Process Improvement Experiment , 1999, World Congress on Formal Methods.

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

[15]  E. K. Blum,et al.  Mathematical Studies of Information Processing , 1979, Lecture Notes in Computer Science.

[16]  Rachid Guerraoui,et al.  ECOOP’ 99 — Object-Oriented Programming , 1999, Lecture Notes in Computer Science.

[17]  Richard S. Bird,et al.  Algorithmic Languages and Calculi , 1997, IFIP Advances in Information and Communication Technology.

[18]  Ulrich Güntzer,et al.  On a uniform formal description of data structures , 1978, Mathematical Studies of Information Processing.

[19]  Frank S. de Boer,et al.  A WP-calculus for OO , 1999, FoSSaCS.

[20]  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.