3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 19:35:50 +00:00
* rename ul_pair to column

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* t

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* simple test passed

* remove an assert

* relax an assertion

* remove an obsolete function

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* access a term by the term column

* remove the column index from colunm.h

* remove an unused method

* remove debug code

* fix the build of lp_tst

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

---------

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Nikolaj Bjorner 2024-01-24 16:05:18 -08:00 committed by GitHub
parent 133546625c
commit bdb9106f99
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
45 changed files with 587 additions and 973 deletions

View file

@ -71,12 +71,11 @@ struct solver::imp {
}
}
for (unsigned i = lra.terms().size(); i-- > 0; ) {
auto const& t = lra.term(i);
for (auto const iv : t) {
auto v = iv.column().index();
for (const auto *t : lra.terms() ) {
for (auto const iv : *t) {
auto v = iv.j();
var2occurs.reserve(v + 1);
var2occurs[v].terms.push_back(i);
var2occurs[v].terms.push_back(t->j());
}
}
@ -99,17 +98,15 @@ struct solver::imp {
todo.push_back(w);
for (auto ti : var2occurs[v].terms) {
for (auto iv : lra.term(ti))
todo.push_back(iv.column().index());
auto vi = lp::tv::mask_term(ti);
todo.push_back(lra.map_term_index_to_column_index(vi));
for (auto iv : lra.get_term(ti))
todo.push_back(iv.j());
todo.push_back(ti);
}
if (lra.column_corresponds_to_term(v)) {
if (lra.column_has_term(v)) {
m_term_set.insert(v);
lp::tv ti = lp::tv::raw(lra.column_to_reported_index(v));
for (auto kv : lra.get_term(ti))
todo.push_back(kv.column().index());
for (auto kv : lra.get_term(v))
todo.push_back(kv.j());
}
if (m_nla_core.is_monic_var(v)) {
@ -517,16 +514,16 @@ struct solver::imp {
bool is_int(lp::var_index v) {
bool is_int(lp::lpvar v) {
return lra.var_is_int(v);
}
polynomial::var lp2nl(lp::var_index v) {
polynomial::var lp2nl(lp::lpvar v) {
polynomial::var r;
if (!m_lp2nl.find(v, r)) {
r = m_nlsat->mk_var(is_int(v));
m_lp2nl.insert(v, r);
if (!m_term_set.contains(v) && lra.column_corresponds_to_term(v)) {
if (!m_term_set.contains(v) && lra.column_has_term(v)) {
m_term_set.insert(v);
}
}
@ -534,14 +531,13 @@ struct solver::imp {
}
//
void add_term(unsigned term_column) {
lp::tv ti = lp::tv::raw(lra.column_to_reported_index(term_column));
const lp::lar_term& t = lra.get_term(ti);
const lp::lar_term& t = lra.get_term(term_column);
// code that creates a polynomial equality between the linear coefficients and
// variable representing the term.
svector<polynomial::var> vars;
rational den(1);
for (lp::lar_term::ival kv : t) {
vars.push_back(lp2nl(kv.column().index()));
vars.push_back(lp2nl(kv.j()));
den = lcm(den, denominator(kv.coeff()));
}
vars.push_back(lp2nl(term_column));
@ -559,7 +555,7 @@ struct solver::imp {
m_nlsat->mk_clause(1, &lit, nullptr);
}
nlsat::anum const& value(lp::var_index v) {
nlsat::anum const& value(lp::lpvar v) {
polynomial::var pv;
if (m_lp2nl.find(v, pv))
return m_nlsat->value(pv);
@ -636,7 +632,7 @@ std::ostream& solver::display(std::ostream& out) const {
return m_imp->display(out);
}
nlsat::anum const& solver::value(lp::var_index v) {
nlsat::anum const& solver::value(lp::lpvar v) {
return m_imp->value(v);
}