BOOL_CASES_TAC : (term -> tactic)
A ?- t ============================ BOOL_CASES_TAC "x" A ?- t[F/x] A ?- t[T/x]The term given does not have to be free in the goal, but if it isn't, BOOL_CASES_TAC will merely duplicate the original goal twice.
?- (b ==> ~b) ==> (b ==> a)can be completely solved by using BOOL_CASES_TAC on the variable b, then simply rewriting the two subgoals using only the inbuilt tautologies, i.e. by applying the following tactic:
BOOL_CASES_TAC (Parse.Term `b:bool`) THEN REWRITE_TAC[]