SELECT_ELIM : thm -> term * thm -> thm
A1 |- P($@ P) A2 u {P v} |- t ----------------------------------- SELECT_ELIM th1 (v,th2) A1 u A2 |- twhere v is not free in A2. If v appears in the conclusion of th2, the epsilon term will NOT be eliminated, and the conclusion will be t[$@ P/v].
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 hThese two results may be combined using SELECT_ELIM to give a new theorem:
- SELECT_ELIM th1 (Term`g:num->num`, th2); val it = |- ?h. ONE_ONE h /\ ~ONTO h : thm