Nondeterminism in logics of programs

We investigate the principles underlying reasoning about nondeterministic programs, and present a logic to support this kind of reasoning. Our logic, an extension of dynamic logic ([22] and [12]), subsumes most existing first-order logics of nondeterministic programs, including that developed by Dijkstra based on the concept of weakest precondition. A significant feature is the strict separation between the two kinds of nonterminating computations: infinite computations and failures. The logic has a Tarskian truth-value semantics, an essential prerequisite to establishing completeness of axiomatizations of the logic. We give an axiomatization for flowchart (regular) programs that is complete relative to arithmetic in the sense of Cook. Having a satisfactory tool at hand, we turn to the clarification of the concept of the total correctness of nondeterministic programs, providing in passing, a critical evaluation of the widely used "predicate transformer" approach to the definition of programming constructs, initiated by Dijkstra [5]. Our axiom system supplies a complete axiomatization of wp.

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

[2]  Amir Pnueli,et al.  A complete axiomatic system for proving deductions about recursive programs , 1977, STOC '77.

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

[4]  W. P. Roever Dijkstra's Predicate Transformer, Non-Determinism, Recursion and Termination , 1976, MFCS.

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

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

[7]  Zohar Manna Second-order mathematical theory of computation , 1970, STOC '70.

[8]  C. Cordell Green,et al.  The Application of Theorem Proving to Question-Answering Systems , 1969, Outstanding Dissertations in the Computer Sciences.

[9]  William A. Woods,et al.  Augmented Transition Networks for Natural Language Analysis. , 1969 .

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

[11]  David Harel,et al.  Arithmetical Completeness in Logics of Programs , 1978, ICALP.

[12]  Carl Hewitt,et al.  Description and Theoretical Analysis (Using Schemata) of Planner: A Language for Proving Theorems and Manipulating Models in a Robot , 1972 .

[13]  Richard E. Ladner,et al.  Propositional modal logic of programs , 1977, STOC '77.

[14]  J. W. de Bakker,et al.  Recursive Programs as Predicate Transformers , 1977, Formal Description of Programming Concepts.

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

[16]  Albert R. Meyer,et al.  Computability and completeness in logics of programs (Preliminary Report) , 1977, STOC '77.

[17]  Robin Milner,et al.  An Approach to the Semantics of Parallel Programs , 1973 .

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

[19]  Mitchell Wand,et al.  A Characterization of Weakest Preconditions , 1977, J. Comput. Syst. Sci..

[20]  J. W. de Bakker,et al.  Semantics and Termination of Nondeterministic Recursive Programs , 1976, ICALP.

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