-
Notifications
You must be signed in to change notification settings - Fork 283
[Documentation] The BMC algorithm. #3396
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
|
Ping @tautschnig - can you have a look at this section, please? |
allredj
left a comment
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 6f3b712).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/91241953
xbauch
left a comment
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.
Really like the examples. I'm not sure it was necessary to go that deep into bit-vectors, but now that it's there, I think it's good.
| We can then assert that `fac`=1 using | ||
| the propositional formula | ||
| `fac`<sub>63</sub> = 0 and ... and `fac`<sub>1</sub> = 0 and `fac`<sub>0</sub> = 1, | ||
| where we define the formula A = B as ''(A and B) or ((not A) and (not B))''. |
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.
I think we'd rather do ((not A) or B) and (A or (not B)) to be closer to CNF.
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.
Changed to (A or not B) and (B or not A) to save braces.
| mostly *propositional logic* and (fragments of) *first-order logic*. | ||
|
|
||
| In the following, we will quickly discuss propositional logic, in combination | ||
| with SAT solving, and show how to build a simple bounded model checker for |
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.
Why remove this restriction?
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.
My original intention was to show bounded model checking on code that's essentially a finite-state automaton, but that's actually not very helpful. Should I add the restriction back?
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.
@peterschrammel Any further comments?
| In the following, we will quickly discuss propositional logic, in combination | ||
| with SAT solving, and show how to build a simple bounded model checker for | ||
| a finite-state program. Actual bounded model checking for software requires | ||
| with SAT solving, and show how to build a simple bounded model checker |
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.
checker.
allredj
left a comment
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 3314ed3).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/91378314
|
@johanneskloos, please squash the commits. |
allredj
left a comment
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 33fac5d).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/91657871
This extends the background concepts section with a description of the BMC algorithm. Review needed!
Documentation only commit: