module Cat.Displayed.Diagram.Total.Product where

Total ProductsπŸ”—

Let be a displayed category, and be a product diagram in A diagram of the shape

is a total product diagram if it satisfies a displayed version of the universal property of the product.

  record is-total-product
      {π₁ : Hom p x} {Ο€β‚‚ : Hom p y}
      (prod : is-product B π₁ Ο€β‚‚)
      (π₁' : Hom[ π₁ ] p' x') (Ο€β‚‚' : Hom[ Ο€β‚‚ ] p' y')
      : Type (ob βŠ” β„“b βŠ” oe βŠ” β„“e)
      where
      no-eta-equality
      open is-product prod

More explicitly, suppose that we had a triple displayed over as in the following diagram.

is a product, so there exists a unique that commutes with and

This leaves a conspicuous gap in the upstairs portion of the diagram between and is a total product precisely when we have a unique lift of that commutes with and

      field
        ⟨_,_⟩'
          : (f' : Hom[ f ] a' x') (g' : Hom[ g ] a' y')
          β†’ Hom[ ⟨ f , g ⟩ ] a' p'
        Ο€β‚βˆ˜βŸ¨βŸ©'
          : π₁' ∘' ⟨ f' , g' ⟩' ≑[ Ο€β‚βˆ˜βŸ¨βŸ© ] f'
        Ο€β‚‚βˆ˜βŸ¨βŸ©'
          : Ο€β‚‚' ∘' ⟨ f' , g' ⟩' ≑[ Ο€β‚‚βˆ˜βŸ¨βŸ© ] g'
        unique'
          : {p1 : π₁ ∘ other ≑ f} {p2 : Ο€β‚‚ ∘ other ≑ g}
          β†’ {other' : Hom[ other ] a' p'}
          β†’ (p1' : (π₁' ∘' other') ≑[ p1 ] f')
          β†’ (p2' : (Ο€β‚‚' ∘' other') ≑[ p2 ] g')
          β†’ other' ≑[ unique p1 p2 ] ⟨ f' , g' ⟩'

A total product of and in consists of a choice of a total product diagram.

  record Total-product
    {x y}
    (prod : Product B x y)
    (x' : Ob[ x ]) (y' : Ob[ y ])
    : Type (ob βŠ” β„“b βŠ” oe βŠ” β„“e) where
    no-eta-equality
    open Product prod
    field
      apex' : Ob[ apex ]
      π₁' : Hom[ π₁ ] apex' x'
      Ο€β‚‚' : Hom[ Ο€β‚‚ ] apex' y'
      has-is-total-product : is-total-product has-is-product π₁' Ο€β‚‚'

    open is-total-product has-is-total-product

Total products and total categoriesπŸ”—

As the name suggests, a total product diagram in induces to a product diagram in the total category of

  is-total-product→total-is-product
    : βˆ€ {x y p} {x' : Ob[ x ]} {y' : Ob[ y ]} {p' : Ob[ p ]}
    β†’ {π₁ : ∫E.Hom (p , p') (x , x')} {Ο€β‚‚ : ∫E.Hom (p , p') (y , y')}
    β†’ {prod : is-product B (π₁ .hom) (Ο€β‚‚ .hom)}
    β†’ is-total-product E prod (π₁ .preserves) (Ο€β‚‚ .preserves)
    β†’ is-product (∫ E) π₁ Ο€β‚‚
The proof is largely shuffling data about, so we elide the details.
  is-total-productβ†’total-is-product {π₁ = π₁} {Ο€β‚‚ = Ο€β‚‚} {prod = prod} total-prod = ∫prod where
    open is-product prod
    open is-total-product total-prod

    ∫prod : is-product (∫ E) π₁ Ο€β‚‚
    ∫prod .is-product.⟨_,_⟩ f g =
      total-hom ⟨ f .hom , g .hom ⟩ ⟨ f .preserves , g .preserves ⟩'
    ∫prod .is-product.Ο€β‚βˆ˜βŸ¨βŸ© =
      total-hom-path E Ο€β‚βˆ˜βŸ¨βŸ© Ο€β‚βˆ˜βŸ¨βŸ©'
    ∫prod .is-product.Ο€β‚‚βˆ˜βŸ¨βŸ© =
      total-hom-path E Ο€β‚‚βˆ˜βŸ¨βŸ© Ο€β‚‚βˆ˜βŸ¨βŸ©'
    ∫prod .is-product.unique p1 p2 =
      total-hom-path E
        (unique (ap hom p1) (ap hom p2))
        (unique' (ap preserves p1) (ap preserves p2))
\ Warning

Note that a product diagram in a total category does not necessarily yield a product diagram in the base category. For a counterexample, consider the following displayed category:

The total category is equivalent to the terminal category, and thus has products. However, the base category does not have products, as the uniqueness condition fails!