mirror of
https://github.com/Z3Prover/z3
synced 2025-11-22 13:41:27 +00:00
fix crash
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
711572e73c
commit
e9905c05b1
1 changed files with 8 additions and 6 deletions
|
|
@ -770,7 +770,7 @@ br_status arith_rewriter::mk_le_ge_eq_core(expr * arg1, expr * arg2, op_kind kin
|
||||||
return BR_REWRITE3;
|
return BR_REWRITE3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_util.is_idiv(arg1, t, e) && is_numeral(e, a1) && a1 > 0) {
|
|
||||||
|
|
||||||
if ((m_arith_lhs || m_arith_ineq_lhs) && is_numeral(arg2, a2) && is_neg_poly(arg1, new_arg1)) {
|
if ((m_arith_lhs || m_arith_ineq_lhs) && is_numeral(arg2, a2) && is_neg_poly(arg1, new_arg1)) {
|
||||||
a2.neg();
|
a2.neg();
|
||||||
|
|
@ -783,11 +783,13 @@ br_status arith_rewriter::mk_le_ge_eq_core(expr * arg1, expr * arg2, op_kind kin
|
||||||
}
|
}
|
||||||
else if (st == BR_DONE && arg1 == orig_arg1 && arg2 == orig_arg2) {
|
else if (st == BR_DONE && arg1 == orig_arg1 && arg2 == orig_arg2) {
|
||||||
// e > 0 => t div e ~ arg2 <=> e * (t div e) ~ e * arg2 <=> t - mod t e ~ e * arg2
|
// e > 0 => t div e ~ arg2 <=> e * (t div e) ~ e * arg2 <=> t - mod t e ~ e * arg2
|
||||||
if (is_numeral(arg2, a2) && a2 == 0 && (kind == LE || kind == GE)) {
|
if (m_util.is_idiv(arg1, t, e) && is_numeral(e, a1) && a1 > 0) {
|
||||||
switch (kind) {
|
if (is_numeral(arg2, a2) && a2 == 0 && (kind == LE || kind == GE)) {
|
||||||
case LE: result = m_util.mk_le(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
switch (kind) {
|
||||||
case GE: result = m_util.mk_ge(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
case LE: result = m_util.mk_le(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
||||||
case EQ: result = m.mk_eq(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
case GE: result = m_util.mk_ge(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
||||||
|
case EQ: result = m.mk_eq(result, m_util.mk_mul(e, arg2)); return BR_REWRITE3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Nothing new; return BR_FAILED to avoid rewriting loops.
|
// Nothing new; return BR_FAILED to avoid rewriting loops.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue