{-# OPTIONS --safe --without-K #-}
module Categories.Functor.Dagger where
open import Categories.Category.Dagger using (DaggerCategory)
open import Categories.Functor using (Functor; _∘F_) renaming (id to idF)
open import Level using (Level; _⊔_)
private
variable
o ℓ e o′ ℓ′ e′ o″ ℓ″ e″ : Level
record DaggerFunctor (C : DaggerCategory o ℓ e) (D : DaggerCategory o′ ℓ′ e′) : Set (o ⊔ ℓ ⊔ e ⊔ o′ ⊔ ℓ′ ⊔ e′) where
private
module C = DaggerCategory C
module D = DaggerCategory D
field
functor : Functor C.C D.C
open Functor functor public
field
F-resp-† : ∀ {X Y} {f : X C.⇒ Y} → F₁ f D.† D.≈ F₁ (f C.†)
id : ∀ {C : DaggerCategory o ℓ e} → DaggerFunctor C C
id {C = C} = record
{ functor = idF
; F-resp-† = DaggerCategory.Equiv.refl C
}
_∘F†_ : ∀ {C : DaggerCategory o ℓ e} {D : DaggerCategory o′ ℓ′ e′} {E : DaggerCategory o″ ℓ″ e″}
→ DaggerFunctor D E → DaggerFunctor C D → DaggerFunctor C E
_∘F†_ {E = E} F G = record
{ functor = F.functor ∘F G.functor
; F-resp-† = DaggerCategory.Equiv.trans E F.F-resp-† (F.F-resp-≈ G.F-resp-†)
}
where
module F = DaggerFunctor F
module G = DaggerFunctor G