CCS, the Calculus of Communicating Systems
暂无分享,去创建一个
In the case of sequential paradigms like IMP and HOFL we have seen that all computations are deterministic and that any two non-terminating programs are equivalent. This is not necessarily the case for concurrent, interacting systems, which can exhibit different observable behaviours while they compute, also along infinite runs. Consider, e.g., the software governing a web server or the processes of an operating system. In this chapter we introduce a language, called CCS, whose focus is the interaction between concurrently running processes. CCS can be used both as an abstract specification language and as a programming language, allowing seamless comparison between system specifications (desired behaviour) and concrete implementations.We shall see that nondeterminism and non-termination are desirable semantic features in this setting. We start by presenting the operational semantics of CCS in terms of a labelled transition system. Then we define some abstract equivalences between CCS terms, and investigate their properties with respect to compositionality and algebraic axiomatisation. In particular we study bisimilarity, a milestone abstract equivalence with large applicability and interesting theoretical properties. We also define a suitable modal logic, called Hennessy-Milner logic, whose induced logical equivalence is shown to coincide with strong bisimilarity. Finally, we characterise strong bisimilarity as a fixpoint of a monotone operator and explore some alternative abstract equivalences where internal, invisible actions are abstracted away.