Simon Cruanes
4cada7e7b6
perf
2021-08-20 18:18:30 -04:00
Simon Cruanes
1ab7d34a7d
refactor: make it compile again
2021-08-20 18:18:30 -04:00
Simon Cruanes
1d3867acb5
perf: use VecI32 for clause vector
2021-08-20 18:18:26 -04:00
Simon Cruanes
5372170733
fix: make it compile again
2021-08-20 18:18:14 -04:00
Simon Cruanes
c8eb1ec29e
feat(util): add Vec_sig to express common vector interface
2021-08-20 18:04:54 -04:00
Simon Cruanes
3fbb9af664
refactor(sat): hide atoms, API now talks only about literals
2021-08-19 09:35:54 -04:00
Simon Cruanes
8bc1f1c864
feat: inner DRUP proof checking for pure-sat-solver
2021-08-19 00:15:00 -04:00
Simon Cruanes
9f01b98cde
wip: imperative proofs
...
- getting closer to having the SMT solver compile again
- dummy proof implementation
- DRUP proof implementation for pure SAT solver
2021-08-18 23:59:39 -04:00
Simon Cruanes
458f5fa9b6
finish renaming
2021-08-18 00:03:16 -04:00
Simon Cruanes
2bb6c94925
remove dead code
2021-08-18 00:01:54 -04:00
Simon Cruanes
10a4cf4c29
refactor: rename sidekick-msat-solver into sidekick-smt-solver
2021-08-18 00:01:25 -04:00
Simon Cruanes
6800b44b1c
refactor: in msat-solver, adapt to new proofs
2021-08-17 23:59:43 -04:00
Simon Cruanes
7bead748a6
refactor: move SAT_PROOF into sidekick.core
...
SAT proofs are part of bigger proofs, now. And we expect them to work on
the literals of CDCL(T) directly, bypassing the low level boolean atoms
2021-08-17 23:59:02 -04:00
Simon Cruanes
cc1a93fa74
feat: add sidekick.lit small library for literals
2021-08-17 23:58:49 -04:00
Simon Cruanes
d40ce304ae
wip: refactor proofs into traces
2021-08-17 09:29:46 -04:00
Simon Cruanes
27e775ee04
wip: refactor proofs for SMT
2021-08-12 22:05:49 -04:00
Simon Cruanes
9975a471f7
perf(drup): restore Atoms as integers
2021-08-11 09:30:53 -04:00
Simon Cruanes
51293bc66a
feat(drup-check): functorize over atoms
2021-08-10 00:13:37 -04:00
Simon Cruanes
bdb41fcdc7
perf: more inlining for checker
2021-08-08 02:39:41 -04:00
Simon Cruanes
b4231d23c1
perf(checker): optimize watch literals
2021-08-08 02:36:30 -04:00
Simon Cruanes
ab6e574298
feat(drup): first version of checker
2021-08-08 02:18:58 -04:00
Simon Cruanes
a8522e66f0
refactor: renaming in DRUP traces
2021-08-08 00:46:58 -04:00
Simon Cruanes
feff94bdbb
doc: update guide (models changed, more printers needed)
2021-08-07 21:09:20 -04:00
Simon Cruanes
bef0c810d3
wip: trace checking
...
- continue Drup checker
- create sidekick-bin.lib to share parsers
- parse problem+proof for sidekick-check
2021-08-07 18:10:42 -04:00
Simon Cruanes
ec6fb0d5e1
wip: checker binary
2021-08-07 17:20:52 -04:00
Simon Cruanes
971ae74ecc
perf: compile only in native
2021-08-05 10:53:46 -04:00
Simon Cruanes
d117d656c5
test: add basic test for DRUP proof production
2021-08-02 23:48:52 -04:00
Simon Cruanes
e6fc7e7357
feat(sat): produce DRUP proofs if asked to
2021-08-02 23:48:52 -04:00
Simon Cruanes
b9800023ec
feat(sat): missing call to on_learnt; better API
2021-08-02 23:48:52 -04:00
Simon Cruanes
ed114f8abe
feat(sat): check proofs if asked to
2021-08-02 23:17:29 -04:00
Simon Cruanes
a205c429e7
feat(sat): check proofs if asked to
2021-08-02 23:14:52 -04:00
Simon Cruanes
2d081c554b
chore: fix makefile
2021-08-02 21:34:37 -04:00
Simon Cruanes
2a2b03ffc8
remove symlinks
2021-08-02 16:05:35 -04:00
Simon Cruanes
74f2844652
wip: DRUP checker
2021-08-02 16:05:35 -04:00
Simon Cruanes
a08cda8c5b
test: add a lot more tests (for SAT)
2021-08-02 16:05:35 -04:00
Simon Cruanes
c14070b622
perf: compile in release by default 😡
2021-08-02 16:04:59 -04:00
Simon Cruanes
515a720d00
detail
2021-07-22 09:57:53 -04:00
Simon Cruanes
233df98229
perf(sat): proper GC for clauses
...
GC is now eager in the cleanup of watchlists and more elaborate.
It starts by marking all clauses justifying literals on the trail,
because we cannot remove them yet (they might be used in resolution
steps during clause analysis).
Then, we sort set of learnt clauses by decreasing activity, and pop them
one by one until the target size is reached. Clauses that are marked,
because they are on the trail, are kept on the side so we can push them
back at the end.
For each clause we want to remove, we start by marking it "dead".
Then we mark its two watch literals are "dirty", which means we will
need to purge their watchlists from dead clauses.
Then we purge watchlists (remove deadclauses entirely). At this point
the dead clauses are unreachable from both trail and watchlists.
We can remove all data for each such clause, and put their index for
recycling so another new clause can reuse their slot.
Finally we unmark dirty literals and saved-by-trail-explanation
explanation clauses.
2021-07-21 20:29:27 -04:00
Simon Cruanes
a174e5958a
more stats for main
2021-07-21 20:24:27 -04:00
Simon Cruanes
77c61b536e
refactor(sat): rename some bitfields, leaner clause creation
2021-07-21 20:24:03 -04:00
Simon Cruanes
3aa25cb2a2
sat: use an atom array for clauses again
...
allocator is not worth the complexity, and has a lot of double
indirections anyway.
2021-07-21 10:02:56 -04:00
Simon Cruanes
8b94e8404f
wip: data-oriented clauses
2021-07-20 23:34:58 -04:00
Simon Cruanes
97d87cc58f
perf: tiny detail in int indices in solver
2021-07-20 23:34:38 -04:00
Simon Cruanes
29892d07de
feat(util): Vec_float based on bigarrays
2021-07-20 23:33:57 -04:00
Simon Cruanes
a03d7f6bef
fix
2021-07-20 23:31:21 -04:00
Simon Cruanes
11b1ea4eda
feat(vec): more
2021-07-20 23:28:54 -04:00
Simon Cruanes
d53b3c291e
feat: add "drup" case to proofs
2021-07-20 23:27:11 -04:00
Simon Cruanes
89051fd3ad
perf(solver): use VecI32 in the heap
...
this reduces the size of the heap (4 bits per element, not 8), and
reduces GC work by not scanning the bigarray
2021-07-20 10:07:43 -04:00
Simon Cruanes
d08d5fe9c4
feat(util): add VecI32 based on bigarray
2021-07-20 10:07:29 -04:00
Simon Cruanes
347e098fc2
misc
2021-07-20 09:20:14 -04:00