(**************************************************************************)
include "nat/nat.ma".
+include "sets/sets.ma".
ninductive le (n: nat) : nat → CProp[0] ≝
le_n: le n n
| le_S: ∀m. le n m → le n (S m).
-ndefinition lt ≝ λn,m. le (S n) m.
+interpretation "natural 'less or equal to'" 'leq x y = (le x y).
+interpretation "natural 'neither less nor equal to'" 'nleq x y = (Not (le x y)).
+
+ndefinition lt ≝ λn,m. S n ≤ m.
+
+interpretation "natural 'less than'" 'lt x y = (lt x y).
+interpretation "natural 'not less than'" 'nless x y = (Not (lt x y)).
nlemma le_O_n: ∀n. le O n.
#n; nelim n [ napply le_n | #n'; #H; napply le_S; nassumption ]
nlemma lt_O_Sn: ∀n. lt O (S n).
#n; napply le_S_S; napply le_O_n.
nqed.
+
+ndefinition Nat_: nat → ext_powerclass NAT.
+ #n; napply mk_ext_powerclass
+ [ napply {m | m < n}
+ | #x; #x'; #H; nrewrite < H; napply mk_iff; #K; nassumption (* refl non va *) ]
+nqed.