-
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
ERROR
verdict for both branches dead in SV-COMP
#1576
Comments
The example I stumbled upon was extern int __VERIFIER_nondet_int(void);
int main() {
int i;
int x;
int y;
i = __VERIFIER_nondet_int();
x = 0;
y = 0;
if (i > 10) {
x = 1;
} else {
y = 1;
}
while (x == y) { }
return 0;
} which yields:
|
Looks like it may be an unsoundness in our apron bindings we only bump into for polyhedra, which are enabled for termination. |
It's not that, because it also happens with octagon. Anyway, I extracted the unsoundness itself to #1578. |
There's something else odd going on as well: even though termination is supposed to make us use polyhedra, it's actually still using octagon. Explicitly setting the domain from command line works. EDIT: Forcing a single unroll and polyhedra, there's a state with
which isn't bottom according to Apron and thus we don't make it dead. |
Apparently there are SV-COMP tasks where we output the "both branches dead" unsoundness warning, but still happily give a
true
SV-COMP result. We've been lucky that this hasn't caused unsound verdicts.In these cases the verdict should instead be something like
ERROR (both branches dead)
.We do this for fixpoint errors with
ERROR (fixpoint)
.The text was updated successfully, but these errors were encountered: