module Cat.Displayed.Instances.Scone
  {o β„“} (B : Precategory o β„“)
  (terminal : Terminal B)
  where

open Precategory B
open Terminal terminal
open Hom B
open /-Obj

Sierpinski conesπŸ”—

Given a category we can construct a displayed category of β€œSierpinski cones” over or β€œscones” for short. Scones provide a powerful set of tools for proving various properties of categories that we want to think of as somehow β€œsyntactic”.

A scone over some object consists of a set along with a function If we think about as some sort of category of contexts, then a scone over some context is some means of attaching semantic information (the set to such that we can recover closed terms of from elements of

Morphisms behave like they do in an arrow category of given a map in a map over in the category between and consists of a function such that for all we have

With the exposition out of the way, we can now define the category of scones by abstract nonsense: the category of scones over is the pullback of the fundamental fibration along the global sections functor.

Scones : Displayed B (lsuc β„“) β„“
Scones = Change-of-base Hom[ top ,-] (Slices (Sets β„“))

We can unfold the abstract definition to see that we obtain the same objects and morphisms described above.

scone : βˆ€ {X} β†’ (U : Set β„“) β†’ (∣ U ∣ β†’ Hom top X) β†’ Scones.Ob[ X ]
scone U s = cut {domain = U} s

scone-hom : βˆ€ {X Y} {f : Hom X Y} {U V : Set β„“}
          β†’ {su : ∣ U ∣ β†’ Hom top X} {sv : ∣ V ∣ β†’ Hom top Y}
          β†’ (uv : ∣ U ∣ β†’ ∣ V ∣)
          β†’ (βˆ€ u β†’ f ∘ (su u) ≑ sv (uv u))
          β†’ Scones.Hom[ f ] (scone U su) (scone V sv)
scone-hom uv p = slice-hom uv (funext p)

As a fibrationπŸ”—

The category of scones over is always a fibration. This is where our definition by abstract nonsense begins to shine: base change preserves fibrations, and the codomain fibration is a fibration whenever the base category has pullbacks, which sets has!

Scones-fibration : Cartesian-fibration Scones
Scones-fibration =
  Change-of-base-fibration _ _ $
  Codomain-fibration _ $
  Sets-pullbacks