In general it is very useful to represent systems using enumerated types. As
symbolic algorithms work on boolean variables, there is the need to encode
propositions about non-boolean variables
in the space of boolean variables. There are different ways to perform this
task. At the moment NUSMV provides the encoding used in CMU SMV, which
represents a finite range variable with a sequence of boolean
variables. Consider a state variable
st that can assume the values
.
The
propositions on the possible values of
st can be encoded with
three boolean variables
st0,
st1 and
st2,
as shown in Table 2.
|
Notice that the value assigned to the boolean variable st2, in the case of , is indifferent, and it can be either or 1.7 The boolean variables used to encode a scalar variable are grouped together, and are considered as a single block of variables in the BDD package. Other encoding policies can be more appropriate for variables of different kind. For example, word level encodings are useful for the analysis of data paths [25]. Moreover, the constraint of grouping the boolean variables together can be relaxed. Some of these policies will be codified in further releases of NUSMV.