In the world we live in concurrency is the norm. For example, the human body
is a massively concurrent system, comprising a huge number of cells, all simultaneously
evolving and independently engaging in their individual biological
processing. In addition, in the biological world, truly sequential systems rarely
arise. However, they are more common when manmade artefacts are considered.
In particular, computer systems are often developed from a sequential
perspective. Why is this? The simple reason is that it is easier for us to think
about sequential, rather than concurrent, systems. Thus, we use sequentiality
as a device to simplify the design process.
However, the need for increasingly powerful, flexible and usable computer
systems mitigates against simplifying sequentiality assumptions. A good example
of this is the all-powerful position held by the Internet, which is highly
concurrent at many different levels of decomposition. Thus, the modern computer
scientist (and indeed the modern scientist in general) is forced to think
about concurrent systems and the subtle and intricate behaviour that emerges
from the interaction of simultaneously evolving components.
Over a period of 25 years, or so, the field of concurrency theory has been
involved in the development of a set of mathematical techniques that can
help system developers to think about and build concurrent systems. These
theories are the subject matter of this book.
Our motivation in writing this book was twofold. (1) We wished to synthesise
into a single coherent story, a body of research that is scattered across a set
of journal and conference publications. (2) We have also sought to highlight
newer research (mainly undertaken by the authors) on concurrency theory
models of real-time systems. The first of these aspects yields the text book
style of the first three parts of the book, whereas the second has motivated
the approach of the fourth part, which has more of the flavour of a research