Indschemes
type resolved_scheme = Names.Id.t CAst.t * Indrec.dep_flag * Names.inductive * Sorts.family
See also Auto_ind_decl, Indrec, Eqscheme, Ind_tables, ...
val name_and_process_schemes : Environ.env -> (Names.lident option * Vernacexpr.scheme) list -> resolved_scheme list
Resolve the names of a list of inductive schemes with respect to an environment
Build and register the boolean equalities associated to an inductive type
val declare_beq_scheme : Names.MutInd.t -> unit
val declare_eq_decidability : Names.MutInd.t -> unit
Build and register a congruence scheme for an equality-like inductive type
val declare_congr_scheme : Names.inductive -> unit
Build and register rewriting schemes for an equality-like inductive type
val declare_rewriting_schemes : Names.inductive -> unit
Mutual Minimality/Induction scheme. force_mutual
forces the construction of eliminators having the same predicates and methods even if some of the inductives are not recursive. By default it is false
and some of the eliminators are defined as simple case analysis.
val do_mutual_induction_scheme : ?force_mutual:bool -> Environ.env -> resolved_scheme list -> unit
Main calls to interpret the Scheme command
val do_scheme : Environ.env -> (Names.Id.t CAst.t option * Vernacexpr.scheme) list -> unit
Main call to Scheme Equality command
val do_scheme_equality : Vernacexpr.equality_scheme_type -> Libnames.qualid Constrexpr.or_by_notation -> unit
Combine a list of schemes into a conjunction of them
val build_combined_scheme : Environ.env -> Names.Constant.t list -> Evd.evar_map * Constr.constr * Constr.types
val do_combined_scheme : Names.lident -> Names.lident list -> unit
Hook called at each inductive type definition
val declare_default_schemes : Names.MutInd.t -> unit