-
Notifications
You must be signed in to change notification settings - Fork 88
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
[C] Incorrect "Verification successful" for k-induction when utilizing goto's #1735
Comments
Reduced test case:
the k-induction transformations don't identify the loop so no variable is set to nondet in label
|
it looks like esbmc finds the loop tho:
|
This issue can be avoided, to some extent, by using
Checking inductive step, k = 2
Starting Bounded Model Checking
Unwinding loop 3 iteration 1 file file.c line 26 column 3 function main
Unwinding loop 2 iteration 1 file file.c line 17 column 3 function main
Not unwinding loop 3 iteration 2 file file.c line 26 column 3 function main
Symex completed in: 0.000s (16 assignments)
Slicing time: 0.000s (removed 15 assignments)
Generated 1 VCC(s), 0 remaining after simplification (1 assignments)
BMC program time: 0.000s
VERIFICATION SUCCESSFUL
Solution found by the inductive step (k =2)
Checking base case, k = 3
Starting Bounded Model Checking
Unwinding loop 3 iteration 1 file file.c line 26 column 3 function main
Unwinding loop 2 iteration 1 file file.c line 17 column 3 function main
Unwinding loop 3 iteration 2 file file.c line 26 column 3 function main
Unwinding loop 2 iteration 1 file file.c line 17 column 3 function main
Not unwinding loop 3 iteration 3 file file.c line 26 column 3 function main
Symex completed in: 0.001s (20 assignments)
Slicing time: 0.000s (removed 17 assignments)
Generated 2 VCC(s), 1 remaining after simplification (3 assignments)
No solver specified; defaulting to Boolector
Encoding remaining VCC(s) using bit-vector/floating-point arithmetic
Encoding to solver time: 0.000s
Solving with solver Boolector 3.2.2
Runtime decision procedure: 0.000s
Building error trace
[Counterexample]
State 1 file file.c line 16 column 3 function main thread 0
----------------------------------------------------
Violated property:
file file.c line 16 column 3 function main
assertion error
(_Bool)property
VERIFICATION FAILED
Bug found (k = 3) This issue #1092 might be related |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm using ESBMC for a case study and am getting a false positive with the k-induction feature. With plain BMC without k-induction ESBMC manages to find the counterexample. I broke down the program to a minimal example as seen below. I added comments noting what changes in the minimal example lead to the counterexample being found.
To me it looks like it might be caused by incorrect handling of the goto-statements. Is this a known bug?
This bug was found on the newest ESBMC 7.5 release on a Windows 11 machine with the command
.\bin\esbmc.exe .\minimal_example.c --k-induction
.The text was updated successfully, but these errors were encountered: