-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add --not-graph-preserving flag #588
base: master
Are you sure you want to change the base?
Conversation
3fae532
to
b3aebb6
Compare
Hi, I do see the need to differentiate where we make the graph-preserving assumption and where not. The fix for the bisim is good. In my understanding, it should be clear from the command line whether we assume graph-preserving or not. I can imagine that we want to be more liberal and say that the function is a general mapping, then we should throw an error if it the algorithm does not preserve the correctness. In those cases, I would then expect a flag --assume-graph-preserving that a user can add to sstill get a result, if that is intended. Sebastian |
Do you mean we should always throw an error when computing the solution function except when the user specifies |
I think for solution functions you could say that the semantics of that operation is to generate a mapping from graph-preserving fragment. In the past, we also sometimes explicitly exported/printed the graph-preserving models. However, I am not too afraid of throwing an error if that makes things explicit. |
Ok! Another thought: we would change the default behavior of |
If we add |
Why this flag
I ran into the issue that bisimulation chooses the measure-driven initial partition mode for until formulas, which assumes that all instantiations of a parametric model are graph-preserving. I added a flag
--not-graph-preserving
tostorm-pars
which changes this mode to the label-based initial partitions. It further throws an error when trying to compute a solution function, which also assumes that all instantiations are graph-preserving. If the input region appears to be non-graph-preserving (we cannot know for sure) and the flag is not set, I added a warning. This is currently not reachable, asparseRegions
throws an error anyway, as no methods are currently implemented that support non-graph-preserving regions.Demonstration
Consider the following pMC:
Behavior of storm:
Original pMC:
after incorrect transformation: