mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
adding trail/levels
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e22c657811
commit
8d20310758
21 changed files with 199 additions and 7 deletions
|
@ -300,6 +300,7 @@ namespace sat {
|
|||
unsigned lvl(bool_var v) const { return m_level[v]; }
|
||||
unsigned lvl(literal l) const { return m_level[l.var()]; }
|
||||
unsigned init_trail_size() const { return at_base_lvl() ? m_trail.size() : m_scopes[0].m_trail_lim; }
|
||||
unsigned trail_size() const { return m_trail.size(); }
|
||||
literal trail_literal(unsigned i) const { return m_trail[i]; }
|
||||
literal scope_literal(unsigned n) const { return m_trail[m_scopes[n].m_trail_lim]; }
|
||||
void assign(literal l, justification j) {
|
||||
|
|
|
@ -318,6 +318,29 @@ public:
|
|||
r.reset();
|
||||
r.append(m_core.size(), m_core.c_ptr());
|
||||
}
|
||||
|
||||
void get_levels(ptr_vector<expr> const& vars, unsigned_vector& depth) override {
|
||||
unsigned sz = vars.size();
|
||||
depth.resize(sz);
|
||||
for (unsigned i = 0; i < sz; ++i) {
|
||||
auto bv = m_map.to_bool_var(vars[i]);
|
||||
depth = bv == sat::null_bool_var ? UINT_MAX : m_solver.lvl(bv);
|
||||
}
|
||||
}
|
||||
|
||||
expr_ref_vector get_trail() override {
|
||||
expr_ref_vector result(m);
|
||||
unsigned sz = m_solver.trail_size();
|
||||
expr_ref_vector lit2expr(m);
|
||||
lit2expr.resize(m_solver.num_vars() * 2);
|
||||
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());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
proof * get_proof() override {
|
||||
UNREACHABLE();
|
||||
return nullptr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue