The clean termination of iterative programs

SummaryThe paper is devoted to a program-correctness concept which captures partial correctness, termination (nonlooping) and clean termination (nonabortion). The underlying proof method offers a one-stage proof of all the three properties. This method is proved consistent and algebraically complete. It is first discussed for the general case of arbitrary possibly nondeterministic iterative programs. Next, this case is restricted to arbitrary deterministic iterative programs and finally to structured programs. The presented approach is compared with partial correctness, total correctness and weakest precondition methods. The concluding example shows the verification of an arithmetical program in machine-bounded arithmetics. As a side effect of the verification procedure one finds input boundary conditions which guarantee clean termination.

[1]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[2]  Derek Coleman,et al.  The clean termination of Pascal programs , 2004, Acta Informatica.

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

[4]  Edsger W. Dijkstra Non-determinacy and a calculus for the derivation of programs , 1975 .

[5]  Andrzej Blikle Proving programs by delta-relations , 1975, J. Inf. Process. Cybern..

[6]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[7]  J. W. de Bakker,et al.  Mathematical theory of program correctness , 1980, Prentice-Hall international series in computer science.

[8]  Andrzej Blikle An Algebraic Approach to Programs and Their Computations , 1973, MFCS.

[9]  Ms. Kathleen Jensen,et al.  PASCAL User Manual and Report , 1975, Lecture Notes in Computer Science.

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

[11]  A. M. Turing,et al.  Checking a large routine , 1989 .

[12]  Christopher Strachey,et al.  Continuations: A Mathematical Semantics for Handling Full Jumps , 2000, High. Order Symb. Comput..

[13]  J. McCarthy A basis for a mathematical theory of computation, preliminary report , 1961, IRE-AIEE-ACM '61 (Western).

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

[15]  P. Naur Proof of algorithms by general snapshots , 1966 .

[16]  Andrzej Blikle,et al.  On the Development of Correct Specified Programs , 1981, IEEE Transactions on Software Engineering.

[17]  Andrzej Blikle,et al.  A Comparative Review of Some Program Verification Methods , 1977, MFCS.

[18]  Zohar Manna,et al.  Axiomatic approach to total correctness of programs , 1973, Acta Informatica.

[19]  Richard Lee Sites,et al.  Proving that computer programs terminate cleanly. , 1974 .

[20]  Edsger W. Dijkstra,et al.  Guarded commands, non-determinacy and a calculus for the derivation of programs , 1975, Language Hierarchies and Interfaces.

[21]  Antoni W. Mazurkiewicz,et al.  Proving Algorithms by Tail Functions , 1971, Inf. Control..

[22]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[23]  Andrzej Blikle Assertion Programming , 1979, MFCS.

[24]  Andrzej Blikle,et al.  On correct program development , 1979, ICSE 1979.

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