X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Ftactics%2FproofEngineHelpers.mli;h=c2f8c640aeded79e7e84ded52ea869e910b1f788;hb=7b78ae643999aa95b95b376fab54adb33dbed206;hp=b0e3909409d0bf780dc77a5fda8ac408f87d44d1;hpb=0d750a87e8b3f26964fc5a05cf559d86c913d962;p=helm.git diff --git a/helm/ocaml/tactics/proofEngineHelpers.mli b/helm/ocaml/tactics/proofEngineHelpers.mli index b0e390940..c2f8c640a 100644 --- a/helm/ocaml/tactics/proofEngineHelpers.mli +++ b/helm/ocaml/tactics/proofEngineHelpers.mli @@ -23,6 +23,8 @@ * http://cs.unibo.it/helm/. *) +exception Bad_pattern of string + (* Returns the first meta whose number is above the *) (* number of the higher meta. *) val new_meta_of_proof : proof:ProofEngineTypes.proof -> int @@ -40,3 +42,29 @@ val subst_meta_and_metasenv_in_proof : oldmetasenv *) val compare_metasenvs : oldmetasenv:Cic.metasenv -> newmetasenv:Cic.metasenv -> int list + + +(** { Patterns } + * A pattern is a Cic term in which Cic.Implicit terms annotated with `Hole + * appears *) + +(** create a pattern from a term and a list of subterm. +* @param equality equality function used while walking the term. Defaults to +* physical equality (==) *) +val pattern_of: + ?equality:(Cic.term -> Cic.term -> bool) -> term:Cic.term -> Cic.term list -> + Cic.term + +(** select all subterms of a given term matching a given pattern (i.e. subtrees +* rooted at pattern's holes. The first component is the context the term lives +* in). raise Bad_pattern (pattern_entry, term_entry) *) +val select: term:Cic.term -> pattern:Cic.term -> (Cic.context * Cic.term) list + + +(** Finds the _pointers_ to subterms that are alpha-equivalent to wanted in t. + * wanted is properly lifted when binders are crossed *) +val find_subterms : + eq:(Cic.term -> Cic.term -> bool) -> + wanted:Cic.term -> Cic.term -> + Cic.term list +