3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-06 06:03:23 +00:00

renaming the smon fields to distingush them from monomial fields

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2019-04-21 14:05:36 -07:00
parent 4cbb586947
commit 7eeba3a917
3 changed files with 312 additions and 316 deletions

View file

@ -33,13 +33,13 @@ namespace nla {
*/ */
class smon { class smon {
lpvar m_var; // variable representing original monomial lpvar m_var; // variable representing original monomial
svector<lpvar> m_vars; svector<lpvar> m_rvars;
bool m_sign; bool m_rsign;
unsigned m_next; // next congruent node. unsigned m_next; // next congruent node.
unsigned m_prev; // previous congruent node unsigned m_prev; // previous congruent node
mutable unsigned m_visited; mutable unsigned m_visited;
public: public:
smon(lpvar v, unsigned idx): m_var(v), m_sign(false), m_next(idx), m_prev(idx), m_visited(0) {} smon(lpvar v, unsigned idx): m_var(v), m_rsign(false), m_next(idx), m_prev(idx), m_visited(0) {}
lpvar var() const { return m_var; } lpvar var() const { return m_var; }
unsigned next() const { return m_next; } unsigned next() const { return m_next; }
unsigned& next() { return m_next; } unsigned& next() { return m_next; }
@ -47,24 +47,26 @@ public:
unsigned& prev() { return m_prev; } unsigned& prev() { return m_prev; }
unsigned visited() const { return m_visited; } unsigned visited() const { return m_visited; }
unsigned& visited() { return m_visited; } unsigned& visited() { return m_visited; }
svector<lpvar> const& vars() const { return m_vars; } svector<lpvar> const& vars() const { return m_rvars; }
svector<lp::var_index>::const_iterator begin() const { return vars().begin(); } svector<lp::var_index>::const_iterator begin() const { return vars().begin(); }
svector<lp::var_index>::const_iterator end() const { return vars().end(); } svector<lp::var_index>::const_iterator end() const { return vars().end(); }
unsigned size() const { return m_vars.size(); } unsigned size() const { return m_rvars.size(); }
lpvar operator[](unsigned i) const { return m_vars[i]; } lpvar operator[](unsigned i) const { return m_rvars[i]; }
bool sign() const { return m_sign; } bool sign() const { return m_rsign; }
rational rsign() const { return rational(m_sign ? -1 : 1); } rational rsign() const { return rational(m_rsign ? -1 : 1); }
void reset() { m_sign = false; m_vars.reset(); } void reset() { m_rsign = false; m_rvars.reset(); }
void push_var(signed_var sv) { m_sign ^= sv.sign(); m_vars.push_back(sv.var()); } void push_var(signed_var sv) { m_rsign ^= sv.sign(); m_rvars.push_back(sv.var()); }
void done_push() { void done_push() {
std::sort(m_vars.begin(), m_vars.end()); std::sort(m_rvars.begin(), m_rvars.end());
} }
std::ostream& display(std::ostream& out) const { std::ostream& display(std::ostream& out) const {
out << "v" << var() << " := "; // out << "v" << var() << " := ";
if (sign()) out << "- "; // if (sign()) out << "- ";
for (lpvar v : vars()) out << "v" << v << " "; // for (lpvar v : vars()) out << "v" << v << " ";
SASSERT(false);
return out; return out;
} }
}; };
inline std::ostream& operator<<(std::ostream& out, smon const& m) { return m.display(out); } inline std::ostream& operator<<(std::ostream& out, smon const& m) { return m.display(out); }

View file

@ -107,12 +107,6 @@ std::ostream& common::print_monomial(const monomial & m, std::ostream& out) cons
return c().print_monomial(m, out); return c().print_monomial(m, out);
} }
//std::ostream& common::print_rooted_monomial(const smon& rm, std::ostream& out) const {
// return c().print_rooted_monomial(rm, out);
//}
//std::ostream& common::print_rooted_monomial_with_vars(const smon& rm, std::ostream& out) const {
// return c().print_rooted_monomial_with_vars(rm, out);
//}
std::ostream& common::print_factor(const factor & f, std::ostream& out) const { std::ostream& common::print_factor(const factor & f, std::ostream& out) const {
return c().print_factor(f, out); return c().print_factor(f, out);
} }

View file

@ -48,7 +48,7 @@ void monotone::print_monotone_array(const monotone_array_t& lex_sorted,
bool monotone::monotonicity_lemma_on_lex_sorted_rm_upper(const monotone_array_t& lex_sorted, unsigned i, const smon& rm) { bool monotone::monotonicity_lemma_on_lex_sorted_rm_upper(const monotone_array_t& lex_sorted, unsigned i, const smon& rm) {
const rational v = abs(vvr(rm)); const rational v = abs(vvr(rm));
const auto& key = lex_sorted[i].first; const auto& key = lex_sorted[i].first;
TRACE("nla_solver", tout << "rm = " << rm << "i = " << i << std::endl;); TRACE("nla_solver", tout << "rm = " << rm << ", i = " << i << std::endl;);
for (unsigned k = i + 1; k < lex_sorted.size(); k++) { for (unsigned k = i + 1; k < lex_sorted.size(); k++) {
const auto& p = lex_sorted[k]; const auto& p = lex_sorted[k];
const smon& rmk = c().m_emons.canonical[p.second]; const smon& rmk = c().m_emons.canonical[p.second];