mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
make default argument to ensure_def and mk_def explicit
- insert also macro definitions into models
This commit is contained in:
parent
c64d61bd0a
commit
f17691715b
4 changed files with 28 additions and 23 deletions
|
@ -492,7 +492,7 @@ namespace recfun {
|
|||
def* plugin::mk_def(replace& subst, bool is_macro,
|
||||
symbol const& name, unsigned n, sort ** params, sort * range,
|
||||
unsigned n_vars, var ** vars, expr * rhs) {
|
||||
promise_def d = mk_def(name, n, params, range);
|
||||
promise_def d = mk_def(name, n, params, range, false);
|
||||
SASSERT(! m_defs.contains(d.get_def()->get_decl()));
|
||||
set_definition(subst, d, is_macro, n_vars, vars, rhs);
|
||||
return d.get_def();
|
||||
|
@ -581,7 +581,7 @@ namespace recfun {
|
|||
}
|
||||
|
||||
symbol fresh_name("fold-rec-" + std::to_string(m().mk_fresh_id()));
|
||||
auto pd = mk_def(fresh_name, n, domain.data(), max_expr->get_sort());
|
||||
auto pd = mk_def(fresh_name, n, domain.data(), max_expr->get_sort(), false);
|
||||
func_decl* f = pd.get_def()->get_decl();
|
||||
expr_ref new_body(m().mk_app(f, n, args.data()), m());
|
||||
set_definition(subst, pd, false, n, vars, max_expr);
|
||||
|
|
|
@ -192,9 +192,9 @@ namespace recfun {
|
|||
|
||||
void get_op_names(svector<builtin_name> & op_names, symbol const & logic) override;
|
||||
|
||||
promise_def mk_def(symbol const& name, unsigned n, sort *const * params, sort * range, bool is_generated = false);
|
||||
promise_def mk_def(symbol const& name, unsigned n, sort *const * params, sort * range, bool is_generated);
|
||||
|
||||
promise_def ensure_def(symbol const& name, unsigned n, sort *const * params, sort * range, bool is_generated = false);
|
||||
promise_def ensure_def(symbol const& name, unsigned n, sort *const * params, sort * range, bool is_generated);
|
||||
|
||||
void set_definition(replace& r, promise_def & d, bool is_macro, unsigned n_vars, var * const * vars, expr * rhs);
|
||||
|
||||
|
@ -248,6 +248,7 @@ namespace recfun {
|
|||
bool is_defined(expr * e) const { return is_app_of(e, m_fid, OP_FUN_DEFINED); }
|
||||
bool is_defined(func_decl* f) const { return is_decl_of(f, m_fid, OP_FUN_DEFINED); }
|
||||
bool is_generated(func_decl* f) const { return is_defined(f) && f->get_parameter(0).get_int() == 1; }
|
||||
bool is_macro(func_decl* f) { return is_defined(f) && get_def(f).is_macro(); }
|
||||
bool is_num_rounds(expr * e) const { return is_app_of(e, m_fid, OP_NUM_ROUNDS); }
|
||||
bool owns_app(app * e) const { return e->get_family_id() == m_fid; }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue