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))))) # 1import 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)