{-# OPTIONS --without-K #-}
open import Type
open import Relation.Binary
open import Level.NP
open import Function using (id; _∘_; const)
open import Relation.Binary.PropositionalEquality using (_≡_)
open import Category.Functor public
module Category.Functor.NP where
Fmap : ∀ {i j ℓ₁ ℓ₂} {I : ★_ i} {J : ★_ j}
(_↝₁_ : Rel I ℓ₁) (_↝₂_ : Rel J ℓ₂) (F : I → J) → ★_ _
Fmap _↝₁_ _↝₂_ F = ∀ {A B} → A ↝₁ B → F A ↝₂ F B
record IsFunctorial {ℓ} {F : Set ℓ → Set ℓ} (rawFunctor : RawFunctor F) : ★_ (ₛ ℓ) where
open RawFunctor rawFunctor
field
<$>-id : ∀ {A} (x : F A) → id <$> x ≡ x
<$>-∘ : ∀ {A B C} (f : B → C) (g : A → B) x → (f ∘ g) <$> x ≡ f <$> (g <$> x)
<$-∘ : ∀ {A B C} (f : A → B) (x : C) y → x <$ y ≡ x <$ (f <$> y)
<$-∘ f x = <$>-∘ (const x) f
record Functor {ℓ} (F : Set ℓ → Set ℓ) : ★_ (ₛ ℓ) where
field
rawFunctor : RawFunctor F
isFunctorial : IsFunctorial rawFunctor
open RawFunctor rawFunctor public
open IsFunctorial isFunctorial public