Angelic termination in Dijkstra's calculus

  • Wim H. Hesselink
Contributed Lectures
Part of the Lecture Notes in Computer Science book series (LNCS, volume 947)


As a variation of a recent proposal of Broy and Nelson's, a construct for nondeterministic choice is proposed that terminates if at least one of the branches terminates and that for all other aspects serves as a demonic choice. Two versions of the operator are discussed. In contrast to the Broy-Nelson proposal, the semantics are given by monotonic predicate transformers and monotonic operations on them. In this way the semantics of recursion is completely standard. The paper concludes with proof rules for recursive procedures and a small example of their applications.

Key words

predicate transformer nontotal command nondeterminism (demonic, angelic) termination proof rule 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R.J.R. Back, J. von Wright: Refinement calculus, Part I: Sequential Nondeterministic Programs. In: J.W. de Bakker, W.-P. de Roever, G. Rozenberg (eds.) Stepwise Refinement of Distributed Systems. Lecture Notes in Computer Science 430 (Springer, Berlin, 1990) pp. 42–66.Google Scholar
  2. 2.
    M. Broy, G. Nelson: Adding fair choice to Dijkstra's calculus. ACM Transactions on Programming Languages and Systems, 16 (1994) 924–938.Google Scholar
  3. 3.
    E.W. Dijkstra: A discipline of programming. Prentice-Hall 1976.Google Scholar
  4. 4.
    E.W. Dijkstra, CS. Scholten: Predicate calculus and program semantics. Springer V. 1990.Google Scholar
  5. 5.
    H. Doornbos: A relational model of programs without the restriction to Egli-Milner-monotone constructs. In: E.-R. Olderog: Programming Concepts, Methods and Calculi. North-Holland, 1994, pp. 363–382.Google Scholar
  6. 6.
    W.H. Hesselink: Programs, Recursion and Unbounded Choice. Cambridge Tracts in Theoretical Computer Science 27. Cambridge University Press 1992. ISBN 0521 404363.Google Scholar
  7. 7.
    W.H. Hesselink: Proof rules for recursive procedures. Formal Aspects of Computing 5 (1993) 554–570.Google Scholar
  8. 8.
    W.H. Hesselink: Nondeterminacy and recursion via stacks and games. Theoretical Computer Science 124 (1994) 273–295.Google Scholar
  9. 9.
    W.H. Hesselink: Safety and progress of recursive procedures. Formal Aspects of Computing (to appear).Google Scholar
  10. 10.
    C.C. Morgan: Data refinement by miracles. Information Processing Letters 26 (1987/88) 243–246.Google Scholar
  11. 11.
    C. Morgan: Programming from Specifications. Prentice Hall, Englewood Cliffs, NJ, 1990.Google Scholar
  12. 12.
    C. Morgan, P.H.B. Gardiner: Data refinement by calculation. Acta Informatica 27 (1990) 481–503.Google Scholar
  13. 13.
    J.M. Morris: A theoretical basis for stepwise refinement and the programming calculus. Science of Comp. Programming 9 (1987) 287–306.Google Scholar
  14. 14.
    G. Nelson: A generalization of Dijkstra's calculus. ACM Transactions on Programming Languages and Systems, 11 (1989) 517–561.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Wim H. Hesselink
    • 1
  1. 1.Dept. of Mathematics and Computing ScienceRijksuniversiteit GroningenAV GroningenThe Netherlands

Personalised recommendations