3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-06 06:03:23 +00:00

Fix bug exposed in #281

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2015-11-02 14:18:49 -08:00
parent f78c769b3b
commit 2efd5bf9d1

View file

@ -1346,7 +1346,7 @@ namespace smt {
empty_column || empty_column ||
(unbounded_gain(max_gain) == (x_i == null_theory_var))); (unbounded_gain(max_gain) == (x_i == null_theory_var)));
return !empty_column && safe_gain(min_gain, max_gain); return safe_gain(min_gain, max_gain);
} }
template<typename Ext> template<typename Ext>
@ -1557,14 +1557,12 @@ namespace smt {
// variable cannot be used for max/min. // variable cannot be used for max/min.
continue; continue;
} }
bool picked_var = pick_var_to_leave(curr_x_j, curr_inc, curr_a_ij, bool safe_to_leave = pick_var_to_leave(curr_x_j, curr_inc, curr_a_ij,
curr_min_gain, curr_max_gain, curr_min_gain, curr_max_gain,
has_shared, curr_x_i); has_shared, curr_x_i);
SASSERT(!picked_var || safe_gain(curr_min_gain, curr_max_gain));
if (!safe_gain(curr_min_gain, curr_max_gain)) { if (!safe_to_leave) {
TRACE("opt", tout << "no variable picked\n";); TRACE("opt", tout << "no variable picked\n";);
has_bound = true; has_bound = true;
best_efforts++; best_efforts++;