3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-29 09:28:45 +00:00

streamline pb solver interface and naming after removal of xor

This commit is contained in:
Nikolaj Bjorner 2021-02-28 12:32:04 -08:00
parent 13f05ae9dc
commit 026065ff71
73 changed files with 1131 additions and 1201 deletions

View file

@ -51,7 +51,7 @@ namespace smt {
template<typename Ext>
theory_var theory_dense_diff_logic<Ext>::mk_var(enode * n) {
theory_var v = theory::mk_var(n);
bool is_int = m_autil.is_int(n->get_owner());
bool is_int = m_autil.is_int(n->get_expr());
m_is_int.push_back(is_int);
m_f_targets.push_back(f_target());
for (auto& rows : m_matrix) {
@ -726,7 +726,7 @@ namespace smt {
TRACE("ddl_model",
tout << "ddl model\n";
for (theory_var v = 0; v < num_vars; v++) {
tout << "#" << mk_pp(get_enode(v)->get_owner(), m) << " = " << m_assignment[v] << "\n";
tout << "#" << mk_pp(get_enode(v)->get_expr(), m) << " = " << m_assignment[v] << "\n";
});
}
@ -802,13 +802,13 @@ namespace smt {
int num_vars = get_num_vars();
for (int v = 0; v < num_vars && v < (int)m_assignment.size(); ++v) {
enode * n = get_enode(v);
if (m_autil.is_zero(n->get_owner()) && !m_assignment[v].is_zero()) {
if (m_autil.is_zero(n->get_expr()) && !m_assignment[v].is_zero()) {
numeral val = m_assignment[v];
sort * s = n->get_owner()->get_sort();
sort * s = n->get_expr()->get_sort();
// adjust the value of all variables that have the same sort.
for (int v2 = 0; v2 < num_vars; ++v2) {
enode * n2 = get_enode(v2);
if (n2->get_owner()->get_sort() == s) {
if (n2->get_expr()->get_sort() == s) {
m_assignment[v2] -= val;
}
}
@ -818,7 +818,7 @@ namespace smt {
TRACE("ddl_model",
tout << "ddl model\n";
for (theory_var v = 0; v < num_vars; v++) {
tout << "#" << mk_pp(get_enode(v)->get_owner(), m) << " = " << m_assignment[v] << "\n";
tout << "#" << mk_pp(get_enode(v)->get_expr(), m) << " = " << m_assignment[v] << "\n";
});
}
@ -941,7 +941,7 @@ namespace smt {
}
for (unsigned i = 0; i < num_nodes; ++i) {
enode * n = get_enode(i);
if (m_autil.is_zero(n->get_owner())) {
if (m_autil.is_zero(n->get_expr())) {
S.set_lower(i, mpq_inf(mpq(0), mpq(0)));
S.set_upper(i, mpq_inf(mpq(0), mpq(0)));
break;
@ -1080,19 +1080,19 @@ namespace smt {
expr_ref e(m), f(m), f2(m);
TRACE("opt", tout << "mk_ineq " << v << " " << val << "\n";);
if (t.size() == 1 && t[0].second.is_one()) {
f = get_enode(t[0].first)->get_owner();
f = get_enode(t[0].first)->get_expr();
}
else if (t.size() == 1 && t[0].second.is_minus_one()) {
f = m_autil.mk_uminus(get_enode(t[0].first)->get_owner());
f = m_autil.mk_uminus(get_enode(t[0].first)->get_expr());
}
else if (t.size() == 2 && t[0].second.is_one() && t[1].second.is_minus_one()) {
f = get_enode(t[0].first)->get_owner();
f2 = get_enode(t[1].first)->get_owner();
f = get_enode(t[0].first)->get_expr();
f2 = get_enode(t[1].first)->get_expr();
f = m_autil.mk_sub(f, f2);
}
else if (t.size() == 2 && t[1].second.is_one() && t[0].second.is_minus_one()) {
f = get_enode(t[1].first)->get_owner();
f2 = get_enode(t[0].first)->get_owner();
f = get_enode(t[1].first)->get_expr();
f2 = get_enode(t[0].first)->get_expr();
f = m_autil.mk_sub(f, f2);
}
else {