This theorem-tactical and its relatives are very useful for using existentially
quantified theorems. For example one might use the inbuilt theorem
LESS_ADD_1 = |- !m n. n < m ==> (?p. m = n + (p + 1))
to help solve the goal
by starting with the following tactic
DISCH_THEN (CHOOSE_THEN SUBST1_TAC o MATCH_MP LESS_ADD_1)
which reduces the goal to
?- 0 < ((x + (p + 1)) * (x + (p + 1)))
which can then be finished off quite easily, by, for example:
REWRITE_TAC[ADD_ASSOC, SYM (SPEC_ALL ADD1),
MULT_CLAUSES, ADD_CLAUSES, LESS_0]