mirror of
https://github.com/Z3Prover/z3
synced 2025-09-07 02:11:08 +00:00
handle case where all variables are bounded
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
98a9a34f2b
commit
d7718623a4
1 changed files with 7 additions and 1 deletions
|
@ -1555,7 +1555,12 @@ void core::refine_pseudo_linear(monic const& m) {
|
||||||
lemma_builder lemma(*this, "nla-pseudo-linear");
|
lemma_builder lemma(*this, "nla-pseudo-linear");
|
||||||
lpvar nlvar = null_lpvar;
|
lpvar nlvar = null_lpvar;
|
||||||
rational prod(1);
|
rational prod(1);
|
||||||
for (auto v : m.vars()) {
|
for (unsigned i = 0; i < m.vars().size(); ++i) {
|
||||||
|
auto v = m.vars()[i];
|
||||||
|
if (i == m.vars().size() - 1 && nlvar == null_lpvar) {
|
||||||
|
nlvar = v;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (lra.column_is_bounded(v) && lra.var_is_int(v)) {
|
if (lra.column_is_bounded(v) && lra.var_is_int(v)) {
|
||||||
auto lb = lra.get_lower_bound(v);
|
auto lb = lra.get_lower_bound(v);
|
||||||
auto ub = lra.get_upper_bound(v);
|
auto ub = lra.get_upper_bound(v);
|
||||||
|
@ -1568,6 +1573,7 @@ void core::refine_pseudo_linear(monic const& m) {
|
||||||
SASSERT(nlvar == null_lpvar);
|
SASSERT(nlvar == null_lpvar);
|
||||||
nlvar = v;
|
nlvar = v;
|
||||||
}
|
}
|
||||||
|
SASSERT(nlvar != null_lpvar);
|
||||||
lemma |= ineq(lp::lar_term(m.var(), rational(-prod), nlvar), llc::EQ, rational(0));
|
lemma |= ineq(lp::lar_term(m.var(), rational(-prod), nlvar), llc::EQ, rational(0));
|
||||||
// lemma.display(verbose_stream() << "pseudo-linear lemma\n");
|
// lemma.display(verbose_stream() << "pseudo-linear lemma\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue