ADD_SGS_TAC : term list -> tactic -> tactic
Then, if the justification returned by tac, when applied to the proved goals gl, gives a theorem which uses some additional assumption tm in tml, then the proved goal (asl,tm) is used to remove tm from the assumption list of that theorem.
fun split_imp_asm th = let val (tm, thu) = UNDISCH_TM th ; in ADD_SGS_TAC [tm] (ASSUME_TAC thu) end ;
1 subgoal: val it = r ------------------------------------ p ==> q : proof > e (FIRST_X_ASSUM split_imp_asm) ; OK.. 2 subgoals: val it = r ------------------------------------ q p 2 subgoals : proof
To propose a term, prove it as a subgoal and then use it to prove the goal, as is done using SUBGOAL_THEN tm ASSUME_TAC, can also be done by ADD_SGS_TAC [tm] (ASSUME_TAC (ASSUME tm))