Commit graph

174 commits

Author SHA1 Message Date
Simon Cruanes
6694ce856b
fix sat for new event 2022-07-21 23:21:01 -04:00
Simon Cruanes
e1a4ce587f
fix sudoku solver 2022-07-20 20:13:16 -04:00
Simon Cruanes
f3f0628261
large refactor with signature splitting, events, etc. 2022-07-18 23:20:07 -04:00
Simon Cruanes
679b35012b
SAT: remove clause pools 2022-07-15 21:12:04 -04:00
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
cfede762c9
feat(sat): provide a proof_dumm module 2021-12-07 14:08:16 -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