SUBGOAL_THEN : term -> thm_tactic -> tactic
    A1 ?- t1
   ==========  f (u |- u)
    A2 ?- t2
         A1 ?- t1
   ====================  SUBGOAL_THEN u f
    A1 ?- u   A2 ?- t2
Typically f (u |- u) will be an invalid tactic because it would return a validation function which generated the theorem A1,u |- t1 from the theorem A2 |- t2. Nonetheless, the tactic SUBGOAL_THEN u f is valid because of the extra sub-goal where u must be proved.
   {n = SUC m} ?- (0 = n) ==> t
SUBGOAL_THEN (Term `~(0 = n)`) (fn th => REWRITE_TAC [th])
   {n = SUC m} ?-  ~(0 = n)
   ?- T