-
Notifications
You must be signed in to change notification settings - Fork 19
LTL/SVA->Buechi: reject error traces early #1223
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
Conversation
4c01e47
to
7a79dce
Compare
3bab967
to
367b584
Compare
-- | ||
^warning: ignoring | ||
-- | ||
Back-end support is missing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does this comment mean when the lines above suggest that the properties are proved and refuted, respectively?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a leftover; removed
-- | ||
^warning: ignoring | ||
-- | ||
SMT-back end doesn't do cast from bool to bool. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does this become apparent when this test isn't excluded from the tests run with the SMT back-end?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another leftover; removed
@@ -155,6 +174,37 @@ ltl_to_buechi(const exprt &property, message_handlert &message_handler) | |||
message.debug() << "Buechi liveness signal: " << format(liveness_signal) | |||
<< messaget::eom; | |||
|
|||
// construct the error signal -- true when the next automaton state | |||
// is nonaccepting with an unconditional self-loop. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this say "accepting" instead of "nonaccepting"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed; fixed
The Buechi automaton accepts counterexamples to the original property. The Buechi acceptance condition requires a lasso where the loop contains an accepting state. A proof of that requires satisfying the looping condition, which may require a very long counterexample. This adds a shortcut using a sufficient condition for a counterexample: we can reject the property when we reach a state in which the Buechi automaton transitions into an accepting state that has an unconditional self-loop on it. Such traces can always be extended to a lasso as above.
367b584
to
9633ac8
Compare
The Buechi automaton accepts counterexamples to the original property. The Buechi acceptance condition requires a lasso where the loop contains an accepting state. A proof of that requires satisfying the looping condition, which may require a very long counterexample.
This adds a shortcut using a sufficient condition for a counterexample: we can reject the property when we reach a state in which the Buechi automaton transitions into an accepting state that has an unconditional self-loop on it. Such traces can always be extended to a lasso as above.