The Coarsest Precongruences Respecting Safety and Liveness Properties

Rob van Glabbeek

NICTA, Sydney, Australia School of Computer Science and Engineering, University of New South Wales, Sydney, Australia

This paper characterises the coarsest refinement preorders on labelled transition systems that are precongruences for renaming and partially synchronous interleaving operators, and respect all safety, liveness, and conditional liveness properties, respectively.

1 Introduction

The goal of this paper is to define and characterise certain semantic equivalences ≡ and refinement preorders ⊑ on processes. The idea is that p ≡ q says, essentially, that for practical purposes processes p and q are equally suitable, i.e. one can be replaced for by the other without untoward side effects. Likewise, p ⊑ q says that for all practical purposes under consideration, q is at least as suitable as p, i.e. it will never harm to replace p by q. Thus, one should have that p ≡ q iff both p ⊑ q and q ⊑ p.

Naturally, the choice of ≡ and ⊑ depends on how one models a process, and what range of practical purposes one considers. I this paper I restrict myself to one of the most basic process models: labelled transition systems. I study processes that merely perform actions a, b, c, … which themselves are not subject to further investigations. These actions may be instantaneous or durational, but they may not last forever; moreover, in a finite amount of time only finitely many actions can be carried out. I distinguish between visible actions, that can be observed by the environment of a process, and whose occurrence can be influenced by this environment, and invisible actions, that cannot be observed of influenced. Since there is no need to distinguish different invisible actions, I can just as well consider all of them to be occurrences of the same invisible action, which is traditionally called τ. Furthermore, I abstract from real-time and probabilistic aspects of processes.

This choice of process model already rules out many practical purposes for which one process could be more suitable than another. I can for instance not compare processes on speed, since this is an issue that my process model has already abstracted from. In fact, the only aspects of processes that are captured by such a model and that may matter in practical applications, are the sequences of actions that a process may perform in a, possibly infinite, run, performed in, or in collaboration with, a certain environment. As the invisible action is by definition unobservable, it moreover suffices to consider sequences of visible actions. A sequence of visible actions that a process p may perform is called a trace of p; it is a complete trace if it is performed during a maximal run of p, one that cannot be further extended. Obviously, the traces of p are completely determined by the complete traces of p, namely as their prefixes.

Based on the considerations above, it is tempting to postulate that the relevant behaviour of a process, as far as discernible in terms of labelled transition systems, is completely determined by its set of complete traces; hence two processes should be equivalent if they have the same competed traces. However, this argument bypasses the role of the environment in influencing the behaviour of a process. Often, one allows the actions a process performs to be synchronisations with the environment, and the environment can influence the course of action of a process by synchronising with some actions but not with others. Therefore, a safe over-approximation of the relevant behaviour of a process is not merely its set of complete traces, but rather its set of complete traces obtained as a function of the environment the process is running in.

In this paper I consider a neutral environment in which all courses of action are possible and the behaviour of a process is indeed determined by its complete traces. All other ways in which the environment may influence the behaviour of a process are given in terms of contexts build from other processes and certain composition operators. It could for instance be that in the neutral environment there is no way to tell the difference between processes p and q; maybe because they have the same set of complete traces. However, for a suitable parallel composition operator ∥ and other process r it may be that there is a manifest practical difference between p∥r and q∥r, so that one has p∥r ≢ q∥r. Now that fact alone is taken to be enough reason to postulate that p ≢ q. Namely the difference between p and q can be spotted by placing them in a context ∥r. This context can be regarded as an environment in which the behaviours of p and q differ.

Following this programme, a suitable semantic equivalence on processes is defined in terms of two requirements. First of all the behaviour of processes is compared in the neutral environment. This entails isolating a class C of properties φ of processes that are deemed relevant in a given range of applications. One then requires for p ≡ q to hold that p and q have the same properties from this class:

p ≡ q ⇒ ∀φ ∈ C . (p ⊧ φ ⇔ q ⊧ φ)  (1)

where p ⊧ φ denotes that process p has the property φ. An equivalence ≡ that satisfies this last requirement is said to respect or preserve the properties in C. The second requirement entails selecting a class O of useful operators for combining processes. One then requires that for any context C[ ] (such as ∥r) built from operators from O and arbitrary processes, that

p ≡ q ⇒ C[p] ≡ C[q].  (2)

An equivalence ≡ that satisfies this last requirement is called a congruence for O. For the sake of intuition it may help to consider the contrapositive formulation of these implications: if there exists a property φ in C that holds for p but not for q, or vice versa, then p and q cannot be considered equivalent. Likewise C[p] ≢ C[q] implies p ≢ q.

These two requirements merely insist that the desired equivalence ≡ does not identify processes that in some context differ on their relevant properties. They are satisfied by many equivalence relations, including the identity relation, that distinguishes all processes. In order to characterise precisely when two systems have the same relevant properties in any relevant context, one takes the coarsest equivalence satisfying (1) and (2); the one making the most identifications. This equivalence is called fully abstract w.r.t. C and O. It always exists, and, as is straightforward to check, is characterised by

p ≡ q ⇔ ∀O-context C[ ]. ∀φ ∈ C . (C[p] ⊧ φ ⇔ C[q] ⊧ φ).

When, for a certain application, the choice of C and O is clear, the unique equivalence relation that is fully abstract w.r.t. C and O is the right semantic equivalence for that application. However, when the choice of C and O is not clear, or when proving results that may be re-used in future applications that may call for extending C or O, it is better to err on the side of caution, and use equivalences that satisfy (1) and (2) but need not be fully abstract; instead the finest equivalence ≡_{fine} for which a result p ≡_{fine} q can be proved is often preferable, because this immediately entails that p ≡ q for any coarser equivalence relation ≡, in particular for an ≡ that may turn out to be fully abstract for some future choice of C and O. It is for this reason that much actual verification work employs the finest equivalences that lend themselves for verification purposes, such as the various variants of bisimulation equivalence [13], see e.g. [1]. Nevertheless, this paper is devoted to the characterisation of fully abstract equivalences, and preorders, for a few suitable choices of C and O.

The programme for refinement preorders proceeds along the same lines, but here it is important to distinguish between good and bad properties of processes. The counterpart of (1) is

p ⊑ q ⇒ ∀φ ∈ G . (p ⊧ φ ⇒ q ⊧ φ)  (3)

where G is the set of good properties within C, those that for some applications may be required of a process. If this holds, ⊑ respects or preserves the properties in G. When dealing with bad properties, those that in some applications should be avoided, the implication between p ⊧ φ and q ⊧ φ is oriented in the other direction. Since every bad property φ can be reformulated as a good property ¬φ, there is no specific need add a variant of (3) for the bad properties. The counterpart of (2) is simply

p ⊑ q ⇒ C[p] ⊑ C[q].  (4)

and a preorder ⊑ that satisfies this requirement is called a precongruence for O. Now the preorder that is fully abstract w.r.t. G and O always exists, and is characterised by

p ⊑ q ⇔ ∀O-context C[ ]. ∀φ ∈ G . (C[p] ⊧ φ ⇒ C[q] ⊧ φ).

It is the coarsest precongruence for O that respects the properties in G. A characterisation of the preorder ⊑ that is fully abstract w.r.t. a certain G and O automatically yields a characterisation of the equivalence ≡ that is fully abstract w.r.t. G and O, as one has p ≡ q iff both p ⊑ q ∧ q ⊑ p.

In this paper I will propose three main candidates for the set G of good properties: safety properties in Section 3, liveness properties in Section 4 and conditional liveness properties in Section 5. For the sake of theoretical completeness I moreover address general linear time properties in Section 6.

In Section 2 I will define my model of labelled transition systems and propose a class of C of operators that appear useful in applications to combine processes. My favourite selection contains

• the partially synchronous interleaving operator of CSP [16],

• abstraction or concealment [4, 16]

• and the state operator [3], or any other basis that is equally expressive. With each of the four choices for G this set of operators determines a fully abstract preorder, which will be characterised in Sections 3, 4, 5 and 6. It turns out that the resulting preorders are somewhat robust under the precise choice of operators for which one imposes a precongruence requirement: the same ones are obtained already without using concealment, and using merely injective renaming instead of the more general state operator. In the other direction, I could just as well have used all operators of CSP.

2 Labelled Transition Systems and a Selection of Composition Operators

Let Σ^{∗} denote the set of finite sequences over a given set Σ, and Σ^{∞} the set of infinite ones; Σ^{ω} := Σ^{∗}∪Σ^{∞}. Write ϵ for the empty sequence, σρ for the concatenation of sequences σ ∈ Σ^{∗} and ρ ∈ Σ^{ω}, and a for the sequence consisting of the single symbol a ∈ Σ. Write σ ≤ ρ for “σ is a prefix of ρ”, i.e. “ρ = σ ∨ ∃ν ∈ Σ^{∗}.σν = ρ”, and ρ < σ for “σ ≤ ρ and σ ≠ ρ”.

I presuppose an infinite action alphabet A, not containing the silent action τ, and set A_{τ} = A ∪ {τ}.

Definition 1 A labelled transition system (LTS) is a pair (ℙ,→), where ℙ is a class of processes or states and → ⊆ ℙ × A_{τ} × ℙ is a set of transitions, such that for each p ∈ ℙ and α ∈ A_{τ} the class {q ∈ ℙ | (p,α,q) ∈ →} is a set.

Assuming a fixed transition system (ℙ,→), I write p −→^{α} q for (p,α,q) ∈ → ; this means that process p can evolve into process q, while performing the action α. The ternary relation =⇒ ⊆ ℙ × A^{∗}× ℙ is the least relation satisfying

p =⇒^{ϵ} p ,  \frac{p −→^{τ} q}{p =⇒^{ϵ} q} ,  \frac{p −→^{a} q, a ≠ τ}{p =⇒^{a} q}  and  \frac{p =⇒^{σ} q =⇒^{ρ} r}{p =⇒^{σρ} r} .

This enables a formalisation of the concepts of traces and complete traces from the introduction.

Definition 2 Let p ∈ ℙ.

• p is deterministic if, for any σ ∈ A^{∗}, p =⇒^{σ} q_{1} and p =⇒^{σ} q_{2} implies that q_{1} = q_{2} and q_{1} −̸→^{τ} r.

• p deadlocks, notation p ↛, if there are no α ∈ A_{τ} and q ∈ ℙ such that p −→^{α} q.

• p is locked if it can never do a visible action, i.e. if p =⇒^{a} q for no a ∈ A and q ∈ ℙ.

• p diverges, notation p ⇑, if there are p_{i} ∈ ℙ for all i > 0 such that p −→^{τ} p_{1} −→^{τ} p_{2} −→^{τ} ··· .

• a_{1}a_{2}a_{3}···∈ A^{∞} is an infinite trace of p if there are p_{1},p_{2},... ∈ ℙ such that p =⇒^{a_{1}} p_{1} =⇒^{a_{2}} p_{2} =⇒^{a_{3}} ··· .

• inf(p) denotes the set of infinite traces of p.

• ptraces(p) := {σ ∈ A^{∗} | ∃q. p =⇒^{σ} q} is the set of partial traces of p.

• traces(p) := inf(p) ∪ ptraces(p) is the set of traces of p.

• deadlocks(p) := {σ ∈ A^{∗} | ∃q. p =⇒^{σ} q ↛} is the set of deadlock traces of p.

• divergences(p) := {σ ∈ A^{∗} | ∃q. p =⇒^{σ} q ⇑} is the set of divergence traces of p.

• CT(p) := inf(p) ∪ divergences(p) ∪ deadlocks(p) is the set of complete traces of p.

Note that traces(p) = {σ ∈ A^{ω} | ∃ρ ∈ CT(p). σ ≤ ρ}.

To justify that CT(p) is indeed a correct formalisation of the set of complete traces of p, I postulate that in a neutral environment, if a process p ∈ ℙ has any outgoing transition p −→^{α} q, then within a finite amount of time it will do one its outgoing transitions. This is called a progress property; it says that a process will continue to make progress if possible.

As explained in the introduction, whether a fully abstract equivalence identifies processes p and q may depend on the existence of a third process r such that p∥r can be distinguished from q∥r. When restricting attention to a particular labelled transition system (ℙ,→) it might happen that a perfectly reasonable candidate r happens not to be a member of ℙ, and thus that the conclusion p ≡ q is arrived at solely as a result underpopulation of ℙ. To obtain the most robust notions of equivalence, I therefore assume my LTS to be universal, in the sense that up to isomorphism it contains any process one can imagine.

Definition 3 An LTS (ℙ,→_{ℙ}) is universal if for any other LTS (ℚ,→_{ℚ}) there exists an injective mapping f : ℚ → ℙ , called an embedding, such that, for any q ∈ ℚ and p′∈ ℙ one has f(q) −→^{α} _{ℙ} p′ iff p′∈ ℙ has the form f(q′) for some q′∈ Q with q −→^{α} _{ℚ} q′.

The existence of a universal LTS has been established in [8]. Here one needs ℙ to be a proper class. All preorders ⊑ that I consider in this paper are defined on arbitrary LTSs and have the property that q ⊑ q′⇔ f(p) ⊑ f(q′), for any embedding f. This means that they are precongruences for isomorphism, and only take into account the future behaviour of processes, i.e. in determining whether p ⊑ q transitions leading to p or q play no rôle. Thus, a definition of such a preorder on a universal LTS, implicitly also defines it on any other LTS.

\frac{p −→^{α} p′}{p∥_{S}q −→^{α} p′∥_{S}q} (α∉S)  \frac{q −→^{α} q′}{p∥_{S}q −→^{α} p∥_{S}q′} (α∉S)  \frac{p −→^{a} p′ q −→^{a} q′}{p∥_{S}q −→^{a} p∥_{S}q′} (a∈S)

\frac{p −→^{τ} p′}{λ_{s}^{m}(p) −→^{τ} λ_{s}^{m}(p′)}  \frac{p −→^{a} p′}{λ_{s}^{m}(p) − −→^{a(m,s)} λ_{s(m,a)}^{m}(p′)}^{\frac{p −→^{α} p′}{τ_{I}(p) −→^{α} τ_{I}(p′)} (α∉I)  \frac{p −→^{a} p′}{τ_{I}(p) −→^{τ} τ_{I}(p′)} (a∈I)}

Table 1: Partially synchronous interleaving, abstraction, and the state operator

I will now do a proposal for the set O that will be my default choice in this paper. It consists of three operators for combining processes that appear useful in practical applications.

The first is the partially synchronous interleaving operator of CSP [16]. It is parametrised with a set S ⊆ A of visible actions on which it synchronises: the composition p∥_{S}q can perform an action from S only when both p and q perform it. All other actions from p and q are interleaved: whenever one of the two components can perform such an action, so can the composition, while the other component doesn’t change its state. Formally, for any choice of S ⊆ A, ∥_{S}: ℙ × ℙ → ℙ is a binary operator on ℙ such that a process p∥_{S}q can make an α-transition iff this can be inferred by the first three rules of Table 1 from the transitions that p and q can make. Here a ranges over A and α over A_{τ}.

A context ∥_{S}r is widely regarded as a plausible way of modelling an environment that partially synchronises with processes under investigation. It is for this reason I include it in O. This argument does not hold for many other process algebraic operators, such as the choice operator + of CCS [13]. This is an example of an operator that is useful for describing particular processes, but a context + r does not really model a reasonable environment in which one wants to run processes under investigation. For reasons of algebraic convenience, being a precongruence for the + is an optional desideratum of refinement preorders, but it is not such an overriding requirement as being a precongruence for ∥_{S}.

The second operator nominated for membership of O is the unary abstraction operator τ_{I} of ACP_{τ} [4], also known as the concealment operator of CSP [5, 16]. This operator models a change in the level of abstraction at which processes are regarded, by reclassifying visible actions as hidden ones. It is parametrised with the set I ⊆ A of visible actions that one chooses to abstract from, and formally defined by the next two rules of Table 1. Abstraction from internal actions by such a mechanism is an essential part of most work on verification in a process algebraic setting, and a context τ_{I}( ) represents a reasonable environment in which to evaluate processes.

My final nominee for the set O of useful composition operators is the state operator λ_{s}^{m} of [3]. This unary operator formalises an interface between a process and its environment that is able to rename actions: if its argument process performs an action b, the interface λ_{s}^{m}( ) may pass on this action to the environment as c, thereby opening up the possibility of synchronisation with another occurrence of c when using a composed context λ_{s}^{m}( )∥_{S}r. Furthermore, the interface may remember the actions that have been performed to far, and make its renaming behaviour dependent on this history. For instance, if its argument p performs two a-actions in a row, λ_{s}^{m}(p) may pass these on to the environment as a_{1} and a_{2}, respectively.

The state operator λ_{s}^{m} is parametrised with an interface specification m = (S ,action ,effect ), consisting of set S of internal states, and functions action : S ×A → A and effect : S ×A → S, as well as a current state s ∈ S. Here action is a function that renames actions performed by an argument process p into actions performed by the interface λ_{s}^{m}(p); the renaming depends on the internal state of the state operator, and thus is of type S × A → A. effect specifies the transformation of one internal state of the state operator into another, as triggered by the the encounter of an action of its argument process; it thus is of type S ×A → S. Traditionally, one writes a(m,s) for action (s,a) and s(m,a) for effect (s,a). So a(m,s) denotes the action a, as modified by the interface m in state s, whereas s(m,a) denotes the internal state s, as modified by the occurrence of action a of the argument process within the scope of the interface m. With this notation, the formal definition of the state operator is given by the last two rules of Table 1.

The special case of a state operator with a singleton set of internal states is known as a renaming operator. Renaming operators occur in the languages CCS [13] and CSP [5, 16]. Here I denote a renaming operator as λ^{m}, where the redundant subscript s is omitted, and m trivialises to a function action : A → A . I speak of an injective renaming operator if action (a) = action (b) implies a = b. For any injective renaming operator λ^{m} there exists an inverse renaming operator λ^{−m} (not necessarily injective) such that for all p ∈ ℙ, the process λ^{−m}(λ^{m}(p)) behaves exactly the same as p—they are equivalent under all notions of equivalence considered in this paper.

3 Safety Properties

A safety property [10] is a property that says that

something bad will never happen.

To formulate a canonical safety property, assume that my alphabet of visible actions contains one specific action b, whose occurrence is bad. The canonical safety property now says that b will never happen.

Definition 4 A process p satisfies the canonical safety property, notation p ⊧ safety(b), if no trace of p contains the action b.

To arrive at a general concept of safety property for labelled transition systems, assume that some notion of bad is defined. Now, to judge whether a process p satisfies this safety property, one should judge whether p can reach a state in which one would say that something bad had happened. But all observable behaviour of p that is recorded in a labelled transition system until one comes to such a verdict, is the sequence of visible actions performed until that point. Thus the safety property is completely determined by the set sequences of visible actions that, when performed by p, lead to such a judgement. Therefore one can just as well define the concept of a safety property in terms of such a set.

Definition 5 A safety property of processes in an LTS is given by a set B ⊆ A^{∗}. A process p satisfies this safety property, notation p ⊧ safety(B), when ptraces(p) ∩ B = ∅.

This formalisation of safety properties is essentially the same as the one in [2] and all subsequent work on safety properties; the only, non-essential, difference is that I work with transition systems in which the transitions are labelled, whereas [2] and most related work deals with state-labelled transition systems.

A property is called trivial if it either always holds or always fails. Trivial properties are respected by any equivalence. The sets B:= ∅ and B:= {ϵ} specify trivial safety properties.

Theorem 1 A precongruence for the state operator respects every safety property iff it respects the canonical safety property.

Proof: “Only if ” follows because the canonical safety property is in fact a safety property, namely the one with B being the set of those sequences that contain the action b. “If ”: I use here a state operator that remembers exactly what sequence of actions has occurred so far. Thus the set of internal states of its interface specification m is A^{∗}, and furthermore σ(m,a) := σa for all σ ∈ A^{∗} and a ∈ A. Now given a safety property B ⊆ A^{∗}, let b ∈ A be the special “bad” action, and d ∈ A

be a different “neutral” action. Define a(m,σ) := \{ \begin{matrix}b & if σa ∈ B \\ d & otherwise. \end{matrix}

Then λ_{ϵ}^{m}(p) ⊧ safety(b) iff p ⊧ safety(B). Thus, if p ⊑ q and p ⊧ safety(B), then λ_{ϵ}^{m}(p) ⊑ λ_{ϵ}^{m}(q) and λ_{ϵ}^{m}(p) ⊧ safety(b). Hence λ_{ϵ}^{m}(q) ⊧ safety(b), so q ⊧ safety(B). □

Being locked (see Definition 2) is a safely property, namely with B the set of all sequences over A^{∗} of length 1. It can be understood this way by regarding any occurrence of an action as bad.

Theorem 2 A precongruence for abstraction that respects the property of being locked, respects the canonical safety property.

Proof: Let ⊑ be a precongruence for abstraction that respects the property of being locked, and suppose that p ⊑ q. Let I := A \ {b}. Then τ_{I} is an operator that renames all actions other than b into τ; thus if a process of the form τ_{I}(r) ever performs a visible action, it must be b. Now p ⊧ safety(b) ⇔ τ_{I}(p) ⊧ safety(b) ⇔ τ_{I}(p) is locked ⇒ τ_{I}(q) is locked ⇔ τ_{I}(q) ⊧ safety(b) ⇔ q ⊧ safety(b). □

By combining Theorems 1 and 2 one obtains:

Corollary 1 A precongruence for abstraction and for the state operator that respects the property of being locked, respects all safety properties.

Theorem 3 Any precongruence for O that respects a single nontrivial safety property, respects every safety property.

Proof: Let ⊑ be a precongruence for O that respects safety(B), where B ⊆ A^{∗}, B ≠ ∅ and ϵ ∉ B. Let σ ∈ A^{∗} and a ∈ A be such that σa ∈ B, and no prefix ρ ≤ σ of σ is in B. Let safety(a) be the canonical safety property, but with a playing the role of b. Naturally, Theorem 1 holds for this renamed canonical safety property as well. Hence it suffices to show that ⊑ respects the property safety(a). Let I := A\{a}. Then τ_{I} is an operator that renames all actions other than a into τ; thus if a process of the form τ_{I}(s) ever performs a visible action, it must be a. Let r_{σ} be a process with CT(r) = {σ} and r_{σa} be a process with CT(r) = {σa}. Then, for any choice of s ∈ ℙ, (τ_{I}(s)∥_{∅}r_{σ})∥_{A}r_{σa} is a process all of whose traces are prefixes of σa, with σa ∈ ptraces((τ_{I}(s)∥_{∅}r_{σ})∥_{A}r_{σa}) iff a ∈ ptraces(τ_{I}(s)), which is the case iff s |̸= safety(a). Suppose p ⊑ q. Then (τ_{I}(p)∥_{∅}r_{σ})∥_{A}r_{σa} ⊑ (τ_{I}(q)∥_{∅}r_{σ})∥_{A}r_{σa} and

p ⊧ safety(a) ⇔ (τ_{I}(p)∥_{∅}r_{σ})∥_{A}r_{σa} ⊧ safety(B) ⇒ (τ_{I}(q)∥_{∅}r_{σ})∥_{A}r_{σa} ⊧ safety(B) ⇔ q ⊧ safety(a). □

Let ⊑_{safety} denote the preorder that is fully abstract w.r.t. the class of safety properties and O. The following, well-known, theorem characterises this preorder as reverse partial trace inclusion.

Theorem 4 p ⊑_{safety} q ⇔ ptraces(p) ⊇ ptraces(q).

Proof: Define reverse partial trace inclusion, ⊑_{T}^{−1} , by p ⊑_{T}^{−1} q iff ptraces(p) ⊇ ptraces(q). “⇐”: It suffices to establish that ⊑_{T}^{−1} is a precongruence for O that respects all safety properties.

That ⊑_{T}^{−1} is a precongruence for O follows immediately from the following observations:

ptraces(p∥_{S}q) = {σ ∈ ν∥_{S}ξ | ν ∈ ptraces(p) ∧ ξ ∈ ptraces(q)}
ptraces(τ_{I}(p)) = {τ_{I}(σ) | σ ∈ ptraces(p)}
ptraces(λ_{s}^{m}(p)) = {λ_{s}^{m}(σ) | σ ∈ ptraces(p)}.

Here ν∥_{S}ξ denotes the set of sequences of actions for which is it possible to mark each action occurrence as left, right or both, obeying the restriction that an occurrence of action a is marked both left and right iff a ∈ S, such that the subsequence of all left-labelled action occurrences is ν and the subsequence of all right-labelled action occurrences is ξ. Furthermore, the operators τ_{I} and λ_{s}^{m} on A^{∗} are uniquely determined by

τ_{I}(ϵ) = ϵ  τ_{I}(aσ) = \{ \begin{matrix}τ_{I}(σ) & if a ∈ I \\ aτ_{I}(σ) & otherwise \end{matrix}
λ_{s}^{m}(ϵ) = ϵ  λ_{s}^{m}(aσ) = a(m,s)λ_{s(m,a)}^{m}(σ).

To show that ⊑_{T}^{−1} respects all safety properties, let B ⊆ A^{∗}, p ⊑_{T}^{−1} q, and suppose p ⊧ safety(B). Then ptraces(q) ⊆ ptraces(p) and ptraces(p) ∩ B = ∅. Thus ptraces(q) ∩ B = ∅, i.e. q ⊧ safety(B), which had to be shown.

“⇒”: Let ⊑ be any precongruence for O that respects all safety properties, and suppose p ⊑ q. I have to establish that p ⊑_{T}^{−1} q. Let B:= A^{∗}\ ptraces(p). Then p ⊧ safety(B). Thus q ⊧ safety(B), i.e. ptraces(q) ∩ (A^{∗}\ ptraces(p)) = ∅. This yields ptraces(q) ⊆ ptraces(p). □

The above characterisation as reverse partial trace inclusion of the coarsest congruence for O that respects all safety properties, is rather robust under the choice of O. It holds already for the empty class of operators, and it remains true when adding in all operators of CSP [5], CCS [13] or ACP_{τ} [4], as ⊑_{T}^{−1} is known to be a precongruence for all of them.

By Theorem 3, the characterisation also remains valid when requiring respect for one arbitrary safety property only, instead of all of them, but to this end all three operators of O are needed. If we just retain the state operator, by Theorem 1 it suffices to require respect for the canonical safety property only.

4 Liveness Properties

A liveness property [10] is a property that says that

something good will eventually happen.

To formulate a canonical liveness property, assume that the alphabet A contains one specific action g, whose occurrence is good. The canonical liveness property now says that g will eventually happen.

Definition 6 A process p satisfies the canonical liveness property, notation p ⊧ liveness(g), if every complete trace of p contains the action g.

To arrive at a general concept of liveness property for labelled transition systems, assume that some notion of good is defined. Now, to judge whether a process p satisfies this liveness property, one should judge whether p can reach a state in which one would say that something good had happened. But all observable behaviour of p that is recorded in a labelled transition system until one comes to such a verdict, is the sequence of visible actions performed until that point. Thus the liveness property is completely determined by the set sequences of visible actions that, when performed by p, lead to such a judgement. Therefore one can just as well define the concept of a liveness property in terms of such a set.

Definition 7 A liveness property of processes in an LTS is given by a set G ⊆ A^{∗}. A process p satisfies this liveness property, notation p ⊧ liveness(G), when each complete trace of p has a prefix in G.

This formalisation of liveness properties is essentially different from the one in [2] and most subsequent work on liveness properties; this point is discussed in Section 6.

Just as for safety properties, the sets G:= ∅ and G:= {ϵ} specify trivial liveness properties.

Theorem 5 A precongruence for the state operator respects every liveness property iff it respects the canonical liveness property.

Proof: Just like the proof of Theorem 1. □

A process p has the initial progress property if it cannot immediately diverge or deadlock, i.e. if ϵ ∉ divergences(p) ∪ deadlocks(p). This is a liveness property, namely with G the set of all sequences over A^{∗} of length 1. It can be understood this way by regarding any occurrence of an action as good.

Theorem 6 A precongruence for abstraction that respects the initial progress property, respects the canonical liveness property.

Proof: Just like the proof of Theorem 2. □

By combining Theorems 5 and 6 one obtains:

Corollary 2 A precongruence for abstraction and for the state operator that respects the initial progress property, respects all liveness properties.

Conjecture 1 Any precongruence for O that respects a single nontrivial liveness property, respects every liveness property.

Let ⊑_{liveness} denote the preorder that is fully abstract w.r.t. the class of liveness properties and O. I will proceed to characterise ⊑_{liveness} as the preorder ⊑_{FDI}^{⊥} based on failures, divergences and infinite traces that is also used in the work on CSP [16]. Failures of a process p are defined below; they are pairs ⟨σ,X⟩ such that p can perform the sequence of visible actions σ and then reach a state in which no further progress can be made in case the environment allows only those visible actions to occur that are listed in X. The preorder ⊑_{FDI}^{⊥} does not take into account any information about the behaviour of processes that can be thought of taking place after a divergence. One of the ways to erase this information from the set of failures, divergences and infinite traces of a process is by means of flooding. Flooded sets of failures, divergences and infinite traces are indicated by the subscript_{⊥}.

Definition 8 Let p ∈ ℙ.

• initials(p) := {α ∈ A_{τ} | ∃q. p −→^{α} q}.

• failures(p) := {⟨σ,X⟩ ∈ A^{∗}× P(A) | ∃q. p =⇒^{σ} q ∧ initials(q) ∩ (X ∪ {τ}) = ∅}.

• divergences_{⊥} (p) := {σρ | σ ∈ divergences(p) ∧ ρ ∈ A^{∗}}.

• inf_{⊥} (p) := {σρ | σ ∈ divergences(p) ∧ ρ ∈ A^{∞} }.

• failures_{⊥} (p) := {⟨σρ,X⟩ | σ ∈ divergences(p) ∧ ρ ∈ A^{∗}∧ X ⊆ A}.

So deadlocks(p)={σ|⟨σ,A⟩∈failures(p)} and ptraces(p)=divergences(p)∪{σ|⟨σ,∅⟩∈failures(p)}.

Theorem 7 p ⊑_{liveness} q ⇔ divergences_{⊥} (p) ⊇ divergences_{⊥} (q) ∧ inf_{⊥} (p) ⊇ inf_{⊥} (q) ∧ failures_{⊥} (p) ⊇ failures_{⊥} (q).

Proof: Let ⊑_{FDI}^{⊥} be the preorder defined by: p ⊑_{FDI}^{⊥} q iff the right-hand side of Theorem 7 holds. “⇐”: It suffices to establish that ⊑_{FDI}^{⊥} is a liveness respecting precongruence.

To show that ⊑_{FDI}^{⊥} respects liveness, let G ⊆ A^{∗}, p ⊑_{FDI}^{⊥} q, and suppose p ⊧ liveness(G). I need to show that q ⊧ liveness(G). So suppose σ ∈ CT(q). Then one out of three possibilities must apply: either σ ∈ divergences(g) ⊆ divergences_{⊥} (g) ⊆ divergences_{⊥} (p) or σ ∈ inf(q) ⊆ inf_{⊥} (q) ⊆ inf_{⊥} (p) or ⟨σ,A⟩ ∈ failures(q) ⊆ failures_{⊥} (q) ⊆ failures_{⊥} (q). In the first case ρ ∈ divergences(p) ⊆ CT(p) for some ρ ≤ σ; in the second case either σ ∈ inf(p) ⊆ CT(p) or ρ ∈ divergences(p) ⊆ CT(p) for some ρ < σ; and in the third case either ⟨σ,A⟩ ∈ failures(p) or ρ ∈ divergences(p) ⊆ CT(p) for some ρ ≤ σ. In all three cases ρ ∈ CT(p) for some ρ ≤ σ. Since p ⊧ liveness(G), there must be a ν ≤ ρ with ν ∈ G. As ν ≤ σ it follows that q ⊧ liveness(G).

That ⊑_{FDI}^{⊥} is a precongruence for ∥_{S} and τ_{I} has been established in [16] by means of the following observations:

divergences_{⊥} (p∥_{S}q) = {σρ | ∃⟨ν,X⟩ ∈ failures_{⊥} (p),ξ ∈ divergences_{⊥} (q). σ ∈ ν∥_{S}ξ ∧ ρ ∈ A^{∗}} ∪
{σρ | ∃ν ∈ divergences_{⊥} (p),⟨ξ,X⟩ ∈ failures_{⊥} (q). σ ∈ ν∥_{S}ξ ∧ ρ ∈ A^{∗}}
inf_{⊥} (p∥_{S}q) = {σ | ∃ν ∈ inf_{⊥} (p),ξ ∈ inf_{⊥} (q). σ ∈ ν∥_{S}ξ} ∪
{σ | ∃⟨ν,X⟩ ∈ failures_{⊥} (p),ξ ∈ inf_{⊥} (q). σ ∈ ν∥_{S}ξ} ∪
{σ | ∃ν ∈ inf_{⊥} (p),⟨ξ,X⟩ ∈ failures_{⊥} (q). σ ∈ ν∥_{S}ξ} ∪
{σρ | σ ∈ divergences_{⊥} (p∥_{S}q) ∧ ρ ∈ A^{∞} }
failures_{⊥} (p∥_{S}q) = {⟨σ,X ∪ Y ⟩ | ∃⟨ν,X⟩ ∈ failures_{⊥} (p),⟨ξ,Y ⟩ ∈ failures_{⊥} (q).
X \ S = Y \ S ∧ σ ∈ ν∥_{S}ξ} ∪
{⟨σ,X⟩ | σ ∈ divergences_{⊥} (p∥_{S}q) ∧ X ⊆ A}.
divergences_{⊥} (τ_{I}(p)) = {τ_{I}(σ)ρ | τ_{I}(σ),ρ ∈ A^{∗}∧ σ ∈ inf_{⊥} (p) ∪ divergences_{⊥} (p)}
inf_{⊥} (τ_{I}(p)) = {τ_{I}(σ) | τ_{I}(σ) ∈ A^{∞} ∧ σ ∈ inf_{⊥} (p)}
∪{σρ | σ ∈ divergences_{⊥} (τ_{I}(p)) ∧ ρ ∈ A^{∞} }
failures_{⊥} (τ_{I}(p)) = {⟨τ_{I}(σ),X⟩ | ⟨σ,X ∪ I⟩ ∈ failures_{⊥} (p)} ∪
{⟨σ,X⟩ | σ ∈ divergences_{⊥} (τ_{I}(p)) ∧ X ⊆ A}.

Here τ_{I}(σ) for σ ∈ A^{∞} is the supremum, w.r.t. the prefix order ≤ on A^{ω}, of the set {τ_{I}(ρ) | ρ < σ}. Likewise, ⊑_{FDI}^{⊥} is a congruence for λ_{s}^{m}:

divergences_{⊥} (λ_{s}^{m}(p)) = {λ_{s}^{m}(σ)ρ | σ ∈ divergences_{⊥} (p) ∧ ρ ∈ A^{∗}}
inf_{⊥} (λ_{s}^{m}(p)) = {λ_{s}^{m}(σ) | σ ∈ inf_{⊥} (p)} ∪ {σρ | σ ∈ divergences_{⊥} (λ_{s}^{m}(p)) ∧ ρ ∈ A^{∞} }
failures_{⊥} (λ_{s}^{m}(p)) = {⟨λ_{s}^{m}(σ),X⟩ | ⟨σ,λ_{s}^{−m}(X)⟩ ∈ failures_{⊥} (p)} ∪
{⟨σ,X⟩ | σ ∈ divergences_{⊥} (λ_{s}^{m}(p)) ∧ X ⊆ A}.

Here λ_{s}^{−m}(X) := {a ∈ A | a(m,s) ∈ X}.

“⇒”: Let ⊑ be any liveness respecting precongruence, and suppose p ⊑ q. I have to establish that p ⊑_{FDI}^{⊥} q. W.l.o.g. I may assume that neither p nor q has any trace containing the action g. For let λ^{m} be an injective renaming operator such that g is not in the image of λ^{m}. Then λ^{m}(p) ⊑ λ^{m}(q). Suppose one can establish λ^{m}(p) ⊑_{FDI}^{⊥} λ^{m}(q). Since ⊑_{FDI}^{⊥} is a precongruence for renaming, this yields p ≡_{FDI}^{⊥} λ^{−m}(λ^{m}(p)) ⊑_{FDI}^{⊥} λ^{−m}(λ^{m}(p)) ≡_{FDI}^{⊥} q.

Suppose divergences_{⊥} (p) ⊉ divergences_{⊥} (q); say σ ∈ divergences_{⊥} (q) \ divergences_{⊥} (p). So there is no ρ ≤ σ with ρ ∈ divergences(p). Let r be a deterministic process such that CT(r) = {ρg | ρ ≤ σ}. Then each complete trace of p∥^{g}r contains g. Here I write ∥^{g} for ∥_{A\{g}}, the interleaving operator that synchronises on all visible actions except g. As ⊑ is a precongruence, p ⊑ q implies p∥^{g}r ⊑ q∥^{g}r, and since ⊑ respects the canonical liveness property, I obtain that each complete trace of q∥^{g}r must contain g. However, ρ ∈ divergences(q) for some ρ ≤ σ. So ρ ∈ CT(q∥^{g}r), although ρ does not contain g.

Suppose inf_{⊥} (p) ⊉ inf_{⊥} (q); say σ ∈ inf_{⊥} (q) \ inf_{⊥} (p). So σ ∉ inf(p) and there is no ρ < σ with ρ ∈ divergences(p). Let r be a deterministic process such that CT(r) = {ρg | ρ < σ} ∪ {σ}. Then each complete trace of p∥^{g}r contains g. As ⊑ is a precongruence, p ⊑ q implies p∥^{g}r ⊑ q∥^{g}r, and since ⊑ respects the canonical liveness property, I obtain that each complete trace of q∥^{g}r must contain g. However, either σ ∈ inf(q) or ρ ∈ divergences(q) for some ρ < σ. So either σ ∈ CT(q∥^{g}r) or ρ ∈ CT(q∥^{g}r), and neither σ nor ρ contains g.

τ  • c  g  ≡_{liveness}  τ  • c

Figure 1: Two processes with the same liveness properties but different conditional liveness properties

Suppose failures_{⊥} (p) ⊉ failures_{⊥} (q); say ⟨σ,X⟩ ∈ failures_{⊥} (q)\failures_{⊥} (p). So ⟨σ,X⟩ ∉ failures(p) and there is no ρ ≤ σ with ρ ∈ divergences(p). Let r be a deterministic process with CT(r) = {ρg | ρ < σ} ∪ {σa | a ∈ X}, and consider the liveness property given by G := {ρg | ρ < σ} ∪ {σa | a ∈ X}. Then p∥^{g}r ⊧ liveness(G). As ⊑ is a precongruence, p ⊑ q implies p∥^{g}r ⊑ q∥^{g}r, and since ⊑ respects liveness properties, also q∥^{g}r ⊧ liveness(G). However, either ⟨σ,X⟩ ∈ failures(q) or there is an ρ ≤ σ with ρ ∈ divergences(q). So either σ ∈ CT(q∥^{g}r) or ρ ∈ CT(q∥^{g}r) for some ρ ≤ σ, contradicting that q∥^{g}r ⊧ liveness(G). □

The standard refinement preorder used in CSP is in fact the failures-divergences preorder ⊑_{FD}, defined exactly like ⊑_{FDI}^{⊥}, but abstracting from the infinite traces. As remarked in [16], this can be done because in CSP one normally restricts attention to processes p with the property that for any σ ∈ A^{∗} either σ ∈ divergences_{⊥} (p) or there are only finitely many processes q with p =⇒^{σ} q. For such processes the set inf_{⊥} (p) is, with Königs Lemma, completely determined by failures_{⊥} (p) and divergences_{⊥} (p), and thus need not be explicitly recorded. When extending CSP to processes not having this property, the component inf_{⊥} should be added to the semantics of processes [16]. In fact, ⊑_{FDI}^{⊥} is the coarsest precongruence for O contained in ⊑_{FD}: if p, q and r are the processes used in the inf_{⊥} -case of the above proof, and I := A \ {g}, then ϵ ∈ divergences_{⊥} (τ_{I}(q∥^{g}r)) \ divergences_{⊥} (τ_{I}(p∥^{g}r)).

The above characterisation as ⊑_{FDI}^{⊥} of the coarsest congruence for O that respects all liveness properties, is somewhat robust under the choice of O. It holds already for with just ∥^{g} and injective renaming (for these are the only two operators that are just in the proof), and it remains true when adding in all operators of CSP [5], as ⊑_{FDI}^{⊥} is known to be a precongruence for all of them [16].

By Corollary 2, the above characterisation also remains valid when requiring respect for the initial progress property only, but to this end all three operators of O are needed. This result has in essence been obtained already by Bill Roscoe in [16]. The state operator does not feature in [16]; its rôle in this full abstraction result is taken over by a renaming operator that allows renaming an action a into a choice between two actions b and c. When ignoring this difference in syntax, Theorem 7 can be obtained as an immediate corollary of Corollary 2 and that result. The main reason for using the above proof instead is to show that the concealment or abstraction operator is not needed here.

By Theorem 5, ⊑_{FDI}^{⊥} is even fully abstract w.r.t. the partially synchronous interleaving and state operators, and the canonical liveness property. This result, like the full abstraction result of [16], does not hold without the state operator, or something equally powerful, even if renaming and abstraction is allowed to be used. Namely, as pointed out by Antti Puhakka [14], one would fail to distinguish the following two processes:

τ a • a  ≢_{liveness}  τ a • a a

5 Conditional Liveness Properties

Figure 1 presents two processes that have the same liveness properties in any CSP-context. The fact that only the left-hand process can do something good doesn’t matter here, as neither of the two processes is guaranteed to do something good: they may never proceed beyond their initial τ-loops. Nevertheless, from a practical point of view, the difference between these two processes may be enormous. It could be that the action c comes with a huge cost, that is only worth making when something good happens afterwards. Only the right-hand side process is able to incur the cost without any benefits, and for this reason it lacks an important property that the left-hand process has. I call such properties conditional liveness properties [7, 12]. A conditional liveness property is a property that says that

under certain conditions something good will eventually happen. To formulate a canonical conditional liveness property, assume that the alphabet A contains two specific action c and g, where the occurrence of c is the condition, and the occurrence of g is good. The canonical conditional liveness property now says that if c occurs then g will eventually happen. Definition 9 A process p satisfies the canonical conditional liveness property, notation p ⊧ liveness_{c}(g), if every complete trace of p that contains the action c also contains the action g. To arrive at a general concept of conditional liveness property for labelled transition systems, assume that some condition, and some notion of good is defined. Now, to judge whether a process p satisfies this conditional liveness property, one should judge first of all in which states the condition is fulfilled. All observable behaviour of p that is recorded in a labelled transition system until one comes to such a verdict, is the sequence of visible actions performed until that point. Thus the condition is completely determined by the set sequences of visible actions that, when performed by p, lead to such a judgement. Next one should judge whether p can reach a state in which one would say that something good had happened. Again, this judgement can be expressed in terms of the sequences of visible actions that lead to such a state.

Definition 10 A conditional liveness property of processes in an LTS is given by two sets C,G ⊆ A^{∗}. A process p satisfies this conditional liveness property, notation p ⊧ liveness_{C}(G), when each complete trace of p that has a prefix in C, also has prefix in G.

For the sake of added generality, one could make the notion of success dependent on the particular sequence of actions that fulfilled the condition. This would make G a function from C to P(A^{∗}) and the requirement would be that each complete trace of p that has a prefix σ ∈ C, also has prefix in G(σ). However, such a generalised conditional liveness property can be expressed as a conjunction of standard ones, and a preorder that respects a given collection of properties also respects their conjunction.

Theorem 8 A precongruence for the state operator respects every conditional liveness property iff it respects the canonical conditional liveness property.

Proof: “Only if ” follows because the canonical conditional liveness property is in fact a conditional liveness property, namely the one with C being the set of those sequences that contain the action c, and G the set of those sequences that contain the action g. “If ”: Again I use a state operator that remembers exactly what sequence of actions has occurred so far. Thus the set of internal states of its interface specification m is A^{∗}, and σ(m,a) := σa for all σ ∈ A^{∗} and a ∈ A. Note that the properties liveness_{C}(G) and liveness_{C\G}(G) are satisfied by the same processes, so w.l.o.g. I may restrict attention to properties liveness_{C}(G) with C ∩ G = ∅. Given such a property, define

a(m,σ) := \{ \begin{matrix}c & if σa ∈ C \\ g & if σa ∈ G \\ d & otherwise. \end{matrix}

Then λ_{ϵ}^{m}(p) ⊧ liveness_{c}(g) iff p ⊧ liveness_{C}(G). Thus, if p ⊑ q and p ⊧ liveness_{C}(G), then λ_{ϵ}^{m}(p) ⊑ λ_{ϵ}^{m}(q) and λ_{ϵ}^{m}(p) ⊧ liveness_{c}(g). Hence λ_{ϵ}^{m}(q) ⊧ liveness_{c}(g), so q ⊧ liveness_{C}(G). □

An element σ ∉ divergences(p) ∪ deadlocks(p) is called a deadlock/divergence trace of a process p. For any σ ∈ A^{∗}, not having a deadlock/divergence trace σ is a conditional liveness property, namely with C := {σ} and G:= {σa | a ∈ A}. Using similar techniques as for Corollary 1, one can establish:

Corollary 3 A precongruence for abstraction and for the state operator that respects the property of having no deadlock/divergence trace c, respects all liveness properties.

Let ⊑_{cond. liveness} denote the preorder that is fully abstract w.r.t. the class of conditional liveness properties and O. Furthermore, write ⊑_{d/d} for the coarsest precongruence for O such that q ⊑_{d/d} p implies deadlocks(q) ∪ divergences(q) ⊆ deadlocks(p) ∪ divergences(p).

Corollary 4 p ⊑_{cond. liveness} q iff q ⊑_{d/d} p.

Proof: “If ” follows immediately from Corollary 3. “Only if ” follows from the observation that the absence of any deadlock/divergence trace σ is a conditional liveness property. □

Antti Puhakka [14] has given a characterisation of the coarsest congruence that preserves deadlock/ divergence traces, ≡_{d/d}. His arguments easily extend to a characterisation of ⊑_{d/d} and hence, using Corollary 4, of ⊑_{cond. liveness}. Below I will give a direct proof of the same result. It shows that this characterisation is already valid when merely requiring the precongruence property for ∥_{S} and injective renaming.

As for ⊑_{liveness}, the characterisation of ⊑_{cond. liveness} is in terms of failures, divergences and infinite traces, and again some information needs to be erased, but less than in the case of ⊑_{liveness}. This time we need to forget about failures ⟨σ,X⟩ ∈ failures(p) such that σ ∈ divergences(p), and about infinite traces of p that have arbitrary long prefixes in divergences(p). In [14] this is achieved by removal of such failures and infinite traces; here, in order to stress the similarity with the refinement preorder of CSP, I equivalently apply the method of flooding.

Definition 11 Let p ∈ ℙ.

• inf_{d}(p) := inf(p) ∪ {σ ∈ A^{∞} | ∀ρ < σ∃ν ∈ divergences(p). ρ ≤ ν < σ}.

• failures_{d}(p) := failures(p) ∪ {⟨σ,X⟩ | σ ∈ divergences(p) ∧ X ⊆ A}.

Theorem 9 p ⊑_{cond. liveness} q ⇔ divergences(p) ⊇ divergences(q) ∧ inf_{d}(p) ⊇ inf_{d}(q) ∧ failures_{d}(p) ⊇ failures_{d}(q).

Proof: Let ⊑_{FDI}^{d} be the preorder defined by: p ⊑_{FDI}^{d} q iff the right-hand side of Theorem 7 holds. “⇐”: It suffices to establish that ⊑_{FDI}^{d} is a precongruence for O that respects all conditional liveness properties.

To show that ⊑_{FDI}^{d} respects conditional liveness properties, let C,G ⊆ A^{∗}, p ⊑_{FDI}^{d} q, and suppose p ⊧ liveness_{C}(G). I need to show that q ⊧ liveness_{C}(G). So suppose σ ∈ CT(q) and ρ ∈ C for some prefix ρ ≤ σ. Then one out of three possibilities must apply: either σ ∈ divergences(g) ⊆ divergences(p) or σ ∈ inf(q) ⊆ inf_{d}(q) ⊆ inf_{d}(p) or ⟨σ,A⟩ ∈ failures(q) ⊆ failures_{d}(q) ⊆ failures_{d}(p). In the first and last case, one has σ ∈ CT(p). Since p ⊧ liveness_{C}(G), there must be a ξ ≤ σ with ξ ∈ G, which had to be shown. In the second case either σ ∈ inf(p) ⊆ CT(p), in which case the argument proceeds as above, or ∃ν ∈ divergences(p) ⊆ CT(p) with ρ ≤ ν < σ. In the latter case, there must be a ξ ≤ ν with ξ ∈ G, and as ν < σ it follows that q ⊧ liveness_{C}(G).

That ⊑_{FDI}^{d} is a precongruence for ∥_{S}, τ_{I} and λ_{s}^{m} follows from the following observations:

divergences(p∥_{S}q) = {σ | ∃⟨ν,X⟩ ∈ failures_{d}(p),ξ ∈ divergences(q). σ ∈ ν∥_{S}ξ} ∪
{σ | ∃ν ∈ divergences(p),⟨ξ,X⟩ ∈ failures_{d}(q). σ ∈ ν∥_{S}ξ}
inf_{d}(p∥_{S}q) = {σ | ∃ν ∈ inf_{d}(p),ξ ∈ inf_{d}(q). σ ∈ ν∥_{S}ξ} ∪
{σ | ∃⟨ν,X⟩ ∈ failures_{d}(p),ξ ∈ inf_{d}(q). σ ∈ ν∥_{S}ξ} ∪
{σ | ∃ν ∈ inf_{d}(p),⟨ξ,X⟩ ∈ failures_{d}(q). σ ∈ ν∥_{S}ξ} ∪
{σ ∈ A^{∞} | ∀ρ < σ∃ν ∈ divergences(p∥_{S}q). ρ ≤ ν < σ}
failures_{d}(p∥_{S}q) = {⟨σ,X ∪ Y ⟩ | ∃⟨ν,X⟩ ∈ failures_{d}(p),⟨ξ,Y ⟩ ∈ failures_{d}(q).
X \ S = Y \ S ∧ σ ∈ ν∥_{S}ξ} ∪
{⟨σ,X⟩ | σ ∈ divergences(p∥_{S}q) ∧ X ⊆ A}.
divergences(τ_{I}(p)) = {τ_{I}(σ) | τ_{I}(σ) ∈ A^{∗}∧ σ ∈ inf_{d}(p) ∪ divergences(p)}
inf_{d}(τ_{I}(p)) = {τ_{I}(σ) | τ_{I}(σ) ∈ A^{∞} ∧ σ ∈ inf_{d}(p)} ∪
{σ ∈ A^{∞} | ∀ρ < σ∃ν ∈ divergences(τ_{I}(p)). ρ ≤ ν < σ}
failures_{d}(τ_{I}(p)) = {⟨τ_{I}(σ),X⟩ | ⟨σ,X ∪ I⟩ ∈ failures_{d}(p)} ∪
{⟨σ,X⟩ | σ ∈ divergences(τ_{I}(p)) ∧ X ⊆ A}
divergences(λ_{s}^{m}(p)) = {λ_{s}^{m}(σ) | σ ∈ divergences(p)}
inf_{d}(λ_{s}^{m}(p)) = {λ_{s}^{m}(σ) | σ ∈ inf_{d}(p)} ∪
{σ ∈ A^{∞} | ∀ρ < σ∃ν ∈ divergences(λ_{s}^{m}(p)). ρ ≤ ν < σ}
failures_{d}(λ_{s}^{m}(p)) = {⟨λ_{s}^{m}(σ),X⟩ | ⟨σ,λ_{s}^{−m}(X)⟩ ∈ failures_{d}(p)} ∪
{⟨σ,X⟩ | σ ∈ divergences(λ_{s}^{m}(p)) ∧ X ⊆ A}.

“⇒”: Let ⊑ be any precongruence for O that respects conditional liveness properties, and suppose p ⊑ q. I have to establish that p ⊑_{FDI}^{d} q. W.l.o.g. I may assume that neither p nor q has any trace containing the actions c or g. The argument for this is as in the proof of Theorem 7.

Suppose divergences(p) ⊉ divergences(q); say σ ∈ divergences(q) \ divergences(p). Let r be a deterministic process such that CT(r) = {σcg}. Then each complete trace of p∥^{c,g}r that contains c also contains g. Here I write ∥^{c,g} for ∥_{A\{c,g}}, the interleaving operator that synchronises on all visible actions except c and g. As ⊑ is a precongruence, p ⊑ q implies p∥^{c,g}r ⊑ q∥^{c,g}r, and since ⊑ respects the canonical conditional liveness property, I obtain that each complete trace of q∥^{c,g}r that contains c must also contain g. However, as σ ∈ divergences(q), σc ∈ divergences(q∥^{c,g}r) ⊆ CT(q∥^{c,g}r), although σc does not contain g.

Suppose inf_{d}(p) ⊉ inf_{d}(q); say σ ∈ inf_{d}(q) \ inf_{d}(p). So σ ∉ inf(p) and there is a ρ < σ such that ρ ≤ ρν < σ for no sequence ρν ∈ divergences(p). Let r be a deterministic process such that CT(r) = {ρcνg | ρν < σ}∪{σ}. Then each complete trace of p∥^{g}r that contains c, must also contain g. As ⊑ is a precongruence, p ⊑ q implies p∥^{c,g}r ⊑ q∥^{g,c}r, and since ⊑ respects the canonical conditional liveness property, I obtain that each complete trace of q∥^{c,g}r that contains c must also contain g. However, either σ ∈ inf(q) or ρν ∈ divergences(q) for some ρ ≤ ρν < σ. In each case q∥^{c,g}r has a complete trace that contains c but not g.

Suppose failures_{d}(p) ⊉ failures_{d}(q); say ⟨σ,X⟩ ∈ failures_{d}(q) \ failures_{d}(p). So ⟨σ,X⟩ ∉ failures(p) and σ ∉ divergences(p). Let r be a deterministic process with CT(r) = {σca | a ∈ X}, let C be the set of sequences containing c, and consider the conditional liveness property given by C and G := {σca | a ∈ X}. Then p∥^{c}r ⊧ liveness_{C}(G). As ⊑ is a precongruence, p ⊑ q implies p∥^{c}r ⊑ q∥^{c}r, and since ⊑ respects conditional liveness properties, also q∥^{g}r ⊧ liveness_{C}(G). However, either ⟨σ,X⟩ ∈ failures(q) or σ ∈ divergences(q). So σc ∈ CT(q∥^{g}r), contradicting that q∥^{c}r ⊧ liveness_{C}(G). □ In [15], Bill Roscoe has shown that ⊑_{FDI}^{d} is a precongruence for all operators of CSP; he also developed a new fixed point theory that shows that it is a congruence for recursion as well.

6 Linear Time Properties

Safety, liveness, and conditional liveness properties, as studied in the previous sections, are special cases of linear time properties. A linear time property can be thought of as any requirement on the observable content of the runs of a process. The property is satisfied by a process when the observable content of all its maximal runs satisfy this requirement. Hence a linear time property can be formalised by the set of sequences over A^{ω} that, when performed in a maximal run of a process, meet the requirement.

Definition 12 A linear time property of processes in an LTS is given by a set P ⊆ A^{ω}. A process p satisfies this property, notation p ⊧ P, when CT(p) ⊆ P.

A safety property is a special kind of linear time property, namely safety(B) = {σ ∈A^{ω} | ¬∃ρ ∈B. ρ ≤ σ}. Likewise, liveness(G) = {σ ∈ A^{ω} | ∃ρ ∈ G. ρ ≤ σ}, and liveness_{C}(G) = {σ ∈ A^{ω} | (∃ρ ∈ C. ρ ≤ σ) ⇒ (∃ν ∈ G. ν ≤ σ)}.

In [2] and most subsequent work, liveness properties are formalised in a different way than in this paper. For the canonical liveness property it is fundamentally impossible to ever tell that it is not going to be satisfied when one has only observed a finite prefix of a maximal run of a process. For if “something good” is promised to happen, it is always possible to assume it will be further in the future. In [2], this is taken to be the defining characteristic of liveness properties, and a property P is called a liveness property iff ∀ρ ∈ A^{∗}.∃σ ∈ P. ρ ≤ σ.

The property liveness(G) with G = {a} for instance says that the first visible action of a process should be an a. It is a liveness property in my sense, since the first action being an a can be thought of as a good thing that happened eventually; here the requirement that it has to happen as first action could be part of one’s concept of good. However, it is not a liveness property as formalised in [2] and subsequent work, since the occurrence of a b ≠ a as first action proves that the property will never be satisfied.

The property that from some point onwards all visible actions a process performs should be g’s, is an example of a liveness property in the sense of [2] that is not a liveness property in my sense. Namely, at no point can one ever tell that something good has happened.

A well know theorem [2] says that any linear time property P can be written as the conjunction safety(B) ∩ P_{liveness} of a safety property and a liveness property in the sense of [2]. Namely,

B:= {ρ ∈ A^{∗} | ¬∃σ ∈ P. ρ ≤ σ} and P_{liveness} := P ∪ (A^{ω} \ safety(B)).

Such a theorem does not hold for my liveness properties.

My characterisation of ⊑_{liveness} would still be valid if I would have taken as class of liveness properties the intersection of mine and the ones from [2]. This follows immediately from Theorem 5, as the canonical liveness property is in this intersection. So the extra generality in my definition is harmless. However, the extra restriction makes a difference, as the canonical conditional liveness property, for instance, is a liveness property in the sense of [2].

Liveness properties in the sense of [2] are studied because proving them requires a different tool set than proving safety properties. However, as far as practical applications are concerned, one is mostly interested in conjunctions of safety and liveness properties, i.e. general linear time properties. I will therefore not try to characterise coarsest congruences that respect just the liveness properties in the sense of [2].

The coarsest congruence respecting all linear time properties has been characterised as NDFDequivalence by Roope Kaivola and Antti Valmari in [9]; this results extends to preorders in a straightforward way. The NDFD preorder can be defined just like ⊑_{FDI}^{d}, except that inf( ) is used instead of inf_{⊥} ( ). In fact, this result can also be obtained as corollary of what we have seen so far.

Theorem 10 p ⊑_{lt-properties} q ⇔ divergences(p) ⊇ divergences(q) ∧ inf(p) ⊇ inf(q) ∧ failures_{d}(p) ⊇ failures_{d}(q).

Proof: Let ⊑_{NDFD} be the preorder defined by: p ⊑_{NDFD} q iff the right-hand side of Theorem 10 holds. “⇐”: It suffices to establish that ⊑_{NDFD} is a precongruence for O that respects all linear time properties.

To show that ⊑_{NDFD} respects linear time properties, let P ⊆ A^{ω}, p ⊑_{NDFD} q, and suppose p ⊧ P. I need to show that q ⊧ P. So suppose σ ∈ CT(q). Then either σ ∈ divergences(g) ⊆ divergences(p) or σ ∈ inf(q) ⊆ inf(q) or ⟨σ,A⟩ ∈ failures(q) ⊆ failures_{d}(q) ⊆ failures_{d}(p). In the last case, one has either ⟨σ,A⟩ ∈ failures(p) or σ ∈ divergences(p). So in all cases σ ∈ CT(p). Since p ⊧ P, it must be that σ ∈ P. It follows that CT(q) ⊆ P, i.e. q ⊧ P.

That ⊑_{NDFD} is a precongruence for ∥_{S}, τ_{I} and λ_{s}^{m} follows from similar, but simpler, observations as in the proof of Theorem 9.

“⇒”: Let ⊑ be any precongruence for O that respects linear time properties, and suppose p ⊑ q. I have to establish that p ⊑_{NDFD} q. That divergences(p) ⊇ divergences(q) and failures_{d}(p) ⊇ failures_{d}(q) follows immediately from Theorem 9, using that conditional liveness properties are linear time properties. That inf(p) ⊇ inf(q) follows immediately by considering the linear time property CT(p). □

To obtain this result it suffices to define ⊑_{lt-properties} as the coarsest precongruence w.r.t. ∥_{S} and injective renaming that respects all linear time properties. However, it happens to also be a precongruence for all operators of CSP.

Linear time properties do not capture the entire observable behaviour or processes in the neutral environment. Orthogonal to them are possibility properties, such as: a process may do an action g. As argued by Leslie Lamport, “verifying possibility properties tells you nothing interesting about a system” [11]. Nevertheless, it is not hard to characterise the coarsest precongruence for O that respects linear time properties as well as all possibility properties, and thereby arguably the entire observable behaviour of a processes in a neutral environment. It is ≡_{NDFD}, the symmetric closure of ⊑_{NDFD}.

7 Concluding remark

The methodology of the paper is close in spirit to the work on testing equivalences by Rocco De Nicola and Matthew Hennessy [6], and the results in Sections 3 and 4 are comparable as well. The notion of must testing of [6] could be reinterpreted as a way to test liveness properties, and hence, unsurprisingly, my preorder ⊑_{liveness} is exactly the must-testing preorder of [6]. However, my safety preorder is exactly the inverse of the may testing preorder of [6]. This can be explained by thinking, in the context of may testing, of the “success”-action ω as marking a state of failure, rather than one of success. Now the property of whether a process may reach ω is exactly the negation of whether it will always avoid ω. This turns may-testing around, from testing certain possibility properties, to testing safety properties. It remains to elaborate a theory of testing that captures the concept of conditional liveness.

References

[1] M. Alexander & W. Gardner, editors (2008): Process Algebra for Parallel and Distributed Processing. Chapman & Hall.

[2] B. Alpern & F.B. Schneider (1985): Defining liveness. Information Processing Letters 21, pp. 181–185.

    Available at http://dx.doi.org/10.1016/0020-0190(85)90056-0.

R.J. van Glabbeek 17

[3] J.C.M. Baeten & J.A. Bergstra (1988): Global renaming operators in concrete process algebra. Information and Computation 78(3), pp. 205–245.

[4] J.A. Bergstra & J.W. Klop (1985): Algebra of communicating processes with abstraction. Theoretical Computer Science 37(1), pp. 77–121.

[5] S.D. Brookes, C.A.R. Hoare & A.W. Roscoe (1984): A theory of communicating sequential processes. Journal of the ACM 31(3), pp. 560–599.

[6] R. De Nicola & M. Hennessy (1984): Testing equivalences for processes. Theoretical Computer Science 34, pp. 83–133.

[7] R.J. van Glabbeek & M. Voorhoeve (2006): Liveness, Fairness and Impossible Futures. In: Christel Baier & Holger Hermanns, editors: CONCUR, LNCS 4137, Springer, pp. 126–141. Available at http://dx.doi.

org/10.1007/11817949_9.

[8] R.J. van Glabbeek (2001): The Linear Time – Branching Time Spectrum I; The Semantics of Concrete, Sequential Processes. In: J.A. Bergstra, A. Ponse & S.A. Smolka, editors: Handbook of Process Algebra,

chapter 1, Elsevier, pp. 3–99. Available at http://Boole.stanford.edu/pub/spectrum1.ps.gz.

[9] R. Kaivola & A. Valmari (1992): The Weakest Compositional Semantic Equivalence Preserving Nexttimeless Linear Temporal Logic. In: Rance Cleaveland, editor: CONCUR’92, LNCS 630, Springer, pp. 207–221.

Available at http://dx.doi.org/10.1007/BFb0084793.

[10] L. Lamport (1977): Proving the correctness of multiprocess programs. IEEE Transactions on Software Engineering 3(2), pp. 125–143.

[11] Leslie Lamport (1998): Proving Possibility Properties. Theoretical Computer Science 206(1-2), pp. 341–

352. See especially http://research.microsoft.com/en-us/um/people/lamport/pubs/pubs.
html#lamport-possibility.

[12] P.B. Levy (2008): Infinite trace equivalence. Annals of Pure and Applied Logic 151(2-3), pp. 170–198.

Available at http://dx.doi.org/10.1016/j.apal.2007.10.007.

[13] R. Milner (1990): Operational and algebraic semantics of concurrent processes. In: J. van Leeuwen, editor: Handbook of Theoretical Computer Science, chapter 19, Elsevier Science Publishers B.V. (North-Holland), pp. 1201–1242. Alternatively see Communication and Concurrency, Prentice-Hall, Englewood Cliffs, 1989, of which an earlier version appeared as A Calculus of Communicating Systems, LNCS 92, Springer-Verlag, 1980.

[14] A. Puhakka (2001): Weakest Congruence Results Concerning “Any-Lock”. In: N. Kobayashi & B.C. Pierce, editors: Proceedings TACS’01, LNCS 2215, Springer, pp. 400–419.

[15] A. W. Roscoe (2004): Seeing Beyond Divergence. In: Ali E. Abdallah, Cliff B. Jones & Jeff W. Sanders, editors: 25 Years Communicating Sequential Processes, Lecture Notes in Computer Science 3525, Springer,

pp. 15–35. Available at http://dx.doi.org/10.1007/11423348_2.

[16] A.W. Roscoe (1997): The Theory and Practice of Concurrency. Prentice-Hall. Available at http://www.

comlab.ox.ac.uk/bill.roscoe/publications/68b.pdf.