3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-02 11:46:55 +00:00

integrate polysat into bv solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-01-26 20:20:45 +01:00
parent 3f5df04dc4
commit ff93c03972
14 changed files with 459 additions and 74 deletions

View file

@ -83,6 +83,12 @@ namespace polysat {
return l_undef;
}
lbool solver::unit_propagate() {
flet<uint64_t> _max_d(m_max_decisions, m_stats.m_num_decisions + 1);
return check_sat();
}
dd::pdd_manager& solver::sz2pdd(unsigned sz) const {
m_pdd.reserve(sz + 1);
if (!m_pdd[sz])
@ -164,7 +170,7 @@ namespace polysat {
}
void solver::assign_eh(signed_constraint c, unsigned dep) {
void solver::assign_eh(signed_constraint c, dep_t dep) {
SASSERT(at_base_level());
SASSERT(c);
if (is_conflict())
@ -195,6 +201,7 @@ namespace polysat {
m_linear_solver.new_constraint(*c.get());
#endif
}
bool solver::can_propagate() {
return m_qhead < m_search.size() && !is_conflict();
@ -592,7 +599,7 @@ namespace polysat {
SASSERT(!m_conflict.empty());
}
void solver::unsat_core(unsigned_vector& deps) {
void solver::unsat_core(svector<dep_t>& deps) {
deps.reset();
for (auto c : m_conflict) {
auto d = m_bvars.dep(c.blit());