Back to index

Chapter 9. Category Theory

module Chapter9.Book where

open import Chapter8.Exercises public

9.1 Categories and precategories

-- Definition 9.1.1.
record Precategory (𝒾 𝒿 : Level) : 𝒰 ((𝒾  𝒿)) where
  field
    Ob : 𝒰 𝒾
    Hom : Ob  Ob  𝒰 𝒿
    Hom-set : (x y : Ob)  isSet (Hom x y)
    𝓲𝓭  :  {x}      Hom x x
    _⊚_ :  {x y z}  Hom y z  Hom x y  Hom x z
    idr :  {x y} (f : Hom x y)  f  𝓲𝓭  f
    idl :  {x y} (f : Hom x y)  𝓲𝓭  f  f
    assoc :  {w x y z} (f : Hom y z) (g : Hom x y) (h : Hom w x)
           f  (g  h)  (f  g)  h

module _ {o h} (C : Precategory o h) where
  open Precategory C public
  variable
    a b c d : Ob
    f : Hom a b

  isIso : Hom a b  𝒰 _
  isIso {a} {b} f = Σ g  (Hom b a) , ((f  g  𝓲𝓭) × (g  f  𝓲𝓭))

  _≅_ : Ob  Ob  𝒰 _
  a  b = Σ f  (Hom a b) , isIso f

  ≅-refl : (a : Ob)  a  a
  ≅-refl a = 𝓲𝓭 , 𝓲𝓭 , (idl 𝓲𝓭 , idl 𝓲𝓭)

  idtoiso : a  b  a  b
  idtoiso (refl a) = ≅-refl a