3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-10 17:58:06 +00:00

wip - dependent expr simpliifer

- simplify iterator over current indices
- add more simplifiers used by asserted_formulas
- improve diagnostics printing
This commit is contained in:
Nikolaj Bjorner 2022-11-30 13:41:40 +07:00
parent bec3acd146
commit b084821a0c
25 changed files with 553 additions and 158 deletions

View file

@ -24,7 +24,7 @@ unsigned dependent_expr_state::num_exprs() {
}
void dependent_expr_state::freeze(func_decl* f) {
if (m_frozen.is_marked(f))
if (m_frozen.is_marked(f) || !is_uninterp(f))
return;
m_frozen_trail.push_back(f);
m_frozen.mark(f, true);
@ -107,3 +107,13 @@ void dependent_expr_state::freeze_suffix() {
freeze_terms(d.fml(), true, visited);
}
}
bool dependent_expr_state::has_quantifiers() {
if (m_has_quantifiers != l_undef)
return m_has_quantifiers == l_true;
bool found = false;
for (unsigned i = qhead(); i < qtail(); ++i)
found |= ::has_quantifiers((*this)[i].fml());
m_has_quantifiers = found ? l_true : l_false;
return m_has_quantifiers == l_true;
}