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)
     ProductP (Slices B) I×J (cut f) (cut g)
  slice-total-product {f = f} {g = g} X×Y I×J = total-prod where
    open is-product-over
    open ProductP

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

    total-prod : ProductP (Slices B) I×J (cut f) (cut g)
    total-prod .apex' .dom = X×Y.apex
    total-prod .apex' .map = I×J.⟨ f  X×Y.π₁ , g  X×Y.π₂ 
    total-prod .π₁' .map = X×Y.π₁
    total-prod .π₁' .com = sym I×J.π₁∘⟨⟩
    total-prod .π₂' .map = X×Y.π₂
    total-prod .π₂' .com = sym I×J.π₂∘⟨⟩

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

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