module Cat.Displayed.Instances.Slice.Properties where

Properties of slice categories🔗

This module gathers together some useful properties of slice categories.

Total products in slice categories🔗

A total product in a slice category is given by a product of the domains of the slices.

  slice-total-product
    :  {I J X Y} {f : Hom X I} {g : Hom Y J}
     (X×Y : Product B X Y)
     (I×J : Product B I J)
     Total-product (Slices B) I×J (cut f) (cut g)
  slice-total-product {f = f} {g = g} X×Y I×J = total-prod where
    open is-total-product
    open Total-product

    module X×Y = Product X×Y
    module I×J = Product I×J

    total-prod : Total-product (Slices B) I×J (cut f) (cut g)
    total-prod .apex' .domain = X×Y.apex
    total-prod .apex' .map = I×J.⟨ f  X×Y.π₁ , g  X×Y.π₂ I×J.
    total-prod .π₁' .to = X×Y.π₁
    total-prod .π₁' .commute = I×J.π₁∘⟨⟩
    total-prod .π₂' .to = X×Y.π₂
    total-prod .π₂' .commute = I×J.π₂∘⟨⟩

The universal property follows from a bit of routine algebra involving products.

    total-prod .has-is-total-product .⟨_,_⟩' f g .to = X×Y.⟨ f. to , g .to X×Y.
    total-prod .has-is-total-product .⟨_,_⟩' f g .commute =
      I×J.unique₂
        (pulll I×J.π₁∘⟨⟩  f .commute)
        (pulll I×J.π₂∘⟨⟩  g .commute)
        (pulll I×J.π₁∘⟨⟩  pullr X×Y.π₁∘⟨⟩)
        (pulll I×J.π₂∘⟨⟩  pullr X×Y.π₂∘⟨⟩)
    total-prod .has-is-total-product .π₁∘⟨⟩' =
      Slice-pathp B _ X×Y.π₁∘⟨⟩
    total-prod .has-is-total-product .π₂∘⟨⟩' =
      Slice-pathp B _ X×Y.π₂∘⟨⟩
    total-prod .has-is-total-product .unique' p q =
      Slice-pathp B _ (X×Y.unique  i  p i .to) λ i  q i .to)