Skip to content

Conversation

@kroening
Copy link
Collaborator

@kroening kroening commented Nov 10, 2024

This implements "iterative constraint strengthening" in the word-level BMC
engine (VMCAI 2009, Query-driven Program Testing), and makes it the default.
The previous, assumption-based method remains available with
--bmc-with-assumptions.

When using MiniSat, the benefit on hwmcc08 is barely measurable. When using
Cadical, the benefit is around 10%.

MiniSat iterative 88.27s
MiniSat asumptions 88.73s
Cadical iterative 103.41s
Cadical asumptions 117.74s

@kroening kroening force-pushed the non-incremental-bmc branch 4 times, most recently from 5dd0152 to 2f79853 Compare November 11, 2024 19:20
^EXIT=0$
^SIGNAL=0$
^UNSAT: No counterexample found within bound$
^UNSAT: .*$
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use this (or any other) test to exercise bmc-with-assumptions?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test added

for(auto &h : property.timeframe_handles)
if(solver.get(h).is_false())
return true;
return false;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about return solver.get(h).is_false();

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That won't work -- note the loop.

@kroening kroening force-pushed the non-incremental-bmc branch from 2f79853 to 04aff5a Compare November 13, 2024 16:42
@kroening kroening changed the title BMC without assumptions BMC with iterative constraint strengthening Nov 13, 2024
@kroening kroening force-pushed the non-incremental-bmc branch 3 times, most recently from 1424e6e to 22964f1 Compare November 13, 2024 17:23
This implements "iterative constraint strengthening" in the word-level BMC
engine (VMCAI 2009, Query-driven Program Testing), and makes it the default.
The previous, assumption-based method remains available with
--bmc-with-assumptions.

When using MiniSat, the benefit on hwmcc08 is barely measurable.  When using
Cadical, the benefit is around 10%.

MiniSat iterative   88.27s
MiniSat asumptions  88.73s
Cadical iterative  103.41s
Cadical asumptions 117.74s
@kroening kroening force-pushed the non-incremental-bmc branch from 22964f1 to eab9d87 Compare November 13, 2024 17:25
@kroening kroening marked this pull request as ready for review November 13, 2024 17:30
@kroening kroening merged commit 66892c1 into main Nov 13, 2024
9 checks passed
@kroening kroening deleted the non-incremental-bmc branch November 13, 2024 17:30
Romy15200 pushed a commit to Romy15200/nws that referenced this pull request Aug 19, 2025
BMC with iterative constraint strengthening
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants