3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 11:07:51 +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:
Nikolaj Bjorner 2014-09-15 16:14:22 -07:00
parent 73070585b8
commit c09903288f
39 changed files with 300 additions and 303 deletions

View file

@ -216,11 +216,13 @@ namespace tb {
}
void get_free_vars(ptr_vector<sort>& vars) const {
::get_free_vars(m_head, vars);
expr_free_vars fv;
fv(m_head);
for (unsigned i = 0; i < m_predicates.size(); ++i) {
::get_free_vars(m_predicates[i], vars);
fv.accumulate(m_predicates[i]);
}
::get_free_vars(m_constraint, vars);
fv.accumulate(m_constraint);
vars.append(fv.size(), fv.c_ptr());
}
expr_ref to_formula() const {
@ -1107,16 +1109,16 @@ namespace tb {
m_S1.apply(2, delta, expr_offset(tgt.get_constraint(), 0), tmp);
m_S1.apply(2, delta, expr_offset(src.get_constraint(), 1), tmp2);
constraint = m.mk_and(tmp, tmp2);
ptr_vector<sort> vars;
// perform trival quantifier-elimination:
uint_set index_set;
get_free_vars(head, vars);
expr_free_vars fv;
fv(head);
for (unsigned i = 0; i < predicates.size(); ++i) {
get_free_vars(predicates[i].get(), vars);
fv.accumulate(predicates[i].get());
}
for (unsigned i = 0; i < vars.size(); ++i) {
if (vars[i]) {
for (unsigned i = 0; i < fv.size(); ++i) {
if (fv[i]) {
index_set.insert(i);
}
}
@ -1127,7 +1129,7 @@ namespace tb {
// initialize rule.
result->init(head, predicates, constraint);
vars.reset();
ptr_vector<sort> vars;
result->get_free_vars(vars);
bool change = false;
var_ref w(m);