Suppose we want to prove Euclid’s theorem.
The classic proof is by contradiction. However, if we start such a
proof with CCONTR_TAC, we get the goal
{ ~!m. ?n. prime n /\ m < n } ?- F
and one would immediately want to simplify the assumption, which is a
bit awkward. Instead, an invocation SPOSE_NOT_THEN ASSUME_TAC yields
{ ?m. !n. ~prime n \/ ~(m < n) } ?- F
and SPOSE_NOT_THEN STRIP_ASSUME_TAC results in
{ !n. ~prime n \/ ~(m < n) } ?- F