IndrecErrors 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.inductive | 
exception RecursionSchemeError of Environ.env * recursion_scheme_errorEliminations
Build a case analysis elimination scheme in some sort family
type case_analysis = private {| case_params : EConstr.rel_context; | 
| case_pred : Names.Name.t Context.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 ->
  Constr.pinductive ->
  dep:bool ->
  Sorts.family ->
  unitval 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 ->
  Constr.pinductive ->
  dep_flag ->
  Sorts.family ->
  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 ->
  Constr.pinductive ->
  Sorts.family ->
  Evd.evar_map * case_analysisBuilds a recursive induction scheme (Peano-induction style) in the same sort family as the inductive family; it is dependent if not in Prop or a recursive record with primitive projections.
val build_induction_scheme : 
  Environ.env ->
  Evd.evar_map ->
  Constr.pinductive ->
  dep_flag ->
  Sorts.family ->
  Evd.evar_map * Constr.constrBuilds mutual (recursive) induction schemes
val build_mutual_induction_scheme : 
  Environ.env ->
  Evd.evar_map ->
  ?force_mutual:bool ->
  (Constr.pinductive * dep_flag * Sorts.family) list ->
  Evd.evar_map * Constr.constr listScheme combinators
weaken_sort_scheme env sigma eq s n c t derives by subtyping from c:t whose conclusion is quantified on Type i at position n of t a scheme quantified on sort s. set asks for s be declared equal to i, otherwise just less or equal to i.
val weaken_sort_scheme : 
  Environ.env ->
  Evd.evar_map ->
  bool ->
  EConstr.ESorts.t ->
  int ->
  Constr.constr ->
  Constr.types ->
  Evd.evar_map * Constr.types * Constr.constrRecursor names utilities
val lookup_eliminator : 
  Environ.env ->
  Names.inductive ->
  Sorts.family ->
  Names.GlobRef.tval elimination_suffix : Sorts.family -> stringval make_elimination_ident : Names.Id.t -> Sorts.family -> Names.Id.t