An important feature of the tool is its engines. PRISM is primarily a symbolic model checker: its basic underlying data structures are binary decision diagrams (BDDs) and multi-terminal BDDs (MTBDDs). When performing numerical computation on DTMCs, MDPs and CTMCs, however, the tool can use one of three engines. The first is implemented purely in MTBDDs (and BDDs); the second uses sparse matrices; and the third is a hybrid, using a combination of the other two.
The choice of engine ("MTBDD", "sparse" or "hybrid") should not affect the results of model checking - all engines perform essentially the same calculations. In some cases, though, certain functionality is not available with all engines and PRISM will either automatically switch to an appropriate engine, or prompt you yo do so. Performance (time and space), however, may vary significantly and if you are using too much time/memory with one engine, it may be worth experimenting. Below, we briefly summarise the key characteristics of each engine.
When using the PRISM GUI, the engine to be used for model checking can be selected from the "Engine" option under the "PRISM" tab of the "Options" dialog. From the command-line, engines are activated using the -mtbdd
, -sparse
and -hybrid
(or -m
, -s
and -h
, respectively) switches, e.g.:
For further information and technical details about PRISM's implementation and engines, see: [Par02],[KNP04b].
Note also that precise details regarding the memory usage of the current engine are displayed during model checking (from the GUI, check the "Log" tab). This can provide valuable feedback when experimenting with different engines.
The techniques used to model check PTAs are different to the ones used for DTMCs, MDPs and CTMCs. For PTAs, PRISM currently has two distinct engines that can be used:
The default engine for PTAs is "stochastic games" because it generally scales better [KNP09c]. The engine to be used can be specified using the "PTA model checking method" setting in the "PRISM" options panel in the GUI. From the command-line, switch -ptamethod <name>
should be used where <name>
is either games
or digital
.
The choice of engine for PTA model checking affects restrictions that imposed on both the modelling language and the types of properties that can be checked.