3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 18:31:49 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-11-28 11:25:36 -08:00
parent 17f04099a5
commit 05c5f72ca1

View file

@ -282,18 +282,21 @@ namespace smt {
m_var2val.reset();
m_var2orig.reset();
m_assumption2orig.reset();
bool pushed = false;
struct scoped_level {
context& c;
unsigned lvl;
scoped_level(context& c):
c(c), lvl(c.get_scope_level()) {}
bool& pushed;
scoped_level(context& c, bool& pushed):
c(c), pushed(pushed), lvl(c.get_scope_level()) {}
~scoped_level() {
if (c.get_scope_level() > lvl)
c.pop_scope(c.get_scope_level() - lvl);
if (c.get_scope_level() > lvl + pushed)
c.pop_scope(c.get_scope_level() - lvl - pushed);
if (pushed)
c.pop(1);
}
};
scoped_level _lvl(*this);
bool pushed = false;
scoped_level _lvl(*this, pushed);
for (expr* v : vars0) {
if (is_uninterp_const(v)) {
@ -328,6 +331,7 @@ namespace smt {
}
lbool is_sat = check(assumptions.size(), assumptions.c_ptr());
if (is_sat != l_true) {
TRACE("context", tout << is_sat << "\n";);
return is_sat;