3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-28 10:19:23 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-10-10 19:29:23 -07:00
parent ff975e49f2
commit 07bda4d629
2 changed files with 7 additions and 8 deletions

View file

@ -660,6 +660,7 @@ namespace nla {
}
if (los.empty() || his.empty())
return;
IF_VERBOSE(3, verbose_stream() << "lo " << los << " hi " << his << "\n");
for (auto lo : los)
ext_resolve(mi, lo, hi_ci);
for (auto hi : his)
@ -713,7 +714,8 @@ namespace nla {
IF_VERBOSE(3, verbose_stream() << "resolve on " << m_mon2vars[mi] << " lo: " << lo << " hi: " << hi << "\n";
display_constraint(verbose_stream(), lo) << "\n"; display_constraint(verbose_stream(), hi) << "\n";);
display_constraint(verbose_stream() << lo << ": ", lo) << "\n";
display_constraint(verbose_stream() << hi << ": ", hi) << "\n";);
if (lhs.size() == 0) {
IF_VERBOSE(2, verbose_stream() << rhs << " " << "empty\n");
return;
@ -729,7 +731,7 @@ namespace nla {
auto new_ci = add_ineq(just, lhs, k, rhs);
insert_monomials_from_constraint(new_ci);
IF_VERBOSE(3, display_constraint(verbose_stream(), new_ci) << "\n");
IF_VERBOSE(3, display_constraint(verbose_stream() << new_ci << ": ", new_ci) << "\n");
}
std::tuple<rational, bool, bool> stellensatz::compute_bound(svector<lpvar> const& vars, svector<lpvar>& quot, lpvar j, rational const& coeff, lp::constraint_index ci) {
@ -746,14 +748,15 @@ namespace nla {
SASSERT(vars.contains(j));
quot.erase(j);
}
rational alpha = coeff;
rational alpha(1);
for (auto v : quot)
alpha *= m_values[v];
if (alpha == 0)
return {rational::zero(), false, false};
SASSERT(alpha != 0);
int flip = (alpha >= 0) != (coeff >= 0);
IF_VERBOSE(3, verbose_stream() << "alpha " << alpha << " coeff " << coeff << " flip: " << flip << " " << con.kind() << "\n");
IF_VERBOSE(3, display_constraint(verbose_stream(), ci) << "\n");
// quot * j = vars
//
// coeff * j + p <= r

View file

@ -164,10 +164,6 @@ namespace nla {
lpvar add_var(bool is_int);
lbool add_bounds(svector<lpvar> const &vars, vector<bound_assumption> &bounds);
void saturate_constraints();
<<<<<<< HEAD
=======
>>>>>>> 35e781c58 (gcd reduce and use c().val for sign constraints)
void saturate_constraints2();
void eliminate(lpvar mi);
void ext_resolve(lpvar j, lp::constraint_index lo, lp::constraint_index hi);