3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 19:17:53 +00:00

fix incrementality bug for pre-processing: replay has to be invoked on every push regardless.

This commit is contained in:
Nikolaj Bjorner 2024-10-16 12:18:09 -07:00
parent 8ff4036f68
commit 5a5e39ae74
4 changed files with 26 additions and 19 deletions

View file

@ -20,6 +20,19 @@ Author:
#include "ast/converters/generic_model_converter.h"
void model_reconstruction_trail::add_vars(expr* e, ast_mark& free_vars) {
for (expr* t : subterms::all(expr_ref(e, m))) {
if (is_app(t) && is_uninterp(t)) {
func_decl* f = to_app(t)->get_decl();
TRACE("simplifier", tout << "add var " << f->get_name() << "\n");
free_vars.mark(f, true);
if (m_model_vars.is_marked(f))
m_intersects_with_model = true;
}
}
}
// accumulate a set of dependent exprs, updating m_trail to exclude loose
// substitutions that use variables from the dependent expressions.
@ -27,6 +40,8 @@ void model_reconstruction_trail::replay(unsigned qhead, expr_ref_vector& assumpt
if (m_trail.empty())
return;
if (qhead == st.qtail())
return;
ast_mark free_vars;
m_intersects_with_model = false;