package coq-core
- Overview
- No Docs
You can search for identifiers within the package.
in-package search v0.2.0
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
md5=8d852367b54f095d9fbabd000304d450
    
    
  sha512=46922d5f2eb6802a148a52fd3e7f0be8370c93e7bc33cee05cf4a2044290845b10ccddbaa306f29c808e7c5019700763e37e45ff6deb507b874a4348010fed50
    
    
  doc/coq-core.engine/EConstr/index.html
Module EConstrSource
Type of incomplete terms. Essentially a wrapper around Constr.t ensuring that Constr.kind does not observe defined evars.
Universe variables
Destructors
Same as Constr.kind except that it expands evars and normalizes universes on the fly.
val kind_upto : 
  Evd.evar_map ->
  Constr.t ->
  (Constr.t, Constr.t, Sorts.t, Univ.Instance.t) Constr.kind_of_termReturns the evar-normal form of the argument. Note that this function is supposed to be called when the original term has not more free-evars anymore. If you need compatibility with the old semantics, set abort_on_undefined_evars to false.
For getting the evar-normal form of a term with evars see Evarutil.nf_evar.
Same as to_constr, but returns None if some unresolved evars remain
type kind_of_type = - | SortType of ESorts.t
- | CastType of types * t
- | ProdType of Names.Name.t Context.binder_annot * t * t
- | LetInType of Names.Name.t Context.binder_annot * t * t * t
- | AtomicType of t * t array
Constructors
Construct a term from a view.
Insensitive primitives
Evar-insensitive versions of the corresponding functions. See the Constr module for more information.
Constructors
 Abstracting/generalizing over binders 
it = iterated or_LetIn = turn a local definition into a LetIn wo_LetIn = inlines local definitions (i.e. substitute them in the body) Named = binding is by name and the combinators turn it into a binding by index (complexity is nb(binders) * size(term))
val mkNamedLambda : 
  Evd.evar_map ->
  Names.Id.t Context.binder_annot ->
  types ->
  constr ->
  constrval mkNamedLetIn : 
  Evd.evar_map ->
  Names.Id.t Context.binder_annot ->
  constr ->
  types ->
  constr ->
  constrVariant of mkEvar that removes identity variable instances from its argument.
Simple case analysis
The string is interpreted by Coqlib.lib_ref. If it is not registered, return false.
Pops lambda abstractions until there are no more, skipping casts.
Pops lambda abstractions and letins until there are no more, skipping casts.
Pops n lambda abstractions, and pop letins only if needed to expose enough lambdas, skipping casts.
Pops n lambda abstractions and letins, skipping casts.
Equality
val eq_constr_universes : 
  Environ.env ->
  Evd.evar_map ->
  ?nargs:int ->
  t ->
  t ->
  UnivProblem.Set.t optionval leq_constr_universes : 
  Environ.env ->
  Evd.evar_map ->
  ?nargs:int ->
  t ->
  t ->
  UnivProblem.Set.t optionval eq_constr_universes_proj : 
  Environ.env ->
  Evd.evar_map ->
  t ->
  t ->
  UnivProblem.Set.t optioneq_constr_universes_proj can equate projections and their eta-expanded constant form.
Iterators
val iter_with_full_binders : 
  Environ.env ->
  Evd.evar_map ->
  (rel_declaration -> 'a -> 'a) ->
  ('a -> t -> unit) ->
  'a ->
  t ->
  unitval fold_with_binders : 
  Evd.evar_map ->
  ('a -> 'a) ->
  ('a -> 'b -> t -> 'b) ->
  'a ->
  'b ->
  t ->
  'bGather the universes transitively used in the term, including in the type of evars appearing in it.
Substitutions
Environment handling
val push_named_context_val : 
  named_declaration ->
  Environ.named_context_val ->
  Environ.named_context_valval map_rel_context_in_env : 
  (Environ.env -> constr -> constr) ->
  Environ.env ->
  rel_context ->
  rel_contextval match_named_context_val : 
  Environ.named_context_val ->
  (named_declaration * Environ.named_context_val) optionval fresh_global : 
  ?loc:Loc.t ->
  ?rigid:Evd.rigid ->
  ?names:Univ.Instance.t ->
  Environ.env ->
  Evd.evar_map ->
  Names.GlobRef.t ->
  Evd.evar_map * tval expand_case : 
  Environ.env ->
  Evd.evar_map ->
  case ->
  Constr.case_info * t * case_invert * t * t arrayval annotate_case : 
  Environ.env ->
  Evd.evar_map ->
  case ->
  Constr.case_info
  * EInstance.t
  * t array
  * (rel_context * t)
  * case_invert
  * t
  * (rel_context * t) arraySame as above, but doesn't turn contexts into binders
val expand_branch : 
  Environ.env ->
  Evd.evar_map ->
  EInstance.t ->
  t array ->
  Names.constructor ->
  case_branch ->
  rel_contextGiven a universe instance and parameters for the inductive type, constructs the typed context in which the branch lives.
val contract_case : 
  Environ.env ->
  Evd.evar_map ->
  (Constr.case_info * t * case_invert * t * t array) ->
  caseExtra
val of_named_decl : 
  (Constr.t, Constr.types) Context.Named.Declaration.pt ->
  (t, types) Context.Named.Declaration.ptval of_rel_decl : 
  (Constr.t, Constr.types) Context.Rel.Declaration.pt ->
  (t, types) Context.Rel.Declaration.ptval to_rel_decl : 
  Evd.evar_map ->
  (t, types) Context.Rel.Declaration.pt ->
  (Constr.t, Constr.types) Context.Rel.Declaration.ptUnsafe operations
Deprecated