Pedantic mode #802
Replies: 5 comments 9 replies
-
|
Hi Philipp,
|
Beta Was this translation helpful? Give feedback.
-
|
Hey, thanks for the suggestion. More strongly, I do believe that there is no reason to ever have an unsound method (modulo floating point) should ever be default. Regarding floating point vs other implementations: Here I personally think that it should be up to the users. I can imagine that --pendantic disables floating-point representations of models (what would sound rounding of 0.3333 on the input of a model even mean?). More generally, I think there are two parts to storm and it may potentially be good to split the discussion. The first is about verifying a given MDP inside the storm data structures, the second is about how you specify this MDP. If you insert an MDP into the storm data structures, then checking whether it is a valid MDP and the verification routine itself are two individual questions. I agree that a pendantic mode should check whether an MDP is indeed well-defined and I think this should be possible, but note that this may be not that easy: For example, if the user has a floating point representation of the MDP in mind, when is the MDP well-defined? Sure, one could say that pendantic does not support specifying MDPs in floating points, but other questions arise as well: Is a MDP with deadlocks a valid MDP (with the interpretation that deadlocks are just self-loops?) However, fixing this first point gives you no guarantee at all that the MDP inside storm is the MDP you had in mind. Finally, I do think you cannot expect pendantic mode to only work in debug compilations: I don't want to compile Storm myself in debug mode just because I want to use pendantic mode and it is completely understandable that code in debug mode has way more (useful) checks. You would basically tell people to not use storm in release mode.
|
Beta Was this translation helpful? Give feedback.
-
|
It seems that exploration checks and additional checks could maybe be combined. I agree with the point that all relevant checks should be accessible in Release mode such that everybody can use then. |
Beta Was this translation helpful? Give feedback.
-
|
Philipp, you know this is an open source project, right. If things are important to you than you change them, or you convince us to change them. In particular, convincing me to change things is not about whether you are right, but whether your requests are the most important to me. |
Beta Was this translation helpful? Give feedback.
-
|
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Team Storm!
Because this conversation keeps coming up internally (brought up by me 😂), I'd like to suggest a new
--pedanticflag to Storm which enables...If valuable checks are only available in DEBUG mode, then
--pedanticshould always crash with an error in RELEASE mode.Similarly, if some specific problem could only be tackled by an implementation which cannot give sound results, Storm should exit with an error.
In short, I'd like the pedantic flag to enable as pedantic computations as possible. Maybe there are more choices you can come up with?
To be clear, the pedantic flag should only guarantee pedantic soundness modulo Storm bugs.
To enable all of the additional checks for debugging, there could be another
--paranoidflag? :)More on some individual flags I found:
--exactalso, as I understood, switches the solver to an equation solver instead of e.g. (sound?) value iteration in addition to switching to rational arithmetic.The name suggests otherwise, but according to the description one needs to set this flag to properly handle deadlocks?
What are these additional checks?
This seems to be the option for out of bounds checks?
Are these just for debugging Storm internally or are these additional checks on the model that might affect soundness?
Beta Was this translation helpful? Give feedback.
All reactions