Closed gamoreno closed 3 years ago
Hi @gamoreno. When solving for cosafe properties (anything more complex than an F
), PRISM builds and solves a product model (which combines the MDP and a finite automaton representing the property), so the adversary you are seeing is over the states of that. Use the switches -exportprodtrans
and -exportprodstates
to get the transitions/states of the product model. The resulting memoryless strategy over that product model can be seen as a finite-memory strategy over the MDP. Ask if you need help interpreting that.
@davexparker, thanks for the explanation! I didn't know those options existed.
Hi, I've run into an issue with an invalid adversary being generated when I use a co-safe LTL reward property. I've reduced the model as much as I could while still producing the invalid adversary.
If I use the property
Rmin=? [ F done ]
on the model in genmodel.prism.zip, I get an adversary with the expected behavior. However, if I use the propertyRmin=? [ true U done ]
I get an adversary with invalid transitions. I run PRISM as follows:The invalid transitions are the following:
where the states are:
For example, the transition from state 5:(2,3) with action SafeRightMove should go to state 8:(3,3), because that action increases the value of x (the first component in the tuple). It can't go to state 7:(3,2) because action SafeRightMove does not change y, the second component.
As I mentioned above, if I used the equivalent formula using F (probably not equivalent in terms of how PRISM solves it), I get the expected result. I've tried this in 4.6 and 4.7 with the same result. Have I missed something about the use of co-safe LTL properties?