Information Technology Reference
In-Depth Information
custom type definitions can be found in the language reference section of the
mCRL2 web site.
The mCRL2 toolset provides tools that allow users to verify software models
specifiedinthe mCRL2 language. The toolset includes a tool for converting mCRL2
specifications into a compact symbolic representation of the corresponding LTS
to speed up subsequent manipulations, yielding so-called linear process specifica-
tions (LPS), a tool for generating explicit LTSs from LPSs, tools for optimizing
and visualizing these LTSs, and many other useful facilities. A detailed overview
is provided at the mCRL2 web site.
For model checking, system properties are specified as formulae in a variant
of the modal μ -calculus extended with regular expressions, data and time. In
combination with an LPS such a formula is transformed into a parametrized
boolean equation system (PBES) and can be solved with the appropriate tools
from the toolset. Analysis at the level of LTSs is also possible by means of equiv-
alence checking (e.g., strong and branching bisimulation or trace equivalence).
In particular, the presence or absence of deadlocks/livelocks or of certain actions
can be checked straightforwardly.
4 Translating Reo to
mCRL2
In this section, we recall the rules for mapping Reo primitives (channels and
nodes) to mCRL2 processes and briefly explain how to derive composite specifi-
cations for arbitrarily complex Reo connectors (cf. [6]).
Our mapping of the basic channels reflects the constraint automata semantics
of Reo. The mCRL2 process corresponding to a channel, is based on two atomic
actions modeling data flow on its respective ends. Analogously, we introduce a
process for every node and actions for all channel ends meeting at the node.
One important aspect of our encoding is that data constraints are translated
faithfully. For this the actions corresponding to channel and node ends are ex-
tended with data parameters. In the context of a given connector, we assume
a global datatype, which we model as the custom sort Data in mCRL2 .Infact,
most channels in Reo are agnostic to the actual type of data items they carry.
Given such a global type, we can use the summation operator in mCRL2 to define
data dependencies imposed by channels. The encodings for the primitives used
in this paper are depicted in Table 2. Note that for the FIFO we need to define
an additional datatype
sort
DataFIFO =
struct
empty ? isEmpty
|
full ( e : Data )? isFull ;
The encoding of the FIFO channel includes a parameter of this datatype which
allows us to specify whether the buffer of the channel is empty or full, and if it
is full, what value is stored in it.
As in the constraint automata approach, we construct nodes compositionally
out of the Merger and the Replicator primitives. A process for a node that be-
haves like an exclusive router can be defined analogously. However, in practical
situations a third type of node comes in handy, which we refer to as Join here.
 
Search WWH ::




Custom Search