{-# OPTIONS --rewriting #-}

open import Agda.Primitive using (Level;lsuc;_⊔_;lzero)
open import Lib
open import Interval
open import Proposition
open import Cofibs
open import Kan

module Nat where

  data Nat {l : Level} : Set l where
    Z : Nat
    S : Nat{l}  Nat

  tpred :  {l : Level}  Nat{l}  Nat{l}
  tpred Z = Z
  tpred (S x) = x

  decNat : {l : Level} (x y : Nat{l})  (x == y)  ((x == y)  {l})
  decNat Z Z = inl id
  decNat Z (S y) = inr (\ ())
  decNat (S x) Z = inr (\ ())
  decNat (S x) (S y) = case (\ p  inl (ap S p))  q  inr (\ p  q (ap tpred p))) (\ _ _  trunc) (decNat x y)