CSP divergence 2026-10-31
The possibility, after a finite visible CSP trace, of an infinite sequence of consecutive CSP internal actions. The CSP failures-divergences model records this possibility explicitly.[ref]
CSP event renaming 2026-10-31
Relabel visible CSP events according to a function or relation, preserving CSP internal actions. An injective relabelling preserves event identity; a non-injective one can merge distinct actions. In relational renaming, an original event with no image is disabled. Thus partial relational renaming can also restrict an interface.
CSP external choice 2026-10-31
The first visible CSP event resolves the choice; the environment can select an event offered by only one branch. CSP internal actions can advance a branch without selecting it.
CSP hiding 2026-10-31
Turn CSP events in into CSP internal actions. Infinite hidden activity can create CSP divergence.
CSP internal action 2026-10-31
An unobservable transition that the environment cannot block. CSP hiding turns selected visible CSP events into CSP internal actions.
CSP interrupt 2026-10-31
Allow to proceed while is ready to interrupt. The first visible CSP event of discards and leaves the derivative of . A CSP internal action of alone does not discard .
CSP parallel composition 2026-10-31
Events in require both CSP processes; other visible CSP events advance one participant independently. CSP internal actions do not synchronize.
CSP stable state 2026-10-31
A state with no outgoing CSP internal action. A CSP stable failure records a refusal only after such a state has been reached.
Guarded recursion 2026-10-31
A recursive definition in which returning around a recursive dependency requires progress of the kind relevant to its semantics. In communicating sequential processes, the visible guard must survive CSP hiding; a loop whose apparent guard becomes a CSP internal action is not visibly guarded.
Solutions to all three questions of the examination dated 1 June 2015. The cover permits answers to two questions.[ref]
Throughout, is the visible CSP event alphabet, is a CSP internal action, and has no transitions. There is no successful termination event. Write when implementation refines specification in model : the implementation's recorded behaviours are contained in the specification's. We use , and for the CSP traces model, CSP stable-failures model and CSP failures-divergences model.
Take a fresh CSP event and define
The apparent guard is removed by CSP hiding. Each unfolding can perform a CSP internal action and return to the same situation without any visible CSP event. Operationally this is an infinite internal loop, a CSP divergence, so the equation is not a guarded recursion. This is precisely why a syntactic test that counts every occurrence of would be wrong.
The obstruction is that the property is about where a transition originates, whereas the three standard CSP semantic models identify processes that can disagree about this fact. Take fresh and compare
In , the only transition leaves a CSP stable state, so the property holds. Initially has both an transition to and a CSP internal action to . Its initial state is therefore not a CSP stable state, and its direct transition violates the property.
Nevertheless both have exactly the CSP traces and . Initially their possible stable observations offer exactly , so their initial CSP stable failures are precisely with . After , both can refuse every CSP event. Neither has a CSP divergence: the hidden can occur at most once. Therefore
No CSP refinement test in one of these models can separate semantically equal operands. This also rules out placing the operand in a fixed context of ordinary CSP operators before the test, since those operators respect the model's equality. A model recording more about the interleaving of stability and acceptance, or an additional operator that explicitly observes stability, would be needed.
If is injective, the equation is true:
For a CSP event , the original CSP parallel composition permits exactly when both operands can perform . After CSP event renaming, the corresponding rule requires the same image in both operands. Injectivity ensures that matching images came from the same event, and that an event outside cannot acquire the image of one inside . Independent transitions remain independent, and CSP internal actions are unchanged. Matching these transition rules gives a strong bisimulation, hence equality in all three standard CSP semantic models.
For a non-injective , the equation need not hold. Let
On the left, both events require synchronization but the other operand offers the wrong event, so . On the right, both renamed operands offer , which can synchronize:
The failure is already visible in the CSP traces model. A particular non-injective CSP event renaming may still preserve a particular composition; it is the unrestricted equivalence that fails.
Write . The following five CSP operational semantics rules suffice, with always visible:
Thus a CSP internal action of either operand preserves the wrapper. A visible action outside by the left operand also preserves it, whereas such an action by the right operand performs an ordinary CSP interrupt and discards the left operand. An action in requires both operands and advances both without discarding either. If both can perform the same event outside , there are two transitions with the same visible label and potentially different derivatives; neither should be deleted. The paper excludes successful termination, so no extra termination rules are needed.
Suppose the operands are initially stable and written in CSP external choice normal form,
The CSP step law is
An empty indexed CSP external choice denotes . A label appearing in both of the first two lines must retain both continuations: after that common label the result is the CSP internal choice between the continuations. A label in appears only in the third line and only if both operands offer it. These are exactly the three visible-transition rules from part (d); the two CSP internal action rules handle operands that are not initially stable.
As a check, for the paper's example the initial shared leads to . Its expansion is
which recovers the displayed example after prefixing by .
Use fresh event tags to tell apart an action by and an interrupting action by . Put and introduce a disjoint copy . Let fix and map each to , and put . Define a process that always accepts an event from by
and an ordinary CSP interrupt handler by
Finally let fix every original event and send back to . A simulation containing no occurrence of the new operator is
Here is the ordinary CSP interrupt, and the CSP event renaming is applied after the CSP parallel composition. It is non-injective, so part (c) explains why moving it inside would be unsafe.
Before the interrupt, 's events in synchronize with on the same events. Its events outside are unprimed and do not synchronize with . Meanwhile 's events outside are primed; they synchronize with and thereby interrupt and discard . After the first such event, the left operand is , so it imposes no further restriction on ; final CSP event renaming then yields exactly the remaining behaviour of .
For a formal strong bisimulation, relate a pre-interrupt state to
and an already-interrupted state to
The three visible cases match the rules in part (d), including both transitions when both operands offer the same event outside . A CSP internal action of never activates , while a CSP internal action of remains possible exactly until the interrupt. The controller adds no CSP internal actions. Thus transitions match in both directions and related derivatives remain related.
Consequently this simulation is stronger than merely CSP trace equivalent:
It preserves CSP stable states, their enabled-event sets and their CSP stable failures, and matches every possible infinite run of CSP internal actions. In particular, it introduces neither a premature commitment nor a new CSP divergence. A different simulation that guesses an interrupt with a hidden handshake would need a separate refusal analysis; the visible tagging construction above needs no hidden handshake.