3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-11 10:18:06 +00:00

fix user push/pop with ba constraints

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-11-22 12:40:23 -08:00
parent aeb4d1864d
commit ec36a9c495
6 changed files with 59 additions and 38 deletions

View file

@ -3274,17 +3274,19 @@ namespace sat {
}
void solver::gc_var(bool_var v) {
if (v > 0) {
bool_var w = max_var(m_learned, v-1);
w = max_var(m_clauses, w);
w = max_var(true, w);
w = max_var(false, w);
v = m_mc.max_var(w);
for (literal lit : m_trail) {
if (lit.var() > w) w = lit.var();
}
v = std::max(v, w + 1);
bool_var w = max_var(m_learned, v);
w = max_var(m_clauses, w);
w = max_var(true, w);
w = max_var(false, w);
v = m_mc.max_var(w);
for (literal lit : m_trail) {
w = std::max(w, lit.var());
}
if (m_ext) {
w = m_ext->max_var(w);
}
v = w + 1;
// v is an index of a variable that does not occur in solver state.
if (v < m_level.size()) {
for (bool_var i = v; i < m_level.size(); ++i) {