mirror of
https://github.com/Z3Prover/z3
synced 2025-08-08 12:11:23 +00:00
prune dead states from automata
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e8198bbbe3
commit
059bad909a
5 changed files with 70 additions and 22 deletions
|
@ -645,7 +645,7 @@ void asserted_formulas::propagate_values() {
|
|||
new_prs2.push_back(pr);
|
||||
}
|
||||
}
|
||||
TRACE("propagate_values", tout << "found: " << found << "\n";);
|
||||
TRACE("propagate_values", tout << "found: " << found << "\n" << new_exprs2 << "\n";);
|
||||
// If C is not empty, then reduce R using the updated simplifier cache with entries
|
||||
// x -> n for each constraint 'x = n' in C.
|
||||
if (found) {
|
||||
|
@ -656,6 +656,7 @@ void asserted_formulas::propagate_values() {
|
|||
expr_ref new_n(m);
|
||||
proof_ref new_pr(m);
|
||||
m_simplifier(n, new_n, new_pr);
|
||||
TRACE("propagate_values", tout << mk_pp(n, m) << " -> " << new_n << "\n";);
|
||||
if (n == new_n.get()) {
|
||||
push_assertion(n, pr, new_exprs1, new_prs1);
|
||||
}
|
||||
|
|
|
@ -492,6 +492,7 @@ namespace smt {
|
|||
|
||||
virtual void assign_eh(quantifier * q) {
|
||||
m_active = true;
|
||||
ast_manager& m = m_context->get_manager();
|
||||
if (!m_fparams->m_ematching) {
|
||||
return;
|
||||
}
|
||||
|
@ -514,7 +515,11 @@ namespace smt {
|
|||
app * mp = to_app(q->get_pattern(i));
|
||||
SASSERT(m_context->get_manager().is_pattern(mp));
|
||||
bool unary = (mp->get_num_args() == 1);
|
||||
if (!unary && j >= num_eager_multi_patterns) {
|
||||
if (m.is_rec_fun_def(q) && i > 0) {
|
||||
// add only the first pattern
|
||||
TRACE("quantifier", tout << "skip recursive function body " << mk_ismt2_pp(mp, m) << "\n";);
|
||||
}
|
||||
else if (!unary && j >= num_eager_multi_patterns) {
|
||||
TRACE("quantifier", tout << "delaying (too many multipatterns):\n" << mk_ismt2_pp(mp, m_context->get_manager()) << "\n"
|
||||
<< "j: " << j << " unary: " << unary << " m_params.m_qi_max_eager_multipatterns: " << m_fparams->m_qi_max_eager_multipatterns
|
||||
<< " num_eager_multi_patterns: " << num_eager_multi_patterns << "\n";);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue