package coq-core
The Coq Proof Assistant -- Core Binaries and Tools
Install
Dune Dependency
Authors
Maintainers
Sources
coq-8.18.0.tar.gz
md5=8d852367b54f095d9fbabd000304d450
sha512=46922d5f2eb6802a148a52fd3e7f0be8370c93e7bc33cee05cf4a2044290845b10ccddbaa306f29c808e7c5019700763e37e45ff6deb507b874a4348010fed50
doc/coq-core.pretyping/Unification/index.html
Module Unification
Source
Source
type core_unify_flags = {
modulo_conv_on_closed_terms : TransparentState.t option;
use_metas_eagerly_in_conv_on_closed_terms : bool;
use_evars_eagerly_in_conv_on_closed_terms : bool;
modulo_delta : TransparentState.t;
modulo_delta_types : TransparentState.t;
check_applied_meta_types : bool;
use_pattern_unification : bool;
use_meta_bound_pattern_unification : bool;
allowed_evars : Evarsolve.AllowedEvars.t;
restrict_conv_on_strict_subterms : bool;
modulo_betaiota : bool;
modulo_eta : bool;
}
Source
type unify_flags = {
core_unify_flags : core_unify_flags;
merge_unify_flags : core_unify_flags;
subterm_unify_flags : core_unify_flags;
allow_K_in_toplevel_higher_order_unification : bool;
resolve_evars : bool;
}
Source
val w_unify :
Environ.env ->
Evd.evar_map ->
Evd.conv_pb ->
?flags:unify_flags ->
EConstr.constr ->
EConstr.constr ->
Evd.evar_map
The "unique" unification function
Source
val w_unify_to_subterm :
Environ.env ->
Evd.evar_map ->
?flags:unify_flags ->
(EConstr.constr * EConstr.constr) ->
Evd.evar_map * EConstr.constr
w_unify_to_subterm env m (c,t)
performs unification of c
with a subterm of t
. Constraints are added to m
and the matched subterm of t
is also returned.
Source
val w_unify_to_subterm_all :
Environ.env ->
Evd.evar_map ->
?flags:unify_flags ->
(EConstr.constr * EConstr.constr) ->
Evd.evar_map list
Source
val w_coerce_to_type :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.types ->
EConstr.types ->
Evd.evar_map * EConstr.constr
w_coerce_to_type env evd c ctyp typ
tries to coerce c
of type ctyp
so that its gets type typ
; typ
may contain metavariables
Source
type abstraction_request =
| AbstractPattern of prefix_of_inductive_support_flag * EConstr.types -> bool * Names.Name.t * Evd.evar_map option * EConstr.constr * Locus.clause * bool
| AbstractExact of Names.Name.t * EConstr.constr * EConstr.types option * Locus.clause * bool
Source
type 'r abstraction_result =
Names.Id.t
* Environ.named_context_val
* EConstr.named_declaration list
* Names.Id.t option
* EConstr.types
* (Evd.evar_map * EConstr.constr) option
Source
val make_abstraction :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
abstraction_request ->
'r abstraction_result
Source
val pose_all_metas_as_evars :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
Evd.evar_map * EConstr.constr
Source
val abstract_list_all :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
EConstr.constr ->
EConstr.constr list ->
Evd.evar_map * (EConstr.constr * EConstr.types)
abstract_list_all env evd t c l
abstracts the terms in l over c to get a term of type t (exported for inv.ml)
Source
type metabinding =
Constr.metavariable
* EConstr.constr
* (Evd.instance_constraint * Evd.instance_typing_status)
Source
type subst0 =
Evd.evar_map
* metabinding list
* ((Environ.env * int) * EConstr.existential * EConstr.t) list
Source
val unify_0 :
Environ.env ->
Evd.evar_map ->
Evd.conv_pb ->
core_unify_flags ->
EConstr.types ->
EConstr.types ->
subst0
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>