The alphabets assigned to participants determine their shared CSP events. An event in both assigned alphabets requires both participants; one assigned only to a single participant advances that participant. Replicated composition synchronizes all participants whose assigned alphabets contain the event.
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 exception 2026-10-31
Behave as until it performs a visible CSP event in , then switch to . The triggering event is included in the visible CSP trace.
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 internal choice 2026-10-31
The process may internally choose either branch, independently of the environment's offered CSP events. Consequently it can have more CSP stable failures than the corresponding CSP external choice, despite having the same CSP traces.
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 process 2026-10-31
A component specified by possible CSP events and successor behaviours. has no transitions. CSP prefixing, CSP choice and CSP parallel composition construct larger components.
CSP step law 2026-10-31
An algebraic expansion listing the initially possible CSP events and their continuations. It translates operational transition cases into CSP external choice expressions.
FDR2 User Manual 2026-10-31
§1.2, The CSP View of the World defines CSP events, CSP hiding, CSP refinement and the supported CSP semantic models. This source is cited for the meanings of the models, not for answers to the 2015 examination.
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.
Use a chain of identical storage cells, each retaining the first value it sees and passing later values to the next cell. On the return journey it passes the next cell's reversed output before emitting its own retained value. This turns the chain into a distributed LIFO stack.
Here is one cell template. Its ports carry incoming values towards the tail; carry returning values towards the front. Each port carries values in , with the sentinel value outside :
An input such as abbreviates an indexed CSP external choice over the corresponding CSP events. An output is the CSP prefixing action . There is no extra controller process.
For , take copies of this same template. Introduce channels for and apply port CSP event renaming to copy , for , as follows:
At the front put and . Adjacent cells synchronize on every shared or CSP event. The two tail channels are sentinel-only: and are local tail CSP events, with no other participant required. Disable all for . Formally, use a partial relational CSP event renaming for the last copy, omitting the pairs for its with ; an unmapped transition is blocked. This explicitly prevents a fictitious tail from generating data.
Let be the resulting port-renamed cell and its visible alphabet. With consisting of the internal link CSP events, including the two tail CSP events, the answer is
Here the indexed operator is CSP alphabetized parallel composition: each CSP event is synchronized by all cells whose alphabets contain it. There are exactly storage-cell processes; port wiring and the sentinel-only tail adapt their interfaces, without adding a helper process. The local tail CSP events are hidden, as are all inter-cell communications.
To see correctness, after inputs have propagated, cell retains . The input sentinel value propagates to the tail. The last cell performs its two local tail CSP events, then returns . Inductively, if the suffix after cell returns , cell relays those values, replaces the final sentinel value by , and stops. Hence the external output is
and starts only after . Shared links provide synchronization rather than an assumption that all cells take steps simultaneously. For the degenerate known-empty input, no storage is needed: the interface is simply .
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.