moves-rwth / storm

A Modern Probabilistic Model Checker
https://www.stormchecker.org
GNU General Public License v3.0
133 stars 74 forks source link

MDP support #46

Closed ochipara closed 5 years ago

ochipara commented 5 years ago

Hi,

I am interested in checking time-bounded reachability for an mdp model. An example is shown below:

mdp const double ps; module active s : [0 .. 3] init 0; [] s = 0 -> ps : (s'=1) + (1 - ps) : (s'=0); [] s = 0 -> ps : (s'=2) + (1 - ps) : (s'=0); [] s = 1 -> ps : (s'=3) + (1 - ps) : (s'=1); [] s = 2 -> ps : (s'=3) + (1 - ps) : (s'=1); endmodule

rewards "progress" s = 0: 0; s = 1: 1; s = 2: 1; s = 3: 2; endrewards

I want to check system properties of the form: P=? [true U<=5 (s = 3)]. Is there support in storm built for evaluating such properties?

volkm commented 5 years ago

Yes, step-bounded reachability properties are supported in Storm. As your model is an MDP you need to specify whether you want to compute the minimal or maximal probability: Pmin=? [F<=5 (s = 3)]. Other than that, the property should work. Please also note that the variable ps needs to be initialized either directly in the Prism file or from the command line with --constants "ps=0.4".

ochipara commented 5 years ago

Thank you for the quick reply. I really want to use ps as a parameter rather than a constant. So, in fact, I want to compute the minimal reachability of a state for PMDPs.

cdehnert commented 5 years ago

Thanks for your interest in Storm!

For a pMDP, there is not the minimal/maximal reachability probability, since the optimal resolution of nondeterminism (potentially) depends on the values of the parameters. For DTMCs, reachability probabilities also depend on the parameter values, but can be represented as a rational function in a "compact" closed form. However, this is not true anymore for MDPs: here, every possible resolution of nondeterminism corresponds to a rational function and the min/max over all these functions is not necessarily representable as a rational function. Could you be more specific what kind of result you would like to obtain in your scenario?

ochipara commented 5 years ago

Agreed. What I want to compute is solve the following problem: given every possible resolution of non-determinism, what is a lower bound on the likelihood of reaching a state after k steps. It would also be nice to have various types of adversaries, but that's a bonus.

tquatmann commented 5 years ago

I'm sorry, we are still not a 100% sure what result you expect exactly.

ochipara commented 5 years ago

Thank you both. The first option should be good enough. I have a couple of further questions:

ERROR (SparseMdpParameterLiftingModelChecker.cpp:67): Simplifying the model was not successfull. ERROR (storm-pars.cpp:642): An exception caused Storm-pars to terminate. The message of the exception is: UnexpectedException: Simplifying the model was not successfull.

tquatmann commented 5 years ago

Step-bounded expected rewards can be checked via cumulative reward properties, e.g.:

./storm-pars --prism test.pm --prop 'Rmin=? [C<=4]' --region '0.01<=ps<=0.99' --extremum min 0.05

This refers to the reward collected within 4 steps However, you can not specify any kind of goal states here.

Towards your second question: Storm uses Parameter lifting as described here and (more recently) here in Section VI and VII. While these paper discuss unbounded properties, the results can be lifted to step-bounded properties, as well.