Distributed Systems — Prof. Omicini

Modelling Distributed Systems. Process Algebra

DS-M9 · Module 2Andrea Omicini — DISI, Univ. BolognaA.Y. 2025/2026

In this lesson

1. Prologue: Why Formal Models Matter

Are software and system architectures enough to understand distributed systems? Architecture models structure and organisation, but they do not model behaviour. Behavioural properties of distributed systems can be understood qualitatively through intuition, but they cannot be proven or demonstrated rigorously without a well-defined formal representation.

This is the central motivation for process algebra: to provide a formal, mathematical language for describing and reasoning about the behaviour of concurrent and distributed systems. Without such a language, we are left with ambiguous natural-language descriptions and unprovable claims.

Key insight

Formal models are not optional in distributed systems. They are the only way to prove properties rather than merely suggest them. Process algebras are among the most influential formal techniques for this purpose.

2. Concurrency as the Primary Source of Complexity

What makes distributed systems so hard to analyse? The answer, at its core, is concurrency. Concurrency is the first source of complexity in distributed systems: multiple processes execute simultaneously, interleaving their actions in ways that are unpredictable and non-reproducible.

This unpredictability means that a distributed system's behaviour cannot be understood by tracing a single execution path. Instead, we must reason about all possible interleavings of concurrent actions. This is exponentially more complex than sequential reasoning.

Note

Concurrency exists even in a single multi-core machine. Distribution adds further challenges: network latency, partial failure, and lack of a shared clock. But the core difficulty — reasoning about interleaved, interacting processes — is already present in concurrent systems.

A productive path forward is to use formal models for concurrent systems, abstracting away from physical location and distribution details. Just as software architecture models structural organisation, process algebras model behavioural organisation — but in a formal, algebraic way that permits proof.

3. Harnessing Complexity with Formal Models

Formal models for concurrent systems serve several essential purposes:

Several formal approaches exist for modelling concurrent systems: Petri Nets, temporal logics, automata-theoretic models, and — the focus of this lesson — process algebra. Each approach has strengths, but process algebras are uniquely suited to compositional reasoning: building the properties of a system from the properties of its components.

The examiner will ask

Why is compositionality important for distributed systems? Because distributed systems are built from independently developed components that interact across a network. A compositional formal model lets you verify the system by verifying each component separately and combining the results — essential for scalability of analysis.

4. Before Process Algebra: Three Semantic Traditions

Before process algebra emerged in the 1980s, formal reasoning about computation was largely focussed on giving semantics to programming languages. Three main approaches dominated:

ApproachCore IdeaLimitation for Concurrency
Operational semanticsA program is modelled as execution on an abstract machine. A state is a valuation of variables; a transition is an elementary instruction.Typically sequential; concurrency must be added as an extra layer.
Denotational semanticsPrograms are modelled as functions transforming input into output. More abstract than operational.Functions are inherently deterministic; concurrent interaction is hard to capture.
Axiomatic semanticsEmphasis on proof methods: preconditions, postconditions, invariants (Hoare triples).Interference between concurrent processes breaks simple proof rules.

Before process algebra, the main formalism for concurrent systems was Petri Nets [Peterson, 1977]. While powerful for modelling concurrency and synchronisation, Petri Nets lack the algebraic structure that makes equational reasoning possible. Process algebras combine the precision of operational semantics with the algebraic elegance of equational reasoning.

Editor’s note

The three semantic traditions are not mutually exclusive. Modern process algebras typically use structural operational semantics (SOS) by Plotkin [1981] as a foundation, then build behavioural equivalences on top — combining operational and algebraic approaches.

5. Core Concepts: Process, Algebra, Calculus

Three terms define the foundation [Bergstra et al., 2001]:

Putting these together: a process algebra is a formal description technique for complex computer systems, especially those with communicating, concurrently-executing components. It provides a small set of operators for building systems from components, a set of laws that those operators obey, and a way to calculate the behaviour of the resulting system.

Key terminology

In Italian, the concept may be clearer as algebra dei processi — an algebra of processes, not an algebra for processes. The processes themselves are the elements of the algebraic structure.

6. The Three Schools: ACP, CCS, CSP

Several process algebras have been developed since the early 1980s. The three best-known are:

Algebra of Communicating Processes [Bergstra and Klop, 1984]

ACP takes an algebraic/axiomatic approach as its starting point. It defines processes via a set of equational axioms and emphasises the algebraic manipulation of process expressions. Communication is modelled via a communication function γ that maps pairs of atomic actions to a combined action. ACP is the most "algebraic" of the three: its laws define what it means to be a process algebra.

Calculus of Communicating Systems [Milner, 1980]

CCS, introduced by Robin Milner, emphasises the interplay between observation and equivalence. Key features include: labelled transitions that describe how a process evolves, a special τ (tau) action for internal (unobservable) steps, and strong and weak bisimulation as notions of process equivalence. CCS is built around the idea that two processes are equivalent if an external observer cannot distinguish them.

Communicating Sequential Processes [Brookes et al., 1984]

CSP, developed by Hoare and colleagues, models processes in terms of the events they can perform and the refusals (events they can refuse). CSP uses a distinctive parallel operator that requires synchronisation on shared actions. Its semantic model is based on failures-divergences, making it particularly well-suited for analysing deadlock and livelock properties.

Note

Despite their differences, ACP, CCS, and CSP share the same basic ingredients: operators for building processes, structural operational semantics, and behavioural relations for comparing processes. This lesson covers the common core shared by all process algebras, following the unified presentation of [Baeten, 2005].

7. Key Ingredients of Process Algebras

All process algebras share three essential ingredients [Bergstra et al., 2001]:

1. Compositional Modelling

Process algebras provide a small number of constructs for building larger systems from smaller ones. Just as a programming language provides control structures, a process algebra provides operators that combine process terms into more complex terms. The behaviour of the composite is determined by the behaviour of its parts and the way they are combined.

2. Operational Semantics (SOS)

Process algebras are typically equipped with structural operational semantics [Plotkin, 1981]. SOS describes the single-step execution capabilities of a system through a set of inference rules. These rules translate a process algebra term into a labelled transition system (LTS) — a directed graph where nodes are process states and edges are labelled actions.

3. Behavioural Reasoning

Process algebras also feature behavioural relations for comparing different systems described in the algebra. These relations (bisimulation, trace equivalence, failures equivalence) answer the question: "Are these two process descriptions behaviourally the same?" This is essential for verification: you can compare a specification with an implementation, or check whether two different designs satisfy the same requirements.

Key idea

These three ingredients — composition, operational rules, behavioural relations — work together. Composition lets you build large models. Operational rules tell you what each model does. Behavioural relations tell you when two models are equivalent, enabling substitutability and verification.

8. The Axiomatic Foundation

The word algebra denotes an algebraic/axiomatic approach to system behaviour. Process algebras use the methods and techniques of universal algebra [MacLane and Birkhoff, 1967]:

However, process algebra often crosses the boundaries of universal algebra. While universal algebra typically deals with total functions and equations, process algebra must handle non-determinism (one term may have multiple possible behaviours) and interaction (behaviour depends on the environment). This richness is what makes process algebras powerful — and also what makes them more complex than simple equational theories.

The examiner will ask

What does it mean to say "a process is an element of a process algebra"? It means that processes are not defined operationally (by their code) but algebraically: a process is anything that satisfies the axioms of the algebra. This is analogous to how a "group element" is anything that satisfies the group axioms — the structure defines the elements.

9. Basic Operators: +, ;, ∥

At the heart of every process algebra is a small set of operators for combining processes into systems [Baeten, 2005]. Three operators form the core:

OperatorNameMeaningExample
x + yAlternative compositionExecutes either x or y. A choice is made at the moment the first action of either branch occurs.coffee + tea behaves as coffee or tea, depending on which action happens first
x ; y (or x · y)Sequential compositionExecutes x first; when x terminates successfully, executes y.login ; query does login, then query
x ∥ yParallel compositionExecutes x and y concurrently. Their actions may interleave arbitrarily, and they may synchronise via a communication function.send ∥ receive executes both in parallel

These operators are compositional: the behaviour of a composite term is defined in terms of the behaviours of its subterms. This is what makes process algebra a calculus — you can calculate the behaviour of a system by composing the behaviours of its parts.

Precedence

The standard precedence goes from + (weakest binding) to ; (stronger) to ∥ (strongest). So a + b ; c ∥ d is parsed as a + ((b ; c) ∥ d). Parentheses should be used for clarity.

Atomic actions represent the indivisible units of behaviour. Each atomic action a is itself a process that can execute itself and then terminate successfully (denoted ✓). All complex processes are built from these atomic actions using the three operators.

10. Structural Laws of Process Algebra

Given a set of atomic actions and the three basic operators, we need laws that govern how these operators behave. These structural laws define what it means to be a process algebra [Baeten, 2005]:

x + y = y + x                          Commutativity of +
x + (y + z) = (x + y) + z              Associativity of +
x + x = x                               Idempotency of +
(x + y) ; z = x ; z + y ; z            Right distributivity of + over ;
(x ; y) ; z = x ; (y ; z)              Associativity of ;
x ∥ y = y ∥ x                          Commutativity of ∥
(x ∥ y) ∥ z = x ∥ (y ∥ z)              Associativity of ∥

Any mathematical structure with three binary operations satisfying these seven laws is a process algebra. The laws capture essential intuitions:

Most typically, such algebraic structures are expressed in terms of automata, usually called transition systems. The laws constrain what transitions are possible, ensuring that the operational behaviour respects the algebraic structure.

11. Choosing the Laws: Branching vs Linear Time

The seven laws presented above can be extended with left distributivity of + over ;:

x ; (y + z) = x ; y + x ; z           Left distributivity of + over ;

What is the effect of adding or removing this law? The answer reveals a deep distinction in how we model time and choice in concurrent systems:

If we adopt both right and left distributivity, then the moment of choice does not matter. Consider:

(a + b) ; c  =  a ; c + b ; c     (with both distributivities)

The choice between a and b can be made either before executing c (left side) or after the first action (right side). Both are equivalent. This is called linear time: the system's behaviour is just a set of action sequences (traces), and the branching structure is irrelevant.

If we remove left distributivity, then the moment of choice matters:

(a + b) ; c  ≠  a ; c + b ; c     (without left distributivity)

In (a + b) ; c, the choice between a and b is made before any action occurs. In a ; c + b ; c, the choice is made after executing the first action of the chosen branch. The two terms describe different systems. This is called branching time: the tree of possible futures matters, not just the set of possible traces.

With both left and right distributivity, a choice made at different points in a computation can be "pushed around" using the laws. The behaviour is fully determined by the set of possible execution traces. Two systems with the same set of traces are behaviourally equivalent, even if their internal branching structure differs.

This corresponds to trace semantics, the simplest behavioural equivalence.

Without left distributivity, the structure of choices matters. Two systems with the same traces may be distinguishable if their branching points differ. This enables finer-grained behavioural relations like bisimulation, which requires that matching states have matching choices.

Most process algebras (CCS, CSP) adopt branching time as the default, giving them more distinguishing power.

Key trade-off

Linear time gives simpler models that are easier to compute with. Branching time gives more discriminating power that can detect subtle differences in system behaviour. The choice of laws determines which notion of equivalence the algebra uses.

12. SOS Transition Rules

The structural operational semantics (SOS) of process algebra is defined by a set of transition rules. These rules give an operational meaning to each operator: they describe, in a precise and unambiguous way, how a process term can perform a single action and evolve to a new term. Click each rule to see its explanation.

Understanding the Rules

The transition relation is written as Pa Q, meaning "process P can perform action a and become process Q." The symbol ✓ denotes successful termination — a state from which no further actions are possible.

The rules are structural: they define the transitions of a composite term in terms of the transitions of its subterms. This is the essence of compositionality.

13. Parallel Composition with Communication

In addition to independent interleaving, parallel composition in process algebra supports synchronous communication via a communication function γ. When two processes execute complementary actions simultaneously, γ combines them into a single action:

sequenceDiagram
    participant P as Process P
    participant Q as Process Q
    Note over P: x —a→ x'
    Note over Q: y —b→ y'
    rect rgb(200, 230, 255)
      Note over P,Q: Synchronisation γ(a,b) = c
      P->>Q: Action a
      Note right of Q: Action b
    end
    Note over P: x'
    Note over Q: y'
    Note over P,Q: Composite: x ∥ y —c→ x' ∥ y'

The communication function γ is a partial function on atomic actions: γ(a,b) is defined only when a and b are intended to synchronise. In CCS, for example, complementary actions are denoted as a and ā, and their communication produces the internal action τ (tau).

The full communication rule is:

  x —a→ x'    y —b→ y'
———————————————————————  (γ(a,b) defined)
  x ∥ y —γ(a,b)→ x' ∥ y'

This rule says: if P can do a and become P', and Q can do b and become Q', and γ(a,b) is defined, then the parallel composition P∥Q can perform the composite action γ(a,b) and become P'∥Q'. The two separate actions become one synchronised action — capturing the essence of communication.

Note

In ACP, the communication function is an explicit parameter of the algebra. In CCS, communication is built into the syntax via complementary names (a and ā). In CSP, parallel composition requires synchronisation on a specified set of actions. These are differences in style, not in substance — all three capture the same fundamental idea of synchronous communication.

14. Interactive Reduction: (a;b)∥(c;d)

Now you can drive a process algebra reduction yourself. The term below represents two sequential processes running in parallel. Click the buttons to advance each process. Watch how the overall expression evolves with each step.

What to observe

The order in which you advance P and Q determines the interleaving. Different sequences produce different (but all valid) reduction paths. This is the essence of concurrency: multiple possible interleavings, all equally correct.

15. Communication in Action: γ(a,b)=c

When two processes can synchronise via the communication function γ, something new happens: instead of interleaving independently, they synchronise on complementary actions. Click to see the communication rule in action.

The examiner will ask

What happens if only one process is ready to communicate but the other is not? In process algebra with synchronous communication, the first process blocks until the second is ready. This models the behaviour of synchronous message passing: a send operation blocks until the corresponding receive is executed.

16. Transition System Explorer

Every process algebra term corresponds to a labelled transition system (LTS): a graph where nodes are process states and edges are labelled with actions. Explore the LTS for the process a;(b + c) below. Click any state to see its outgoing transitions, then click a transition to follow it.

Notice the branching at state S1: after executing a, the process can choose between b or c. This is exactly the branching structure that process algebras are designed to capture and reason about. The LTS makes this structure explicit: every node, every edge, every choice is visible.

This correspondence between algebraic terms and transition systems is the bridge between the algebraic view (processes as terms with laws) and the operational view (processes as automata with states and transitions). The SOS rules ensure that every term maps to a unique LTS, and the structural laws ensure that equivalent terms map to equivalent LTSs.

17. Specification and Verification with Process Algebra

Process algebras serve two primary uses: specification and verification [Baeten, 2005].

Specification

How do we specify a model for a concurrent/distributed system S using process algebra?

  1. Select the most suitable process algebraic framework (ACP, CCS, CSP) and the specific structural laws that match the desired notion of equivalence
  2. Define the atomic actions of S — the indivisible operations that the system components can perform
  3. Define the behaviour of the system in terms of transitions that comply with the structural laws of the algebra

The result is a formal, unambiguous description of the system's behaviour that can be manipulated, analysed, and compared.

Verification

How do we exploit a process algebra to verify properties of a model for a concurrent/distributed system?

Key insight

Specification and verification are two sides of the same coin. The same formal language that lets you describe a system also lets you reason about it. This unity of description and analysis is the distinctive strength of process algebras compared to informal design methods.

18. Lessons Learnt: Achievements and Limitations

For good

Formal models are essential in distributed systems for proving properties and constraining implementation. Process algebras are among the most widely used techniques for representing distributed systems and reasoning about their properties. It is not so difficult to handle them to represent basic properties, and proof can be built over systems.

For not-so-good

Proofs are not intuitive enough to be an everyday tool for most software engineers. Moreover, we have only dealt with concurrent computation — there has been no mention of physical distribution. Process algebras model concurrent interaction, but distribution adds further challenges (location, mobility, partial failure, real time) that basic process algebra does not address. There are formal techniques that deal with distribution (distributed process algebras, mobile ambients, the π-calculus), but for the purposes of this course, we content ourselves with process algebra as a foundation.

AspectAchievementLimitation
ConcurrencyCaptures interleaving and non-determinism preciselyAssumes perfect interleaving; no notion of real time
CommunicationModels synchronous message passing via γ functionAsynchronous communication requires additional modelling
CompositionalityProperties of a system derive from properties of partsRequires clean separation of concerns; not always possible
VerificationEnables equivalence checking and model checkingState-space explosion for large systems
DistributionAbstracts away from location to focus on interactionDoes not model physical distribution, mobility, or location
Looking ahead

Extensions of process algebra — the π-calculus, mobile ambients, and timed process algebras — address some of these limitations by adding notions of mobility, location, and time. These are topics for more advanced courses in distributed systems theory.

Check Your Understanding

What is process algebra, and why is it needed for distributed systems?

Process algebra is a formal description technique for complex computer systems with communicating, concurrently-executing components. It is needed because software architecture models structure but not behaviour, and behavioural properties of distributed systems cannot be rigorously proven without formal representation. Process algebras combine compositional modelling, operational semantics, and behavioural reasoning to enable specification and verification of concurrent/distributed systems.

Name and describe the three best-known process algebras.

ACP (Algebra of Communicating Processes, Bergstra & Klop, 1984) — emphasises the axiomatic approach with a communication function γ. CCS (Calculus of Communicating Systems, Milner, 1980) — emphasises observation and bisimulation equivalence, with internal action τ. CSP (Communicating Sequential Processes, Brookes, Hoare & Roscoe, 1984) — models processes via events and refusals, using failures-divergences semantics and requiring synchronisation on shared actions.

What are the three basic operators of process algebra? Give a concise explanation of each.

+ (alternative composition): represents choice — x + y executes either x or y. ; or · (sequential composition): represents sequencing — x ; y executes x first, then y. (parallel composition): represents concurrency — x ∥ y executes x and y in parallel, with interleaving and possible synchronisation.

List the seven basic structural laws of process algebra.

1. x + y = y + x (commutativity of +). 2. x + (y + z) = (x + y) + z (associativity of +). 3. x + x = x (idempotency of +). 4. (x + y) ; z = x ; z + y ; z (right distributivity of + over ;). 5. (x ; y) ; z = x ; (y ; z) (associativity of ;). 6. x ∥ y = y ∥ x (commutativity of ∥). 7. (x ∥ y) ∥ z = x ∥ (y ∥ z) (associativity of ∥).

Explain the difference between branching time and linear time in process algebra. What law determines which one applies?

Linear time (with both left and right distributivity of + over ;) means the moment of choice does not matter — only the set of possible execution traces matters. Branching time (without left distributivity) means the moment of choice matters — the branching structure of the process tree is significant. The determining factor is the presence or absence of the law x ; (y + z) = x ; y + x ; z (left distributivity).

What are the three key ingredients shared by all process algebras according to [Bergstra et al., 2001]?

Compositional modelling — a small number of constructs for building larger systems from smaller ones. Operational semantics (SOS) — describing single-step execution capabilities via labelled transition systems. Behavioural reasoning — behavioural relations (bisimulation, trace equivalence) for relating different systems.

Describe the SOS transition rule for atomic actions. Why is this rule the base case for all larger terms?

The atomic action rule states: a →a ✓. An atomic action a can always execute itself and terminate successfully. This is the base case because every process term is ultimately built from atomic actions using the operators. The transition rules for operators define how transitions of composite terms reduce to transitions of their subterms, eventually reaching atomic actions.

How does the communication function γ work in parallel composition? Give an example.

γ is a partial function on atomic actions. When process P performs a and process Q performs b simultaneously, and γ(a,b) is defined, the parallel composition P∥Q performs the composite action γ(a,b) and transitions to the combined successor state. Example: in CCS, γ(a, ā) = τ (the internal action), representing the synchronous communication of a message a on a channel.

What are the two main uses of process algebra mentioned in the slides? Explain each briefly.

Specification: selecting a process algebraic framework, defining the atomic actions of the system, and defining the system's behaviour in terms of transitions that comply with the structural laws. Verification: exploiting the axioms and transitions to derive properties of the system — through equivalence checking, model checking, or algebraic reasoning.

What are the main limitations of process algebra as a model for distributed systems?

Process algebras deal primarily with concurrent computation, not physical distribution. They do not model location, mobility, partial failure, real-time constraints, or network topology. Additionally, proofs are not intuitive enough for everyday engineering use, and model checking suffers from state-space explosion for large systems. Extended formalisms like the π-calculus address some of these limitations.

Explain what "compositional modelling" means in the context of process algebra. Why is it particularly important for distributed systems?

Compositional modelling means that the behaviour of a composite system is defined in terms of the behaviours of its components. Each operator defines exactly how its subterms' behaviours combine. This is important for distributed systems because they are built from independently developed, interacting components. Compositional verification lets you verify components separately and combine the results — essential for scalability.

Trace the reduction of (a ; b) ∥ c under both possible interleavings. What does this tell you about concurrency?

Interleaving 1: (a;b)∥c →a b∥c →b ✓∥c →c ✓. Interleaving 2: (a;b)∥c →c (a;b)∥✓ →a b∥✓ →b ✓. Both are valid and produce the same set of actions (a, b, c) but in different orders. This illustrates that concurrency means multiple interleavings are possible, all equally correct from the system's perspective.