Beispiel #1
0
 virtual expr visit_app(expr const & e) {
     buffer<expr> args;
     expr const & f = get_app_rev_args(e, args);
     if (is_metavar(f)) {
         if (auto p1 = m_subst.get_expr_assignment(mlocal_name(f))) {
             if (m_use_jst)
                 save_jst(p1->second);
             expr new_app = apply_beta(p1->first, args.size(), args.data());
             return visit(new_app);
         }
     }
     expr new_f = visit(f);
     buffer<expr> new_args;
     bool modified = !is_eqp(new_f, f);
     for (expr const & arg : args) {
         expr new_arg = visit(arg);
         if (!is_eqp(arg, new_arg))
             modified = true;
         new_args.push_back(new_arg);
     }
     if (!modified)
         return e;
     else
         return mk_rev_app(new_f, new_args);
 }
Beispiel #2
0
 expr normalize_app(expr const & e) {
     buffer<expr> args;
     expr f = get_app_rev_args(e, args);
     for (expr & a : args)
         a = normalize(a);
     return mk_rev_app(f, args);
 }
Beispiel #3
0
list<expr> goal::to_context() const {
    buffer<expr> locals;
    get_app_rev_args(m_meta, locals);
    return to_list(locals.begin(), locals.end());
}
Beispiel #4
0
name get_unused_name(name const & prefix, expr const & meta) {
    buffer<expr> locals;
    get_app_rev_args(meta, locals);
    return get_unused_name(prefix, locals);
}