definition example

For a category , the left cone is obtained by adjoining one new object , the cone point, with exactly one morphism for every object of (and , nothing into from ). Composites are forced: is the unique arrow . So is an Initial Object of . Dually the right cone adjoins a terminal object .

Sources: CTfS §4.5.2 (Definition 4.5.2.6, Remark 4.5.2.7, Examples 4.5.2.8, 4.5.2.12, Exercises 4.5.2.9–4.5.2.10, Definition 4.5.2.11), §4.5.3 (Definition 4.5.3.18, Exercise 4.5.3.19, Examples 4.5.3.21, 4.5.3.28); 7 Sketches §3.5.2 (cones).

Why: cones are functors out of cones

For a diagram , a Cone over is exactly a functor that restricts to on : the cone point goes to the apex, the arrows go to the legs, and functoriality is the commutativity of every triangle. Cones over form a category and the Limit of is its terminal object (CTfS Definition 4.5.3.18); cocones and colimits use and initial objects. The shape of a limit problem is thus : “given the bottom, find the best top”.

Examples

  • Products (CTfS Example 4.5.2.8): for the discrete category , the left cone is — a centre with spokes. Functors are -legged spans, and the limit is the -ary Product (CTfS Example 4.5.3.21). For the cone is the one-object category and the limit is the Terminal Object.
  • Pullbacks: the cospan plus a cone point is the commutative square — the shape of a Pullback.
  • Iterated cones (CTfS Exercise 4.5.2.9): , (the Walking Arrow), and in general ; the -fold cone on the empty category is the linear order (Simplex Category).
  • Squares (CTfS Example 4.5.2.12): is the commutative square — a span closed off by a cospan.
  • Graphs (CTfS Exercise 4.5.2.10, 4.5.3.19): for the graph-indexing category , the left cone has arrows and with . A cone over a graph in is a set with landing in arrows whose source equals their target; the limit is the set of loops — the Equalizer of — and the colimit is the set of connected components.

As a pushout

The cone is itself a colimit in (CTfS Example 4.5.3.28):

the Pushout that takes the cylinder and collapses the end to a point — exactly the topologist’s cone on a space (compare CTfS Exercise 4.5.3.29, ).

Docs: FinSets · Limits & colimits · ACSets API · Graphs · ThCategory (GATlab)

using Catlab
# The left cone on the graph-indexing category A ⇉ V (CTfS Exercise 4.5.2.10)
@present SchGraphCone(FreeCategory) begin
  (Apex, A, V)::Ob
  (src, tgt)::Hom(A, V)
  a::Hom(Apex, A); v::Hom(Apex, V)
  a ⋅ src == v; a ⋅ tgt == v            # every triangle commutes
end
# The limit of a graph (as a diagram A ⇉ V in FinSet) is its set of loops: an equalizer
G = @acset Graph begin V = 3; E = 4; src = [1, 1, 2, 3]; tgt = [2, 1, 3, 3] end
loops = equalizer(FinFunction(G[:src], nv(G)), FinFunction(G[:tgt], nv(G)))
collect(incl(loops))                     # [2, 4]: the loops at vertices 1 and 3
# the colimit is the set of connected components: a coequalizer
length(apex(coequalizer(FinFunction(G[:src], nv(G)), FinFunction(G[:tgt], nv(G)))))   # 1
import Mathlib
open CategoryTheory Limits
-- Mathlib's cone point: `WithInitial J` adjoins an initial object, `WithTerminal J` a terminal one
#check @WithInitial               -- J◁
#check @WithTerminal              -- J▷
#check @Cone                      -- a cone over F : J ⥤ C, equivalently a functor out of WithInitial J
#check @IsLimit                   -- a terminal cone
-- a finite category given by objects and hom-sets; the left cone adds a new initial object
data Obj o = Bottom | Old o deriving (Eq, Show)   -- Bottom plays −∞
 
-- hom-set sizes of the cone, given those of the original category
coneHom :: (o -> o -> Int) -> Obj o -> Obj o -> Int
coneHom _ Bottom Bottom   = 1          -- only the identity
coneHom _ Bottom (Old _)  = 1          -- exactly one leg to each object
coneHom _ (Old _) Bottom  = 0          -- nothing goes back
coneHom h (Old x) (Old y) = h x y
 
-- Star_2: the cone on the discrete category with two objects (the shape of a product)
star2 :: Obj Bool -> Obj Bool -> Int
star2 = coneHom (\x y -> if x == y then 1 else 0)