{-# OPTIONS --cubical --safe #-} module Categories.Functor where open import Prelude open import Categories record Functor {ℓ₁ ℓ₂ ℓ₃ ℓ₄} (C : PreCategory ℓ₁ ℓ₂) (D : PreCategory ℓ₃ ℓ₄) : Type (ℓ₁ ℓ⊔ ℓ₂ ℓ⊔ ℓ₃ ℓ⊔ ℓ₄) where private module C = PreCategory C private module D = PreCategory D field F₀ : C.Ob → D.Ob F₁ : ∀ {X Y} → (X C.⟶ Y) → (F₀ X D.⟶ F₀ Y) identity : ∀ {X} → F₁ (C.Id {X}) ≡ D.Id homomorphism : ∀ {X Y Z} → (f : X C.⟶ Y) (g : Y C.⟶ Z) → F₁ (g C.· f) ≡ F₁ g D.· F₁ f