mirror of
https://github.com/Z3Prover/z3
synced 2025-04-27 02:45:51 +00:00
merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
06c9a9f3e1
148 changed files with 3478 additions and 2141 deletions
|
@ -59,9 +59,7 @@ namespace datalog {
|
|||
for (unsigned i = 0; i < sig.size(); ++i) {
|
||||
vars.push_back(m.mk_const(symbol(i), sig[i]));
|
||||
}
|
||||
expr_ref result(m);
|
||||
sub(fml, vars.size(), vars.c_ptr(), result);
|
||||
return result;
|
||||
return sub(fml, vars.size(), vars.c_ptr());
|
||||
}
|
||||
|
||||
void check_relation::add_fact(const relation_fact & f) {
|
||||
|
@ -292,7 +290,7 @@ namespace datalog {
|
|||
}
|
||||
}
|
||||
var_subst sub(m, false);
|
||||
sub(fml, vars.size(), vars.c_ptr(), fml1);
|
||||
fml1 = sub(fml, vars.size(), vars.c_ptr());
|
||||
bound.reverse();
|
||||
fml1 = m.mk_exists(bound.size(), bound.c_ptr(), names.c_ptr(), fml1);
|
||||
return fml1;
|
||||
|
@ -333,7 +331,7 @@ namespace datalog {
|
|||
for (unsigned i = 0; i < sig2.size(); ++i) {
|
||||
vars.push_back(m.mk_var(i + sig1.size(), sig2[i]));
|
||||
}
|
||||
sub(fml2, vars.size(), vars.c_ptr(), fml2);
|
||||
fml2 = sub(fml2, vars.size(), vars.c_ptr());
|
||||
fml1 = m.mk_and(fml1, fml2);
|
||||
for (unsigned i = 0; i < cols1.size(); ++i) {
|
||||
unsigned v1 = cols1[i];
|
||||
|
@ -372,14 +370,14 @@ namespace datalog {
|
|||
expr_ref fml1(m), fml2(m);
|
||||
src.to_formula(fml1);
|
||||
dst.to_formula(fml2);
|
||||
subst(fml1, sub.size(), sub.c_ptr(), fml1);
|
||||
fml1 = subst(fml1, sub.size(), sub.c_ptr());
|
||||
expr_ref_vector vars(m);
|
||||
for (unsigned i = 0; i < sig2.size(); ++i) {
|
||||
vars.push_back(m.mk_const(symbol(i), sig2[i]));
|
||||
}
|
||||
|
||||
subst(fml1, vars.size(), vars.c_ptr(), fml1);
|
||||
subst(fml2, vars.size(), vars.c_ptr(), fml2);
|
||||
fml1 = subst(fml1, vars.size(), vars.c_ptr());
|
||||
fml2 = subst(fml2, vars.size(), vars.c_ptr());
|
||||
|
||||
check_equiv("permutation", fml1, fml2);
|
||||
}
|
||||
|
@ -405,8 +403,8 @@ namespace datalog {
|
|||
strm << "x" << i;
|
||||
vars.push_back(m.mk_const(symbol(strm.str().c_str()), sig[i]));
|
||||
}
|
||||
sub(fml1, vars.size(), vars.c_ptr(), fml1);
|
||||
sub(fml2, vars.size(), vars.c_ptr(), fml2);
|
||||
fml1 = sub(fml1, vars.size(), vars.c_ptr());
|
||||
fml2 = sub(fml2, vars.size(), vars.c_ptr());
|
||||
check_equiv("filter", fml1, fml2);
|
||||
}
|
||||
|
||||
|
@ -453,8 +451,8 @@ namespace datalog {
|
|||
strm << "x" << i;
|
||||
vars.push_back(m.mk_const(symbol(strm.str().c_str()), sig[i]));
|
||||
}
|
||||
sub(fml1, vars.size(), vars.c_ptr(), fml1);
|
||||
sub(fml2, vars.size(), vars.c_ptr(), fml2);
|
||||
fml1 = sub(fml1, vars.size(), vars.c_ptr());
|
||||
fml2 = sub(fml2, vars.size(), vars.c_ptr());
|
||||
|
||||
check_equiv("union", fml1, fml2);
|
||||
|
||||
|
@ -466,13 +464,13 @@ namespace datalog {
|
|||
// dst \ dst0 == delta & dst & \ dst0
|
||||
expr_ref fml4(m), fml5(m);
|
||||
fml4 = m.mk_and(fml2, m.mk_not(dst0));
|
||||
sub(fml4, vars.size(), vars.c_ptr(), fml4);
|
||||
sub(d, vars.size(), vars.c_ptr(), d);
|
||||
fml4 = sub(fml4, vars.size(), vars.c_ptr());
|
||||
d = sub(d, vars.size(), vars.c_ptr());
|
||||
check_contains("union_delta low", d, fml4);
|
||||
//
|
||||
// delta >= delta0
|
||||
//
|
||||
sub(delta0, vars.size(), vars.c_ptr(), d0);
|
||||
d0 = sub(delta0, vars.size(), vars.c_ptr());
|
||||
check_contains("union delta0", d, d0);
|
||||
|
||||
//
|
||||
|
@ -480,8 +478,8 @@ namespace datalog {
|
|||
//
|
||||
fml4 = m.mk_or(fml2, delta0);
|
||||
fml5 = m.mk_or(d, dst0);
|
||||
sub(fml4, vars.size(), vars.c_ptr(), fml4);
|
||||
sub(fml5, vars.size(), vars.c_ptr(), fml5);
|
||||
fml4 = sub(fml4, vars.size(), vars.c_ptr());
|
||||
fml5 = sub(fml5, vars.size(), vars.c_ptr());
|
||||
check_equiv("union no overflow", fml4, fml5);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -725,8 +725,7 @@ namespace datalog {
|
|||
}
|
||||
}
|
||||
|
||||
expr_ref renamed(m);
|
||||
m_context.get_var_subst()(filter_cond, binding.size(), binding.c_ptr(), renamed);
|
||||
expr_ref renamed = m_context.get_var_subst()(filter_cond, binding.size(), binding.c_ptr());
|
||||
app_ref app_renamed(to_app(renamed), m);
|
||||
if (remove_columns.empty()) {
|
||||
if (!dealloc)
|
||||
|
|
|
@ -1311,8 +1311,7 @@ namespace datalog {
|
|||
if(m_rel_cond_columns.empty()) {
|
||||
expr_ref_vector renaming(m_manager);
|
||||
get_renaming_args(r.m_sig2table, r.get_signature(), renaming);
|
||||
expr_ref table_cond(m_manager);
|
||||
m_subst(condition, renaming.size(), renaming.c_ptr(), table_cond);
|
||||
expr_ref table_cond = m_subst(condition, renaming.size(), renaming.c_ptr());
|
||||
m_table_filter = rmgr.mk_filter_interpreted_fn(r.get_table(), to_app(table_cond));
|
||||
}
|
||||
else {
|
||||
|
@ -1361,9 +1360,7 @@ namespace datalog {
|
|||
continue;
|
||||
}
|
||||
if(!m_rel_filter) {
|
||||
expr_ref inner_cond(m_manager);
|
||||
m_subst(m_cond, m_renaming_for_inner_rel.size(), m_renaming_for_inner_rel.c_ptr(),
|
||||
inner_cond);
|
||||
expr_ref inner_cond = m_subst(m_cond, m_renaming_for_inner_rel.size(), m_renaming_for_inner_rel.c_ptr());
|
||||
m_rel_filter = rmgr.mk_filter_interpreted_fn(*inner, to_app(inner_cond));
|
||||
}
|
||||
(*m_rel_filter)(*inner);
|
||||
|
@ -1411,11 +1408,10 @@ namespace datalog {
|
|||
|
||||
//create the condition with table values substituted in and relation values properly renamed
|
||||
expr_ref inner_cond(m_manager);
|
||||
m_subst(m_cond, m_renaming_for_inner_rel.size(), m_renaming_for_inner_rel.c_ptr(),
|
||||
inner_cond);
|
||||
inner_cond = m_subst(m_cond, m_renaming_for_inner_rel.size(), m_renaming_for_inner_rel.c_ptr());
|
||||
|
||||
relation_base * new_rel = old_rel.clone();
|
||||
|
||||
|
||||
scoped_ptr<relation_mutator_fn> filter = rmgr.mk_filter_interpreted_fn(*new_rel, to_app(inner_cond));
|
||||
(*filter)(*new_rel);
|
||||
|
||||
|
|
|
@ -471,8 +471,7 @@ namespace datalog {
|
|||
SASSERT(!r.is_undefined(i) || !contains_var(m_new_rule, i));
|
||||
subst_arg[ofs-i] = r.m_data.get(i);
|
||||
}
|
||||
expr_ref res(m_manager);
|
||||
m_subst(m_new_rule, subst_arg.size(), subst_arg.c_ptr(), res);
|
||||
expr_ref res = m_subst(m_new_rule, subst_arg.size(), subst_arg.c_ptr());
|
||||
r.m_data[m_col_idx] = to_app(res);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -237,8 +237,8 @@ namespace datalog {
|
|||
expr_ref_vector norm_subst = get_normalizer(t1, t2);
|
||||
expr_ref t1n_ref(m);
|
||||
expr_ref t2n_ref(m);
|
||||
m_var_subst(t1, norm_subst.size(), norm_subst.c_ptr(), t1n_ref);
|
||||
m_var_subst(t2, norm_subst.size(), norm_subst.c_ptr(), t2n_ref);
|
||||
t1n_ref = m_var_subst(t1, norm_subst.size(), norm_subst.c_ptr());
|
||||
t2n_ref = m_var_subst(t2, norm_subst.size(), norm_subst.c_ptr());
|
||||
app * t1n = to_app(t1n_ref);
|
||||
app * t2n = to_app(t2n_ref);
|
||||
if (t1n->get_id() > t2n->get_id()) {
|
||||
|
@ -531,7 +531,7 @@ namespace datalog {
|
|||
expr_ref_vector normalizer = get_normalizer(rt1, rt2);
|
||||
reverse_renaming(m, normalizer, denormalizer);
|
||||
expr_ref new_transf(m);
|
||||
m_var_subst(t_new, denormalizer.size(), denormalizer.c_ptr(), new_transf);
|
||||
new_transf = m_var_subst(t_new, denormalizer.size(), denormalizer.c_ptr());
|
||||
var_idx_set transf_vars = rm.collect_vars(new_transf);
|
||||
TRACE("dl", tout << mk_pp(rt1, m) << " " << mk_pp(rt2, m) << " -> " << new_transf << "\n";);
|
||||
counter.count_vars(rt2, -1);
|
||||
|
@ -549,7 +549,7 @@ namespace datalog {
|
|||
TRACE("dl", tout << normalizer << "\nnorm\n" << normalizer2 << "\n";);
|
||||
denormalizer.reset();
|
||||
reverse_renaming(m, normalizer2, denormalizer);
|
||||
m_var_subst(t_new, denormalizer.size(), denormalizer.c_ptr(), new_transf);
|
||||
new_transf = m_var_subst(t_new, denormalizer.size(), denormalizer.c_ptr());
|
||||
SASSERT(non_local_vars.subset_of(rm.collect_vars(new_transf)));
|
||||
TRACE("dl", tout << mk_pp(rt2, m) << " " << mk_pp(rt1, m) << " -> " << new_transf << "\n";);
|
||||
}
|
||||
|
|
|
@ -1395,8 +1395,7 @@ namespace datalog {
|
|||
args.push_back(m_decl_util.mk_numeral(el, m_free_vars[i]));
|
||||
}
|
||||
|
||||
expr_ref ground(m_ast_manager);
|
||||
m_vs(m_condition.get(), args.size(), args.c_ptr(), ground);
|
||||
expr_ref ground = m_vs(m_condition.get(), args.size(), args.c_ptr());
|
||||
m_simp(ground);
|
||||
|
||||
return m_ast_manager.is_false(ground);
|
||||
|
|
|
@ -85,7 +85,7 @@ namespace datalog {
|
|||
s.push_back(m.mk_var(idx, sig[i]));
|
||||
}
|
||||
get_inner().to_formula(tmp);
|
||||
get_plugin().get_context().get_var_subst()(tmp, sz, s.c_ptr(), fml);
|
||||
fml = get_plugin().get_context().get_var_subst()(tmp, sz, s.c_ptr());
|
||||
}
|
||||
|
||||
|
||||
|
@ -584,8 +584,7 @@ namespace datalog {
|
|||
}
|
||||
subst_vect[subst_ofs-i] = m.mk_var(r.m_sig2inner[i], sig[i]);
|
||||
}
|
||||
expr_ref inner_cond(m);
|
||||
get_context().get_var_subst()(condition, subst_vect.size(), subst_vect.c_ptr(), inner_cond);
|
||||
expr_ref inner_cond = get_context().get_var_subst()(condition, subst_vect.size(), subst_vect.c_ptr());
|
||||
|
||||
relation_mutator_fn * inner_fun = get_manager().mk_filter_interpreted_fn(r.get_inner(), to_app(inner_cond));
|
||||
if(!inner_fun) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue