Development methods for (sequential) programs that run in isolation have been studied elsewhere. Programs that run in parallel can interfere with each other, either via shared storage or by sending messages. Extensions to earlier development methods are proposed for the rigorous development of interfering programs. In particular, extensions to the… (More)
This volume introduces and explores those parts of programming language theory that have important applications in improving the quality of software. Provides an elementary introduction to Floyd-Hoare logic and Calculus, Combinators and Functional Programming. This textbook offers a deep understanding of the essential concepts of programming languages. The… (More)
Companion papers give examples of the development of concurrent programs using a design notation which employs a number of concepts from object-oriented programming languages. This paper documents the semantics of the design language by providing a mapping to the pi-calculus.
This paper traces the important steps in the history –up to around 1990– of research on reasoning about programs. The main focus is on sequential imperative programs but some comments are made on concur-rency. Initially, researchers focussed on ways of verifying that a program satisfies its specification (or that two programs were equivalent). Over time it… (More)
The challenge of finding compositional ways of (formally) developing concurrent programs is considerable. Various forms of rely and guarantee conditions have been used to record and reason about interference in ways which do indeed provide compositional development methods for such programs.This paper presents a new approach to justifying the soundness of… (More)