virtual pair<expr, constraint_seq> check_type(expr const & m, extension_context & ctx, bool infer_only) const {
     environment const & env = ctx.env();
     check_num_args(env, m);
     if (!infer_only)
         infer_type(macro_arg(m, 0), ctx, infer_only);
     expr l     = whnf(macro_arg(m, 0), ctx);
     expr not_l = whnf(mk_app(*g_not, l), ctx);
     expr C1    = infer_type(macro_arg(m, 1), ctx, infer_only);
     expr C2    = infer_type(macro_arg(m, 2), ctx, infer_only);
     return mk_pair(mk_resolvent(env, ctx, m, l, not_l, C1, C2), constraint_seq());
 }
Beispiel #2
0
 virtual pair<bool, constraint_seq> is_def_eq(expr const &, expr const &, type_checker &, delayed_justification &) {
     return mk_pair(true, constraint_seq());
 }
Beispiel #3
0
 virtual pair<expr, constraint_seq> whnf(expr const & e, type_checker &) {
     return mk_pair(e, constraint_seq());
 }
Beispiel #4
0
 expr operator()(level_param_names const & ls, expr const & e) {
     m_cnstrs = constraint_seq();
     return m_tc.with_params(ls, [&]() {
             return normalize(e);
         });
 }
Beispiel #5
0
 expr operator()(expr const & e) {
     m_cnstrs = constraint_seq();
     return normalize(e);
 }