mirror of
https://github.com/Z3Prover/z3
synced 2025-06-20 21:03:39 +00:00
adding monomial bounds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
bdecbe4ed7
commit
4e51633e6f
6 changed files with 136 additions and 117 deletions
|
@ -89,21 +89,23 @@ bool dep_intervals::separated_from_zero_on_upper(const interval& i) const {
|
|||
std::ostream& dep_intervals::display(std::ostream& out, const interval& i) const {
|
||||
if (m_imanager.lower_is_inf(i)) {
|
||||
out << "(-oo";
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
out << (m_imanager.lower_is_open(i)? "(":"[") << rational(m_imanager.lower(i));
|
||||
}
|
||||
out << ",";
|
||||
if (m_imanager.upper_is_inf(i)) {
|
||||
out << "oo)";
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
out << rational(m_imanager.upper(i)) << (m_imanager.upper_is_open(i)? ")":"]");
|
||||
}
|
||||
if (i.m_lower_dep) {
|
||||
out << "\nlower deps\n";
|
||||
// out << "\nlower deps\n";
|
||||
// TBD: print_dependencies(i.m_lower_dep, out);
|
||||
}
|
||||
if (i.m_upper_dep) {
|
||||
out << "\nupper deps\n";
|
||||
// out << "\nupper deps\n";
|
||||
// TBD: print_dependencies(i.m_upper_dep, out);
|
||||
}
|
||||
return out;
|
||||
|
@ -125,21 +127,21 @@ bool dep_intervals::is_empty(interval const& a) const {
|
|||
bool dep_intervals::is_above(const interval& i, const rational& r) const {
|
||||
if (lower_is_inf(i))
|
||||
return false;
|
||||
if (m_num_manager.lt(lower(i), r.to_mpq()))
|
||||
return false;
|
||||
if (m_num_manager.eq(lower(i), r.to_mpq()) && !m_config.lower_is_open(i))
|
||||
return false;
|
||||
return true;
|
||||
if (m_num_manager.lt(r.to_mpq(), lower(i)))
|
||||
return true;
|
||||
if (m_num_manager.eq(lower(i), r.to_mpq()) && m_config.lower_is_open(i))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dep_intervals::is_below(const interval& i, const rational& r) const {
|
||||
if (upper_is_inf(i))
|
||||
return false;
|
||||
if (m_num_manager.lt(upper(i), r.to_mpq()))
|
||||
return false;
|
||||
if (m_num_manager.eq(upper(i), r.to_mpq()) && !m_config.upper_is_open(i))
|
||||
return false;
|
||||
return true;
|
||||
return true;
|
||||
if (m_num_manager.eq(upper(i), r.to_mpq()) && m_config.upper_is_open(i))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -411,12 +411,10 @@ private:
|
|||
void add(const interval& a, const interval& b, interval& c, interval_deps_combine_rule& deps) { m_imanager.add(a, b, c, deps); }
|
||||
|
||||
void combine_deps(interval const& a, interval const& b, interval_deps_combine_rule const& deps, interval& i) const {
|
||||
SASSERT(&a != &i && &b != &i);
|
||||
m_config.add_deps(a, b, deps, i);
|
||||
}
|
||||
|
||||
void combine_deps(interval const& a, interval_deps_combine_rule const& deps, interval& i) const {
|
||||
SASSERT(&a != &i);
|
||||
m_config.add_deps(a, deps, i);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue