3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-11 01:35:47 +00:00

improve pre-processing

This commit is contained in:
Nikolaj Bjorner 2022-04-15 12:55:17 +02:00
parent a634876180
commit 3cc9d7f443
22 changed files with 147 additions and 80 deletions

View file

@ -4612,9 +4612,15 @@ namespace smt {
}
}
expr_ref_vector context::get_trail() {
expr_ref_vector context::get_trail(unsigned max_level) {
expr_ref_vector result(get_manager());
get_assignments(result);
for (literal lit : m_assigned_literals) {
if (get_assign_level(lit) > max_level + m_base_lvl)
continue;
expr_ref e(m);
literal2expr(lit, e);
result.push_back(std::move(e));
}
return result;
}
@ -4622,15 +4628,10 @@ namespace smt {
expr_mark visited;
for (expr* fml : result)
visited.mark(fml);
for (literal lit : m_assigned_literals) {
if (get_assign_level(lit) > m_base_lvl)
break;
expr_ref e(m);
literal2expr(lit, e);
if (visited.is_marked(e))
continue;
result.push_back(std::move(e));
}
expr_ref_vector trail = get_trail(0);
for (expr* t : trail)
if (!visited.is_marked(t))
result.push_back(t);
}