3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 20:38:43 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-31 20:53:10 -07:00
parent fe267803d1
commit ddc77b1100
2 changed files with 17 additions and 4 deletions

View file

@ -31,7 +31,9 @@ namespace sat {
for (unsigned i = 0; i < m_assumptions.size(); ++i) {
add_clause(1, m_assumptions.c_ptr() + i);
}
if (m_is_unsat)
return;
// add sentinel variable.
m_vars.push_back(var_info());
@ -334,7 +336,12 @@ namespace sat {
void local_search::add_unit(literal lit, literal exp) {
bool_var v = lit.var();
if (is_unit(lit)) return;
if (is_unit(lit)) {
if (m_vars[v].m_value == lit.sign()) {
m_is_unsat = true;
}
return;
}
SASSERT(!m_units.contains(v));
if (m_vars[v].m_value == lit.sign() && !m_initializing) {
flip_walksat(v);
@ -575,8 +582,11 @@ namespace sat {
m_assumptions.append(sz, assumptions);
unsigned num_units = m_units.size();
init();
if (m_is_unsat)
return l_false;
walksat();
TRACE("sat", tout << m_units << "\n";);
// remove unit clauses
for (unsigned i = m_units.size(); i-- > num_units; ) {
m_vars[m_units[i]].m_unit = false;

View file

@ -1282,7 +1282,10 @@ namespace sat {
struct scoped_ls {
solver& s;
scoped_ls(solver& s): s(s) {}
~scoped_ls() { dealloc(s.m_local_search); s.m_local_search = nullptr; }
~scoped_ls() {
dealloc(s.m_local_search);
s.m_local_search = nullptr;
}
};
scoped_ls _ls(*this);
if (inconsistent()) return l_false;