diff --git a/src/sat/sat_solver.cpp b/src/sat/sat_solver.cpp index 9a1cde486..8f3704d59 100644 --- a/src/sat/sat_solver.cpp +++ b/src/sat/sat_solver.cpp @@ -3681,7 +3681,7 @@ namespace sat { SASSERT(num_scopes <= scope_lvl()); unsigned new_lvl = scope_lvl() - num_scopes; scope & s = m_scopes[new_lvl]; - m_inconsistent = false; + m_inconsistent = false; // TBD: use model seems to make this redundant: s.m_inconsistent; unassign_vars(s.m_trail_lim, new_lvl); m_scope_lvl -= num_scopes; m_scopes.shrink(new_lvl); @@ -3766,6 +3766,7 @@ namespace sat { // void solver::user_push() { + pop_to_base_level(); literal lit; bool_var new_v = mk_var(true, false); lit = literal(new_v, false); diff --git a/src/sat/sat_solver/inc_sat_solver.cpp b/src/sat/sat_solver/inc_sat_solver.cpp index d07a406ba..ea3f3534b 100644 --- a/src/sat/sat_solver/inc_sat_solver.cpp +++ b/src/sat/sat_solver/inc_sat_solver.cpp @@ -572,6 +572,10 @@ public: private: lbool internalize_goal(goal_ref& g, dep2asm_t& dep2asm, bool is_lemma) { + m_solver.pop_to_base_level(); + if (m_solver.inconsistent()) + return l_false; + m_pc.reset(); m_subgoals.reset(); init_preprocess();