-
Notifications
You must be signed in to change notification settings - Fork 47
Bounded-like checker for LTS #394
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
base: master
Are you sure you want to change the base?
Conversation
7b7566b to
c68d333
Compare
|
Thanks for the PR! Besides a version bump, could you please also do the following so that this could be used from the CLI?
This way it could be integrated easily into other parts of Theta, e.g., portfolios. Also, it would be easy to run a sanity check with SV-COMP tasks to see if anything was missed. |
So this is the point where users should configure the BMC bound?
I'm not sure this is needed, the checker already returns UNSAFE unless the whole state space has been explored with the provided bound. Or does
This is a good idea, although I'm not sure what bound to set for SV-COMP. The current exploration strategy is depth-first to take advantage of push/pop, so merely running until the time is exhausted (with increasing bounds) isn't really feasible. We could possibly make the exploration breath-first (and sacrifice push/pop), but I'm not sure whether that's really useful just to support SV-COMP. At any rate, the programs where we currently want to use this (examples from ongoing paper) are loop-free, so either setup works.
So I reckon I should put a test for |
Yes, exactly. Alternatively, you could leave it always unbounded, and use the
Great! I missed that.
For SV-COMP, a loop unroll bound of 3-10 is usually enough. If the bound is a bound on edges, then let's triple that number (given LBE, I think that's at least somewhat correct).
Yep, that's right. But lately we've been ignoring the sonar quality gate where there are tests but Sonar does not pick them up, so don't invest too much time there (alternatively, if you had some ideas how to collect the test data such that it would pick up coverage inter-subproject, we would really appreciate it) |
|
@leventeBajczi I added some support for calling this checker into You can also set an abstract domain other than How could we test this on SV-COMP? I don't expect it to be very useful, but maybe there are some interesting cases it can cover with SPOR. |
|
I send you a config file in private. |
I think Levi misinterpreted your comment. Other bounded analyses in Theta behave in a way that they return SAFE if no error is found within bound (or UNKNOWN). However, the For example, the consistency checker produces the following behavior (and log) for a task with an infinite loop after exploring the behavior up to certain iterations and finding no bugs: |
|
Ah, sorry, I meant the checker returns UNKNOWN unless the whole state space has been explored with the provided bound. So basically
So the output is SAFE iff no |
|
This is perfect, thank you. |
|
@leventeBajczi After running on SV-COMP, there are some false Safe (e.g., |


This patch adds a bounded-like model checker that can work with LTS. This allows use to use BMC for models that can't be converted to
MonolithicExprdirectly, or when such conversion introduces a large overhead. Another benefit is testing new features (e.g., XCFA labels) that are only implemented in the LTS andTransFunclevel, without having to provide a correspondingMonolithicExprimplementation.BoundedLtsChecker, a checker that expands and LTS and anAnalysislike anAbstractor, but applies a BMC-like procedure to call an SMT solver after every expanded transition and finally deliver a safe/unsafe/unknown verdict.AnalysisandPrec. Such a configuration would use the specified level of abstraction to enumerate transitions without passing the full path condition to the SMT solver before checking the full path condition like a BMC. However, we currently only use the unit abstraction, meaning that fireability is entirely determined by full path condition checking.UnitXcfaAnalysis, anAnalysisthat uses the unit abstraction for XCFA. This analysis is not suitable for CEGAR, as it cannot be refined, but it letsBoundedLtsCheckerhandle the full path condition.