3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-22 05:43:39 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-07-02 13:30:15 -07:00
parent cc4354ffd5
commit c053c7f1c8
3 changed files with 4 additions and 0 deletions

View file

@ -42,6 +42,7 @@ template<typename Numeral>
class mod_interval { class mod_interval {
bool emp { false }; bool emp { false };
public: public:
virtual ~mod_interval() {}
Numeral lo { 0 }; Numeral lo { 0 };
Numeral hi { 0 }; Numeral hi { 0 };
mod_interval() {} mod_interval() {}
@ -65,6 +66,7 @@ public:
void intersect_ugt(Numeral const& l); void intersect_ugt(Numeral const& l);
void intersect_fixed(Numeral const& n); void intersect_fixed(Numeral const& n);
void intersect_diff(Numeral const& n); void intersect_diff(Numeral const& n);
mod_interval operator&(mod_interval const& other) const; mod_interval operator&(mod_interval const& other) const;
mod_interval operator+(mod_interval const& other) const; mod_interval operator+(mod_interval const& other) const;
mod_interval operator-(mod_interval const& other) const; mod_interval operator-(mod_interval const& other) const;

View file

@ -97,6 +97,7 @@ namespace polysat {
m_base2row(0), m_base2row(0),
m_is_base(false) m_is_base(false)
{} {}
~var_info() override {}
var_info& operator&=(mod_interval<numeral> const& range) { var_info& operator&=(mod_interval<numeral> const& range) {
mod_interval<numeral>::operator=(range & *this); mod_interval<numeral>::operator=(range & *this);
return *this; return *this;

View file

@ -48,6 +48,7 @@ namespace polysat {
bool narrow(std::function<bool(rational const&)>& eval); bool narrow(std::function<bool(rational const&)>& eval);
public: public:
viable_set(unsigned num_bits): m_num_bits(num_bits) {} viable_set(unsigned num_bits): m_num_bits(num_bits) {}
~viable_set() override {}
dd::find_t find_hint(rational const& c, rational& val) const; dd::find_t find_hint(rational const& c, rational& val) const;
bool intersect_eq(rational const& a, rational const& b, bool is_positive); bool intersect_eq(rational const& a, rational const& b, bool is_positive);
bool intersect_le(rational const& a, rational const& b, rational const& c, rational const& d, bool is_positive); bool intersect_le(rational const& a, rational const& b, rational const& c, rational const& d, bool is_positive);