IndrecErrors related to recursors building
type recursion_scheme_error = | NotAllowedCaseAnalysis of Evd.evar_map * bool * Sorts.t * Constr.pinductive |
| NotMutualInScheme of Names.inductive * Names.inductive |
| NotAllowedDependentAnalysis of bool * Names.inductive |
exception RecursionSchemeError of Environ.env * recursion_scheme_errorEliminations
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 Evd.puniverses -> dep:bool -> EConstr.ESorts.t -> Evd.evar_mapval eval_case_analysis : case_analysis -> EConstr.t * EConstr.typesval default_case_analysis_dependence : Environ.env -> Names.inductive -> boolval build_case_analysis_scheme : Environ.env -> Evd.evar_map -> Names.inductive Evd.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 Evd.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 Evd.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 Evd.puniverses * dep_flag * EConstr.ESorts.t) list -> Evd.evar_map * EConstr.constr listDefault dependence of eliminations for Prop inductives
val declare_prop_but_default_dependent_elim : Names.inductive -> unitval is_prop_but_default_dependent_elim : Names.inductive -> boolval pseudo_sort_quality_for_elim : Names.inductive -> Declarations.one_inductive_body -> Sorts.Quality.t