← Back

Modules

CategoricalCrypto

  • CategoricalCrypto
  • Channel.Category
  • Channel.Core
  • Channel.Selection
  • Examples.Basic
  • Examples.Commitment
  • Examples.Signatures
  • Machine.Constraints
  • Machine.Core
  • SFunM

Categories

  • Discrete
  • FreeMonoidal
  • FreeStrictMonoidal
  • GradedKleisli
  • MonoidalCoherence
  • NaturalTransformationHelper
  • Properties

Class

  • Monad.Ext
123456789101112131415161718192021222324252627282930313233343536373839404142
{-# OPTIONS --without-K --safe #-}
module Categories.Monad where
 
open import Level
 
open import Categories.Category using (Category)
open import Categories.Functor using (Functor; Endofunctor; _∘F_) renaming (id to idF)
open import Categories.NaturalTransformation renaming (id to idN)
open import Categories.NaturalTransformation.NaturalIsomorphism hiding (_≃_)
open import Categories.NaturalTransformation.Equivalence
open NaturalIsomorphism
 
record Monad {o ℓ e} (C : Category o ℓ e) : Set (o ⊔ ℓ ⊔ e) where
field
F : Endofunctor C
η : NaturalTransformation idF F
μ : NaturalTransformation (F ∘F F) F
 
module F = Functor F
module η = NaturalTransformation η
module μ = NaturalTransformation μ
 
open Category C
open F
 
field
assoc : ∀ {X : Obj} → μ.η X ∘ F₁ (μ.η X) ≈ μ.η X ∘ μ.η (F₀ X)
sym-assoc : ∀ {X : Obj} → μ.η X ∘ μ.η (F₀ X) ≈ μ.η X ∘ F₁ (μ.η X)
identityˡ : ∀ {X : Obj} → μ.η X ∘ F₁ (η.η X) ≈ id
identityʳ : ∀ {X : Obj} → μ.η X ∘ η.η (F₀ X) ≈ id
 
module _ {o ℓ e} (C : Category o ℓ e) where
open Monad
open Category C hiding (id)
id : Monad C
id .F = idF
id .η = idN
id .μ = unitor² .F⇒G
id .assoc = Equiv.refl
id .sym-assoc = Equiv.refl
id .identityˡ = identity²
id .identityʳ = identity²