The following goal might be solved by case analysis:
  > g `!n:num. n <= n * n`;
 
We can “manually” perform induction by using the following theorem:
  > numTheory.INDUCTION;
  - val it : thm = |- !P. P 0 /\ (!n. P n ==> P (SUC n)) ==> (!n. P n)
 
which is useful with HO_MATCH_MP_TAC because of higher-order matching:
  > e(HO_MATCH_MP_TAC numTheory.INDUCTION);
  - val it : goalstack = 1 subgoal (1 total)
  `0 <= 0 * 0 /\ (!n. n <= n * n ==> SUC n <= SUC n * SUC n)`
 
The goal can be finished with SIMP_TAC arith_ss [].