Preserving Specific Properties in Programm Development: How to Debug Programs (Conference Version)

The problem of preserving specific temporal properties in program development is addressed. A new relation between programs, or, more generally, between specifications, is defined. This relation is parameterized by a (finite) collection of temporal properties which will be preserved by that relation. Such a relation will, in general, not preserve all temporal properties. It is proved, however, that for a particular choice of the parameter the new relation coincides with Abadi and Lamport's notion of implements [1], which preserves all (externally visible) temporal properties. As a consequence, the approach for program development proposed in the current paper is as least as powerful as those which use implements as their basic refinement relation. Examples of the latter approaches are those proposed by Back [4], by Lynch and Tuttle [27], and by Lam and Shankar [25]. It is argued that the approach in program development which preserves only certain temporal properties is preferable to those approaches which preserve all temporal properties.

[1]  Nissim Francez,et al.  Distributed Termination , 1980, TOPL.

[2]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[3]  Ralph-Johan Back,et al.  Superposition and fairness in reactive system refinement , 1990, Proceedings of the 5th Jerusalem Conference on Information Technology, 1990. 'Next Decade in Information Technology'.

[4]  Beverly A. Sanders Stepwise Refinement of Mixed Specifications of Concurrent Programs , 1990, Programming Concepts and Methods.

[5]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[6]  Nancy A. Lynch Multivalued Possibilities Mappings , 1989, REX Workshop.

[7]  Frank A. Stomp A derivation of a broadcasting protocol using sequentially phased reasoning , 1990, PSTV.

[8]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[9]  Carroll Morgan,et al.  The specification statement , 1988, TOPL.

[10]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

[11]  Martín Abadi,et al.  The Existence of Refinement Mappings , 1988, LICS.

[12]  Rob Gerth,et al.  Foundations of Compositional Program Refinement - Safety Properties , 1989, REX Workshop.

[13]  Ambuj K. Singh Program Refinement in Fair Transition Systems , 1991, PARLE.

[14]  Z. Manna,et al.  Verification of concurrent programs: a temporal proof system , 1983 .

[15]  Edsger W. Dijkstra,et al.  Termination Detection for Diffusing Computations , 1980, Inf. Process. Lett..

[16]  Carl A. Sunshine,et al.  Protocol Specification, Testing and Verification - Guest Editorial , 1982, Comput. Networks.

[17]  Ralph-Johan Back,et al.  Refinement Calculus, Part II: Parallel and Reactive Programs , 1989, REX Workshop.

[18]  Shmuel Katz,et al.  Cooperative Distributed Algorithms for Dynamic Cycle Prevention , 1987, IEEE Transactions on Software Engineering.

[19]  Ralph-Johan Back A Method for Refining Atomicity in Parallel Algorithms , 1989, PARLE.

[20]  Jan L. A. van de Snepscheut "Algorithms for On-the-Fly Garbage Collection" Revisited , 1987, Inf. Process. Lett..

[21]  A. Udaya Shankar,et al.  Refinement and Projection of Relational Specifications , 1990, REX Workshop.

[22]  Doron A. Peled,et al.  Interleaving set temporal logic , 1987, PODC '87.

[23]  Helmuth Partsch,et al.  Specification and Transformation of Programs - A Formal Approach to Software Development , 1990, Texts and Monographs in Computer Science.

[24]  Michael Merritt,et al.  Completeness Theorems for Automata , 1990, REX Workshop.

[25]  Jai Srinivasan,et al.  Branching time temporal logic , 1988, REX Workshop.

[26]  Mordechai Ben-Ari Algorithms for on-the-fly garbage collection , 1984, TOPL.

[27]  Ralph-Johan Back,et al.  Changing data representation in the refinement calculus , 1989, [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track.

[28]  N. Klarlund Progress Measures and Finite Arguments for Infinite Computations , 1990 .

[29]  Kaisa Sere,et al.  Stepwise Refinement of Action Systems , 1991, Struct. Program..

[30]  Ruurd Kuiper,et al.  Abadi & Lamport and Stark: towards a Proof Theory for Stuttering, Dense Domains and Refinement Mappings , 1989, REX Workshop.

[31]  Grzegorz Rozenberg,et al.  Stepwise Refinement of Distributed Systems Models, Formalisms, Correctness , 1989, Lecture Notes in Computer Science.