Commit graph

74 commits

Author SHA1 Message Date
Simon Cruanes
c9138144f3
refactor(preprocess): break infinite recursion 2022-09-08 21:55:09 -04:00
Simon Cruanes
317f406620
wip: refactor(preprocess): recursive preprocess guided by theories 2022-09-07 19:35:09 -04:00
Simon Cruanes
e74439cf2a
wip: new attempt at theory combination 2022-09-01 22:34:27 -04:00
Simon Cruanes
5feb5d8e73
refactor: new API for combination, with theories claiming terms
interface variables are terms claimed by >= 2 theories. Theories now
have a unique ID attributed at their creation.
2022-08-27 22:51:16 -04:00
Simon Cruanes
4d78be0c52
wip: model builder 2022-08-25 20:13:49 -04:00
Simon Cruanes
6ad07921c4
details 2022-08-22 22:12:27 -04:00
Simon Cruanes
dff65c5d26
refactor: Term.abs takes store again, so abs false can be false,true 2022-08-22 22:12:26 -04:00
Simon Cruanes
3e39232696
fix build temporarily 2022-08-19 21:34:21 -04:00
Simon Cruanes
4d97f1a525
fix build 2022-08-19 21:32:55 -04:00
Simon Cruanes
5fa5fb5bd7
fix(th-data): need to propagate from is-a eagerly
the final check is too late: we need the info from `is_a c t` to be
fully propagated in the CC before we can run the acyclicity check.
2022-08-19 21:31:27 -04:00
Simon Cruanes
c643e547f6
wip: refactor(th-data): remove some model building, cleanup code 2022-08-19 00:08:57 -04:00
Simon Cruanes
94ba945bf3
feat(cc.plugin): plugins have state, passed at init 2022-08-14 23:21:49 -04:00
Simon Cruanes
647d66a196
feat(th-data): use lists, not iter/array; add Proof_rules 2022-08-10 22:07:54 -04:00
Simon Cruanes
4aec4fe491
refactor(proofs): make proof terms a recursive term 2022-08-01 20:42:45 -04:00
Simon Cruanes
1edf054104
refactor(proof): use a suspension but keep uniform Proof_term.data type
this makes proof terms uniformly printable or (de)serializable.
2022-07-31 15:01:11 -04:00
Simon Cruanes
0d0751b7d2
refactor(theories): remove functors 2022-07-30 23:02:13 -04:00
Simon Cruanes
2922cca78f
fix: proper negation when raising an acyclicity conflict 2022-07-22 21:54:22 -04:00
Simon Cruanes
851dda696a
feat(cc): have 2 phases of pre-merge events
the first phase observes plugin data unchanged; the second one
is used to update plugin data themselves. This fix a bug that manifests
itself depending on implementation details of Event, where some theory's
event handler fires too late and observes a state that has already
changed.
2022-07-22 21:31:42 -04:00
Simon Cruanes
6da6284711
refactor(cc): use explicit actions in CC, not effectful functions 2022-07-22 21:26:21 -04:00
Simon Cruanes
b10aaf05f2
wip: expose bug caused by order of event handlers
if plugin data is updated before `Th_data.on_pre_merge` is called, it
never has a chance to observe the un-merged data and react accordingly.
we need to ensure that all handlers see the same data before any change
is made.
2022-07-20 21:40:04 -04:00
Simon Cruanes
f3f0628261
large refactor with signature splitting, events, etc. 2022-07-18 23:20:07 -04:00
Simon Cruanes
00dec7ced8
remove iarray 2022-07-15 21:06:46 -04:00
Simon Cruanes
a1bc186d2e
use ocamlformat 2022-07-14 22:09:13 -04:00
Simon Cruanes
d153c80ca5
details 2022-02-18 14:59:27 -05:00
Simon Cruanes
cbc9c5ac6f
refactor(smt): preprocessing is now using a queue of delayed actions
- preprocessing doesn't simplify anymore, it assumes terms are already
  simplified. It only adds clauses/adds literals, it does not return
  new terms.
- adding clauses/literals to SAT is done as delayed actions, to avoid
  issues of reentrancy.
  These actions are performed after preprocessing, in a loop that has
  access to the SAT solver.
2022-02-04 16:08:01 -05:00
Simon Cruanes
a98132ed0c
feat(model): add theory hooks to "complete" models
these hooks are allowed to add terms to the model, that are not in the
congruence closure (for example in LRA, terms that were preprocessed
away).
2022-02-03 14:00:43 -05:00
Simon Cruanes
63f50d03fa
feat: proper proof production for theory merges in CC
this involves resolution steps between the lemma (typically a kind of
horn clause with the merge as conclusion) and a bunch of literals
responsible for some equational hypotheses of this horn clause, being true
2021-12-29 15:56:54 -05:00
Simon Cruanes
44c63d4c13
debug 2021-12-17 16:40:52 -05:00
Simon Cruanes
f9f471ce12
details 2021-12-17 13:46:48 -05:00
Simon Cruanes
2d24a21908
fix: do not preprocess but add equations eagerly for single-cstor terms 2021-12-17 11:58:39 -05:00
Simon Cruanes
6d72203437
fix: avoid preprocessing loops 2021-12-17 11:48:41 -05:00
Simon Cruanes
0841bddbaf
feat(data): preprocessing step for single-cstor types
if t:ty where ty has exactly one constructor `c`, we replace
t at preprocessing by `c(sel-c-0(t), … sel-c-n(t))`
2021-12-17 11:39:25 -05:00
Simon Cruanes
63eeb81290
refactor: modify interface of Th_data 2021-12-17 11:39:22 -05:00
Simon Cruanes
fd1d068997
proof stubs and sat proof 2021-10-12 22:13:28 -04:00
Simon Cruanes
af901f54b1
proof production for th-data 2021-10-11 19:57:25 -04:00
Simon Cruanes
1779b7115a
wip: proof production (incl. better tracking of proofs in CC) 2021-10-11 14:27:14 -04:00
Simon Cruanes
73b39fe075
fix more warnings 2021-08-27 21:34:26 -04:00
Simon Cruanes
e93e084eac
refactor: eager proofs; stronger preprocessing
proofs are now directly emitted (almost) everywhere, which simplifies
a lot of things. preprocessing is more recursive (a bit too much
really).
2021-08-22 01:13:41 -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
2f353cfd94 add stat to count number of acyclicity conflicts in datatypes 2021-07-04 18:02:48 -04:00
Simon Cruanes
6578ea9136 move form to sidekick_base; rename {Term,Ty}.state into store 2021-07-03 22:48:44 -04:00
Simon Cruanes
22d6786c40 refactor(proof): more and better constructs; compile again 2021-06-11 21:51:15 -04:00
Simon Cruanes
ff7a87f3fb wip: feat(proof): insert proof constructs in most of sidekick 2021-06-11 21:50:25 -04:00
Simon Cruanes
fbc3ec7ed6 more docs 2021-06-11 19:01:31 -04:00
Simon Cruanes
dcbc4d4a59 more doc 2021-06-11 18:59:26 -04:00
Simon Cruanes
7b2b11486f dbg 2021-05-03 10:36:04 -04:00
Simon Cruanes
8558719cc8 remove debug 2021-03-29 13:30:13 -04:00
Simon Cruanes
8aa851608a fix(data): use a cstor equality rather than is-a for model completion 2021-03-29 13:30:13 -04:00
Simon Cruanes
111fe8c1b9 wip 2021-03-29 13:30:13 -04:00
Simon Cruanes
65fda4de41 feat(th-data): completion of models by picking a base-cstor 2021-03-29 13:30:13 -04:00