package coq-core
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=64b49dbc3205477bd7517642c0b9cbb6
sha512=02fb5b4fb575af79e092492cbec6dc0d15a1d74a07f827f657a72d4e6066532630e5a6d15be4acdb73314bd40b9a321f9ea0584e0ccfe51fd3a56353bd30db9b
doc/coq-core.pretyping/Find_subterm/index.html
Module Find_subtermSource
Finding subterms, possibly up to some unification function, possibly at some given occurrences
exception NotUnifiable of (EConstr.constr
* EConstr.constr
* Pretype_errors.unification_error)
optionA testing function is typically a unification function returning a substitution or failing with a NotUnifiable error, together with a function to merge substitutions and an initial substitution; last_found is used for error messages and it has to be initialized with None.
type 'a testing_function = {match_fun : 'a -> EConstr.constr -> 'a;merge_fun : 'a -> 'a -> 'a;mutable testing_state : 'a;mutable last_found : Pretype_errors.position_reporting option;
}val make_eq_univs_test :
Environ.env ->
Evd.evar_map ->
EConstr.constr ->
Evd.evar_map testing_functionThis is the basic testing function, looking for exact matches of a closed term
val replace_term_occ_modulo :
Environ.env ->
Evd.evar_map ->
Locus.occurrences Locus.or_like_first ->
'a testing_function ->
(unit -> EConstr.constr) ->
EConstr.constr ->
EConstr.constrreplace_term_occ_modulo occl test mk c looks in c for subterm modulo a testing function test and replaces successfully matching subterms at the indicated occurrences occl with mk (); it turns a NotUnifiable exception raised by the testing function into a SubtermUnificationError.
val replace_term_occ_decl_modulo :
Environ.env ->
Evd.evar_map ->
(Locus.occurrences * Locus.hyp_location_flag) Locus.or_like_first ->
'a testing_function ->
(unit -> EConstr.constr) ->
EConstr.named_declaration ->
EConstr.named_declarationreplace_term_occ_decl_modulo is similar to replace_term_occ_modulo but for a named_declaration.
val subst_closed_term_occ :
Environ.env ->
Evd.evar_map ->
Locus.occurrences Locus.or_like_first ->
EConstr.constr ->
EConstr.constr ->
EConstr.constr * Evd.evar_mapsubst_closed_term_occ occl c d replaces occurrences of closed c at positions occl by Rel 1 in d (see also Note OCC), unifying universes which results in a set of constraints.
val subst_closed_term_occ_decl :
Environ.env ->
Evd.evar_map ->
(Locus.occurrences * Locus.hyp_location_flag) Locus.or_like_first ->
EConstr.constr ->
EConstr.named_declaration ->
EConstr.named_declaration * Evd.evar_mapsubst_closed_term_occ_decl evd occl c decl replaces occurrences of closed c at positions occl by Rel 1 in decl.