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
 
whereas the following call returns true because the first instance
of x in the second term is free, even though there is also a bound instance:
   - free_in ``x:bool`` ``!y. x /\ ?x. x = y``;
   > val it = true : bool