Commit graph

668 commits

Author SHA1 Message Date
Simon Cruanes
15efe4aceb Revert "change strategy for vec reallocation"
This reverts commit 7407669834.
2016-11-24 17:38:09 +01:00
Simon Cruanes
20b4692e18 more accurate assertion 2016-11-24 14:21:51 +01:00
Simon Cruanes
7407669834 change strategy for vec reallocation 2016-11-24 14:14:21 +01:00
Simon Cruanes
6be7e7c71a rename a Vec function
`grow_to_by_double` becomes `grow_to_at_least` so that it doesn't
specify its own implementation's strategy
2016-11-24 14:12:32 +01:00
Guillaume Bury
c64a94c2aa Updated some logging levels 2016-11-22 18:42:56 +01:00
Guillaume Bury
3124d55209 [bugfix?] Avoid forgetting theory conflict clauses
When theory raises a conflict, it is analysed, and the backtracck clause
that result is added to the solver, however, I didn't find yet a
satisfying answer as to wether the original clause is implied (or not)
by this backtrack clause, so in order not to lose information, we also
add the original conflict clause when it comes from the theory (because
if not, then it comes from a conflict detected during propgation, so the
conflict clause is actually already attached).
2016-11-22 17:04:18 +01:00
Guillaume Bury
9a393c130a Some more info in debug logging 2016-11-22 17:00:39 +01:00
Guillaume Bury
73ea4fea30 Removed useless check option in test_api 2016-11-22 16:58:02 +01:00
Guillaume Bury
9a6d07e097 [bugfix] Do not forget conflict at level 0
In add_clause, a conflcit at level 0 raised Unsat, but was forgotten,
which is obviously incorrect as succesive solving of the same problem
would yield different results.
2016-11-22 16:53:47 +01:00
Guillaume Bury
e3d8513286 [bugfix] late propagations need to be re-propagated
Indeed, the previous strategy was that late propagations didn't need to
be propagated since they already have been, however that may not be the
case as a conflict might arise during propagation. It manifested as a
bug when the conflict did *not* depend on local hyps, and was tragically
lost during popping.
2016-11-22 16:43:49 +01:00
Guillaume Bury
0dc44b1173 Merge branch 'master' of github.com:Gbury/mSAT 2016-11-21 15:53:08 +01:00
Guillaume Bury
b88b906da9 Added test for bug (conflict at level 0) 2016-11-21 15:51:55 +01:00
Simon Cruanes
1ccf13b89b fix url 2016-11-21 15:18:14 +01:00
Simon Cruanes
c7d9f8190f update readme 2016-11-21 15:05:20 +01:00
Simon Cruanes
badf58ffdd update doc by merging everything into one dir 2016-11-21 15:02:35 +01:00
Simon Cruanes
21206cb166 remove useless modules and update doc 2016-11-21 14:58:21 +01:00
Simon Cruanes
31659c5d73 minor typos 2016-11-21 14:48:07 +01:00
Guillaume Bury
38972d7fc6 Typos in doc 2016-11-21 14:40:51 +01:00
Guillaume Bury
0ec4288d7c Added some documentation on solver_types 2016-11-21 14:37:19 +01:00
Guillaume Bury
03dd2f9e38 Removed some commented code 2016-11-17 16:12:34 +01:00
Guillaume Bury
6c0148016d Merge branch 'wip-analyze' 2016-11-17 16:11:18 +01:00
Guillaume Bury
e7b22b9c3e Merge branch 'wip-basic-smt' 2016-11-17 15:22:28 +01:00
Guillaume Bury
7dd04204ed [travis] Only build the bin for tests 2016-11-17 00:19:40 +01:00
Guillaume Bury
c2887b2e29 [travis] Try and build on old ocaml versions 2016-11-17 00:11:26 +01:00
Guillaume Bury
66f250a57e [travis] Changed ocaml test versions 2016-11-16 19:52:26 +01:00
Guillaume Bury
b4d62d6f3b [breaking] Changed if_sat interface
In Plugin, and Theory, if_sat function now has the same type as assume
Additionally, some insertions into the heap have been moved to avoid
some unnecessary operations.
2016-11-16 17:33:10 +01:00
Guillaume Bury
3af700bbd0 [bugfix] Better fix for propagation at level 0
Previously a fix was introduced to mitigate the fact that some atoms
couldn't be propagated at level 0 because of local assumptions. However
that fix didn't take into account propagation that implicated the
already propagated atom: for instance consider an atom [a] propagted at
level 1 because of some local hyp, and then atoms [b] propagated at
level 1 because [a] is true in a clause [C = not a \/ b]. If we propagte
0 and modify its level in-place as done in the previous fix, then we
should also propagate [b] at level 0, which is hard. Instead of
modifying levels in place, we simply store unit clauses at level 0 in a
stack, which we transfer to the clauses to add when we pop local hyps.
2016-11-09 14:27:50 +01:00
Guillaume Bury
443a3b0731 [bugfix] Attempt at fixing enqueue bug
When we enqueue an atom at level 0, we expect it to stay unconditionally
true whatever happens. However, if it happens that the atom is alrady
true at a level strictly greater than 0 (but lower than base_level),
then enqueue_bool would simply do nothing. To fix this, there is a new
function enqueue_root which modifies in place the level and reason of
the propagated atom if it is already true.
Additionally, enqueue_bool now requires that the atom be undecided,
since if it not (i.e if it is propagated while already decided) it is
most likely a bug.
2016-11-09 00:24:41 +01:00
Guillaume Bury
d681e247ed Added some debug logging 2016-11-04 12:19:43 +01:00
Guillaume Bury
d5d7234afc [bugfix] Avoid forgetting 1 atom clauses
When a new clause with only 1 atom is added with (usually
from simplifying a theory lemma), the usual strategy is to backtrack to
the base level, then propagate the atom. However, when the atom is
already false at base level, Unsat is raised, in which case the
information that the atom must be true is lost. To avoid that, the
single atom clause is simply pushed back in the stack of clauses to add,
so that it will be re-examined later.
2016-11-03 16:04:51 +01:00
Guillaume Bury
b8d4ee198a Better dimacs printing 2016-11-03 10:38:03 +01:00
Simon Cruanes
42b4c00861 wip 2016-11-02 16:17:58 +01:00
Simon Cruanes
33ea26c4f5 small fix 2016-11-02 16:17:58 +01:00
Simon Cruanes
bf5e6cf67c better dimacs printing 2016-11-02 16:15:20 +01:00
Guillaume Bury
3321f556d6 Better way of keeping track of local hyps 2016-10-19 17:09:13 +02:00
Guillaume Bury
e6f3e79acc [bugfix] Grow heap when adding local hyps
Previously, the heap was not grown when adding local assumptions. This
lead to a bug whne backtracking: indeed when a local assumption was
backtracked, it was added to the (too small) heap, which then raised a
Sparse_vec exception.
2016-10-19 17:07:19 +02:00
Guillaume Bury
64af636341 [doc] Updated inference rules 2016-10-18 19:10:31 +02:00
Guillaume Bury
f237851e89 Added Model definitions in msat doc 2016-10-18 17:39:10 +02:00
Guillaume Bury
ee2a80bc4f [wip] Documentation update 2016-10-14 14:12:29 +02:00
Guillaume Bury
ff6e9cb8f0 [wip] adding documentation about msat 2016-10-12 19:11:08 +02:00
Guillaume Bury
f35d3a9f23 Fixed uninterpreted predicates for mcsat solver 2016-09-23 15:57:38 +02:00
Guillaume Bury
1656995097 Added uninterpreted functions to mcsat solver 2016-09-23 15:39:23 +02:00
Guillaume Bury
4fae86c81d Fixed typo in smt typechecker 2016-09-23 14:02:12 +02:00
Guillaume Bury
88b8c9f895 Optimisation for mcsat solver 2016-09-23 13:30:51 +02:00
Guillaume Bury
41f1ec0e82 For travis, dolmen is now pinned to github/dev version 2016-09-23 13:30:19 +02:00
Guillaume Bury
9cf13bd7a2 Mcsat now works (for pure equality problems) 2016-09-22 18:31:22 +02:00
Guillaume Bury
4f5bb640ca [WIP] All is setup, remains to have real theories
Architecture is now all setup, but theories for the smt and mcsat
solvers are currently dummy ones that are not doing anything.
2016-09-16 15:49:33 +02:00
Guillaume Bury
2a33534312 Added (dummy) mcsat module for test binary 2016-09-14 19:55:57 +02:00
Guillaume Bury
4522aa3ddc Removed Expr module from msat lib 2016-09-12 17:54:10 +02:00
Guillaume Bury
a0d8bd5457 Added dolmen dependency 2016-09-12 17:11:05 +02:00