mirror of
https://github.com/Z3Prover/z3
synced 2025-06-05 21:53:23 +00:00
fix bug
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
0b8177c7d6
commit
b2bc51e9ac
1 changed files with 21 additions and 15 deletions
|
@ -556,23 +556,29 @@ expr_ref arith_rewriter::remove_factor(expr* s, expr* t) {
|
||||||
return expr_ref(m_util.mk_mul(r.size(), r.data()), m);
|
return expr_ref(m_util.mk_mul(r.size(), r.data()), m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
expr_ref_vector sum(m);
|
if (m_util.is_add(t)) {
|
||||||
sum.push_back(t);
|
expr_ref_vector sum(m);
|
||||||
for (unsigned i = 0; i < sum.size(); ++i) {
|
sum.push_back(t);
|
||||||
expr* arg = sum.get(i);
|
for (unsigned i = 0; i < sum.size(); ++i) {
|
||||||
if (m_util.is_add(arg)) {
|
expr* arg = sum.get(i);
|
||||||
sum.append(to_app(arg)->get_num_args(), to_app(arg)->get_args());
|
if (m_util.is_add(arg)) {
|
||||||
sum[i] = sum.back();
|
sum.append(to_app(arg)->get_num_args(), to_app(arg)->get_args());
|
||||||
sum.pop_back();
|
sum[i] = sum.back();
|
||||||
--i;
|
sum.pop_back();
|
||||||
continue;
|
--i;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sum[i] = remove_factor(s, arg);
|
||||||
}
|
}
|
||||||
sum[i] = remove_factor(s, arg);
|
if (sum.size() == 1)
|
||||||
|
return expr_ref(sum.get(0), m);
|
||||||
|
else
|
||||||
|
return expr_ref(m_util.mk_add(sum.size(), sum.data()), m);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SASSERT(s == t);
|
||||||
|
return expr_ref(m_util.mk_numeral(rational(1), m_util.is_int(t)), m);
|
||||||
}
|
}
|
||||||
if (sum.size() == 1)
|
|
||||||
return expr_ref(sum.get(0), m);
|
|
||||||
else
|
|
||||||
return expr_ref(m_util.mk_add(sum.size(), sum.data()), m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue