Commit graph

1273 commits

Author SHA1 Message Date
Guillaume Bury
7776b6e2f0 Fix use of asprintf (missing in 4.00.1) 2017-02-15 14:03:10 +01:00
Guillaume Bury
a13906184c Fix warnings 2017-02-15 13:34:21 +01:00
Guillaume Bury
8076c06047 [bugfix] Eliminate duplicates in input clauses
When adding clauses that conatins duplicates, the checking
of some proof would fail because there would sometime be multiple
littrals to resolve over. This fixes that problem.
2017-02-15 13:04:54 +01:00
Guillaume Bury
8acf02cb74 [bugfix] subterm insertion in forgetful propagation 2017-01-29 13:38:00 +01:00
Guillaume Bury
44509c6f8d [bugfix] conflict in forgetful propagation 2017-01-27 17:56:47 +01:00
Guillaume Bury
928622b511 [feature] New functions new_lit and new_atom 2017-01-24 11:12:17 +01:00
Guillaume Bury
204e184b86 [doc] Better description for Plugin_intf.reason 2017-01-24 11:12:17 +01:00
Guillaume Bury
1f5b5fc422 Renamed new_atom -> create_atom 2017-01-24 11:12:17 +01:00
Guillaume Bury
d538e19411 Fix typo of Plugin_intf.reason 2017-01-17 15:59:29 +01:00
Guillaume Bury
ea2c905644 Add forgetful propagation 2017-01-17 13:16:00 +01:00
Guillaume Bury
e8e619f3c7 Do not decide on unused variables 2017-01-17 12:29:39 +01:00
Guillaume Bury
c77c997ab8 Add used field to variables 2017-01-17 12:26:18 +01:00
Guillaume Bury
b5d816fbac Typo in doc 2017-01-17 12:26:12 +01:00
Guillaume Bury
35c99df753 Added some missing headers 2016-12-25 20:52:18 +01:00
Guillaume Bury
b391a98aa0 Typo in doc 2016-12-19 16:04:16 +01:00
Guillaume Bury
f80c3b3df7 [bugfix] Allow semantic propagation of already true lits 2016-12-19 15:58:48 +01:00
Guillaume Bury
58e6b924a8 Added full_slice function in Internal 2016-12-07 13:21:12 +01:00
Guillaume Bury
32128749b2 Some mli doc updates 2016-12-02 15:57:56 +01:00
Guillaume Bury
4159a34c20 Removed module alias for SAT expressions 2016-12-02 15:49:49 +01:00
Guillaume Bury
1d8fa08f92 Added Sat module to the lib. Updated README 2016-12-01 18:55:58 +01:00
Guillaume Bury
c53a81e54b Forgot to update .ml when adding Arg to .mli 2016-12-01 18:27:50 +01:00
Guillaume Bury
fe2f92ca3c Some more doc in mlis 2016-12-01 18:05:34 +01:00
Guillaume Bury
f0056c7b79 Massive doc upgrade for .mli 2016-12-01 17:49:21 +01:00
Guillaume Bury
3cefd85b21 Fixed some typos in doc 2016-12-01 15:50:57 +01:00
Guillaume Bury
8896ce2b79 Documentation update 2016-12-01 15:35:15 +01:00
Simon Cruanes
30832099b3 avoid allocating at every call to grow_to_at_least 2016-11-30 16:12:42 +01:00
Guillaume Bury
2e7e947b62 Allow level 0 semantic propagations 2016-11-25 15:16:10 +01:00
Guillaume Bury
64694b524d [breaking] Ceaner interface for mcsat propagations 2016-11-25 12:07:23 +01:00
Guillaume Bury
61eb921f05 Added iCNF export to external 2016-11-25 10:34:31 +01:00
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
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
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
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