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:
parent
73070585b8
commit
c09903288f
39 changed files with 300 additions and 303 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue