-
Notifications
You must be signed in to change notification settings - Fork 142
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
SAT_ORACLE gives wrong answers #1170
Comments
@myreen What's your operating system? I can't reproduce your steps on Intel macOS:
|
I can confirm the bug with
|
@binghe I'm on MacOS running on Mac. But note that you need to call SAT_ORACLE rather than SAT_PROVE. |
Sorry, I didn't notice that! Now I can reproduce too. (Then this seems not an issue of MiniSAT but the SML code behind |
I think the issue is (at least) in the function invoke_solver" (
In the above function, |
Hmm... I think just replace |
In case of SAT, instead of making [] |- model ==> ~t, it should make [~t] |- F to simulate the output of satCheck model' ntm
No... if the input term is Now I think perhaps the whole idea of |
I think... it's possible that MiniSAT's behavior has changed, say, under new C++ compilers. Previously on Linux ARM64, MiniSAT every wrongly reported SAT for an UNSAT problem, and such a mistake was later captured by HOL when trying to construct the fake SAT result as a theorem (whose concl is the input term). Now, perhaps MiniSAT is doing the opposite thing: reporting UNSAT for an SAT problem (e.g. |
Now I think it's MiniSAT's problem on certain inputs (
I tried HOL builds back to k6, and also tried latest HOL built with very old C++ compilers (on Mac OS X 10.6, GCC 4.2), the reported issue with |
We're using such an old version of MiniSAT that no-one other than us will ever fix it. Is there an obvious test-case we can feed into minisat to demonstrate the problem as a first step? |
Yes, I should first confirm if MiniSAT behaves correct on raw inputs (of DIMACS). But then I found MiniSAT is innocent this time! In
Then, the file contents of
But the above DIMACS is wrong. Here the input term of In DIMACS format, the line
There's a MiniSat web interface [1] taking DIMACS inputs. If I put the above DIMACS contents as is, the solving result is SAT. But after manual fixes according to the above two issues (only the 2nd is fatal), the result is UNSAT, the correct one. |
This is correct behaviour:
This is incorrect behaviour:
In other words, the oracle version of the interface to SAT returns a bogus theorem for this simple input.
The following shows that one can prove false from the bogus theorem.
The last line shows that the proof of false depends on a trusted oracle call made by
HolSatLib
. That is to say: this isn't a soundness bug in HOL but rather a bug report aboutminisatProve.SAT_ORACLE
.The text was updated successfully, but these errors were encountered: