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
CSP hiding 2026-10-31
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.
CSP trace 2026-10-31
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]
Concurrency examination paper by the University of Oxford (2015). Cover; questions on printed pp. 2–5
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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 1 b Solution 2026-10-31
Take a fresh CSP event and defineThe 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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 1 e Solution 2026-10-31
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 compareIn , 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. ThereforeNo 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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 2 c Solution 2026-10-31
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. LetOn 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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 2 d Solution 2026-10-31
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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 2 e Solution 2026-10-31
Suppose the operands are initially stable and written in CSP external choice normal form,The CSP step law isAn 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.
Past exam of the computer science course of the University of Oxford 2015 Concurrency 2 f Solution 2026-10-31
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 byand an ordinary CSP interrupt handler byFinally let fix every original event and send back to . A simulation containing no occurrence of the new operator isHere 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 toand an already-interrupted state toThe 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.