mirror of
https://github.com/Z3Prover/z3
synced 2025-05-13 18:54:43 +00:00
fix drat checker
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
6b4aec9b74
commit
8b4f3ac6f0
16 changed files with 201 additions and 166 deletions
|
@ -117,7 +117,9 @@ namespace sat {
|
|||
break; // clause was satisfied
|
||||
if (val == l_false)
|
||||
continue; // skip
|
||||
c[j] = l;
|
||||
if (i != j) {
|
||||
std::swap(c[i], c[j]);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
if (i < sz) {
|
||||
|
@ -136,16 +138,7 @@ namespace sat {
|
|||
return;
|
||||
}
|
||||
TRACE("elim_eqs", tout << "after removing duplicates: " << c << " j: " << j << "\n";);
|
||||
if (j < sz)
|
||||
c.shrink(j);
|
||||
else
|
||||
c.update_approx();
|
||||
SASSERT(c.size() == j);
|
||||
DEBUG_CODE({
|
||||
for (unsigned i = 0; i < c.size(); i++) {
|
||||
SASSERT(c[i] == norm(roots, c[i]));
|
||||
}
|
||||
});
|
||||
|
||||
SASSERT(j >= 1);
|
||||
switch (j) {
|
||||
case 1:
|
||||
|
@ -160,8 +153,22 @@ namespace sat {
|
|||
SASSERT(*it == &c);
|
||||
*it2 = *it;
|
||||
it2++;
|
||||
if (!c.frozen())
|
||||
if (j < sz) {
|
||||
if (m_solver.m_config.m_drat) m_solver.m_drat.del(c);
|
||||
c.shrink(j);
|
||||
if (m_solver.m_config.m_drat) m_solver.m_drat.add(c, true);
|
||||
}
|
||||
else
|
||||
c.update_approx();
|
||||
|
||||
DEBUG_CODE({
|
||||
for (unsigned i = 0; i < sz; i++) {
|
||||
SASSERT(c[i] == norm(roots, c[i]));
|
||||
} });
|
||||
|
||||
if (!c.frozen()) {
|
||||
m_solver.attach_clause(c);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue