3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-14 04:48:45 +00:00

rebase with z3prover and fix term indices in monomials

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2019-06-12 12:46:59 -07:00
parent 578e24d8c1
commit 9a71ed87d9
3 changed files with 17 additions and 7 deletions

View file

@ -121,8 +121,16 @@ bool core::canonize_sign(const factorization& f) const {
return r;
}
void core::add(lpvar v, unsigned sz, lpvar const* vs) {
m_emons.add(v, sz, vs);
void core::add_monomial(lpvar v, unsigned sz, lpvar const* vs) {
m_add_buffer.resize(sz);
for (unsigned i = 0; i < sz; i++) {
lpvar j = vs[i];
if (m_lar_solver.is_term(j))
j = m_lar_solver.adjust_term_index(j);
m_add_buffer[i] = j;
}
m_emons.add(v, m_add_buffer);
}
void core::push() {

View file

@ -86,7 +86,11 @@ public:
order m_order;
monotone m_monotone;
emonomials m_emons;
svector<lpvar> m_add_buffer;
public:
emonomials& emons() { return m_emons; }
const emonomials& emons() const { return m_emons; }
// constructor
core(lp::lar_solver& s);
bool compare_holds(const rational& ls, llc cmp, const rational& rs) const;
@ -133,8 +137,7 @@ public:
void deregister_monomial_from_tables(const monomial & m, unsigned i);
// returns the monomial index
void add(lpvar v, unsigned sz, lpvar const* vs);
void add_monomial(lpvar v, unsigned sz, lpvar const* vs);
void push();
void pop(unsigned n);

View file

@ -27,9 +27,8 @@
#include "math/lp/nla_intervals.h"
namespace nla {
// returns the monomial index
void solver::add_monomial(lpvar v, unsigned sz, lpvar const* vs) {
m_core->add(v, sz, vs);
m_core->add_monomial(v, sz, vs);
}
bool solver::is_monomial_var(lpvar v) const {