If a property of functions is defined by:
INCR = |- !f. INCR f = (!t1 t2. t1 < t2 ==> (f t1) < (f t2))
The following theorem can be proved.
th1 = |- INCR(@f. INCR f)
Additionally, if such a function is assumed to exist, then one
can prove that there also exists a function which is injective (one-to-one) but
not surjective (onto).
th2 = [ INCR g ] |- ?h. ONE_ONE h /\ ~ONTO h
These two results may be combined using SELECT_ELIM to
give a new theorem:
- SELECT_ELIM th1 (``g:num->num``, th2);
val it = |- ?h. ONE_ONE h /\ ~ONTO h : thm