Go to the Next or Previous section, the Detailed Contents, or the FS(E)L Home Page.


5.1.1 Methods of compression

FDR2 currently provides six different methods of taking a transition system (or state machine) and attempting to compress it into a more efficient one. Each compression function must first be declared by the transparent operator before it can be used (see A.6.2 Transparent). The functions must be spelt exactly as given below or the relevant operation will not take place -- in fact, since they are transparent, FDR will ignore an unknown function (i.e., treat it as the identity function) and simply give a warning in the status window (see 2.7 Options).

explicate
Enumeration: by simply tabulating the transition system, rather than deducing the operational semantics "on the fly". This obviously cannot reduce the number of nodes, but does allow them to be represented by small (integer) values, as opposed to a representation of their natural structure. This in turn makes subsequent manipulations substantially faster.

sbisim
Strong, node-labelled, bisimulation: the standard notion enriched (as discussed in [Roscoe94]) by the minimal acceptance and divergence labelling of the nodes. This was used in FDR1 for the final stage of normalising specifications.

tau_loop_factor
tau-loop elimination: since a process may choose automatically to follow a tau action, it follows that all the processes on a tau-loop (or, more properly, in a strongly connected component under tau-reachability) are equivalent.

diamond
Diamond elimination: this carries out the node-compression discussed in the last section systematically, so as to include as few nodes as possible in the output graph. This is perhaps the most novel of the techniques, and the technical details are discussed in 5.2.2.2 Diamond elimination.

normalise
Normalisation: discussed extensively elsewhere,(11) this can give significant gains, but it suffers from the disadvantage that by going through powerspace nodes it can be expensive and lead to expansion.

Normalisation (as described in 1.3.3 Checking refinement) is essential (and automatically applied, if needed) for the top level of the left-hand side of a refinement check, but in FDR2 is made available as a general compression technique through the transparent function normalise. (For historical reasons, this function is also available as normal and normalize.)

model_compress
Factoring by semantic equivalence: the compositional models of CSP we are using all represent much weaker congruences than bisimulation. Therefore, if we can afford to compute the semantic equivalence relation over states it will give better compression than bisimulation to factor by this equivalence relation.

It makes sense to factorise only by the model in which the check is being carried out. This is therefore made an implicit parameter to a single transparent function model_compress. The technical details of this method are discussed in 5.2.2.1 Computing semantic equivalence.

Both tau-loop elimination and factoring by a semantic equivalence use the notion of factoring a GLTS by an equivalence relation; details can be found in [RosEtAl95].


Go to the Next or Previous section, the Detailed Contents, or the FS(E)L Home Page.