/* Copyright (c) 2016 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Daniel Selsam */ #include "library/inductive_compiler/ginductive.h" #include "library/inductive_compiler/add_decl.h" #include "library/inductive_compiler/compiler.h" #include "library/constructions/has_sizeof.h" #include "library/constants.h" namespace lean { environment add_inductive_declaration(environment const & old_env, options const & opts, name_map implicit_infer_map, buffer const & lp_names, buffer const & params, buffer const & inds, buffer > const & intro_rules, bool is_trusted) { ginductive_decl decl(0, lp_names, params, inds, intro_rules); environment env = add_inner_inductive_declaration(old_env, opts, implicit_infer_map, decl, is_trusted); return env; } environment add_structure_declaration_aux(environment const & env, options const &, buffer const & lp_names, buffer const & params, expr const & ind, expr const & intro_rule) { buffer inds; inds.push_back(ind); buffer > intro_rules; intro_rules.emplace_back(); intro_rules.back().push_back(intro_rule); ginductive_decl decl(0, lp_names, params, inds, intro_rules); environment new_env = env; if (mlocal_name(ind) != get_has_sizeof_name()) new_env = mk_has_sizeof(new_env, mlocal_name(ind)); return register_ginductive_decl(new_env, decl, ginductive_kind::BASIC); } }