matcher : (term -> term -> 'a) -> string list -> term -> data list
If the list of theory segments is empty, then all currently loaded segments are examined. The string "-" may be used to designate the current theory segment.
- DB.matcher match_term ["relation"] (Term `P \/ Q`); > val it = [(("relation", "RC_def"), (|- !R x y. RC R x y = (x = y) \/ R x y, Def)), (("relation", "RTC_CASES1"), (|- !R x y. RTC R x y = (x = y) \/ ?u. R x u /\ RTC R u y, Thm)), (("relation", "RTC_CASES2"), (|- !R x y. RTC R x y = (x = y) \/ ?u. RTC R x u /\ R u y, Thm)), (("relation", "RTC_TC_RC"), (|- !R x y. RTC R x y ==> RC R x y \/ TC R x y, Thm)), (("relation", "TC_CASES1"), (|- !R x z. TC R x z ==> R x z \/ ?y. R x y /\ TC R y z, Thm)), (("relation", "TC_CASES2"), (|- !R x z. TC R x z ==> R x z \/ ?y. TC R x y /\ R y z, Thm))] : ((string * string) * (thm * class)) list - DB.matcher (ho_match_term [] empty_varset) [] (Term `?x. P x \/ Q x`); <<HOL message: inventing new type variable names: 'a>> > val it = [(("arithmetic", "ODD_OR_EVEN"), (|- !n. ?m. (n = SUC (SUC 0) * m) \/ (n = SUC (SUC 0) * m + 1), Thm)), (("bool", "EXISTS_OR_THM"), (|- !P Q. (?x. P x \/ Q x) = (?x. P x) \/ ?x. Q x, Thm)), (("bool", "LEFT_OR_EXISTS_THM"), (|- !P Q. (?x. P x) \/ Q = ?x. P x \/ Q, Thm)), (("bool", "RIGHT_OR_EXISTS_THM"), (|- !P Q. P \/ (?x. Q x) = ?x. P \/ Q x, Thm)), (("sum", "IS_SUM_REP"), (|- !f. IS_SUM_REP f = ?v1 v2. (f = (\b x y. (x = v1) /\ b)) \/ (f = (\b x y. (y = v2) /\ ~b)), Def))] : ((string * string) * (thm * class)) list