-
Notifications
You must be signed in to change notification settings - Fork 2
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
Wrong answer if some unit clauses of variables in e1 level #11
Comments
Thanks a lot for greatly simplifying the buggy test case. I will take a look. |
Disabling the technique pure literal assertion (by specifying I don't completely understand the patch: why shouldn't we add unit clauses into the solver? Edit: Using the assumptions |
Small output formatting Bugfix: consider unit clauses in pure-literal assertion The original code for pure literal assertion did not take unit clauses into account. If an existential variable x at lv=0 is pure, it is asserted in the selection solver. The pure-literal assertion code reads the clauses and finds that only !x appears in the matrix. Therefore, it asserts !x in the selection solver, leading to an UNSAT and zero satisfying probability. Solution: do not assert any variable which is a unit clause.
@qmo1222 : Could you please confirm that the bug has been fixed? |
The bug is fixed for this small case. |
Bug Observation
Correct answer for the following test case.
But if I add a unit clause.
The answer will be 0 (wrong answer).
However, the following test case will be correct.
Code Modification
I try to fix it by remove line 166 in src/ssat/core/SsatSolver.cc.
And add else condition to line 168~172 as
This modification makes the above instance correct.
But the solver cannot solve sand-castle benchmarks.
The text was updated successfully, but these errors were encountered: