3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 12:28:44 +00:00

reset backtrack level after first backtrack

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-11-08 22:14:59 -08:00
parent 75b8d10f48
commit bc8681a0ea
2 changed files with 4 additions and 4 deletions

View file

@ -5988,6 +5988,7 @@ class Solver(Z3PPObject):
def __init__(self, solver=None, ctx=None):
assert solver is None or ctx is not None
self.ctx = _get_ctx(ctx)
self.backtrack_level = 4000000000
self.solver = None
if solver is None:
self.solver = Z3_mk_solver(self.ctx.ref())
@ -6283,11 +6284,10 @@ class Solver(Z3PPObject):
consequences = [ consequences[i] for i in range(sz) ]
return CheckSatResult(r), consequences
def cube(self, level_ref):
def cube(self):
"""Get set of cubes"""
while True:
backtrack_level = level_ref.backtrack_level
r = _to_expr_ref(Z3_solver_cube(self.ctx.ref(), self.solver, backtrack_level), self.ctx)
r = _to_expr_ref(Z3_solver_cube(self.ctx.ref(), self.solver, self.backtrack_level), self.ctx)
if (is_false(r)):
return
if (is_true(r)):

View file

@ -2012,8 +2012,8 @@ namespace sat {
set_conflict();
backtrack(m_cube_state.m_cube, m_cube_state.m_is_decision);
}
backtrack_level = UINT_MAX;
}
backtrack_level = UINT_MAX;
depth = m_cube_state.m_cube.size();
if ((m_config.m_cube_cutoff != 0 && depth == m_config.m_cube_cutoff) ||
(m_config.m_cube_cutoff == 0 && m_freevars.size() < m_cube_state.m_freevars_threshold)) {