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