Skip to main content
Article thumbnail
Location of Repository

A Refinement Calculus for Circus - Mini-thesis

By Marcel V. M. Oliveira


Most software developments do not use any of the existing theories and formalisms. This leads to a loss of precision and correctness on the resulting softwares. Two different approaches to formal techniques have been raised in the past decades: one focus on data aspects, and the other focus on the behavioural aspects of the system. Some combined languages have already been proposed to bring these two schools together. However, as far as we know, none of them has a related refinement calculus. Using Circus as the specification language, we can describe both data and control behaviour. The objective of this work is to formalise a refinement calculus for Circus. A refinement strategy for Circus, new refinement laws and their proofs are presented. The proofs are based on an extension of the existing Circus semantics, which is based on the unifying theory of programming. This extension, and its mechanisation, and the proof of the laws on ProofPower are also part of this work. We intend to provide a tool that supports the Circus refinement calculus. Furthermore, as an extension of the existing refinement strategy for Circus, we present a translation strategy for Circus programs. This translation strategy can be used as a guideline in the translation of Circus programs to Java. Furthermore, the mechanisation of this translation is also feasible. We present a case study, a safety-critical fire protection system, that, as far as we know, is the largest case study on the Circus refinement calculus. We present the refinement of its abstract centralised specification to a concrete distributed one. Finally, the translation of the concrete specification of the system to Java, using our translation strategy, is also presented. Throughout this mini-thesis, some sections, and even chapters are not written. They have not been removed from the mini-thesis on purpose. Our intention is to give an idea of the scope and the structure of our final thesis, which is discussed in details in the final chapter of this document

Topics: QA76
Publisher: University of Kent
Year: 2004
OAI identifier:

Suggested articles


  1. (1976). A Discipline of Programming. doi
  2. A Refinement Strategy for Circus. Formal Aspects of Computing. doi
  3. (1999). A.P.Bakkers. CSP for Java : Multithreading for All.
  4. (2003). Abstract State Machines—A Method for High-Level System Design and Analysis.
  5. (2003). ArcAngel: a Tactic Language for Refinement. doi
  6. (1985). Communicating Sequential Processes. doi
  7. (1989). Communication and Concurrency.
  8. (1997). CSP-OZ: A combination of Object-Z and CSP. doi
  9. (1990). Data Refinement by Calculation. doi
  10. (1986). Data Refinement Refined. doi
  11. (1998). How to Combine Z with a Process Algebra. In doi
  12. (1996). Integrated Formal Methods with Richer Methodological Profiles for the Development of Multi-perspective Systems.
  13. (1986). Is Computing an Experimental Science?
  14. Non-interference through Determinism. In doi
  15. Powerproof reference page.
  16. (1989). Predicate Calculus and Program Semantics. Texts and Monographs in Computer Science. doi
  17. (2000). Process Oriented Design for Java: Concurrency for All. In doi
  18. (1994). Programming from Specifications. doi
  19. (1988). Programming in occam 2.
  20. (2002). Refinement of Actions in Circus. doi
  21. (2000). Software Manual for Windows Z/EVES Version 2.1.
  22. (1990). Stepwise refinement of parallel algorithms. doi
  23. (1986). Systematic Software Development Using VDM. doi
  24. (1996). The B-book: assigning programs to meanings. doi
  25. (1998). The Theory and Practice of Concurrency.
  26. (1991). Towards a design calculus for communicating programs. In doi
  27. (1998). Unifying Theories of Programming. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.