Commit graph

208 commits

Author SHA1 Message Date
Guillaume Bury
0631135bd5 Smt solver with dummy theory now builds 2016-09-12 15:43:57 +02:00
Guillaume Bury
fa8957784a Restored simple expressions for pure SAT 2016-09-12 15:37:06 +02:00
Guillaume Bury
dfff903f8c Removed additional libs. 2016-09-12 15:32:22 +02:00
Simon Cruanes
9baa3f0716 fix bug in add_clause 2016-09-12 10:38:37 +02:00
Guillaume Bury
9d509241ad [WIP] Some drastic cleanup of code
Some of these changes are to be reverted, among other the structure of
terms used for the instantiation of the pure SAT solver
2016-09-09 18:09:04 +02:00
Guillaume Bury
954892ac4a [WIP] Strange compiler bug 2016-09-09 12:07:13 +02:00
Guillaume Bury
742f8c469d Added Expr and typing module from ArchSat 2016-09-07 17:58:07 +02:00
Guillaume Bury
18a3478926 Give access to the trail 2016-09-06 14:34:22 +02:00
Simon Cruanes
bb2c931d68 wip 2016-08-24 18:23:01 +02:00
Guillaume Bury
9eee458c2a External.assume no longer needs to catch Unsat
Following changes to the assume function in internal, it does not raise
Unsat anymore, so there is no reason to try and catch it in external.
2016-08-19 01:06:22 +02:00
Guillaume Bury
119f3a8566 New function to export a problem to dimacs format 2016-08-18 18:19:14 +02:00
Guillaume Bury
56f98d9a82 Explicit status for local assumption clauses
Proofs require local assumptions to be recognisable.
Keeping the reason of local assumptions as Bcp simplfies
the code, since a proof is a clause, and allows to not have
to recreate the local unit clause that effectively propagates
the local assumptions.

With this fix, simplification of clauses is not required aymore for
levels between 0 (excluded) and base_level, so the partition function
can be simplified accordingly.
2016-08-17 19:20:05 +02:00
Simon Cruanes
41557a1509 wip: make SMT great again 2016-08-16 17:20:48 +02:00
Guillaume Bury
ec6ced9809 Unify analyze code for sat and mcsat 2016-08-04 22:16:52 +02:00
Guillaume Bury
7d57b3f1b5 Accept late conflict clauses, closes #4 2016-08-04 21:34:17 +02:00
Simon Cruanes
12fed8a811 do not ask for comparison on terms and formulas 2016-08-03 20:27:51 +02:00
Simon Cruanes
66707b58fc optimize Vec.{get,set} 2016-07-29 23:43:06 +02:00
Guillaume Bury
6f54604dc9 Optim for non-mcsat solvers 2016-07-29 23:20:31 +02:00
Simon Cruanes
af55371eb4 change the caching mechanism for var's assignable subterms 2016-07-29 22:50:37 +02:00
Simon Cruanes
c70c102de9 optim in a bottleneck in Vec 2016-07-29 22:50:26 +02:00
Guillaume Bury
5fdffe1f85 Handle new clauses unsat at level >0 && <=base_lvl 2016-07-29 21:00:24 +02:00
Simon Cruanes
6eeaa8513c fix bug 2016-07-29 20:45:30 +02:00
Simon Cruanes
85c290c0ce small changes 2016-07-29 20:15:53 +02:00
Simon Cruanes
672b5945ce expose true_at_level0 in Solver_intf 2016-07-29 17:51:00 +02:00
Guillaume Bury
9d6634d621 Better interface for Msat.Internal 2016-07-29 15:47:51 +02:00
Simon Cruanes
38a6d8c481 small fix 2016-07-29 15:11:53 +02:00
Guillaume Bury
bc200474eb Simpler code for clause simplification
Simplify_zero is a strict subset of partition_aux
2016-07-29 14:40:42 +02:00
Guillaume Bury
a32b35e994 Fix proofs with local assumptions 2016-07-29 13:35:05 +02:00
Guillaume Bury
51c76479b9 Better logging in proofs 2016-07-29 12:58:21 +02:00
Simon Cruanes
5a04fa49ed for proofs, represent assumptions as propagations 2016-07-28 10:56:19 +02:00
Simon Cruanes
eb14a1e229 fix 2016-07-28 10:47:59 +02:00
Simon Cruanes
ac706f3e56 fix bug 2016-07-28 10:18:07 +02:00
Simon Cruanes
2e8b45edbc many small changes 2016-07-28 00:51:36 +02:00
Simon Cruanes
73c2500b05 allow propagation of lits under base_level 2016-07-27 18:16:26 +02:00
Simon Cruanes
3e9c0d3a1e forgot to pop before assume 2016-07-27 17:58:15 +02:00
Simon Cruanes
563e9027e1 first draft of replacing push/pop by assumptions 2016-07-27 17:50:03 +02:00
Guillaume Bury
09166d0370 Removed Stack.fold for compat with ocaml < 4.03 2016-07-26 15:35:22 +02:00
Guillaume Bury
3c6da0ffdc Clause buffer must be fitered when popping
Indeed imagine the following case:
"push; assume [c]; pop; push; solve"
since c has user-level 1, in the current state, it would
have been wrongfully added to the solver state when solve
is run.
2016-07-26 14:34:42 +02:00
Guillaume Bury
defcb67aad Use a buffer for adding clauses (to avoid exceptions) 2016-07-26 14:22:32 +02:00
Simon Cruanes
c45fe97ebd micro optim on Vec 2016-07-25 13:44:22 +02:00
Guillaume Bury
3e30a77569 Some more comments 2016-07-22 17:28:12 +02:00
Simon Cruanes
c4beb7054b spurious assertion 2016-07-22 16:51:45 +02:00
Simon Cruanes
895cb9cbfb some additional comments and cleanup 2016-07-22 16:40:22 +02:00
Simon Cruanes
891f764ee8 some more cleanup 2016-07-22 16:31:00 +02:00
Simon Cruanes
c3cfe67696 cleanup boolean propagation 2016-07-22 16:00:02 +02:00
Simon Cruanes
c1915ba2d3 wip: cleanup and documentation of internal.ml 2016-07-22 15:42:17 +02:00
Simon Cruanes
8b1d657695 remove Either 2016-07-22 13:19:16 +02:00
Simon Cruanes
e251799f8e add some array utils for pre-4.03 compat 2016-07-22 11:25:00 +02:00
Guillaume Bury
216ca82fe7 Ensure pushed clauses are added after if_sat slice 2016-07-20 11:45:13 +02:00
Guillaume Bury
d1ebc59856 Avoid unnecessary atoms array to list conversions 2016-07-18 18:49:28 +02:00