Conversation
|
You can use this method instead: pono/modifiers/prophecy_modifier.h Line 41 in 2451303 to modify the transition system. |
|
|
|
Would that work? Doesn't this just add a new frozen state variable to the system that then I would need to replace with a parameter inside the property anyway to be able to put it in a quantifier? Just having the property be |
|
You are right about the updated property not strong enough. So, get_proph is not what you want. However, the get_proph method is not exactly doing what you mentioned.
Additional improvement: You can apply step 2 to remove the quantifier. This will allow to use a quantifier free solver in a model checking algorithm. However, you will still be needing a quantifier handling solver to check this query in your code: https://github.com/stanford-centaur/pono/pull/346/files#diff-6bd9034d0d17559c7dab57996b6d59016614b054e009c26b00e6792460d7a6ffR177 |
6e9bce0 to
9c9cd3a
Compare
This adds a flag that enables the generalization of the property by adding quantifiers for all variables that don't have a next state assigned (input variables and state variables without an update function).
This should always be a sound transformation, but we check whether the new property implies the old one anyway.
Such generalization should help k-induction with solving simple array problems that otherwise cannot be proven with the current engines we have.