PROVEHYP_THEN : (thm -> thm -> tactic) -> thm -> tactic
STRUCTURE
SYNOPSIS
Makes antecedent of theorem as subgoal, continues with both parts as theorems.
DESCRIPTION
An application of the tactic PROVEHYP_THEN th2tac th to a goal g requires that th be an implication (or a negation, in which case ~p is treated as p ==> F). Given an implication |- l ==> r, the result is a new sub-goal requiring the user to prove l, and the application of th2tac to the theorems with conclusion l and r. (The former has just been proved by the user; the latter is the result of applying MP to th and l.)

Diagrammatically, one might see this as

          A ?- g
   ==============================================  PROVEHYP_THEN th2tac th
   A ?- l  ...  th2tac (A |- l) (A |- r) (A ?- g)
FAILURE
Fails if the theorem argument is not an implication or negation.
EXAMPLE
   > FIRST_X_ASSUM (PROVEHYP_THEN (K MP_TAC)) ([“p”, “p ==> q”], “r”)
   val it = ([([“p”], “p”), ([“p”], “q ==> r”)], fn):
            goal list * validation
The use of FIRST_X_ASSUM pulls out the first implicational theorem, and gives the user the requirement to prove p as a subgoal. In the other subgoal, q has become a new antecedent in the goal (thanks to the action of MP_TAC).
COMMENTS
This function is also available under the name provehyp_then.
SEEALSO
HOL  Kananaskis-13