module FinLT where -- Representing finite set with sigma and inequality proofs data Σ (A : Set) (P : A → Set) : Set where _,_ : (x : A) (w : P x) → Σ A P data _⊎_ (A B : Set) : Set where inl : A → A ⊎ B inr : B → A ⊎ B data ℕ : Set where zero : ℕ suc : ℕ → ℕ {-# BUILTIN NATURAL ℕ #-} {-# BUILTIN ZERO zero #-} {-# BUILTIN SUC suc #-} data _≤_ : ℕ → ℕ → Set where zero : ∀{j} → 0 ≤ j suc : ∀{i j} → i ≤ j → suc i ≤ suc j _<_ : ℕ → ℕ → Set i < j = suc i ≤ j <-dec : (i j : ℕ) → (i < j) ⊎ (j ≤ i) <-dec i zero = inr zero <-dec zero (suc j) = inl (suc zero) <-dec (suc i) (suc j) with <-dec i j ... | inl i