[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 External Operators

FDR implements some transformations on CSP processes which do not preserve the semantics of the original process. These are brought into scope by the external declaration.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2.1 Chase

The external operator chase produces a determinised version of a process by arbitrarily choosing a single tau arc in every unstable state of the process. This can be very useful in eliminating unwanted spurious non-determinism but, since the resultant process differs semantically from the input, it must be used with care.

More details can be found in [Roscoe97].


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2.2 Prioritise

The prioritise operator takes a process and prunes low priority arcs from each state where a higher priority arc also exists. taualways takes priority over everything. Events not defined to be part of the priority ordering are never pruned.

The arguments to the operator consist of the process to be prioritised, followed by a series of sets of events, with the events in each set taking priority over all subsequent ones but being equivalent to each other. The first set implicitly includes tau.

Given the example

 
P = a -> STOP [] b -> STOP
Q = prioritise(P, {}, {a}, {b})

Q will be equivalent to a -> STOP because the event a will take priority over b.

Only sbsism and wbsisim will preserve the semantics of prioritise(P) when used inside P. The prioritise operator will either produce potentially incorrect results or fail altogether if any of the other compressions are used.

The prioritise operator can also be invoked with two arguments: the process to be transformed and a sequence of sets of events:

 
Q = prioritise(P, <{}, {a}, {b}>)

This permits the arguments to be constructed programmatically within a CSPMscript.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Phil Armstrong on May 17, 2012 using texi2html 1.82.