diff --git a/src/kernel/inductive/inductive.cpp b/src/kernel/inductive/inductive.cpp index 88e34f63b2..229aa28c39 100644 --- a/src/kernel/inductive/inductive.cpp +++ b/src/kernel/inductive/inductive.cpp @@ -187,7 +187,7 @@ struct add_inductive_fn { m_env(env), m_level_names(level_params), m_num_params(num_params), m_decls(decls), m_ngen(g_tmp_prefix), m_tc(m_env) { m_decls_sz = length(m_decls); - m_levels = map2(level_params, [](name const & n) { return mk_param_univ(n); }); + m_levels = param_names_to_levels(level_params); } /** \brief Return the number of inductive datatypes being defined. */ diff --git a/src/kernel/level.cpp b/src/kernel/level.cpp index de11328200..e98e1b186f 100644 --- a/src/kernel/level.cpp +++ b/src/kernel/level.cpp @@ -686,5 +686,8 @@ bool is_geq_core(level l1, level l2) { bool is_geq(level const & l1, level const & l2) { return is_geq_core(normalize(l1), normalize(l2)); } +levels param_names_to_levels(level_param_names const & ps) { + return map2(ps, [](name const & p) { return mk_param_univ(p); }); +} } void print(lean::level const & l) { std::cout << l << std::endl; } diff --git a/src/kernel/level.h b/src/kernel/level.h index 9ffdee3068..a23eff63b3 100644 --- a/src/kernel/level.h +++ b/src/kernel/level.h @@ -218,5 +218,7 @@ format pp(level const & l, options const & opts = options()); format pp(level const & lhs, level const & rhs, bool unicode, unsigned indent); /** \brief Pretty print lhs <= rhs using the given configuration options. */ format pp(level const & lhs, level const & rhs, options const & opts = options()); +/** \brief Convert a list of universe level parameter names into a list of levels. */ +levels param_names_to_levels(level_param_names const & ps); } void print(lean::level const & l); diff --git a/src/library/scope.cpp b/src/library/scope.cpp index 969f6f20c5..204d134e11 100644 --- a/src/library/scope.cpp +++ b/src/library/scope.cpp @@ -39,7 +39,7 @@ struct decl_info { decl_info(unsigned pos, level_param_names const & lvl_deps, dependencies const & var_deps, expr const & type, binder_info const & bi, bool local): m_pos(pos), m_level_deps(lvl_deps), m_var_deps(var_deps), m_type(type), m_binder_info(bi), m_local(local) { - m_levels = map2(m_level_deps, [](name const & n) { return mk_param_univ(n); }); + m_levels = param_names_to_levels(m_level_deps); } }; @@ -342,7 +342,7 @@ environment add_inductive(environment env, } // collect new params and level_params level_param_names extra_ls = ctx.mk_level_deps(); - levels extra_lvls = map2(extra_ls, [](name const & n) { return mk_param_univ(n); }); + levels extra_lvls = param_names_to_levels(extra_ls); dependencies extra_ps = ctx.mk_var_deps(); unsigned new_num_params = num_params + extra_ps.size(); level_param_names new_ls = append(extra_ls, s_level_params);