Let be a Diagram. A cone over consists of an object (the apex) and, for each , a morphism (a leg), such that for every in , (all triangles commute). A morphism of cones is with for all . Cones over form the category , whose Terminal Object is the Limit of .
Equivalently (DaoFP, Kittenlab): a cone with apex is a Natural Transformation from the Constant Functor; “the constant functor shrinks all vertices to one, so naturality squares shrink to triangles”. A cocone is the dual: legs , i.e. (Cocone).
Sources: 7 Sketches Definition 3.92, §3.5.2 (Cone, Exercise 3.91); DaoFP §9.4–9.5 (“Cospans as natural transformations”, “Limits and Colimits”); Kittenlab Lecture 9, 15; CTfS §4.5.2–4.5.3 (Definitions 4.5.2.6, 4.5.3.18, Construction 4.5.3.15)
Cones as diagrams of a bigger shape (CTfS Definition 4.5.3.18). Adding a new initial object to the indexing category gives its left cone ; a cone over is then simply a diagram restricting to , and cone morphisms are natural transformations that are the identity on . This is the slice category , and the limit is its terminal object: “none shall map to and except through me!“.
Examples. For the discrete diagram , a cone is a Span (an “object equipped with morphisms to and ”); for a Cospan , a cone is a commuting square with apex (a Pullback candidate); for a parallel pair , a cone is with (Equalizer). For the empty diagram a cone is just an object. In , a cone with apex over is an element of (Finite Limits in Set).
Docs: FinSets · Limits & colimits · Free diagrams — Kittenlab Lecture 9
using Catlab
# a cone over the cospan f : X → A ← Y : g is a Multispan with legs into X and Y agreeing in A
f = FinFunction([1, 1, 2], 2); g = FinFunction([2, 1], 2)
lim = pullback(f, g) # the limit cone
cone = Multispan(apex(lim), legs(lim))#check CategoryTheory.Limits.Cone -- structure Cone F: pt, π : (const J).obj pt ⟶ F
#check CategoryTheory.Limits.ConeMorphism
#check CategoryTheory.Limits.Cocone-- a cone over a diagram with objects indexed by j: an apex type c and legs c -> d j (commutation unenforced)
newtype Cone c d = Cone (forall j. j -> (c -> d)) -- schematic: legs selected by an index