mirror of
https://github.com/Z3Prover/z3
synced 2025-08-09 12:50:32 +00:00
Arith min max (#6864)
* prepare for dependencies Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * snapshot Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * more refactoring Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * more refactoring Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * build Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * pass in u_dependency_manager Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * address NYIs Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * more refactoring names Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * eq_explanation update Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add outline of bounds improvement functionality Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix unit tests Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove unused structs Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * more bounds Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * more bounds Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * convert more internals to use u_dependency instead of constraint_index Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * convert more internals to use u_dependency instead of constraint_index Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remember to push/pop scopes Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * use the main function for updating bounds Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove reset of shared dep manager Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * disable improve-bounds, add statistics Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> --------- Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
c3b344ec47
commit
5e3df9ee77
40 changed files with 630 additions and 529 deletions
|
@ -27,6 +27,7 @@
|
|||
#include "math/interval/interval.h"
|
||||
|
||||
class dep_intervals {
|
||||
|
||||
public:
|
||||
enum with_deps_t { with_deps, without_deps };
|
||||
|
||||
|
@ -142,8 +143,9 @@ private:
|
|||
public:
|
||||
typedef interval_manager<im_config>::interval interval;
|
||||
|
||||
u_dependency_manager& m_dep_manager;
|
||||
mutable unsynch_mpq_manager m_num_manager;
|
||||
mutable u_dependency_manager m_dep_manager;
|
||||
|
||||
im_config m_config;
|
||||
mutable interval_manager<im_config> m_imanager;
|
||||
|
||||
|
@ -158,9 +160,10 @@ public:
|
|||
public:
|
||||
u_dependency_manager& dep_manager() { return m_dep_manager; }
|
||||
|
||||
dep_intervals(reslimit& lim) :
|
||||
m_config(m_num_manager, m_dep_manager),
|
||||
m_imanager(lim, im_config(m_num_manager, m_dep_manager))
|
||||
dep_intervals(u_dependency_manager& dm, reslimit& lim) :
|
||||
m_dep_manager(dm),
|
||||
m_config(m_num_manager, dm),
|
||||
m_imanager(lim, im_config(m_num_manager, dm))
|
||||
{}
|
||||
|
||||
std::ostream& display(std::ostream& out, const interval& i) const;
|
||||
|
@ -335,15 +338,17 @@ public:
|
|||
|
||||
bool is_empty(interval const& a) const;
|
||||
void set_interval_for_scalar(interval&, const rational&);
|
||||
|
||||
template <typename T>
|
||||
void linearize(u_dependency* dep, T& expl) const {
|
||||
vector<unsigned, false> v;
|
||||
m_dep_manager.linearize(dep, v);
|
||||
for (unsigned ci: v)
|
||||
for (auto ci: v)
|
||||
expl.push_back(ci);
|
||||
}
|
||||
|
||||
void reset() { m_dep_manager.reset(); }
|
||||
|
||||
void reset() { }
|
||||
|
||||
void del(interval& i) { m_imanager.del(i); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue