feat(library/vm/vm_expr): export instantiate_univ_params

This commit is contained in:
Johannes Hölzl 2017-02-15 23:54:27 -05:00 committed by Leonardo de Moura
parent 3db0ebdcf0
commit bb4920fcbc
2 changed files with 16 additions and 2 deletions

View file

@ -83,8 +83,9 @@ meta def expr.abstract : expr → expr → expr
| e (expr.local_const n m bi t) := e^.abstract_local n
| e _ := e
meta constant expr.instantiate_var : expr → expr → expr
meta constant expr.instantiate_vars : expr → list expr → expr
meta constant expr.instantiate_univ_params : expr → list (name × level) → expr
meta constant expr.instantiate_var : expr → expr → expr
meta constant expr.instantiate_vars : expr → list expr → expr
meta constant expr.has_var : expr → bool
meta constant expr.has_var_idx : expr → nat → bool

View file

@ -258,6 +258,18 @@ vm_obj expr_replace(vm_obj const & e, vm_obj const & fn) {
return to_obj(r);
}
vm_obj expr_instantiate_univ_params(vm_obj const & e, vm_obj const & nls) {
list<name> names = to_list<name>(nls, [](vm_obj const & p) {
lean_assert(csize(p) == 2);
return to_name(cfield(p, 0));
} );
list<level> levels = to_list<level>(nls, [](vm_obj const & p) {
lean_assert(csize(p) == 2);
return to_level(cfield(p, 1));
} );
return to_obj(instantiate_univ_params(to_expr(e), names, levels));
}
vm_obj expr_instantiate_var(vm_obj const & e, vm_obj const & v) {
return to_obj(instantiate(to_expr(e), to_expr(v)));
}
@ -452,6 +464,7 @@ void initialize_vm_expr() {
DECLARE_VM_BUILTIN(name({"expr", "lex_lt"}), expr_lex_lt);
DECLARE_VM_BUILTIN(name({"expr", "fold"}), expr_fold);
DECLARE_VM_BUILTIN(name({"expr", "replace"}), expr_replace);
DECLARE_VM_BUILTIN(name({"expr", "instantiate_univ_params"}), expr_instantiate_univ_params);
DECLARE_VM_BUILTIN(name({"expr", "instantiate_var"}), expr_instantiate_var);
DECLARE_VM_BUILTIN(name({"expr", "instantiate_vars"}), expr_instantiate_vars);
DECLARE_VM_BUILTIN(name({"expr", "abstract_local"}), expr_abstract_local);