{-# OPTIONS --without-K #-}
module sets.nat.ordering.lt.core where
open import sum
open import equality.core
open import function.isomorphism.core
open import sets.core
open import sets.nat.core
open import sets.nat.ordering.leq.core
_<_ : ℕ → ℕ → Set
m < n = suc m ≤ n
infixr 4 _<_
z<n : ∀ {n} → 0 < suc n
z<n = s≤s z≤n
<⇒≤ : ∀ {n m} → n < m → n ≤ m
<⇒≤ p = trans≤ suc≤ p
trans< : ∀ {n m p} → n < m → m < p → n < p
trans< p q = <⇒≤ (trans≤ (s≤s p) q)
ap<-suc : ∀ {n m} → n < m → suc n < suc m
ap<-suc = s≤s
compare : (n m : ℕ) → Ordering _<_ n m
compare zero zero = eq refl
compare zero (suc m) = lt z<n
compare (suc n) zero = gt z<n
compare (suc n) (suc m) with compare n m
... | lt p = lt (ap<-suc p)
... | eq p = eq (ap suc p)
... | gt p = gt (ap<-suc p)