Hi,
> Thanks very much for the nice and clear explanation. It was really very
> helpful otherwise I had been lost. May I ask one more thing? If the
> model is very large, which engine is the most suitable (assuming 64-bit
> linux version on a 32 GB RAM server)?
>
> From the PRISM website:
>
http://www.prismmodelchecker.org/manual/FrequentlyAskedQuestions/PRISMModelling#max_model_size
> Hybrid and MTBDD are mentioned to handle up to 10^8 and 10^11
> respectively. While it is not mentioned for other engines. So could you
> please elaborate on this point?
> I will be grateful to you.
Clearly, it's difficult to state that in a general way, as this depends
on particularities of the model and you have to differentiate between
"can build the representation of the model" and "can actually perform
some particular model checking".
With that amount of memory, my guess would be that PRISM with the
explicit engine should handle models with a state space in the tens of
millions states.
For the other engines (MTBDD, Hybrid, Sparse), the first hurdle is to
successfully build the symbolic representation. That heavily depends on
the model structure and the variable ordering (order of modules in the
source file and of the state variables). After building, i.e., for
actual model checking, roughly speaking, the sparse engine needs enough
memory to store an explicit representation of the (relevant parts of
the) model, i.e., the transition matrix, the hybrid engine needs enough
memory to store an explicit representation of a value vector, i.e., not
the full matrix but only a row with one value per state, and the MTBDD
engine stores everything symbolically, which does not really allow a
prediction about the memory requirements.
In the end, the easiest way is to try all 4 variants and pick the one
that works. Hopefully, one of them does :)
Cheers,
Joachim