3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 20:05:51 +00:00

handle the empty intersection in nla_intervals

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2020-04-08 14:29:09 -07:00
parent 6e8d9001dc
commit 4621767968
2 changed files with 83 additions and 47 deletions

View file

@ -67,19 +67,20 @@ public:
bool interval_from_term(const nex& e, scoped_dep_interval& i);
template <dep_intervals::with_deps_t wd>
void interval_of_sum_no_term(const nex_sum& e, scoped_dep_interval&);
template <dep_intervals::with_deps_t wd, typename T>
bool interval_of_sum_no_term(const nex_sum& e, scoped_dep_interval&, const std::function<void (const T&)>& f );
template <dep_intervals::with_deps_t wd>
void interval_of_sum(const nex_sum& e, scoped_dep_interval&);
template <dep_intervals::with_deps_t wd, typename T>
bool interval_of_sum(const nex_sum& e, scoped_dep_interval&, const std::function<void (const T&)>& );
template <dep_intervals::with_deps_t wd>
void interval_of_mul(const nex_mul& e, scoped_dep_interval&);
template <dep_intervals::with_deps_t wd, typename T>
bool interval_of_mul(const nex_mul& e, scoped_dep_interval&, const std::function<void (const T&)>&);
template <dep_intervals::with_deps_t wd>
void to_power(scoped_dep_interval&, unsigned);
template <dep_intervals::with_deps_t wd>
void interval_of_expr(const nex* e, unsigned p, scoped_dep_interval&);
template <dep_intervals::with_deps_t wd, typename T>
bool interval_of_expr(const nex* e, unsigned p, scoped_dep_interval&, const std::function<void (const T&)>& f);
bool upper_is_inf(const interval& a) const { return m_dep_intervals.upper_is_inf(a); }
bool lower_is_inf(const interval& a) const { return m_dep_intervals.lower_is_inf(a); }
@ -98,5 +99,6 @@ public:
static void add_linear_to_vector(const nex*, vector<std::pair<rational, lpvar>>&);
static void add_mul_of_degree_one_to_vector(const nex_mul*, vector<std::pair<rational, lpvar>>&);
lpvar find_term_column(const lp::lar_term&, rational& a) const;
std::ostream& display_separating_interval(std::ostream& out, const nex*n, const scoped_dep_interval& interv_wd, u_dependency* initial_deps);
}; // end of intervals
} // end of namespace nla