12345678910111213141516171819202122232425262728293031323334353637383940414243{-# OPTIONS --without-K --safe #-}module Categories.Functor.Construction.Constant where open import Level open import Categories.Categoryopen import Categories.Category.Instance.Oneopen import Categories.Category.Productopen import Categories.Functor renaming (id to idF)open import Categories.NaturalTransformation using (NaturalTransformation)import Categories.Morphism.Reasoning as MR private variable o ℓ e : Level C D : Category o ℓ e const : (d : Category.Obj D) → Functor C Dconst {D = D} d = record { F₀ = λ _ → d ; F₁ = λ _ → id ; identity = refl ; homomorphism = sym identity² ; F-resp-≈ = λ _ → refl } where open Category D open Equiv const! : (d : Category.Obj D) → Functor (One {0ℓ} {0ℓ} {0ℓ}) Dconst! = const constˡ : (c : Category.Obj C) → Functor D (Product C D)constˡ c = const c ※ idF constʳ : (c : Category.Obj C) → Functor D (Product D C)constʳ c = idF ※ (const c) constNat : ∀ {A B} → Category._⇒_ D A B → NaturalTransformation (const {D = D} {C = C} A) (const B)constNat {D = D} f = record { η = λ _ → f ; commute = λ _ → MR.id-comm D ; sym-commute = λ _ → MR.id-comm-sym D }