3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-28 00:48:45 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-11 13:11:47 -07:00
parent b066f562c6
commit 98ff388c4e
3 changed files with 4 additions and 6 deletions

View file

@ -973,7 +973,7 @@ namespace smt {
/** /**
\brief A monomial is 'pure' if does not have a numeric coefficient. \brief A monomial is 'pure' if does not have a numeric coefficient.
*/ */
bool is_pure_monomial(expr * m) const { return m_util.is_mul(m) && !m_util.is_numeral(to_app(m)->get_arg(0)); } bool is_pure_monomial(expr * m) const { return m_util.is_mul(m) && (to_app(m)->get_num_args() > 2 || !m_util.is_numeral(to_app(m)->get_arg(0))); }
bool is_pure_monomial(theory_var v) const { return is_pure_monomial(get_enode(v)->get_owner()); } bool is_pure_monomial(theory_var v) const { return is_pure_monomial(get_enode(v)->get_owner()); }
void mark_var(theory_var v, svector<theory_var> & vars, var_set & already_found); void mark_var(theory_var v, svector<theory_var> & vars, var_set & already_found);
void mark_dependents(theory_var v, svector<theory_var> & vars, var_set & already_found, row_set & already_visited_rows); void mark_dependents(theory_var v, svector<theory_var> & vars, var_set & already_found, row_set & already_visited_rows);

View file

@ -349,7 +349,7 @@ namespace smt {
*/ */
template<typename Ext> template<typename Ext>
theory_var theory_arith<Ext>::internalize_mul_core(app * m) { theory_var theory_arith<Ext>::internalize_mul_core(app * m) {
TRACE("internalize_mul_core", tout << "internalizing...\n" << mk_pp(m,get_manager()) << "\n";); TRACE("internalize_mul_core", tout << "internalizing...\n" << mk_pp(m, get_manager()) << "\n";);
if (!m_util.is_mul(m)) if (!m_util.is_mul(m))
return internalize_term_core(m); return internalize_term_core(m);
for (expr* arg : *m) { for (expr* arg : *m) {

View file

@ -71,10 +71,8 @@ namespace smt {
if (m_nl_monomials.empty()) if (m_nl_monomials.empty())
return; return;
out << "non linear monomials:\n"; out << "non linear monomials:\n";
svector<theory_var>::const_iterator it = m_nl_monomials.begin(); for (auto nl : m_nl_monomials)
svector<theory_var>::const_iterator end = m_nl_monomials.end(); display_var(out, nl);
for (; it != end; ++it)
display_var(out, *it);
} }
template<typename Ext> template<typename Ext>