In the following example free_in returns false because the x in SUC x
in the second term is bound:
   - free_in ``SUC x`` ``!x. SUC x = x + 1``;
   > val it = false : bool
   - free_in ``x:bool`` ``!y. x /\ ?x. x = y``;
   > val it = true : bool