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:
parent
aeb4d1864d
commit
ec36a9c495
6 changed files with 59 additions and 38 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue