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
1656995097
Added uninterpreted functions to mcsat solver
2016-09-23 15:39:23 +02:00
Guillaume Bury
9cf13bd7a2
Mcsat now works (for pure equality problems)
2016-09-22 18:31:22 +02:00
Simon Cruanes
9baa3f0716
fix bug in add_clause
2016-09-12 10:38:37 +02:00
Guillaume Bury
18a3478926
Give access to the trail
2016-09-06 14:34:22 +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
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
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
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
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
Guillaume Bury
38b4fde5c1
Clause atoms are now in an array instead of a vec
2016-07-18 18:42:15 +02:00
Guillaume Bury
933943c4e3
Merge branch '0.3.1'
2016-07-18 18:13:48 +02:00
Guillaume Bury
9be4c66911
[bugfix] Clause level now computed at creation
...
Apart from new assumptions, clause level can always
be computed from the histoy of the clause, so it is
better to do it in Solver_types when creating clauses.
Aditionally, it seems there was an error in the manual
computing of clause level somewhere, this fixes the bug.
2016-07-09 03:20:38 +02:00
Guillaume Bury
dcc410c8a0
Added stack to delay adding of pushed clauses
2016-07-09 03:20:38 +02:00
Guillaume Bury
eba84fba42
Aliased def of negated in Expr_intf
2016-07-08 17:34:46 +02:00