Commit graph

1769 commits

Author SHA1 Message Date
Simon Cruanes
f7195bf980
feat(smt): ability for a theory to declare we're in incomplete fragment 2022-01-11 14:00:04 -05:00
Simon Cruanes
af8ab338e6
feat(smt): add a registry to share values between theories 2022-01-11 14:00:04 -05:00
Simon Cruanes
849d4319f2
fix theory combination for LRA 2022-01-11 14:00:04 -05:00
Simon Cruanes
eb97161992
better debug 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
671fa6515a
fix missing conversions 2022-01-11 14:00:04 -05:00
Simon Cruanes
3477f39b73
fix handling of numeral constants 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
02a9abde3e
feat: add Q.is_int 2022-01-11 14:00:03 -05:00
Simon Cruanes
2bce3e6dd9
refactor(LRA): custom iterators in simplex, makes code more readable 2022-01-11 14:00:03 -05:00
Simon Cruanes
2d9f17b5b1
fix(sat): use a set of delayed actions
this prevents some bad interactions caused by mixing propagations
(which can backjump) and iterating on the trail from a theory.
2022-01-11 14:00:03 -05:00
Simon Cruanes
8b263d4d46
fix(sat): when theory-propagating a literal below current level, backtrack
it can be triggered by local clause addition (in DT for example), which
is hard to avoid.
2022-01-11 14:00:03 -05:00
Simon Cruanes
1ffe778951
feat(solver): eager checking of proofs for theory propagation
bugs where a literal is propagated "too late" (at current level)
when the cause stems from previous levels, thus leading to invalid
clause learning (non UIP clauses) since some literals are not resolved
away as they're "too low", are hard to debug.
so we just check that propagation level coincides with current level.
2022-01-11 14:00:03 -05:00
Simon Cruanes
a33029129e
fix(CC): bug introduced by sharing mutable lazy state 2022-01-10 12:11:32 -05:00
Simon Cruanes
78df8252dc
bugfix in CC explanations 2022-01-05 10:31:33 -05:00
Simon Cruanes
0afdb06f6c
Merge branch 'wip-datatype-proofs' 2022-01-04 09:46:10 -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
88f57d213a
rename stat 2022-01-03 17:13:55 -05:00
Simon Cruanes
dbba6719bc
fix compilation after rebase 2022-01-03 17:13:55 -05:00
Simon Cruanes
9d3da47f3b
fix: missing implied bound update 2022-01-03 17:13:55 -05:00
Simon Cruanes
73c9878554
wip: feat(lra): clarify construction of bounds; fix sign error 2022-01-03 17:13:55 -05:00
Simon Cruanes
721c01d12c
feat(lra): make Erat.{plus,minus}_inf saturating 2022-01-03 17:13:54 -05:00
Simon Cruanes
34b1aa1799
wip: feat(lra): propagate literals based on implied bounds for basic vars 2022-01-03 17:13:54 -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
80cb096e8a
feat: change signature of explanations for CC theory merges 2021-12-28 23:07:27 -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
8958301a8e
fix: update quip CLI arguments 2021-12-28 10:57:30 -05:00
Simon Cruanes
b2e8f8b29d
chore: disable CI on windows temporarily 2021-12-21 11:31:53 -05:00
Simon Cruanes
584b56075f
feat: add push/pop for assumptions; add check_sat_propagation_only
this gives the user the possibility of controlling search by mostly
using assumptions (and the underlying assumption stack) as well as
boolean+theory propagation. The result is **not** complete, but can
still help as a beefed-up contextual simplifier.
2021-12-20 15:34:34 -05:00
Simon Cruanes
5d2f8a1d3d
feat(api): add callbacks to measure progress or ask solver to stop 2021-12-20 13:51:59 -05:00
Simon Cruanes
c03fc97f00
better debug in CC 2021-12-17 16:41:00 -05:00
Simon Cruanes
be2d57a717
feat(cc): add an invariant check before returning a model 2021-12-17 16:41:00 -05:00
Simon Cruanes
b19d80e443
debug 2021-12-17 16:40:59 -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
46b13d08d0
add regression test 2021-12-17 13:21:30 -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
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
3ab1ddfea8
fix: ensure all functions in SMT solver preprocess their literals 2021-12-16 13:49:43 -05:00
Simon Cruanes
4ac2eb25a6
use TEF in sudoku; improve a bit its ergonomics 2021-12-07 21:29:51 -05:00
Simon Cruanes
e64013c660
chore: upgrade bare autogen-code 2021-12-07 21:16:25 -05:00
Simon Cruanes
110f3f8527
update benchpress file to actually run proofs 2021-12-07 21:16:12 -05:00
Simon Cruanes
2d8fc78bc4
add expect test for the sudoku solver 2021-12-07 14:39:21 -05:00
Simon Cruanes
72d121fa64
add example: the suduko solver, adapted from msat 2021-12-07 14:10:36 -05:00
Simon Cruanes
cfede762c9
feat(sat): provide a proof_dumm module 2021-12-07 14:08:16 -05:00
Simon Cruanes
9517e88467
feat(util): add backtrackable ref 2021-12-07 14:08:06 -05:00
Simon Cruanes
a614fdb2e1
update benchpress file 2021-12-07 10:16:09 -05:00