3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +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

@ -4194,7 +4194,7 @@ namespace sat {
unsigned_vector ps;
for (literal lit : _lits)
ps.push_back(lit.index());
mc.cliques(ps, _mutexes);
mc.cliques2(ps, _mutexes);
vector<vector<literal_vector>> sorted;
for (auto const& mux : _mutexes) {
literal_vector clique;

View file

@ -390,7 +390,7 @@ public:
}
}
expr_ref_vector get_trail() override {
expr_ref_vector get_trail(unsigned max_level) override {
expr_ref_vector result(m);
unsigned sz = m_solver.trail_size();
expr_ref_vector lit2expr(m);
@ -398,7 +398,11 @@ public:
m_map.mk_inv(lit2expr);
for (unsigned i = 0; i < sz; ++i) {
sat::literal lit = m_solver.trail_literal(i);
result.push_back(lit2expr[lit.index()].get());
if (m_solver.lvl(lit) > max_level)
continue;
expr_ref e(lit2expr.get(lit.index()), m);
if (e)
result.push_back(e);
}
return result;
}

View file

@ -41,12 +41,12 @@ void atom2bool_var::mk_var_inv(expr_ref_vector & var2expr) const {
sat::bool_var atom2bool_var::to_bool_var(expr * n) const {
unsigned idx = m_id2map.get(n->get_id(), UINT_MAX);
if (idx == UINT_MAX) {
if (idx == UINT_MAX)
return sat::null_bool_var;
}
else {
else if (idx >= m_mapping.size())
return sat::null_bool_var;
else
return m_mapping[idx].m_value;
}
}
struct collect_boolean_interface_proc {