3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-24 14:53:40 +00:00

fix build, refactor

This commit is contained in:
Nikolaj Bjorner 2021-02-02 05:26:57 -08:00
parent 3ae4c6e9de
commit 937b61fc88
53 changed files with 145 additions and 127 deletions

View file

@ -178,7 +178,7 @@ namespace smtfd {
return m.mk_fresh_const(name, m.mk_bool_sort());
}
else if (m_butil.is_bv(t)) {
return m.mk_fresh_const(name, m.get_sort(t));
return m.mk_fresh_const(name, t->get_sort());
}
else {
++m_nv;
@ -690,7 +690,7 @@ namespace smtfd {
for (unsigned i = 0; i < a.m_t->get_num_args(); ++i) {
if (p.values().get(a.m_val_offset+i) != p.values().get(b.m_val_offset+i))
return false;
if (p.get_manager().get_sort(a.m_t->get_arg(i)) != p.get_manager().get_sort(b.m_t->get_arg(i)))
if (a.m_t->get_arg(i)->get_sort() != b.m_t->get_arg(i)->get_sort())
return false;
}
return true;
@ -793,7 +793,7 @@ namespace smtfd {
{}
void check_term(expr* t, unsigned round) override {
sort* s = m.get_sort(t);
sort* s = t->get_sort();
if (round == 0 && is_uf(t)) {
TRACE("smtfd_verbose", tout << "check-term: " << mk_bounded_pp(t, m, 2) << "\n";);
enforce_congruence(to_app(t)->get_decl(), to_app(t), s);
@ -816,7 +816,7 @@ namespace smtfd {
}
bool term_covered(expr* t) override {
sort* s = m.get_sort(t);
sort* s = t->get_sort();
if (sort_covered(s)) {
val2elem_t& v2e = get_table(s);
expr_ref v = eval_abs(t);
@ -864,7 +864,7 @@ namespace smtfd {
mdl->register_decl(fn, fi);
}
for (expr* t : subterms(terms)) {
if (is_uninterp_const(t) && sort_covered(m.get_sort(t))) {
if (is_uninterp_const(t) && sort_covered(t->get_sort())) {
expr_ref val = model_value(t);
mdl->register_decl(to_app(t)->get_decl(), val);
}
@ -872,7 +872,7 @@ namespace smtfd {
}
expr_ref model_value_core(expr* t) override {
sort* s = m.get_sort(t);
sort* s = t->get_sort();
if (sort_covered(s)) {
auto& v2e = ensure_table(s);
return expr_ref(v2e[eval_abs(t)], m);
@ -922,14 +922,14 @@ namespace smtfd {
void insert_select(app* t) {
expr* a = t->get_arg(0);
expr_ref vA = eval_abs(a);
check_congruence(vA, t, m.get_sort(a));
check_congruence(vA, t, a->get_sort());
}
void check_select(app* t) {
expr* a = t->get_arg(0);
expr_ref vA = eval_abs(a);
TRACE("smtfd", tout << mk_bounded_pp(t, m, 2) << "\n";);
enforce_congruence(vA, t, m.get_sort(a));
enforce_congruence(vA, t, a->get_sort());
}
// check that (select(t, t.args) = t.value)
@ -1018,7 +1018,7 @@ namespace smtfd {
expr_ref vT = eval_abs(t);
expr_ref vA = eval_abs(arg);
table& tT = ast2table(vT, m.get_sort(t)); // select table of t
table& tT = ast2table(vT, t->get_sort()); // select table of t
table& tA = ast2table(vA, arg->get_sort()); // select table of arg
if (vT == vA) {
@ -1049,7 +1049,7 @@ namespace smtfd {
if (m_context.at_max()) {
break;
}
if (m.get_sort(t) != m.get_sort(fA.m_t->get_arg(0))) {
if (t->get_sort() != fA.m_t->get_arg(0)->get_sort()) {
continue;
}
if (!tT.find(fA, fT) || (value_of(fA) != value_of(fT) && !eq(m_vargs, fA))) {
@ -1064,7 +1064,7 @@ namespace smtfd {
if (m_context.at_max()) {
break;
}
if (!tA.find(fT, fA) && m.get_sort(t) == m.get_sort(fT.m_t->get_arg(0))) {
if (!tA.find(fT, fA) && t->get_sort() == m.get_sort(fT.m_t->get_arg(0))) {
TRACE("smtfd", tout << "not found\n";);
add_select_store_axiom(t, fT);
++r;
@ -1080,7 +1080,7 @@ namespace smtfd {
for (expr* arg : *f.m_t) {
m_args.push_back(arg);
}
SASSERT(m.get_sort(t) == m.get_sort(a));
SASSERT(t->get_sort() == a->get_sort());
TRACE("smtfd", tout << mk_bounded_pp(t, m, 2) << " " << mk_bounded_pp(f.m_t, m, 2) << "\n";);
expr_ref eq = mk_eq_idxs(t, f.m_t);
m_args[0] = t;
@ -1094,7 +1094,7 @@ namespace smtfd {
}
bool same_array_sort(f_app const& fA, f_app const& fT) const {
return m.get_sort(fA.m_t->get_arg(0)) == m.get_sort(fT.m_t->get_arg(0));
return fA.m_t->get_arg(0)->get_sort() == fT.m_t->get_arg(0)->get_sort();
}
/**
@ -1105,9 +1105,9 @@ namespace smtfd {
m_autil.is_const(t) ||
is_lambda(t)) {
expr_ref vT = eval_abs(t);
table& tT = ast2table(vT, m.get_sort(t));
table& tT = ast2table(vT, t->get_sort());
for (f_app & f : tT) {
if (m.get_sort(t) != m.get_sort(f.m_t->get_arg(0)))
if (t->get_sort() != f.m_t->get_arg(0)->get_sort())
continue;
if (m_context.at_max())
break;
@ -1165,7 +1165,7 @@ namespace smtfd {
}
void enforce_extensionality(expr* a, expr* b) {
sort* s = m.get_sort(a);
sort* s = a->get_sort();
unsigned arity = get_array_arity(s);
expr_ref_vector args(m);
args.push_back(a);
@ -1190,7 +1190,7 @@ namespace smtfd {
SASSERT(m_autil.is_select(f.m_t));
expr_ref v = model_value(f.m_t);
if (!value) {
sort* s = m.get_sort(f.m_t->get_arg(0));
sort* s = f.m_t->get_arg(0)->get_sort();
default_value = v;
value = m_autil.mk_const_array(s, default_value);
}
@ -1256,7 +1256,7 @@ namespace smtfd {
if (m_autil.is_select(t)) {
expr* a = to_app(t)->get_arg(0);
expr_ref vA = eval_abs(a);
insert(mk_app(vA, to_app(t), m.get_sort(a)));
insert(mk_app(vA, to_app(t), a->get_sort()));
}
return
@ -1285,9 +1285,9 @@ namespace smtfd {
expr_ref model_value_core(expr* t) override {
if (m_autil.is_array(t)) {
expr_ref vT = eval_abs(t);
table& tb = ast2table(vT, m.get_sort(t));
table& tb = ast2table(vT, t->get_sort());
if (tb.empty()) {
return model_value_core(m.get_sort(t));
return model_value_core(t->get_sort());
}
else {
return mk_array_value(tb);
@ -1345,7 +1345,7 @@ namespace smtfd {
for (unsigned j = i + 1; !m_context.at_max() && j < shared.size(); ++j) {
expr* s2 = shared.get(j);
expr* v2 = sharedvals.get(j);
if (v1 != v2 && m.get_sort(s1) == m.get_sort(s2) && same_table(v1, m.get_sort(s1), v2, m.get_sort(s2))) {
if (v1 != v2 && s1->get_sort() == s2->get_sort() && same_table(v1, s1->get_sort(), v2, s2->get_sort())) {
enforce_extensionality(s1, s2);
}
}
@ -1533,8 +1533,8 @@ namespace smtfd {
void init_term(expr* t) {
if (!m.is_bool(t) && is_ground(t)) {
expr_ref v = eval_abs(t);
if (!m_val2term.contains(v, m.get_sort(t))) {
m_val2term.insert(v, m.get_sort(t), t);
if (!m_val2term.contains(v, t->get_sort())) {
m_val2term.insert(v, t->get_sort(), t);
m_val2term_trail.push_back(v);
}
}
@ -1725,7 +1725,7 @@ namespace smtfd {
}
}
for (expr* t : subterms(terms)) {
if (!is_forall(t) && !is_exists(t) && (!m_context.term_covered(t) || !m_context.sort_covered(m.get_sort(t)))) {
if (!is_forall(t) && !is_exists(t) && (!m_context.term_covered(t) || !m_context.sort_covered(t->get_sort()))) {
is_decided = l_false;
}
}
@ -1739,9 +1739,9 @@ namespace smtfd {
if (is_ground(a) && val0 != val1 && m.get_sort(val0) == m.get_sort(val1)) {
tout << mk_bounded_pp(a, m, 2) << " := " << val0 << " " << val1 << "\n";
}
if (!is_forall(a) && !is_exists(a) && (!m_context.term_covered(a) || !m_context.sort_covered(m.get_sort(a)))) {
tout << "not covered: " << mk_pp(a, m) << " " << mk_pp(m.get_sort(a), m) << " ";
tout << m_context.term_covered(a) << " " << m_context.sort_covered(m.get_sort(a)) << "\n";
if (!is_forall(a) && !is_exists(a) && (!m_context.term_covered(a) || !m_context.sort_covered(a->get_sort()))) {
tout << "not covered: " << mk_pp(a, m) << " " << mk_pp(a->get_sort(), m) << " ";
tout << m_context.term_covered(a) << " " << m_context.sort_covered(a->get_sort()) << "\n";
}
}
tout << "has quantifier: " << has_q << "\n" << core << "\n";