mirror of
https://github.com/Z3Prover/z3
synced 2025-07-18 02:16:40 +00:00
have free variable utility use a class for more efficient re-use
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
73070585b8
commit
c09903288f
39 changed files with 300 additions and 303 deletions
|
@ -120,7 +120,7 @@ namespace datalog {
|
|||
obj_map<rule, rule*>::iterator end = m_rule2slice.end();
|
||||
expr_ref fml(m);
|
||||
for (; it != end; ++it) {
|
||||
it->m_value->to_formula(fml);
|
||||
rm.to_formula(*it->m_value, fml);
|
||||
m_pinned_exprs.push_back(fml);
|
||||
TRACE("dl",
|
||||
tout << "orig: " << mk_pp(fml, m) << "\n";
|
||||
|
@ -238,7 +238,7 @@ namespace datalog {
|
|||
r3->display(m_ctx, tout << "res:"););
|
||||
r1 = r3;
|
||||
}
|
||||
r1->to_formula(concl);
|
||||
rm.to_formula(*r1.get(), concl);
|
||||
proof* new_p = m.mk_hyper_resolve(premises.size(), premises.c_ptr(), concl, positions, substs);
|
||||
m_pinned_exprs.push_back(new_p);
|
||||
m_pinned_rules.push_back(r1.get());
|
||||
|
@ -676,10 +676,10 @@ namespace datalog {
|
|||
}
|
||||
|
||||
void mk_slice::add_free_vars(uint_set& result, expr* e) {
|
||||
ptr_vector<sort> sorts;
|
||||
get_free_vars(e, sorts);
|
||||
for (unsigned i = 0; i < sorts.size(); ++i) {
|
||||
if (sorts[i]) {
|
||||
expr_free_vars fv;
|
||||
fv(e);
|
||||
for (unsigned i = 0; i < fv.size(); ++i) {
|
||||
if (fv[i]) {
|
||||
result.insert(i);
|
||||
}
|
||||
}
|
||||
|
@ -773,14 +773,11 @@ namespace datalog {
|
|||
init_vars(r);
|
||||
app_ref_vector tail(m);
|
||||
app_ref head(m);
|
||||
ptr_vector<sort> sorts;
|
||||
update_predicate(r.get_head(), head);
|
||||
get_free_vars(head.get(), sorts);
|
||||
for (unsigned i = 0; i < r.get_uninterpreted_tail_size(); ++i) {
|
||||
app_ref t(m);
|
||||
update_predicate(r.get_tail(i), t);
|
||||
tail.push_back(t);
|
||||
get_free_vars(t, sorts);
|
||||
}
|
||||
expr_ref_vector conjs = get_tail_conjs(r);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue