-
Notifications
You must be signed in to change notification settings - Fork 269
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
Add support for MergeSat #6439
base: develop
Are you sure you want to change the base?
Add support for MergeSat #6439
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #6439 +/- ##
========================================
Coverage 79.09% 79.09%
========================================
Files 1701 1701
Lines 196625 196625
========================================
Hits 155527 155527
Misses 41098 41098 ☔ View full report in Codecov by Sentry. |
8668397
to
ee3fd8c
Compare
I believe this is the only solver that uses the minisat identifiers (that isn't minisat). I may be worth adding some comments to make that apparent. |
Yes, good call! Where would you see the most natural place to find such comments (as a developer)? |
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.
In principle I don't see a problem.
Thanks for picking this up. Let me know if there is anything on the SAT side to look at (except your PR) |
c1d9942
to
74411eb
Compare
Done with minimal modifications, which, however, requires C++17. So I've added commits from #6749 to make this work (there's a CI job using MergeSat now). |
Is that still mentioned anywhere? |
I've added MergeSat to the check-vs-2019-cmake-build-and-test CI job. Let's see! |
Does not seem to work: D:\a\cbmc\cbmc\build\mergesat-src\minisat\core\Lookahead.cc(20,10): fatal error C1083: Cannot open include file: 'core/Lookahead.h': No such file or directory [D:\a\cbmc\cbmc\build\mergesat-build\mergesat-condensed.vcxproj]
cl : command line warning D9025: overriding '/W3' with '/w' [D:\a\cbmc\cbmc\build\mergesat-build\mergesat-condensed.vcxproj]
cl : Command line warning D9025: overriding '/W3' with '/w' [D:\a\cbmc\cbmc\build\mergesat-build\mergesat-condensed.vcxproj]
Solver.cc
D:\a\cbmc\cbmc\build\mergesat-src\minisat\core\Solver.cc(50,10): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory I'll limit the experimenting to Linux-based platforms, but even then the uses from within refinement appear to be causing trouble. Needs looking at. |
Tests: do not unnecessarily constrain what models solvers can produce [blocks: #6439]
Note to self: We'll likely want conp-solutions/mergesat#124 to be merged and Mergesat 4.0 to be released before trying to merge this one. |
// MergeSat internally still uses them to track UNSAT. To make sure we | ||
// aren't stuck with "UNSAT" in incremental calls the status needs to be | ||
// reset. | ||
((Minisat::Solver *)solver.get())->reset_constrain_clause(); |
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.
This is not required anymore. There was an issue with how incremental solving was implemented. The latest update of MergeSat has that fixed. Hence, feel free to drop this hunk!
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.
Thank you! I don't think we want to merge this PR before MergeSat 4.0 is released, so I suppose 4.0 will include this fix?
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.
Likely yes. On the other hand, I am not sure when I will release 4.0, i.. whether I wait for the SAT competition results or not. Hence, feel free to not wait. The major thing that will change is the default configuration of the solver - and the competition will help to identify which one to pick.
58e83d6
to
2156312
Compare
The runtime for the new CI job looks unpleasantly long. Is this expected? It seems well outside the numbers on the job description. |
We might take this as a first performance indicator (the tests taking 54 minutes as compared to 18 minutes that MiniSat takes). Perhaps the switch from 4.0-rc1 to 4.0-rc4 (of mergesat) wasn't a good idea?! |
Yes. Without further knowledge/detail as to why (and whether it's an edge case we can accept), merging this seems like a bad idea. |
MergeSat is a recent SAT solver that fits the MiniSat2 interface. Run the check-ubuntu-20_04-cmake-gcc CI job with MergeSat to continuously confirm that this configuration actually works. To use MergeSat as a proper SAT backend, some extensions might be dropped. Especially being able to print memory usage is not helpful for CBMC, but requires pulling in a new dependency. Signed-off-by: Norbert Manthey <[email protected]>
Adds support for MergeSat.