package coq
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=3cbfc1e1a72b16d4744f5b64ede59586071e31d9c11c811a0372060727bfd9c3
doc/coq-core.engine/EConstr/index.html
Module EConstr
Source
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_term
Returns 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
Simple case analysis
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_proj :
Environ.env ->
Evd.evar_map ->
t ->
t ->
UnivProblem.Set.t option
eq_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 ->
unit
Gather 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_val
val map_rel_context_in_env :
(Environ.env -> constr -> constr) ->
Environ.env ->
rel_context ->
rel_context
val match_named_context_val :
Environ.named_context_val ->
(named_declaration * Environ.lazy_val * Environ.named_context_val) option
val fresh_global :
?loc:Loc.t ->
?rigid:Evd.rigid ->
?names:Univ.Instance.t ->
Environ.env ->
Evd.evar_map ->
Names.GlobRef.t ->
Evd.evar_map * t
val expand_case :
Environ.env ->
Evd.evar_map ->
case ->
Constr.case_info * t * case_invert * t * t array
val annotate_case :
Environ.env ->
Evd.evar_map ->
case ->
Constr.case_info
* EInstance.t
* t array
* (rel_context * t)
* case_invert
* t
* (rel_context * t) array
Same 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_context
Given 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) ->
case
Extra
val of_named_decl :
(Constr.t, Constr.types) Context.Named.Declaration.pt ->
(t, types) Context.Named.Declaration.pt
val of_rel_decl :
(Constr.t, Constr.types) Context.Rel.Declaration.pt ->
(t, types) Context.Rel.Declaration.pt
val to_rel_decl :
Evd.evar_map ->
(t, types) Context.Rel.Declaration.pt ->
(Constr.t, Constr.types) Context.Rel.Declaration.pt