{-# OPTIONS --rewriting #-}

open import Agda.Primitive using (Level;lsuc;_⊔_;lzero)
open import Lib
open import Interval
open import Cofibs
open import Kan
open import Equiv
open import Nat
open import universe.Universe

module universe.Nat where

  comNat :  {l1 : Level}  relCom {Γ = Unit{lzero}} (\ _  Nat{l1})
  comNat = relCom-constant Nat (hcomDec decNat)

  Nat-code-universal :  {@l1 : Level}  (Unit{lzero}  U {l1})
  Nat-code-universal = code _ (\ _  Nat) comNat

  Nat-code :  {@l1 l2 : Level} {Γ : Set l2}  (Γ  U {l1})
  Nat-code{l1}{l2} _ = Nat-code-universal{l1} <>

  Nat-code-stable :  {@l1 l2 l3 : Level} {Γ : Set l1} {Δ : Set l3} 
                     {θ : Δ  Γ}
                    ((Nat-code{l2}{l1}) o θ) == Nat-code{l2}{l3}
  Nat-code-stable = id

  Nat-code-El :  {@l1 l2 : Level} {Γ : Set l2}  (θ : Γ)  El (Nat-code{l1}{l2}{Γ = Γ} θ) == Nat
  Nat-code-El θ = id