{-# OPTIONS --safe #-}
module Cubical.Categories.Functor.Equality where
open import Cubical.Foundations.Prelude
open import Cubical.Categories.Category.Base
open import Cubical.Categories.Functor
import      Cubical.Data.Equality as Eq
private
  variable
    ℓ ℓB ℓB' ℓC ℓC' ℓD ℓD' ℓE ℓE' : Level
module _
  {C : Category ℓC ℓC'}{D : Category ℓD ℓD'}
  (F : Functor C D)
  where
  open Functor
  private
    module C = Category C
    module D = Category D
  FunctorSingl : Type _
  FunctorSingl = Σ[ ob' ∈ Eq.singl (F .F-ob) ]
    Eq.singlP (Eq.ap (λ F-ob → ∀ {x}{y} → C [ x , y ] → D [ F-ob x , F-ob y ])
              (ob' .snd))
    (F .F-hom)
  module _ (G : Functor C D) where
    FunctorEq : Type _
    FunctorEq = Σ[ FG-ob ∈ F .F-ob Eq.≡ G .F-ob ]
      Eq.HEq (Eq.ap (λ F-ob → ∀ {x} {y} → C [ x , y ] → D [ F-ob x , F-ob y ])
             FG-ob)
        (F .F-hom)
        (G .F-hom)