Commit graph

164 commits

Author SHA1 Message Date
Simon Cruanes
9ac274fc09 refactor: simplify literals; remove useless casts in CC; bit for pending nodes 2018-06-22 19:38:04 -05:00
Simon Cruanes
225afb624e fix: add missig module Value 2018-06-17 14:26:07 -05:00
Simon Cruanes
6933a7b5d0 refactor: add reset_tasks function to clear caches on backtrack
also refactor CC a bit
2018-06-16 22:50:03 -05:00
Simon Cruanes
c8ca60461a fix: typo in Th_bool 2018-06-16 20:47:23 -05:00
Simon Cruanes
1f79809644 fix(cc.model): model building needs special case for bool 2018-06-11 21:56:50 -05:00
Simon Cruanes
080cde778e feat(model): proper model construction for CC + fun interpretation 2018-06-11 21:42:02 -05:00
Simon Cruanes
f3c02ebd58 wip: implement model construction and evaluation 2018-05-28 02:43:31 -05:00
Simon Cruanes
20ecdd6c1f remove useless fields 2018-05-28 01:31:34 -05:00
Simon Cruanes
10d394a9c3 fix(cc): public add function must also saturate CC 2018-05-28 01:22:58 -05:00
Simon Cruanes
cac216da20 fix(cc): update handling of signature table (point to node, not repr) 2018-05-26 00:46:27 -05:00
Simon Cruanes
aac7879b9d wip: fix CC for theory terms 2018-05-26 00:04:41 -05:00
Simon Cruanes
04f25779fa refactor(term): much simpler term model, without builtins or typeclass
just use a few custom functions in `Cst.t`
2018-05-25 23:45:15 -05:00
Simon Cruanes
9b8c21513a refactor: internalize terms earlier 2018-05-25 21:32:24 -05:00
Simon Cruanes
ea5bce9635 refactor(cc): simplify explanations 2018-05-25 20:51:37 -05:00
Simon Cruanes
47ddce5960 refactor: use 1st class for theory actions 2018-05-25 20:23:09 -05:00
Simon Cruanes
edeb28c8ad refactor(smt): use list of lits as explanations for propagations 2018-05-25 19:36:53 -05:00
Simon Cruanes
6302d13fe8 wip: use Lit.Set.t for explanations 2018-05-25 19:36:21 -05:00
Simon Cruanes
d1c88e73f7 wip: fix main solver 2018-05-23 22:24:24 -05:00
Simon Cruanes
fade033458 refactor: get SAT properly again on some problems 2018-05-20 14:30:36 -05:00
Simon Cruanes
3968688a35 large refactor of SAT solver, all internal code in Internal now 2018-05-09 22:47:21 -05:00
Simon Cruanes
24bbe97ceb rename to sidekick 2018-05-09 19:28:41 -05:00
Simon Cruanes
eb40cfa5e3 wip 2018-05-09 18:14:06 -05:00
Simon Cruanes
4e215e3d01 fix(cc): fix bugs in congruence closure and explanations
also, simplify API for backtracking
2018-04-02 21:10:49 -05:00
Simon Cruanes
543f8a5a99 add distinct handling to congruence closure 2018-02-23 00:44:23 -06:00
Simon Cruanes
f21d373620 minor refactoring, removing useless field in nodes 2018-02-22 21:19:54 -06:00
Simon Cruanes
77af72e739 fix bugs in SAT solver
- new atoms must always be added to heap if not present
- fix slices dimensions at creation, do not depend on mutable indices
2018-02-19 21:32:13 -06:00
Simon Cruanes
20a85a1f35 th_bool: fix polarity issues 2018-02-19 21:27:15 -06:00
Simon Cruanes
2be10fb907 first implementation of on-the-fly Tseitin transformation 2018-02-19 20:48:02 -06:00
Simon Cruanes
d7fc5cf29d fix problems with slices in the SAT core 2018-02-19 20:47:43 -06:00
Simon Cruanes
d53bd8671a lower overhead for adding clauses to the SAT solver
- directly build clauses from arrays
- use IArrays rather than lists, when possible
- pushing local/persistent clauses is now direct, no more queues
2018-02-19 19:47:03 -06:00
Simon Cruanes
57591ba042 better normalization of terms in Th_bool 2018-02-17 15:33:32 -06:00
Simon Cruanes
9e52183b45 reexport more types in Term 2018-02-17 15:33:24 -06:00
Simon Cruanes
e1717f3afe wip: heavy refactoring of SAT solver, making most things backtrackable
the idea is that most changes should be undone upon backtracking,
using the global `on_backtrack` command and `at_level_0` to
know when something is going to be permanent.

In particular, should be (possibly optionally) undone on backtracking:
- addition of clauses (clauses being attached)
- propagations of atoms
- addition of literals to the heap
- internalization of literals (tbd)

clauses should also be added immediately, not pushed into a queue
2018-02-11 22:58:24 -06:00
Simon Cruanes
2fcef323b3 move back process to dagon_smtlib 2018-02-11 10:47:47 -06:00
Simon Cruanes
98934ab74f move boolean builtins to a sublibrary 2018-02-08 23:19:35 -06:00
Simon Cruanes
7b44146102 make it compile! with stubs for conversion parse ast -> ast -> term 2018-02-08 22:19:32 -06:00
Simon Cruanes
d73684902f wip: have a proper smtlib parser 2018-02-05 23:09:29 -06:00
Simon Cruanes
221ed7dcdb continue large refactoring, progress in theory combination
- first draft of theory combination
- theory interface
- have the project compile
2018-02-01 22:53:06 -06:00
Simon Cruanes
3377d05383 add Shostak solving in CC 2018-01-30 22:19:05 -06:00
Simon Cruanes
50fe488dcb refactor types for terms and congruence closure
- terms are extensible
- explanations have a custom case, shaped as a term
- remove distinction repr/node in Equiv_class, for simplicity
- make propositional connectives n-ary
2018-01-30 21:55:37 -06:00
Simon Cruanes
2aab43f95d comments and doc 2018-01-29 23:38:24 -06:00
Simon Cruanes
1d5c1c187c wip: basic SMT infrastructure
- basic types, including terms and nodes (internalized terms)
- congruence closure
- utils
2018-01-25 23:32:36 -06:00
Simon Cruanes
e5e147eaed draft of design doc for the CC 2018-01-23 23:19:10 -06:00
Simon Cruanes
8c8209c08c large refactoring to keep only a simpler, easier CDCL(T) interface
- only one functor to instantiate
- explicit state that is carried around
- remove minismt stuff
2018-01-22 21:52:06 -06:00
Simon Cruanes
d415f8ed20 do not expose St in solver, but only expose a restricted API. 2017-12-29 18:29:56 +01:00
Simon Cruanes
99078b2335 make state explicit and add type t state-wrapper in most modules 2017-12-29 16:48:26 +01:00
Simon Cruanes
1cd70b048c split some features into minismt lib 2017-12-28 19:43:54 +01:00
Simon Cruanes
1037c06636 use generative functors, remove a layer of nesting for SMT libs 2017-12-28 19:12:41 +01:00
Simon Cruanes
7722319b0a move tseitin transformation into its own lib 2017-12-28 16:01:36 +01:00
Simon Cruanes
ac50e10788 big refactoring
- move to jbuilder
- use a functorial heap (with indices embedded in lit/var)
- update Vec with optims from mc2
- change semantics of Vec.shrink
- use new Log module
2017-12-28 15:51:04 +01:00