lean4-htt/src/library/inductive_compiler/compiler.cpp
2018-05-31 11:18:00 -07:00

43 lines
1.8 KiB
C++

/*
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Daniel Selsam
*/
#include "kernel/inductive/inductive.h"
#include "kernel/abstract.h"
#include "util/sexpr/option_declarations.h"
#include "library/locals.h"
#include "library/module.h"
#include "library/attribute_manager.h"
#include "library/inductive_compiler/compiler.h"
#include "library/inductive_compiler/basic.h"
#include "library/inductive_compiler/mutual.h"
#include "library/inductive_compiler/nested.h"
#include "library/inductive_compiler/ginductive.h"
namespace lean {
environment add_inner_inductive_declaration(environment const & env, name_generator & ngen, options const & opts,
name_map<implicit_infer_kind> implicit_infer_map,
ginductive_decl & decl, bool is_meta) {
lean_assert(decl.get_inds().size() == decl.get_intro_rules().size());
if (!is_meta) {
if (optional<environment> new_env = add_nested_inductive_decl(env, ngen, opts, implicit_infer_map, decl,
is_meta)) {
return register_ginductive_decl(*new_env, decl, ginductive_kind::NESTED);
}
}
if (decl.is_mutual()) {
return register_ginductive_decl(add_mutual_inductive_decl(env, ngen, opts, implicit_infer_map, decl, is_meta),
decl, ginductive_kind::MUTUAL);
} else {
lean_assert(!decl.is_mutual());
return register_ginductive_decl(add_basic_inductive_decl(env, opts, implicit_infer_map, decl, is_meta),
decl, ginductive_kind::BASIC);
}
}
void initialize_inductive_compiler() {}
void finalize_inductive_compiler() {}
}