package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=0cfaa70f569be9494d24c829e6555d46
sha512=8ee967c636b67b22a4f34115871d8f9b9114df309afc9ddf5f61275251088c6e21f6cf745811df75554d30f4cebb6682f23eeb2e88b771330c4b60ce3f6bf5e2
doc/coq-core.pretyping/Tacred/index.html
Module Tacred
Source
Here the semantics is completely unclear. What does "Hint Unfold t" means when "t" is a parameter? Does the user mean "Unfold X.t" or does she mean "Unfold y" where X.t is later on instantiated with y? I choose the first interpretation (i.e. an evaluable reference is never expanded).
type reduction_tactic_error =
| InvalidAbstraction of Environ.env * Evd.evar_map * EConstr.constr * Environ.env * Type_errors.type_error
Reduction functions associated to tactics.
Evaluable global reference
Fails on opaque constants and variables (both those without bodies and those marked Opaque in the conversion oracle).
Succeeds for any constant or variable even if marked opaque or otherwise not evaluable.
Red (returns None if nothing reducible)
Simpl
Simpl only at the head
Hnf: like whd_simpl but force delta-reduction of constants that do not immediately hide a non reducible fix or cofix
Variant of the above that does not perform nf-βι
Unfold
Fold
val pattern_occs :
(Locus.occurrences * EConstr.constr) list ->
Reductionops.e_reduction_function
Pattern
Rem: Lazy strategies are defined in Reduction
Call by value strategy (uses Closures)
= cbv_betadeltaiota
val reduce_to_atomic_ind :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
(Names.inductive * EConstr.EInstance.t) * EConstr.types
reduce_to_atomic_ind env sigma t
puts t
in the form t'=(I args)
with I
an inductive definition; returns I
and t'
or fails with a user error
val reduce_to_quantified_ind :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
(Names.inductive * EConstr.EInstance.t) * EConstr.types
reduce_to_quantified_ind env sigma t
puts t
in the form t'=(x1:A1)..(xn:An)(I args)
with I
an inductive definition; returns I
and t'
or fails with a user error
val eval_to_quantified_ind :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
Names.inductive * EConstr.EInstance.t
Same as reduce_to_quantified_ind
but more efficient because it does not return the normalized type.
val reduce_to_quantified_ref :
?allow_failure:bool ->
Environ.env ->
Evd.evar_map ->
Names.GlobRef.t ->
EConstr.types ->
EConstr.types
reduce_to_quantified_ref env sigma ref t
try to put t
in the form t'=(x1:A1)..(xn:An)(ref args)
. When this is not possible, if allow_failure
is specified, t
is unfolded until the point where this impossibility is plainly visible. Otherwise, it fails with user error.
val reduce_to_atomic_ref :
?allow_failure:bool ->
Environ.env ->
Evd.evar_map ->
Names.GlobRef.t ->
EConstr.types ->
EConstr.types
val find_hnf_rectype :
Environ.env ->
Evd.evar_map ->
EConstr.types ->
(Names.inductive * EConstr.EInstance.t) * EConstr.constr list
val contextually :
bool ->
(Locus.occurrences * Pattern.constr_pattern) ->
(Ltac_pretype.patvar_map -> Reductionops.reduction_function) ->
Reductionops.reduction_function
val e_contextually :
bool ->
(Locus.occurrences * Pattern.constr_pattern) ->
(Ltac_pretype.patvar_map -> Reductionops.e_reduction_function) ->
Reductionops.e_reduction_function
Errors if the inductive is not allowed for pattern-matching. *