3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-23 00:37:36 +00:00
z3/src/ast/rewriter/recfun_rewriter.h
Nikolaj Bjorner 4ef799ada4 fix #8109
default behavior is conservative: if the body of a recursive function contains uninterpreted variables they are not rewritten.
Model evaluation will bind values to uninterpreted variables so the filter should not apply here.
2026-02-18 20:57:05 -08:00

39 lines
683 B
C++

/*++
Copyright (c) 2018 Microsoft Corporation
Module Name:
recfun_rewriter.h
Abstract:
Rewriter recursive function applications to values
Author:
Nikolaj Bjorner (nbjorner) 2020-04-26
--*/
#pragma once
#include "ast/recfun_decl_plugin.h"
#include "ast/rewriter/rewriter.h"
class recfun_rewriter {
ast_manager& m;
recfun::util m_rec;
bool m_recfun_unfold = false;
public:
recfun_rewriter(ast_manager& m): m(m), m_rec(m) {}
br_status mk_app_core(func_decl * f, unsigned num_args, expr * const * args, expr_ref & result);
family_id get_fid() const { return m_rec.get_family_id(); }
void updt_params(params_ref const &p);
};