mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
disable match_non_max and match_non_zero
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e978b81c7a
commit
49a7f8446d
3 changed files with 12 additions and 4 deletions
|
@ -166,11 +166,11 @@ namespace polysat {
|
|||
_backtrack.released = true;
|
||||
|
||||
// v > q
|
||||
if (ok1 && !ok2 && match_non_zero(c, a1, b1, e1, c->to_ule().rhs(), fi))
|
||||
if (false && ok1 && !ok2 && match_non_zero(c, a1, b1, e1, c->to_ule().rhs(), fi))
|
||||
return true;
|
||||
|
||||
// p > v
|
||||
if (!ok1 && ok2 && match_non_max(c, c->to_ule().lhs(), a2, b2, e2, fi))
|
||||
if (false && !ok1 && ok2 && match_non_max(c, c->to_ule().lhs(), a2, b2, e2, fi))
|
||||
return true;
|
||||
|
||||
if (!ok1 || !ok2 || (a1.is_zero() && a2.is_zero())) {
|
||||
|
|
|
@ -69,7 +69,7 @@ namespace polysat {
|
|||
prop = true;
|
||||
if (try_transitivity(v, core, i))
|
||||
prop = true;
|
||||
if (try_factor_equality1(v, core, i))
|
||||
if (try_factor_equality2(v, core, i))
|
||||
prop = true;
|
||||
if (try_infer_equality(v, core, i))
|
||||
prop = true;
|
||||
|
|
|
@ -172,9 +172,17 @@ namespace polysat {
|
|||
|
||||
// NSB review:
|
||||
// the bounds added by x < p and p < x in forbidden_intervals
|
||||
// match_non_max
|
||||
// match_non_max, match_non_zero
|
||||
// use values that are approximations. Then the propagations in
|
||||
// try_assign_eval are incorrect.
|
||||
// For example, x > p means x has forbidden interval [0, p + 1[,
|
||||
// the numeric interval is [0, 1[, but p + 1 == 1 is not ensured
|
||||
// even p may have free variables.
|
||||
// the proper side condition on p + 1 is -1 > p or -2 >= p or p + 1 != 0
|
||||
// I am disabling match_non_max and match_non_zero from forbidden_interval
|
||||
// The narrowing rules in ule_constraint already handle the bounds propagaitons
|
||||
// as it propagates p != -1 and 0 != q (p < -1, q > 0),
|
||||
//
|
||||
|
||||
for (auto const& c : get_constraints(v)) {
|
||||
s.try_assign_eval(c);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue