{-# OPTIONS --safe #-}

open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Function

open import Cubical.Data.Unit

open import Cubical.Categories.Category
open import Cubical.Categories.Functor
open import Cubical.Categories.Instances.Discrete

module Cubical.Categories.Instances.Terminal where

TerminalCategory : {ℓ* : Level}  Category ℓ* ℓ*
TerminalCategory = DiscreteCategory (Unit* , isOfHLevelUnit* 3)

module _ {ℓC ℓ'C : Level} {C : Category ℓC ℓ'C} where
  private module C = Category C
  open Functor

  FunctorFromTerminal : {ℓ* : Level}  C.ob  Functor (TerminalCategory {ℓ*}) C
  FunctorFromTerminal c .F-ob _ = c
  FunctorFromTerminal c .F-hom _ = C.id
  FunctorFromTerminal c .F-id = refl
  FunctorFromTerminal c .F-seq _ _ = sym $ C.⋆IdL C.id