-
Notifications
You must be signed in to change notification settings - Fork 274
[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? |
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
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.
@@ -696,8 +696,8 @@ is to encode both the program and the set of states using an appropriate logic, | |||
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?
@@ -696,8 +696,8 @@ is to encode both the program and the set of states using an appropriate logic, | |||
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 | |||
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.
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. |
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: