3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-23 14:23:40 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-08-14 22:33:41 -07:00
parent 1e3c3dc48f
commit 204b417396
3 changed files with 10 additions and 6 deletions

View file

@ -246,10 +246,8 @@ namespace polysat {
unsigned get_num_vars() const { return m_vars.size(); } unsigned get_num_vars() const { return m_vars.size(); }
void reset(); void reset();
svector<std::pair<unsigned, unsigned>> stack;
uint_set on_stack; // void propagate_eqs();
lbool propagate_ineqs(unsigned idx);
void propagate_eqs();
vector<var_eq> const& var_eqs() const { return m_var_eqs; } vector<var_eq> const& var_eqs() const { return m_var_eqs; }
void add_row(var_t base, unsigned num_vars, var_t const* vars, numeral const* coeffs); void add_row(var_t base, unsigned num_vars, var_t const* vars, numeral const* coeffs);
@ -258,6 +256,10 @@ namespace polysat {
private: private:
svector<std::pair<unsigned, unsigned>> stack;
uint_set on_stack;
lbool propagate_ineqs(unsigned idx);
std::ostream& display_row(std::ostream& out, row const& r, bool values = true) const; std::ostream& display_row(std::ostream& out, row const& r, bool values = true) const;
var_t get_base_var(row const& r) const { return m_rows[r.id()].m_base; } var_t get_base_var(row const& r) const { return m_rows[r.id()].m_base; }

View file

@ -1054,11 +1054,13 @@ namespace polysat {
* *
*/ */
#if 0
template<typename Ext> template<typename Ext>
void fixplex<Ext>::propagate_eqs() { void fixplex<Ext>::propagate_eqs() {
for (unsigned i = 0; i < m_rows.size(); ++i) for (unsigned i = 0; i < m_rows.size(); ++i)
get_offset_eqs(row(i)); get_offset_eqs(row(i));
} }
#endif
template<typename Ext> template<typename Ext>
@ -1105,7 +1107,7 @@ namespace polysat {
numeral cz, cu; numeral cz, cu;
for (auto c : M.col_entries(x)) { for (auto c : M.col_entries(x)) {
auto r2 = c.get_row(); auto r2 = c.get_row();
if (r1.id() >= r2.id()) if (r1.id() == r2.id())
continue; continue;
if (!is_offset_row(r2, cz, z, cu, u)) if (!is_offset_row(r2, cz, z, cu, u))
continue; continue;

View file

@ -114,7 +114,7 @@ namespace polysat {
fp.add_row(z, 3, ys2, coeffs2); fp.add_row(z, 3, ys2, coeffs2);
fp.set_bounds(u, 1, 2, 1); fp.set_bounds(u, 1, 2, 1);
fp.run(); fp.run();
fp.propagate_eqs(); // fp.propagate_eqs();
for (auto e : fp.var_eqs()) for (auto e : fp.var_eqs())
std::cout << e.x << " == " << e.y << "\n"; std::cout << e.x << " == " << e.y << "\n";