3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00
This commit is contained in:
Nikolaj Bjorner 2022-01-16 09:31:16 -08:00
parent bc9c6ad93d
commit cd56d55e34
3 changed files with 19 additions and 11 deletions

View file

@ -230,13 +230,17 @@ namespace q {
if (!n)
return nullptr;
for (unsigned i = args.size(); i-- > 0; ) {
if (args[i] != n->get_arg(i)) {
// roots could be different when using commutativity
// instead of compensating for this, we just bail out
if (args[i]->get_root() != n->get_arg(i)->get_root())
return nullptr;
evidence.push_back(euf::enode_pair(args[i], n->get_arg(i)));
}
euf::enode* a = args[i], *b = n->get_arg(i);
if (a == b)
continue;
// roots could be different when using commutativity
// instead of compensating for this, we just bail out
if (a->get_root() != b->get_root())
return nullptr;
TRACE("q", tout << "evidence " << ctx.bpp(a) << " " << ctx.bpp(b) << "\n");
evidence.push_back(euf::enode_pair(a, b));
}
m_indirect_nodes.push_back(n);
m_eval.setx(t->get_id(), n, nullptr);

View file

@ -553,8 +553,8 @@ namespace q {
void unmark(unsigned head) {
for (unsigned i = m_candidates.size(); i-- > head; ) {
enode* app = m_candidates[i];
if (app->is_marked2())
app->unmark2();
if (app->is_marked3())
app->unmark3();
}
}
@ -2022,9 +2022,9 @@ namespace q {
code_tree::scoped_unmark _unmark(t);
while ((app = t->next_candidate()) && !ctx.resource_limits_exceeded()) {
TRACE("trigger_bug", tout << "candidate\n" << ctx.bpp(app) << "\n";);
if (!app->is_marked2() && app->is_cgr()) {
if (!app->is_marked3() && app->is_cgr()) {
execute_core(t, app);
app->mark2();
app->mark3();
}
}
}