matchDB.match : string list -> term -> data list
Attempt to find matching theorems in the specified theories.
An invocation DB.match [s1,...,sn] M collects all
theorems, definitions, and axioms of the theories designated by
s1,…,sn that have a subterm that matches
M. If there are no matches, the empty list is returned.
The strings s1,…,sn should be a subset of
the currently loaded theory segments. The string "-" may be
used to designate the current theory segment. If the list of theories is
empty, then all currently loaded theories are searched.
Never fails.
> DB.match ["bool","pair"] (Term `(a = b) = c`);
<<HOL message: inventing new type variable names: 'a>>
val it =
[(("bool", "bool_case_eq"),
(⊢ (if x then t1 else t2) = v ⇔ (x ⇔ T) ∧ t1 = v ∨ (x ⇔ F) ∧ t2 = v,
Thm,
Located
{exact = true, linenum = 3552, scriptpath =
"$(HOLDIR)/src/bool/boolScript.sml"})),
(("bool", "EQ_CLAUSES"),
(⊢ ∀t. ((T ⇔ t) ⇔ t) ∧ ((t ⇔ T) ⇔ t) ∧ ((F ⇔ t) ⇔ ¬t) ∧ ((t ⇔ F) ⇔ ¬t),
Thm,
Located
{exact = true, linenum = 1310, scriptpath =
"$(HOLDIR)/src/bool/boolScript.sml"})),
(("bool", "EQ_EXPAND"),
[...Output elided...]
The notion of matching is a restricted version of higher-order matching.
For locating theorems when doing interactive proof.
DB.matcher, DB.matchp, DB.find, DB.theorems, DB.thy, DB.listDB