3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-21 21:33:39 +00:00

fix #5032, reset substitution during fold transformation

This commit is contained in:
Nikolaj Bjorner 2021-02-15 14:14:25 -08:00
parent 6bd02e122b
commit c387863da1
3 changed files with 10 additions and 2 deletions

View file

@ -496,6 +496,7 @@ namespace recfun {
if (max_score <= 4)
break;
ptr_vector<sort> domain;
ptr_vector<expr> args;
for (unsigned i = 0; i < n; ++i) {
@ -508,9 +509,10 @@ namespace recfun {
func_decl* f = pd.get_def()->get_decl();
expr_ref new_body(m().mk_app(f, n, args.c_ptr()), m());
set_definition(subst, pd, n, vars, max_expr);
subst.reset();
subst.insert(max_expr, new_body);
result = subst(result);
TRACEFN("substituted\n" << mk_pp(max_expr, m()) << "\n->\n" << new_body << "\n" << result);
TRACEFN("substituted\n" << mk_pp(max_expr, m()) << "\n->\n" << new_body << "\n-result->\n" << result);
}
return result;
}