A Tutorial Introduction to CSP in Unifying Theories of Programming

  title={A Tutorial Introduction to CSP in Unifying Theories of Programming},
  author={Ana Cavalcanti and Jim Woodcock},
  booktitle={Pernambuco Summer School on Software Engineering},
In their Unifying Theories of Programming (UTP), Hoare & He use the alphabetised relational calculus to give denotational semantics to a wide variety of constructs taken from different programming paradigms. A key concept in their programme is the design: the familiar precondition-postcondition pair that describes the contract between a programmer and a client. We give a tutorial introduction to the theory of alphabetised relations, and its sub-theory of designs. We illustrate the ideas by… 

Unifying Theories of Programming in Isabelle

This is a tutorial introduction to the two most basic theories in Hoare & He's Unifying Theories of Programming and their mechanisation in the Isabelle interactive theorem prover. We describe the

UTP by Example: Designs

We present a tutorial introduction to the semantics of a basic nondeterministic imperative programming language in Unifying Theories of Programming (UTP). First, we give a simple relational semantics

Unifying Theories of Objects

This work provides a core object calculus with an operational small-step evaluation rule semantics, and a corresponding UTP model with a denotational relational predicate semantics, intended to provide facilities for encoding both object-based and class-based languages.

Angelic nondeterminism in the unifying theories of programming

This paper proposes the unification of a model of binary multirelations, which is isomorphic to the monotonic predicate transformers model and can express angelic and demonic nondeterminism.

Designs with Angelic Nondeterminism

  • P. RibeiroA. Cavalcanti
  • Computer Science
    2013 International Symposium on Theoretical Aspects of Software Engineering
  • 2013
This paper cast the angelic nondeterminism theory of the UTP as a theory of designs with the long-term objective of providing a model for well established refinement process algebras like Communicating Sequential Processes and Circus.

Angelic Nondeterminism and Unifying Theories of Programming

A Theory of Pointers for the UTP

This paper adds to the UTP a theory of pointers and records that provides a model for objects and sharing in languages like Java and C++, based on the hierarchical addressing scheme used to refer to record fields in conventional languages.

Unifying theories in ProofPower-Z

This paper presents a mechanisation of part of Hoare and He’s unification work in a theorem prover, ProofPower-Z; the theories of alphabetised relations, designs, reactive and CSP processes are in the scope of this paper.

Pointers and Records in the Unifying Theories of Programming

A theory of pointers and records that provides a representation for objects and sharing in languages like Java and C++ and links it with the theory of designs, providing a foundation for reasoning about total correctness of pointer-based sequential programs.

Isabelle/UTP: Mechanised Theory Engineering for Unifying Theories of Programming

This document provides a semantic embedding of the alphabetised relational calculus in Isabelle/HOL, including new type definitions, relational constructors, automated proof tactics, and accompanying algebraic laws.

A Tutorial Introduction to Designs in Unifying Theories of Programming

This work gives a tutorial introduction to the theory of alphabetised relations, and its sub-theory of designs, and illustrates the ideas by applying them to theories of imperative programming, including Hoare logic, weakest preconditions, and the refinement calculus.

A Theoretical Basis for Stepwise Refinement and the Programming Calculus

The Theory and Practice of Concurrency

This book provides a detailed foundation for working with CSP, using as little mathematics as possible, and introduces the ideas behind operational, denotational and algebraic models of CSP.

A Refinement Strategy for Circus

A refinement strategy for Circus is presented, which is the combination of Z, CSP, and the refinement calculus in the setting of Hoare and He’s unifying theories of programming, which provides a coherent technique for the stepwise refinement of concurrent and distributed programs involving rich data structures.

A Semantic Foundation for TCOZ in Unifying Theories of Programming

A novel unified semantic model of the channel based synchronisation and sensor/actuator based asynchronisation in T COZ is presented and will be used as a reference document for developing tools support for TCOZ and as a semantic foundation for proving soundness of those tools.

Recasting Hoare and He's Unifying Theory of Programs in the Context of General Correctness

The single-predicate model of sequential programs is reviewed, and it is shown how it can be recast to overcome its inability always to provide an adequate description of the required behaviour of a sequential program which implements a partial decision procedure.

Towards a Time Model for Circus

An abstraction function is created that maps the timed model to the original model of Circus to create a relation between the two models and allows the exploration of some properties of the timed semantics in the untimed model.

Refinement Calculus: A Systematic Introduction

The book addresses specific issues related to program refinement, such as implementing specification statements, making refinements in context, and transforming iterative structures in a correctness preserving way.

The Semantics of Circus

The language of Circus is described and the formalisation of its model is described in Hoare & He's unifying theories of programming.

Programming from specifications

  • Carroll Morgan
  • Computer Science
    Prentice Hall International Series in computer science
  • 1990
This second edition features substantial restructuring of earlier material, streamlining the introduction of programming language features; simplified presentation of procedures, parameters and recursion; an expanded chapter on data refinement, giving the much simpler laws that specialize to functional abstractions.