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:
parent
8ff4036f68
commit
5a5e39ae74
4 changed files with 26 additions and 19 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue