mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 11:37:54 +00:00
* replace u_set by indexed_uint_set * replace u_set by indexed_uint_set * create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * update nightly to pull arm Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * update nightly to pull arm Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fixing the build of lp_tst * update nightly to pull arm Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * replace u_set by indexed_uint_set * replace u_set by indexed_uint_set * fixing the build of lp_tst * remove unnecessery call to contains() before insert to indexed_uint_set * formatting, no check for contains() in indexed_uint_set, always init m_touched_rows to nullptr --------- Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
/*++
|
|
Copyright (c) 2020 Microsoft Corporation
|
|
|
|
Author:
|
|
Nikolaj Bjorner (nbjorner)
|
|
Lev Nachmanson (levnach)
|
|
|
|
--*/
|
|
#pragma once
|
|
|
|
#include "math/lp/nla_common.h"
|
|
#include "math/lp/nla_intervals.h"
|
|
#include "util/uint_set.h"
|
|
|
|
namespace nla {
|
|
class core;
|
|
class monomial_bounds : common {
|
|
dep_intervals& dep;
|
|
void var2interval(lpvar v, scoped_dep_interval& i);
|
|
bool is_too_big(mpq const& q) const;
|
|
bool propagate_down(monic const& m, lpvar u);
|
|
bool propagate_value(dep_interval& range, lpvar v);
|
|
bool propagate_value(dep_interval& range, lpvar v, unsigned power);
|
|
void compute_product(unsigned start, monic const& m, scoped_dep_interval& i);
|
|
bool propagate(monic const& m);
|
|
bool propagate_down(monic const& m, dep_interval& mi, lpvar v, unsigned power, dep_interval& product);
|
|
void analyze_monomial(monic const& m, unsigned& num_free, lpvar& free_v, unsigned& power) const;
|
|
bool is_free(lpvar v) const;
|
|
bool is_zero(lpvar v) const;
|
|
public:
|
|
monomial_bounds(core* core);
|
|
void operator()();
|
|
};
|
|
}
|