Simon Cruanes
801d0b3e45
warnings
2022-07-15 20:32:58 -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
fd500a3d7d
fix some warnings
2022-07-14 21:56:37 -04:00
Simon Cruanes
d153c80ca5
details
2022-02-18 14:59:27 -05:00
Simon Cruanes
c0288902c0
feat: check on_progress in more places
2022-02-16 13:24:43 -05:00
Simon Cruanes
803b40bccf
refactor(sat): cleaner store for delayed actions
...
handles clauses to add, propagations, and decisions. The latter ones are
cleared on backtrack (but not clauses).
2022-01-11 16:50:59 -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
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
f909e6bc9e
fix proof production wrt conflict minimization
2021-11-28 18:10:15 -05:00
Simon Cruanes
1bf05d51ce
fix(proof): emit proper result for RUP steps
2021-11-28 16:35:04 -05:00
Simon Cruanes
15e16a515d
refactor(sat): improve code
2021-11-28 16:34:43 -05:00
Simon Cruanes
0233801b95
more debug messages
2021-11-28 11:28:55 -05:00
Simon Cruanes
2e4fd5e1c1
update conflict resolution for better proofs, improve code
2021-11-27 15:30:45 -05:00
Simon Cruanes
38d90b250a
refactor sat solver
2021-11-19 23:25:09 -05:00
Simon Cruanes
7b15ea7280
refactor(sat): fix proof construction at level 0; improve preprocessing
2021-11-19 22:35:48 -05:00
Simon Cruanes
1f9c43afa8
fix(sat): generate proof in partition for eliminated level-0 lits
2021-11-14 23:08:02 -05:00
Simon Cruanes
69ee322c45
remove dead code
2021-11-14 22:53:34 -05:00
Simon Cruanes
5d18086e53
fix(sat): resolution at level 0 is not recursive
...
recursion is implicit in the structure of the proof of the clause
that is unit at level 0, and thus responsible for propagating the
level-0 atom in the first place.
2021-11-14 22:50:12 -05:00
Simon Cruanes
f500704905
fix(sat): level-0 resolution needs to be recursive
2021-11-10 13:20:00 -05:00
Simon Cruanes
0abe4b7020
wip: decode more proof steps to quip
2021-10-27 21:50:28 -04:00
Simon Cruanes
992b93abcf
fix(sat): clause in a unsat result must not contain 0-level literals
2021-10-27 20:19:01 -04:00
Simon Cruanes
597a6c378e
wip: split VecI32 and VecSmallInt
...
- use VecSmallInt for small integers of type `int`
- use VecI32 to store actual int32 (in particular for proof steps)
2021-10-16 20:31:56 -04:00
Simon Cruanes
fd1d068997
proof stubs and sat proof
2021-10-12 22:13:28 -04:00
Simon Cruanes
d3537f2c3f
wip: refactor proof
2021-10-07 20:49:39 -04:00
Simon Cruanes
bbb995b0d5
refactor some names related to proofs; wip add unit paramod
2021-10-03 20:32:37 -04:00
Simon Cruanes
df40b5a5c1
wip: refactor(sat): generate detailed proofs again
...
because proofs now require hypotheses but not in a resolution order, we
can still do conflict minimization.
2021-09-29 22:18:36 -04:00
Simon Cruanes
bbe366989c
perf(sat): use Atom.Vec for temporary atom array
2021-09-27 19:28:45 -04:00
Simon Cruanes
c9e257d40b
cleanup
2021-09-27 12:14:04 -04:00
Simon Cruanes
5bed2d1c5f
detail
2021-09-26 23:56:40 -04:00
Simon Cruanes
a22bfe06c1
remove debug msgs
2021-08-31 23:19:06 -04:00
Simon Cruanes
debd8bcaf8
fix warning
2021-08-31 23:06:48 -04:00
Simon Cruanes
350a23d99e
feat: minimize conflicts
...
similar to minisat's level 2 of minimization.
2021-08-31 23:04:32 -04:00
Simon Cruanes
5080195c5b
feat: conflict minimization à la minisat
2021-08-31 22:59:38 -04:00
Simon Cruanes
521340a23f
feat: first full implem of clause pools
2021-08-31 22:56:42 -04:00
Simon Cruanes
10dca21f59
refactor: remove history in conflict resolution; remove simpls
...
no need to simplify reasons anymore, we rely on DRUP for that.
2021-08-31 22:56:11 -04:00
Simon Cruanes
f86498b386
feat: make it compile
2021-08-31 18:59:44 -04:00
Simon Cruanes
16bb65ebfa
wip: clause pools
2021-08-31 09:30:28 -04:00
Simon Cruanes
4a2367b1bd
refactor: use Atom.Vec (a VecI32) for atom vectors
2021-08-31 09:30:05 -04:00
Simon Cruanes
1877c00c02
wip: clauses pools
2021-08-30 09:32:32 -04:00
Simon Cruanes
73b39fe075
fix more warnings
2021-08-27 21:34:26 -04:00
Simon Cruanes
782afa4415
feat: move Int_id into its own module
2021-08-25 23:52:08 -04:00
Simon Cruanes
bb682b8080
fix(sat): emit proofs where needed
2021-08-23 00:08:09 -04:00
Simon Cruanes
baecce0946
feat: use Stat in SAT solver
2021-08-22 01:56:54 -04:00
Simon Cruanes
672f828c82
perf: return to default-pol=true
...
previous commit fixed sign error (move from `negated` to `same_sign`
so restore good behavior
2021-08-22 01:44:37 -04:00