mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 17:45:32 +00:00
restoring clause sizes after deletion
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3c96b51e97
commit
e623f1e9c9
2 changed files with 6 additions and 8 deletions
|
@ -1065,7 +1065,7 @@ namespace sat {
|
|||
|
||||
uint64_t ba_solver::get_coeff(literal lit) const {
|
||||
int64_t c1 = get_coeff(lit.var());
|
||||
SASSERT(c1 < 0 == lit.sign());
|
||||
SASSERT((c1 < 0) == lit.sign());
|
||||
int64_t c = std::abs(c1);
|
||||
m_overflow |= (c != c1);
|
||||
return static_cast<uint64_t>(c);
|
||||
|
|
|
@ -351,7 +351,8 @@ namespace sat {
|
|||
break;
|
||||
case 2:
|
||||
s.mk_bin_clause(c[0], c[1], c.is_learned());
|
||||
s.del_clause(c, false);
|
||||
c.restore(sz0);
|
||||
s.del_clause(c, true);
|
||||
break;
|
||||
default:
|
||||
*it2 = *it;
|
||||
|
@ -613,13 +614,9 @@ namespace sat {
|
|||
}
|
||||
}
|
||||
if (j < sz && !r) {
|
||||
if (s.m_config.m_drat) {
|
||||
m_dummy.set(c.size(), c.begin(), c.is_learned());
|
||||
}
|
||||
c.shrink(j);
|
||||
if (s.m_config.m_drat) {
|
||||
s.m_drat.add(c, true);
|
||||
s.m_drat.del(*m_dummy.get());
|
||||
}
|
||||
}
|
||||
return r;
|
||||
|
@ -692,6 +689,7 @@ namespace sat {
|
|||
clause_use_list & occurs = m_use_list.get(l);
|
||||
occurs.erase_not_removed(c);
|
||||
m_sub_counter -= occurs.size()/2;
|
||||
unsigned sz0 = c.size();
|
||||
if (cleanup_clause(c, true /* clause is in the use lists */)) {
|
||||
// clause was satisfied
|
||||
TRACE("elim_lit", tout << "clause was satisfied\n";);
|
||||
|
@ -707,12 +705,12 @@ namespace sat {
|
|||
TRACE("elim_lit", tout << "clause became unit: " << c[0] << "\n";);
|
||||
propagate_unit(c[0]);
|
||||
// propagate_unit will delete c.
|
||||
// remove_clause(c);
|
||||
break;
|
||||
case 2:
|
||||
TRACE("elim_lit", tout << "clause became binary: " << c[0] << " " << c[1] << "\n";);
|
||||
s.mk_bin_clause(c[0], c[1], c.is_learned());
|
||||
m_sub_bin_todo.push_back(bin_clause(c[0], c[1], c.is_learned()));
|
||||
m_sub_bin_todo.push_back(bin_clause(c[0], c[1], c.is_learned()));
|
||||
c.restore(sz0);
|
||||
remove_clause(c);
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue