package rocq-runtime
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=051f7bf702ff0a3b370449728921e5a95e18bc2b31b8eb949d48422888c98af4
doc/rocq-runtime.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
val kind :
Evd.evar_map ->
t ->
(t, t, ESorts.t, EInstance.t, ERelevance.t) Constr.kind_of_termSame 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, Sorts.relevance)
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 binder_annot * t * t| LetInType of Names.Name.t 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 mkNamedLetIn :
Evd.evar_map ->
Names.Id.t binder_annot ->
constr ->
types ->
constr ->
constrVariant of mkEvar that removes identity variable instances from its argument.
Simple case analysis
The string is interpreted by Rocqlib.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, 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 ->
'bval universes_of_constr :
?init:(Sorts.QVar.Set.t * Univ.Level.Set.t) ->
Evd.evar_map ->
t ->
Sorts.QVar.Set.t * Univ.Level.Set.tGather 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 expand_case :
Environ.env ->
Evd.evar_map ->
case ->
(t, t, ERelevance.t) Inductive.pexpanded_caseval annotate_case :
Environ.env ->
Evd.evar_map ->
case ->
Constr.case_info
* EInstance.t
* t array
* ((rel_context * t) * ERelevance.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 ->
(t, t, ERelevance.t) Inductive.pexpanded_case ->
caseExtra
Unsafe operations
Delayed evar expansion
Deprecated