-
Notifications
You must be signed in to change notification settings - Fork 63
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
w4_abc_aiger
proves False
#1938
Comments
If you print out the proof goal that is discharged to the solver:
You'll get:
It succeeds without any errors:
Proving
|
w4_abc_aiger
backend not reporting readonly
violation of LLVM codew4_abc_aiger
proves False
I think I see what is going on. When
Where each Things get weird when the property doesn't have any variables, however. I can see two possible ways of rectifying this:
Option (1) sounds slightly fiddly, so I'm inclined to try option (2) first. |
The
Or:
This makes me less enthusiastic about the idea of parsing |
Previously, any proofs involving the `w4_abc_aiger` (a.k.a., `abc`) or `w4_abc_verilog` proof scripts would succeed if they did not involve any variables, even false properties (e.g., `False`). This happened for a very silly reason: the counterexamples that the `abc` would generate contained a blank output (since there are no variables to describe), and SAW was misinterpreting this as a successful proof. Oops! With this patch, SAW now properly distinguishes between an successful proof (in which case no counterexample file will be generated) and a unsuccessful proof involving no variables (in which case a blank counterexample file will be generated). This is admittedly a bit fiddly, as it requires making some assumptions about the format of the counterexample files that `abc` produces. Nevertheless, this does work on all the examples that I have tried. Fixes #1938.
For the following C program
and the following SAW script
an error should be reported because the code writes to read-only memory. However SAW instead outputs that the proof is successful:
This issue seems to only occur with the
abc
/w4_abc_aiger
backend. Thez3
,w4_abc_smtlib2
,w4_abc_verilog
, andsbv_abc
backends correctly report an error. @andreistefanescu suggests that the problem is in the translation to AIGER.The text was updated successfully, but these errors were encountered: