package coq-core
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=5d1187d5e44ed0163f76fb12dabf012e
sha512=91bc81530fa4f6498961583ad51eac5001f139881788b88e360a866ad8e2a6e2c5bce86d1a580ab4cd4782bf49d48318767df82471ce33ba3ac143e5569ad33c
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, UVars.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:UVars.Instance.t ->
Environ.env ->
Evd.evar_map ->
Names.GlobRef.t ->
Evd.evar_map * tval annotate_case :
Environ.env ->
Evd.evar_map ->
case ->
Constr.case_info
* EInstance.t
* t array
* ((rel_context * t) * Sorts.relevance)
* 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.
Extra
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