Proving the Correctness of Regular Deterministic Programs: A Unifying Survey Using Dynamic Logic

Abstract The simple set WL of deterministic while programs is defined and a number of known methods for proving the correctness of these programs are surveyed. Emphasis is placed on the tradeoff existing between data-directed and syntax-directed methods, and on providing, especially for the latter, a uniform description enabling comparison and assessment. Among the works considered are the Floyd/Hoare invariant assertion method for partial correctness, Floyd's well-founded sets method for termination, Dijkstra's notion of weakest precondition, the Burstall/Manna and Waldinger intermittent assertion method and more. Also, a brief comparison is carried out between three logics of programs: dynamic logic, algorithmic logic and programming logic.

[1]  James H. Morris,et al.  Subgoal induction , 1977, CACM.

[2]  J. W. de Bakker Flow of control in the proof theory of structured programming , 1975, 16th Annual Symposium on Foundations of Computer Science (sfcs 1975).

[3]  ZOHAR MANNA,et al.  The Correctness of Programs , 1969, J. Comput. Syst. Sci..

[4]  Vaughan R. Pratt,et al.  SEMANTICAL CONSIDERATIONS ON FLOYD-HOARE LOGIC , 1976, FOCS 1976.

[5]  Peter Naur Proof of Algorithms by General Snapshots , 1966 .

[6]  Susan L. Gerhart,et al.  Proof Theory of Partial Correctness Verification Systems , 1976, SIAM J. Comput..

[7]  Rod M. Burstall,et al.  Program Proving as Hand Simulation with a Little Induction , 1974, IFIP Congress.

[8]  Robert L. Constable,et al.  On the theory of programming logics , 1977, STOC '77.

[9]  Krzysztof R. Apt,et al.  Ten Years of Hoare's Logic: A Survey—Part I , 1981, TOPL.

[10]  Antoni Kreczmar,et al.  An introduction to algorithmic logic; metamathematical investigations in the theory of programs , 1977 .

[11]  C. A. R. Hoare,et al.  Some Properties of Predicate Transformers , 1978, JACM.

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

[13]  Zohar Manna,et al.  Logical analysis of programs , 1976, CACM.

[14]  David Harel,et al.  And/Or Programs: A New Approach to Structured Programming , 1980, TOPL.

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

[16]  A. Wang An axiomatic basis for proving total correctness of goto-programs , 1976 .

[17]  David Harel On the Total Correctness of Nondeterministic Programs , 1981, Theor. Comput. Sci..

[18]  William W. Wadge,et al.  Lucid - A Formal System for Writing and Proving Programs , 1976, SIAM J. Comput..

[19]  Stephen A. Cook,et al.  Soundness and Completeness of an Axiom System for Program Verification , 1978, SIAM J. Comput..

[20]  J. W. de Bakker,et al.  On the Completeness of the Inductive Assertion Method , 1975, J. Comput. Syst. Sci..

[21]  Robert Cartwright,et al.  First order programming logic , 1979, POPL.

[22]  Fred Kröger Logical Rules of Natural Reasoning about Programs , 1976, ICALP.

[23]  Zohar Manna,et al.  Is “sometime” sometimes better than “always”?: Intermittent assertions in proving program correctness , 1976, ICSE '76.

[24]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[25]  Raymond T. Yeh,et al.  Strong verification of programs , 1975, IEEE Transactions on Software Engineering.

[26]  Elliott Mendelson,et al.  Introduction to Mathematical Logic , 1979 .

[27]  Fred Kröger,et al.  A Uniform Logical Basis for the Description, Specification and Verification of Programs , 1977, Formal Description of Programming Concepts.

[28]  Richard J. Orgass,et al.  A note concerning intermittent assertions , 1977, SIGA.

[29]  J. Schwarz,et al.  Event Based Reasoning - A System for Proving Correct Termination of Programs , 1976, International Colloquium on Automata, Languages and Programming.