package coq-core
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
md5=0cfaa70f569be9494d24c829e6555d46
    
    
  sha512=8ee967c636b67b22a4f34115871d8f9b9114df309afc9ddf5f61275251088c6e21f6cf745811df75554d30f4cebb6682f23eeb2e88b771330c4b60ce3f6bf5e2
    
    
  doc/coq-core.pretyping/Inductiveops/index.html
Module InductiveopsSource
The following three functions are similar to the ones defined in Inductive, but they expect an env
val e_type_of_inductive : 
  Environ.env ->
  Evd.evar_map ->
  Names.inductive EConstr.puniverses ->
  EConstr.typesval type_of_constructor : 
  Environ.env ->
  Names.constructor EConstr.puniverses ->
  EConstr.typesReturn type as quoted by the user
val e_type_of_constructor : 
  Environ.env ->
  Evd.evar_map ->
  Names.constructor EConstr.puniverses ->
  EConstr.typesval type_of_constructors : 
  Environ.env ->
  Names.inductive EConstr.puniverses ->
  EConstr.types arrayval arities_of_constructors : 
  Environ.env ->
  Names.inductive EConstr.puniverses ->
  EConstr.types arrayReturn constructor types in normal form
An inductive type with its parameters (transparently supports reasoning either with only recursively uniform parameters or with all parameters including the recursively non-uniform ones
val make_ind_family : 
  (Names.inductive EConstr.puniverses * EConstr.constr list) ->
  inductive_familyval dest_ind_family : 
  inductive_family ->
  Names.inductive EConstr.puniverses * EConstr.constr listval map_ind_family : 
  (EConstr.constr -> EConstr.constr) ->
  inductive_family ->
  inductive_familyval relevance_of_inductive : 
  Environ.env ->
  Names.inductive EConstr.puniverses ->
  EConstr.ERelevance.tAn inductive type with its parameters and real arguments
val map_inductive_type : 
  (EConstr.constr -> EConstr.constr) ->
  inductive_type ->
  inductive_typeval mis_is_recursive : 
  (Names.inductive
   * Declarations.mutual_inductive_body
   * Declarations.one_inductive_body) ->
  boolval mis_nf_constructor_type : 
  Names.constructor EConstr.puniverses ->
  (Declarations.mutual_inductive_body * Declarations.one_inductive_body) ->
  EConstr.constrExtract information from an inductive name
val inductive_paramdecls : 
  Environ.env ->
  Names.inductive EConstr.puniverses ->
  EConstr.rel_contextval inductive_alldecls : 
  Environ.env ->
  Names.inductive EConstr.puniverses ->
  EConstr.rel_contextExtract information from a constructor name
Is there local defs in params or args ?
val is_squashed : 
  Evd.evar_map ->
  (Declarations.mind_specif * EConstr.EInstance.t) ->
  squash optionval squash_elim_sort : 
  Environ.env ->
  Evd.evar_map ->
  squash ->
  EConstr.ESorts.t ->
  Evd.evar_mapTake into account elimination constraints. When there is an elimination constraint and the predicate is underspecified, i.e. a QSort, we make a non-canonical choice for the return type. Incompatible constraints produce a universe inconsistency.
val is_allowed_elimination : 
  Evd.evar_map ->
  (Declarations.mind_specif * EConstr.EInstance.t) ->
  EConstr.ESorts.t ->
  bool(Co)Inductive records with primitive projections do not have eta-conversion, hence no dependent elimination.
val type_of_projection_knowing_arg : 
  Environ.env ->
  Evd.evar_map ->
  Names.Projection.t ->
  EConstr.t ->
  EConstr.types ->
  EConstr.typesPrimitive projections
Extract information from an inductive family
type constructor_summary = {cs_cstr : Names.constructor EConstr.puniverses;cs_params : EConstr.constr list;cs_nargs : int;cs_args : EConstr.rel_context;cs_concl_realargs : EConstr.constr array;
}val get_constructor : 
  (Names.inductive EConstr.puniverses
   * Declarations.mutual_inductive_body
   * Declarations.one_inductive_body
   * EConstr.constr list) ->
  int ->
  constructor_summaryget_arity returns the arity of the inductive family instantiated with the parameters; if recursively non-uniform parameters are not part of the inductive family, they appears in the arity
val make_arity_signature : 
  Environ.env ->
  Evd.evar_map ->
  bool ->
  inductive_family ->
  EConstr.rel_contextval make_arity : 
  Environ.env ->
  Evd.evar_map ->
  bool ->
  inductive_family ->
  EConstr.ESorts.t ->
  EConstr.typesval extract_mrectype : 
  Evd.evar_map ->
  EConstr.t ->
  (Names.inductive * EConstr.EInstance.t) * EConstr.constr listRaise Not_found if not given a valid inductive type
val find_mrectype : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.inductive * EConstr.EInstance.t) * EConstr.constr listval find_mrectype_vect : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.inductive * EConstr.EInstance.t) * EConstr.constr arrayval find_inductive : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.inductive * EConstr.EInstance.t) * EConstr.constr listval find_coinductive : 
  Environ.env ->
  Evd.evar_map ->
  EConstr.types ->
  (Names.inductive * EConstr.EInstance.t) * EConstr.constr listval instantiate_constructor_params : 
  Names.constructor EConstr.puniverses ->
  Declarations.mind_specif ->
  EConstr.constr list ->
  EConstr.constrinstantiate_constructor_params cstr mind params instantiates the type of the given constructor with parameters params
val arity_of_case_predicate : 
  Environ.env ->
  inductive_family ->
  bool ->
  EConstr.ESorts.t ->
  EConstr.typesBuilds the case predicate arity (dependent or not)
Annotation for cases
val make_case_or_project : 
  Environ.env ->
  Evd.evar_map ->
  inductive_type ->
  Constr.case_info ->
  (EConstr.constr * EConstr.ERelevance.t) ->
  EConstr.constr ->
  EConstr.constr array ->
  EConstr.constrMake a case or substitute projections if the inductive type is a record with primitive projections. Fail with an error if the elimination is dependent while the inductive type does not allow dependent elimination.
val simple_make_case_or_project : 
  Environ.env ->
  Evd.evar_map ->
  Constr.case_info ->
  (EConstr.constr * EConstr.ERelevance.t) ->
  EConstr.case_invert ->
  EConstr.constr ->
  EConstr.constr array ->
  EConstr.constrSometimes make_case_or_project is nicer to call with a pre-built case_invert than inductive_type.
val make_case_invert : 
  Environ.env ->
  Evd.evar_map ->
  inductive_type ->
  case_relevance:EConstr.ERelevance.t ->
  Constr.case_info ->
  EConstr.case_invertval compute_projections : 
  Environ.env ->
  Names.inductive ->
  (EConstr.constr * EConstr.types) arrayGiven a primitive record type, for every field computes the eta-expanded projection and its type.
val type_of_inductive_knowing_conclusion : 
  Environ.env ->
  Evd.evar_map ->
  Declarations.mind_specif EConstr.puniverses ->
  EConstr.types ->
  Evd.evar_map * EConstr.types