Formal Aspects of Computing

, Volume 18, Issue 3, pp 288–307 | Cite as

Angelic nondeterminism in the unifying theories of programming

  • Ana CavalcantiEmail author
  • Jim Woodcock
  • Steve Dunne
Original Article


Hoare and He’s unifying theories of programming (UTP) is a model of alphabetised relations expressed as predicates; it supports development in several programming paradigms. The aim of Hoare and He’s work is the unification of languages and techniques, so that we can benefit from results in different contexts. In this paper, we investigate the integration of angelic nondeterminism in the UTP; we propose the unification of a model of binary multirelations, which is isomorphic to the monotonic predicate transformers model and can express angelic and demonic nondeterminism.


Semantics Refinement Relations Predicate transformers 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. BW89.
    Back RJR, Wright J (1989) A Lattice-theoretical Basis for a Specification Language. In: van de Snepscheut JLA (ed) Mathematics of program construction: 375th anniversary of the Groningen University. Lecture notes in computer science, vol 375. Springer, Groningen, pp 139–156Google Scholar
  2. BW90.
    Back RJR, Wright J (1990) Duality in specification languages: a lattice-theoretical approach. Acta Inf 27(7):583–625zbMATHGoogle Scholar
  3. BW92.
    Back RJR, Wright J (1992) Combining angels, demons and miracles in program specifications. Theor Comput Sci 100:365–383zbMATHCrossRefGoogle Scholar
  4. BW98.
    Back RJR, Wright J (1998) Refinement calculus: a systematic introduction. Graduate texts in computer science. Springer, Berlin Heidelberg New YorkGoogle Scholar
  5. CN02.
    Cavalcanti ALC, Naumann DA (2002) Forward simulation for data refinement of classes. In: Eriksson L, Lindsay PA (eds) FME 2002: formal methods – getting ITt. Lecture notes in computer science, vol 2391. Springer, BerlinHeidelberg New York, pp 471–490Google Scholar
  6. CSW03.
    Cavalcanti ALC, Sampaio ACA, Woodcock JCP (2003) A refinement strategy for Circus. Formal Aspects Comput 15(2–3):146–181zbMATHCrossRefGoogle Scholar
  7. CW98.
    Cavalcanti ALC, Woodcock JCP (1998) A weakest precondition semantics for Z. Comput J 41(1):1–15zbMATHCrossRefGoogle Scholar
  8. CW99.
    Cavalcanti ALC, Woodcock JCP (1999) ZRC—a refinement calculus for Z. Formal Aspects Comput 10(3):267–289CrossRefGoogle Scholar
  9. CW04.
    Cavalcanti ALC, Woodcock JCP (2004) Angelic nondeterminism and unifying theories of programming (extended version). Technical report, University of Kent—Computing LaboratoryGoogle Scholar
  10. CW05.
    Cavalcanti ALC, Woodcock JCP (2005) Angelic nondeterminism and unifying theories of programming. In: Derrick J, Boiten E (eds) REFINE 2005. Eletron Notes Theoret Comput Sci, vol 137. Elsevier, AmsterdamGoogle Scholar
  11. Dij76.
    Dijkstra EW (1976) A discipline of programming. Prentice-Hall, Englewood CliffszbMATHGoogle Scholar
  12. Dun01.
    Dunne S (2001) Recasting Hoare and He’s unifying theories of programs in the context of general correctness. In: Butterfield A, Pahl C (eds) IWFM’01: 5th Irish workshop in formal methods. BCS electronic workshops in computing, DublinGoogle Scholar
  13. GM91.
    Gardiner PHB, Morgan CC (1991) Data refinement of predicate transformers. Theoret Comput Sci 87:143–162zbMATHCrossRefMathSciNetGoogle Scholar
  14. Hes92.
    Hesselink WH (1992) Programs, recursion and unbounded choice—predicate transformation semantics and transformation rules. Cambridge tracts in theoretical computer science, vol 27. Cambridge University Press, CambridgeGoogle Scholar
  15. HH85.
    Hoare CAR, He J (1985) The weakest prespecification. Technical monograph TM-PRG-44. Oxford University Computing Laboratory, Oxford UKGoogle Scholar
  16. HJ98.
    Hoare CAR, He Jifeng (1998) Unifying theories of programming. Prentice-Hall, Englewood CliffsGoogle Scholar
  17. JSS91.
    Jagadeesan R, Shanbhogue V, Saraswat V (1991) Angelic non-determinism in concurrent constraint programming. Technical report, Xerox ParkGoogle Scholar
  18. MCR04.
    Martin CE, Curtis SA, Rewitzky I (2004) Modelling nondeterminism. In: Mathematics of program construction. Lecture notes in computer science, pp 228–251Google Scholar
  19. MG90.
    Morgan CC, Gardiner PHB (1990) Data refinement by calculation. Acta Inf 27(6):481—503zbMATHMathSciNetGoogle Scholar
  20. MGW96.
    Martin AP, Gardiner PHB, Woodcock JCP (1996) A tactical calculus. Formal Aspects Comput 8(4):479–489zbMATHCrossRefGoogle Scholar
  21. Mor94.
    Morgan CC (1994) Programming from specifications, 2nd edn. Prentice-Hall, Englewood CliffszbMATHGoogle Scholar
  22. Rew03.
    Rewitzky I (2003) Binary multirelations. In: Swart H, Orlowska E, Schmidt G, Roubens M (eds) Theory and application of relational structures as knowledge instruments. Lecture notes in computer science, vol 2929, pp 256–271Google Scholar
  23. WC02.
    Woodcock JCP, Cavalcanti ALC (2002) The semantics of Circus. In: Bert D, Bowen JP, Henson MC, Robinson K (eds) ZB 2002: formal specification and development in Z and B. Lecture notes in computer science, vol 2272. Springer, Berlin Heidelberg New York, pp 184–203CrossRefGoogle Scholar
  24. WC04.
    Woodcock JCP, Cavalcanti ALC (2004) A tutorial introduction to designs in unifying theories of programming. In: Boiten EA, Derrick J, Smith G (eds) IFM 2004: integrated formal methods. Lecture notes in computer science, vol 2999. Springer, Berlin Heidelberg New York, pp 40–66 (invited tutorial)Google Scholar

Copyright information

© British Computer Society 2006

Authors and Affiliations

  1. 1.Department of Computer ScienceUniversity of YorkYorkEngland
  2. 2.School of ComputingUniversity of TeessideMiddlesbroughEngland

Personalised recommendations