Simon Cruanes
d741b4160d
remove is_valid_literal concept
2022-09-01 22:33:40 -04:00
Simon Cruanes
0797ff0409
tiny helper
2022-09-01 22:32:24 -04:00
Simon Cruanes
1ce1bd31b9
theory for uninterpreted types
2022-09-01 22:31:37 -04:00
Simon Cruanes
80b08e03cb
feat(const): add opaque_to_cc property, to control CC
2022-08-31 00:41:42 -04:00
Simon Cruanes
83a4ae46c1
fix: use standard = even for LRA terms
...
the LRA_view is only useful for views, but we build =/neq using builtin
=
2022-08-28 00:22:51 -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
137183f2fe
small fixes, warnings
2022-08-27 20:44:13 -04:00
Simon Cruanes
e3aa43f817
cleanup
2022-08-27 20:39:06 -04:00
Simon Cruanes
90f100d9b1
helpers to build terms and solvers
2022-08-27 20:24:28 -04:00
Simon Cruanes
f0041f9dae
feat: reinstate LRA theory and terms
2022-08-26 22:17:02 -04:00
Simon Cruanes
e03e5e77a9
add LRA_term to base
2022-08-25 23:03:12 -04:00
Simon Cruanes
28173c1852
feat(term): replace E_app_uncurried with E_app_fold
2022-08-25 20:50:56 -04:00
Simon Cruanes
279ceade78
feat(base): in Form, use uncurried forms for and/or
2022-08-22 22:12:27 -04:00
Simon Cruanes
57941a952a
add th-bool-dyn for dynamic boolean clausification
2022-08-16 21:30:17 -04:00
Simon Cruanes
6c14690fba
cleanup code
2022-08-16 21:27:46 -04:00
Simon Cruanes
e233c846ec
refactor: cleanup config a bit
2022-08-16 21:27:32 -04:00
Simon Cruanes
85314379a5
fix type of is_a
2022-08-12 23:21:56 -04:00
Simon Cruanes
85eef2d117
feat(base/data): fix types for cstor/select term builders
2022-08-12 23:17:20 -04:00
Simon Cruanes
b73c1bf464
feat(bool): use binary symbols for boolean operators
...
this helps in simplifying only fully applied boolean operators, and
avoiding simplifying the binary function `(or)` to `(false)`
2022-08-10 22:41:53 -04:00
Simon Cruanes
1f79ee05f2
wip: make Base really usable, add th-data/th-bool
2022-08-10 22:08:43 -04:00
Simon Cruanes
95dcb0ae74
wip: refactor further
2022-08-09 22:41:13 -04:00
Simon Cruanes
7d59846d72
wip: refactor base
2022-08-08 21:52:39 -04:00
Simon Cruanes
5b6fd14dcf
wip: refactor(base): split into several views, all based on Const
2022-08-07 22:41:26 -04:00
Simon Cruanes
24e79df776
wip: refactor base
2022-08-05 21:56:17 -04:00
Simon Cruanes
6dca63b0ea
renamings
2022-07-18 23:27:12 -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
5a559bec92
remove veci32
2022-07-15 20:32:06 -04:00
Simon Cruanes
a1bc186d2e
use ocamlformat
2022-07-14 22:09:13 -04:00
Simon Cruanes
e2b9b2874c
fix more warnings; remove never completed LIA stuff
2022-07-14 22:01:23 -04:00
Simon Cruanes
b16fce6f26
Merge branch 'master' into wip-model-th-comb
2022-07-14 21:46:36 -04:00
Simon Cruanes
e177534a46
chore: ugprade bare encoding
2022-02-16 14:20:27 -05:00
Simon Cruanes
c22fc62f3e
base: remove simplex cases in arith terms
2022-02-08 13:14:07 -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
3fdb07b533
feat: handle get-model/get-value from smtlib inputs
2022-02-02 15:51:44 -05:00
Simon Cruanes
70206101f0
feat: update bare
2022-02-01 22:10:31 -05:00
Simon Cruanes
3c41ab2484
refactor: new term representation for LIA/LRA
2022-01-31 15:13:25 -05:00
Simon Cruanes
4b2afd7a05
wip: LIA theory
2022-01-13 12:55:36 -05:00
Simon Cruanes
8410a57f1a
wip: feat(LIA): LIA solver, will rely on LRA solver
...
we want to reuse the simplex, but do branch and bound + cutting planes
2022-01-11 14:00:04 -05:00
Simon Cruanes
2378fc37ac
fix LIA->LRA cast operation
2022-01-11 14:00:04 -05:00
Simon Cruanes
691ff12a01
wip: support LIA in input AST and base terms
2022-01-11 14:00:03 -05:00
Simon Cruanes
b6df2cd974
clause-less steps in proofs
...
these steps are checked only once, to accelerate checking, but the
result isn't known.
2022-01-03 22:59: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
be1c1573b1
feat(proof): emit is-a terms properly
...
these occur in datatypes proofs.
2021-12-28 16:46:59 -05:00
Simon Cruanes
3b409c8944
feat(proof): add proof_r1 as a pendant to proof_p1 for non-equations
2021-12-17 11:38:07 -05:00
Simon Cruanes
e9b395b643
feat(proof): do not emit trivial clause_rw steps
...
if there is no rewriting going on, we can skip the step.
2021-11-28 16:33:57 -05:00
Simon Cruanes
aad1daa4e4
feat(quip): remove lit and not-normalization from quip
2021-11-28 13:36:19 -05:00
Simon Cruanes
c5c5426ead
quip: include all term definitions in proof
...
dependency analysis will not catch these, so we include them
unconditionally
2021-11-19 23:25:21 -05:00
Simon Cruanes
7d70994758
fix(proof): add neg-normalization
2021-11-14 22:50:05 -05:00
Simon Cruanes
ffa450ba08
proof: normalize clauses in rw
2021-11-10 18:30:12 -05:00