Doctoral thesis, 1991

During recent years, calculi for reasoning about concurrent systems have been developed; examples are CCS (Calculus of Communicating Systems), CSP (Communicating Sequential Processs) and ACP (Algebra of Communicating Processes). Their theory has been studied intensively; rather less has been done in applying these calculi to problems of significant size. The reported work in this direction suggests that we should be prepared to develop new formal systems and notation for the problems we attack, and also that the sheer mechanics are difficult enough that we need new techniques to organise and structure proofs.
In this thesis we study bisimulation proofs, applied to a small set of related problems. We define a class of new operators to capture the structure in these problems, and use them to produce significantly smaller and clearer proofs than were previously possible. In order to avoid complexities due to interleavings, we use a new calculus, MCCS, that can be seen as lying between CCS and ASCCS (a variant of CCS); like the latter, MCCS allows synchronisation but is not a synchronous calculus.
We begin by summarising the new layout for bisimulation proofs developed for a proof of a simple fault tolerant system carried out in CCS. This proof forms the Appendix to the thesis.
Next, we define MCCS and study its properties. deriving most of themm from a proof of a simple fault tolerant system carried out in CCS. This proof forms the Appendix to the thesis.
Next, we define MCCS and study its properties, deriving most of them from the related calculi, SCCS, ASCCS and CCS. This study also clarifies the relations between these older calculi, finding them to be closer than had been previously expressed in [Mil83]. In the process, we contribute to the study of ASCCS, the least studied of the three.
Our new operators are designed specifically to help analyse the structure of systems into normal and exception processing; the major theorem in each case is the Synchronised Displacement Theorem. We comment on other possible design choices. We use the new operators and MCCS to reformulate and prove a variant of the example in the Appendix.
A natural question that arises when we deal with new operators is whether they are derivable from the old. We study this matter, contributing a new technique for proving operators non-derivable. We prove many of the operators in SCCS and CCS to be independent, i.e. not definable in terms of the other operators.

Computer Science