PROVEHYP_THEN : (thm -> thm -> tactic) -> thm -> tactic
Diagrammatically, one might see this as
A ?- g ============================================== PROVEHYP_THEN th2tac th A ?- l ... th2tac (A |- l) (A |- r) (A ?- g)
> FIRST_X_ASSUM (PROVEHYP_THEN (K MP_TAC)) ([“p”, “p ==> q”], “r”) val it = ([([“p”], “p”), ([“p”], “q ==> r”)], fn): goal list * validation