{-# OPTIONS --without-K --safe #-}
open import Level
open import Categories.Category using (Category)
module Categories.NaturalTransformation.Hom {o ℓ e : Level} (C : Category o ℓ e) where
open import Categories.Category.Instance.Setoids
open import Categories.Functor.Hom using (module Hom; Hom[_][-,_]; Hom[_][_,-]; Hom[_][-,-])
open import Categories.NaturalTransformation using (NaturalTransformation; ntHelper) renaming (id to idN)
import Categories.Morphism.Reasoning as MR
open Category C
open HomReasoning
open MR C
open NaturalTransformation
private
module CE = Category.Equiv C
module C = Category C
Hom[A,C]⇒Hom[B,C] : {A B : Obj} → (A ⇒ B) → NaturalTransformation Hom[ C ][-, A ] Hom[ C ][-, B ]
Hom[A,C]⇒Hom[B,C] {A} A⇒B = ntHelper record
{ η = λ X → record { to = λ X⇒A → A⇒B ∘ X⇒A ; cong = ∘-resp-≈ʳ }
; commute = λ f {g} → begin
A⇒B ∘ id ∘ g ∘ f ≈⟨ pullˡ id-comm ⟩
(id ∘ A⇒B) ∘ g ∘ f ≈⟨ pullʳ sym-assoc ⟩
id ∘ (A⇒B ∘ g) ∘ f ∎
}
Hom[C,A]⇒Hom[C,B] : {A B : Obj} → (B ⇒ A) → NaturalTransformation Hom[ C ][ A ,-] Hom[ C ][ B ,-]
Hom[C,A]⇒Hom[C,B] {A} B⇒A = ntHelper record
{ η = λ X → record { to = λ A⇒X → A⇒X ∘ B⇒A ; cong = ∘-resp-≈ˡ }
; commute = λ f {g} → begin
(f ∘ g ∘ id) ∘ B⇒A ≈⟨ pullʳ (pullʳ id-comm-sym) ⟩
f ∘ g ∘ B⇒A ∘ id ≈⟨ (refl⟩∘⟨ sym-assoc) ⟩
f ∘ (g ∘ B⇒A) ∘ id ∎
}