mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
move to get_sort as method, add opt_lns pass, disable xor simplification unless configured, fix perf bug in model converter update trail
This commit is contained in:
parent
c623e2db28
commit
4455f6caf8
36 changed files with 391 additions and 90 deletions
|
@ -132,7 +132,7 @@ void anti_unifier::operator()(expr *e1, expr *e2, expr_ref &res,
|
|||
unsigned num_arg2 = n2->get_num_args();
|
||||
if (n1->get_decl() != n2->get_decl() || num_arg1 != num_arg2) {
|
||||
expr_ref v(m);
|
||||
v = m.mk_var(m_subs.size(), get_sort(n1));
|
||||
v = m.mk_var(m_subs.size(), n1->get_sort());
|
||||
m_pinned.push_back(v);
|
||||
m_subs.push_back(expr_pair(n1, n2));
|
||||
m_cache.insert(n1, n2, v);
|
||||
|
|
|
@ -119,7 +119,7 @@ void pob::get_skolems(app_ref_vector &v) {
|
|||
for (unsigned i = 0, sz = m_binding.size(); i < sz; ++i) {
|
||||
expr* e;
|
||||
e = m_binding.get(i);
|
||||
v.push_back (mk_zk_const (get_ast_manager(), i, get_sort(e)));
|
||||
v.push_back (mk_zk_const (get_ast_manager(), i, e->get_sort()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ void derivation::exist_skolemize(expr* fml, app_ref_vector& vars, expr_ref& res)
|
|||
expr_safe_replace sub(m);
|
||||
for (unsigned i = 0, sz = vars.size(); i < sz; ++i) {
|
||||
expr* e = vars.get(i);
|
||||
sub.insert(e, mk_zk_const(m, i, get_sort(e)));
|
||||
sub.insert(e, mk_zk_const(m, i, e->get_sort()));
|
||||
}
|
||||
sub(fml, res);
|
||||
}
|
||||
|
@ -541,7 +541,7 @@ void lemma::mk_expr_core() {
|
|||
ptr_buffer<sort> sorts;
|
||||
svector<symbol> names;
|
||||
for (app* z : zks) {
|
||||
sorts.push_back(get_sort(z));
|
||||
sorts.push_back(z->get_sort());
|
||||
names.push_back(z->get_decl()->get_name());
|
||||
}
|
||||
m_body = m.mk_quantifier(forall_k, zks.size(),
|
||||
|
|
|
@ -195,8 +195,8 @@ public:
|
|||
void operator()(app* a)
|
||||
{
|
||||
if (a->get_family_id() == null_family_id && m_au.is_array(a)) {
|
||||
if (m_sort && m_sort != get_sort(a)) { return; }
|
||||
if (!m_sort) { m_sort = get_sort(a); }
|
||||
if (m_sort && m_sort != a->get_sort()) { return; }
|
||||
if (!m_sort) { m_sort = a->get_sort(); }
|
||||
m_symbs.insert(a->get_decl());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -230,7 +230,7 @@ namespace spacer {
|
|||
if (a.is_numeral(e)) return false;
|
||||
if (!var || var == e) {
|
||||
var = e;
|
||||
val = a.mk_numeral(rational(1), get_sort(e));
|
||||
val = a.mk_numeral(rational(1), e->get_sort());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -226,7 +226,7 @@ expr* times_minus_one(expr *e, arith_util &arith) {
|
|||
expr *r;
|
||||
if (arith.is_times_minus_one (e, r)) { return r; }
|
||||
|
||||
return arith.mk_mul(arith.mk_numeral(rational(-1), arith.is_int(get_sort(e))), e);
|
||||
return arith.mk_mul(arith.mk_numeral(rational(-1), arith.is_int(e->get_sort())), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -502,7 +502,7 @@ bool lemma_quantifier_generalizer::generalize (lemma_ref &lemma, app *term) {
|
|||
expr_ref_vector abs_cube(m);
|
||||
|
||||
var_ref var(m);
|
||||
var = m.mk_var (m_offset, get_sort(term));
|
||||
var = m.mk_var (m_offset, term->get_sort());
|
||||
|
||||
mk_abs_cube(lemma, term, var, gnd_cube, abs_cube, lb, ub, stride);
|
||||
if (abs_cube.empty()) {return false;}
|
||||
|
|
|
@ -65,7 +65,7 @@ namespace datalog {
|
|||
for(unsigned i = nb_predicates; i < tail_size; i++) {
|
||||
expr* cond = r.get_tail(i);
|
||||
expr* e1, *e2;
|
||||
if (m.is_eq(cond, e1, e2) && m_a.is_array(get_sort(e1))) {
|
||||
if (m.is_eq(cond, e1, e2) && m_a.is_array(e1->get_sort())) {
|
||||
array_eq_classes.merge(e1, e2);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -103,12 +103,12 @@ namespace datalog {
|
|||
expr_ref_vector new_args(m);
|
||||
for(unsigned i=0;i<old_head->get_num_args();i++) {
|
||||
expr*arg = old_head->get_arg(i);
|
||||
if(m_a.is_array(get_sort(arg))) {
|
||||
if(m_a.is_array(arg->get_sort())) {
|
||||
for(unsigned k=0; k< m_ctx.get_params().xform_instantiate_arrays_nb_quantifier();k++) {
|
||||
expr_ref_vector dummy_args(m);
|
||||
dummy_args.push_back(arg);
|
||||
for(unsigned i=0;i<get_array_arity(get_sort(arg));i++) {
|
||||
dummy_args.push_back(m.mk_var(cnt, get_array_domain(get_sort(arg), i)));
|
||||
for(unsigned i=0;i<get_array_arity(arg->get_sort());i++) {
|
||||
dummy_args.push_back(m.mk_var(cnt, get_array_domain(arg->get_sort(), i)));
|
||||
cnt++;
|
||||
}
|
||||
expr_ref select(m);
|
||||
|
@ -140,7 +140,7 @@ namespace datalog {
|
|||
}
|
||||
//If it is a select, then add it to selects
|
||||
if(m_a.is_select(f)) {
|
||||
SASSERT(!m_a.is_array(get_sort(e)));
|
||||
SASSERT(!m_a.is_array(e->get_sort()));
|
||||
selects.insert_if_not_there(f->get_arg(0), ptr_vector<expr>());
|
||||
selects[f->get_arg(0)].push_back(e);
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ namespace datalog {
|
|||
if(m_a.is_store(f)) {
|
||||
eq_classes.merge(e, f->get_arg(0));
|
||||
}
|
||||
else if(m.is_eq(f) && m_a.is_array(get_sort(f->get_arg(0)))) {
|
||||
else if(m.is_eq(f) && m_a.is_array(f->get_arg(0)->get_sort())) {
|
||||
eq_classes.merge(f->get_arg(0), f->get_arg(1));
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ namespace datalog {
|
|||
}
|
||||
sort_ref_vector new_sorts(m);
|
||||
for(unsigned i=0;i<new_args.size();i++)
|
||||
new_sorts.push_back(get_sort(new_args[i].get()));
|
||||
new_sorts.push_back(new_args.get(i)->get_sort());
|
||||
expr_ref res(m);
|
||||
func_decl_ref fun_decl(m);
|
||||
fun_decl = m.mk_func_decl(symbol((old_pred->get_decl()->get_name().str()+"!inst").c_str()), new_sorts.size(), new_sorts.c_ptr(), old_pred->get_decl()->get_range());
|
||||
|
@ -196,7 +196,7 @@ namespace datalog {
|
|||
var*result;
|
||||
if(!done_selects.find(select, result)) {
|
||||
ownership.push_back(select);
|
||||
result = m.mk_var(cnt, get_sort(select));
|
||||
result = m.mk_var(cnt, select->get_sort());
|
||||
cnt++;
|
||||
done_selects.insert(select, result);
|
||||
}
|
||||
|
@ -230,8 +230,8 @@ namespace datalog {
|
|||
if(all_selects.empty()) {
|
||||
expr_ref_vector dummy_args(m);
|
||||
dummy_args.push_back(array);
|
||||
for(unsigned i=0;i<get_array_arity(get_sort(array));i++) {
|
||||
dummy_args.push_back(m.mk_var(cnt, get_array_domain(get_sort(array), i)));
|
||||
for(unsigned i=0;i<get_array_arity(array->get_sort());i++) {
|
||||
dummy_args.push_back(m.mk_var(cnt, get_array_domain(array->get_sort(), i)));
|
||||
cnt++;
|
||||
}
|
||||
all_selects.push_back(m_a.mk_select(dummy_args.size(), dummy_args.c_ptr()));
|
||||
|
@ -247,7 +247,7 @@ namespace datalog {
|
|||
vector<expr_ref_vector> arg_correspondance;
|
||||
for(unsigned i=0;i<nb_old_args;i++) {
|
||||
expr_ref arg(old_pred->get_arg(i), m);
|
||||
if(m_a.is_array(get_sort(arg))) {
|
||||
if(m_a.is_array(arg->get_sort())) {
|
||||
vector<expr_ref_vector> arg_possibilities(m_ctx.get_params().xform_instantiate_arrays_nb_quantifier(), retrieve_all_selects(arg));
|
||||
arg_correspondance.append(arg_possibilities);
|
||||
if(!m_ctx.get_params().xform_instantiate_arrays_enforce()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue