module Cat.Displayed.Instances.Slice.Comprehension
  {o } (B : Precategory o )
  where

The canonical comprehension category🔗

The identity fibred functor of the canonical self-indexing of any category is the prototypical example of a comprehension category.

  Slices-comprehension : Comprehension-structure (Slices B)
  Slices-comprehension .Comprehend = Id'
  Slices-comprehension .Comprehend-is-fibred = Id'-fibred

Assuming that has pullbacks (so that we can talk about its codomain fibration), the canonical comprehension category has comprehension coproducts given by its cocartesian lifts, which are in turn given by composition.

      Slices-comprehension-coproducts
        : has-comprehension-coproducts fib fib Slices-comprehension
      Slices-comprehension-coproducts = record where
                      x y = x .map ^! y
        ⟨_,_⟩          x y = ι! _ y
        ⟨⟩-cocartesian x y = ι!.cocartesian
        ∐-beck-chevalley cart = Slices-beck-chevalley B
          (rotate-pullback (cartesian→pullback B cart))

These comprehension coproducts are very strong by construction: they model This is one of those proofs whose name is longer than its definition, since and are both interpreted as the domain of the same map, and the canonical substitution between them is just the identity.

      Slices-very-strong-comprehension-coproducts
        : very-strong-comprehension-coproducts
            Slices-comprehension Slices-comprehension-coproducts
      Slices-very-strong-comprehension-coproducts x y = id-invertible