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))
   DISCH_THEN (CHOOSE_THEN SUBST1_TAC o MATCH_MP LESS_ADD_1)
   ?- 0 < ((x + (p + 1)) * (x + (p + 1)))
   REWRITE_TAC[ADD_ASSOC, SYM (SPEC_ALL ADD1),
               MULT_CLAUSES, ADD_CLAUSES, LESS_0]