IndrecSourceErrors related to recursors building
type recursion_scheme_error = | NotAllowedCaseAnalysis of bool * Sorts.t * Constr.pinductive| NotMutualInScheme of Names.inductive * Names.inductive| NotAllowedDependentAnalysis of bool * Names.inductiveEliminations
Build a case analysis elimination scheme in some sort
type case_analysis = private {case_params : EConstr.rel_context;case_pred : Names.Name.t EConstr.binder_annot * EConstr.types;case_branches : EConstr.rel_context;case_arity : EConstr.rel_context;case_body : EConstr.t;case_type : EConstr.t;}val check_valid_elimination :
Environ.env ->
Evd.evar_map ->
Names.inductive EConstr.puniverses ->
dep:bool ->
EConstr.ESorts.t ->
Evd.evar_mapval build_case_analysis_scheme :
Environ.env ->
Evd.evar_map ->
Names.inductive EConstr.puniverses ->
dep_flag ->
EConstr.ESorts.t ->
Evd.evar_map * case_analysisBuild a dependent case elimination predicate unless type is in Prop or is a recursive record with primitive projections.
val build_case_analysis_scheme_default :
Environ.env ->
Evd.evar_map ->
Names.inductive EConstr.puniverses ->
EConstr.ESorts.t ->
Evd.evar_map * case_analysisBuilds a recursive induction scheme (Peano-induction style) in the given sort.
val build_induction_scheme :
Environ.env ->
Evd.evar_map ->
Names.inductive EConstr.puniverses ->
dep_flag ->
EConstr.ESorts.t ->
Evd.evar_map * EConstr.constrBuilds mutual (recursive) induction schemes
val build_mutual_induction_scheme :
Environ.env ->
Evd.evar_map ->
?force_mutual:bool ->
(Names.inductive EConstr.puniverses * dep_flag * EConstr.ESorts.t) list ->
Evd.evar_map * EConstr.constr listRecursor names utilities
Default dependence of eliminations for Prop inductives
val pseudo_sort_family_for_elim :
Names.inductive ->
Declarations.one_inductive_body ->
Sorts.family