CONSEQ_TOP_REWRITE_CONV : (thm list * thm list * thm list) -> directed_conseq_conv
STRUCTURE
SYNOPSIS
An extended version of MATCH_MP.
DESCRIPTION
This consequence conversion gets 3 lists of theorems as parameters: both_thmL, strengthen_thmL and weaken_thmL. The theorems in these lists are used to strengthen or weaken a given boolean term at toplevel. If using them for strengthening this consequence conversion behaves similar to MATCH_MP. As the names suggest, the theorems in strengthen_thmL are used for strengthening, the ones in weaken_thmL for weakening and the ones in both_thmL for both.

Before trying to apply the conversion, the theorem lists are preprocessed. The theorems are split along conjunctions and allquantification is removed. Then theorems with toplevel negation |- ~P are rewritten to |- P = F. Afterwards every theorem |- P that is not an implication or an boolean equation is replaced by |- P = T. Finally, boolean equations |- P = Q are splitted into two theorems |- P ==> Q and |- Q ==> P. One ends up with a list of implications.

Given a term t the conversion tries to find a theorem |- P ==> Q and - depending on to the direction - strengthen t by matching it with Q or weaken it by matching it with P.

EXAMPLE
This directed consequence conversion is intended to be used together with DEPTH_CONSEQ_CONV. The combination of both is called CONSEQ_REWRITE_CONV. Please have a look there for an example.

SEEALSO
HOL  Trindemossen-1