Indrec
Errors 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_error
Eliminations
Build a case analysis elimination scheme in some sort family
val build_case_analysis_scheme : Environ.env -> Evd.evar_map -> Constr.pinductive -> dep_flag -> Sorts.family -> Evd.evar_map * Constr.t * Constr.types
Build 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 * Constr.t * Constr.types
Builds 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.constr
Builds 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 list
Scheme 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 -> Sorts.t -> int -> Constr.constr -> Constr.types -> Evd.evar_map * Constr.types * Constr.constr
Recursor names utilities
val lookup_eliminator : Environ.env -> Names.inductive -> Sorts.family -> Names.GlobRef.t
val elimination_suffix : Sorts.family -> string
val make_elimination_ident : Names.Id.t -> Sorts.family -> Names.Id.t