3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 11:07:51 +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

@ -555,7 +555,7 @@ bool theory_seq::check_extensionality() {
unsigned_vector seqs;
for (unsigned v = 0; v < sz; ++v) {
enode* n1 = get_enode(v);
expr* o1 = n1->get_owner();
expr* o1 = n1->get_expr();
if (n1 != n1->get_root()) {
continue;
}
@ -567,7 +567,7 @@ bool theory_seq::check_extensionality() {
}
for (theory_var v : seqs) {
enode* n2 = get_enode(v);
expr* o2 = n2->get_owner();
expr* o2 = n2->get_expr();
if (o1->get_sort() != o2->get_sort()) {
continue;
}
@ -575,7 +575,7 @@ bool theory_seq::check_extensionality() {
continue;
}
expr_ref e2(m);
if (!canonize(n2->get_owner(), dep, e2)) {
if (!canonize(n2->get_expr(), dep, e2)) {
return false;
}
m_new_eqs.reset();
@ -783,13 +783,13 @@ bool theory_seq::propagate_eq(dependency* dep, enode* n1, enode* n2) {
enode_pair_vector eqs;
linearize(dep, eqs, lits);
TRACE("seq_verbose",
tout << "assert: " << mk_bounded_pp(n1->get_owner(), m) << " = " << mk_bounded_pp(n2->get_owner(), m) << " <-\n";
tout << "assert: " << mk_bounded_pp(n1->get_expr(), m) << " = " << mk_bounded_pp(n2->get_expr(), m) << " <-\n";
display_deps(tout, dep);
);
TRACE("seq",
tout << "assert: "
<< mk_bounded_pp(n1->get_owner(), m) << " = " << mk_bounded_pp(n2->get_owner(), m) << " <-\n"
<< mk_bounded_pp(n1->get_expr(), m) << " = " << mk_bounded_pp(n2->get_expr(), m) << " <-\n"
<< lits << "\n";
);
@ -799,7 +799,7 @@ bool theory_seq::propagate_eq(dependency* dep, enode* n1, enode* n2) {
get_id(), ctx.get_region(), lits.size(), lits.c_ptr(), eqs.size(), eqs.c_ptr(), n1, n2));
{
std::function<expr*(void)> fn = [&]() { return m.mk_eq(n1->get_owner(), n2->get_owner()); };
std::function<expr*(void)> fn = [&]() { return m.mk_eq(n1->get_expr(), n2->get_expr()); };
scoped_trace_stream _sts(*this, fn);
ctx.assign_eq(n1, n2, eq_justification(js));
}
@ -823,8 +823,8 @@ bool theory_seq::propagate_eq(dependency* dep, literal lit, expr* e1, expr* e2,
}
void theory_seq::enforce_length_coherence(enode* n1, enode* n2) {
expr* o1 = n1->get_owner();
expr* o2 = n2->get_owner();
expr* o1 = n1->get_expr();
expr* o2 = n2->get_expr();
if (m_util.str.is_concat(o1) && m_util.str.is_concat(o2)) {
return;
}
@ -1555,7 +1555,7 @@ bool theory_seq::add_length_to_eqc(expr* e) {
enode* n1 = n;
bool change = false;
do {
expr* o = n->get_owner();
expr* o = n->get_expr();
if (!has_length(o)) {
expr_ref len(m_util.str.mk_length(o), m);
enque_axiom(len);
@ -1701,8 +1701,8 @@ std::ostream& theory_seq::display_deps(std::ostream& out, literal_vector const&
for (auto const& eq : eqs) {
if (eq.first->get_root() != eq.second->get_root())
out << "invalid: ";
out << " (= " << mk_bounded_pp(eq.first->get_owner(), m, 2)
<< "\n " << mk_bounded_pp(eq.second->get_owner(), m, 2)
out << " (= " << mk_bounded_pp(eq.first->get_expr(), m, 2)
<< "\n " << mk_bounded_pp(eq.second->get_expr(), m, 2)
<< ")\n";
}
for (literal l : lits) {
@ -1714,8 +1714,8 @@ std::ostream& theory_seq::display_deps(std::ostream& out, literal_vector const&
std::ostream& theory_seq::display_deps_smt2(std::ostream& out, literal_vector const& lits, enode_pair_vector const& eqs) const {
params_ref p;
for (auto const& eq : eqs) {
out << " (= " << mk_pp(eq.first->get_owner(), m)
<< "\n " << mk_pp(eq.second->get_owner(), m)
out << " (= " << pp(eq.first, m)
<< "\n " << pp(eq.second, m)
<< ")\n";
}
for (literal l : lits) {
@ -1911,7 +1911,7 @@ public:
th.m_str_rewrite(result);
}
th.m_factory->add_trail(result);
TRACE("seq", tout << mk_pp(m_node->get_owner(), th.m) << " -> " << result << "\n";);
TRACE("seq", tout << pp(m_node, th.m) << " -> " << result << "\n";);
return to_app(result);
}
};
@ -1933,7 +1933,7 @@ app* theory_seq::get_ite_value(expr* e) {
}
model_value_proc * theory_seq::mk_value(enode * n, model_generator & mg) {
app* e = n->get_owner();
app* e = n->get_expr();
TRACE("seq", tout << mk_pp(e, m) << "\n";);
// Shortcut for well-founded values to avoid some quadratic overhead
@ -2241,11 +2241,11 @@ void theory_seq::validate_assign(literal lit, enode_pair_vector const& eqs, lite
void theory_seq::validate_assign_eq(enode* a, enode* b, enode_pair_vector const& eqs, literal_vector const& lits) {
IF_VERBOSE(10, display_deps(verbose_stream() << "; assign-eq\n", lits, eqs);
verbose_stream() << "(not (= " << mk_bounded_pp(a->get_owner(), m)
<< " " << mk_bounded_pp(b->get_owner(), m) << "))\n");
verbose_stream() << "(not (= " << mk_bounded_pp(a->get_expr(), m)
<< " " << mk_bounded_pp(b->get_expr(), m) << "))\n");
if (get_fparams().m_seq_validate) {
expr_ref_vector fmls(m);
fmls.push_back(m.mk_not(m.mk_eq(a->get_owner(), b->get_owner())));
fmls.push_back(m.mk_not(m.mk_eq(a->get_expr(), b->get_expr())));
validate_fmls(eqs, lits, fmls);
}
}
@ -2261,7 +2261,7 @@ void theory_seq::validate_fmls(enode_pair_vector const& eqs, literal_vector cons
fmls.push_back(fml);
}
for (auto const& p : eqs) {
fmls.push_back(m.mk_eq(p.first->get_owner(), p.second->get_owner()));
fmls.push_back(m.mk_eq(p.first->get_expr(), p.second->get_expr()));
}
TRACE("seq", tout << fmls << "\n";);
@ -2287,7 +2287,7 @@ void theory_seq::validate_fmls(enode_pair_vector const& eqs, literal_vector cons
}
theory_var theory_seq::mk_var(enode* n) {
expr* o = n->get_owner();
expr* o = n->get_expr();
if (!m_util.is_seq(o) && !m_util.is_re(o))
return null_theory_var;
@ -2962,8 +2962,8 @@ void theory_seq::assign_eh(bool_var v, bool is_true) {
void theory_seq::new_eq_eh(theory_var v1, theory_var v2) {
enode* n1 = get_enode(v1);
enode* n2 = get_enode(v2);
expr* o1 = n1->get_owner();
expr* o2 = n2->get_owner();
expr* o1 = n1->get_expr();
expr* o2 = n2->get_expr();
if (!m_util.is_seq(o1) && !m_util.is_re(o1))
return;
if (m_util.is_re(o1)) {
@ -2976,8 +2976,8 @@ void theory_seq::new_eq_eh(theory_var v1, theory_var v2) {
}
void theory_seq::new_eq_eh(dependency* deps, enode* n1, enode* n2) {
expr* e1 = n1->get_owner();
expr* e2 = n2->get_owner();
expr* e1 = n1->get_expr();
expr* e2 = n2->get_expr();
TRACE("seq", tout << mk_bounded_pp(e1, m) << " = " << mk_bounded_pp(e2, m) << "\n";);
if (n1 != n2 && m_util.is_seq(e1)) {
theory_var v1 = n1->get_th_var(get_id());
@ -3003,11 +3003,11 @@ void theory_seq::new_eq_eh(dependency* deps, enode* n1, enode* n2) {
void theory_seq::new_diseq_eh(theory_var v1, theory_var v2) {
enode* n1 = get_enode(v1);
enode* n2 = get_enode(v2);
expr_ref e1(n1->get_owner(), m);
expr_ref e2(n2->get_owner(), m);
expr_ref e1(n1->get_expr(), m);
expr_ref e2(n2->get_expr(), m);
if (n1->get_root() == n2->get_root())
return;
if (m_util.is_re(n1->get_owner())) {
if (m_util.is_re(n1->get_expr())) {
m_regex.propagate_ne(e1, e2);
return;
}