irule : thm_tactic
A' |- !x1...xn. s ==> !y1...ym. t ==> !z1...zk. u
The following diagram is simplified: more implications and quantified variables than shown are allowed.
A ?- u' ========================= irule (A' |- !x. s ==> !y. t ==> u) A ?- (?z. s') /\ ?w. t'
Then MATCH_MP_TAC or MATCH_ACCEPT_TAC is applied (depending on whether or not the result of the preprocessing is an implication). To avoid preprocessing entirely, one can use prim_irule.
|- !x u. P u x ==> !w y. Q w x y ==> R x (f y)
With goal a = b and theorem trans
|- !x y. (x = y) ==> !z. (y = z) ==> (x = z)
?y. (a = y) /\ (y = b)