A category is skeletal if isomorphic objects are equal; a skeleton of is a skeletal full subcategory containing one object from each isomorphism class. Every category is equivalent to its skeleton (choose a representative and an iso to it for each object), so “up to equivalence” one may replace by a skeleton.
Sources: 7 Sketches Example 1.49 (identifying equivalent elements of a preorder gives a partial order), §5.2 (the prop has objects : the skeleton of finite sets); DaoFP §11.5 (equality vs. isomorphism); Kittenlab Lecture 1 (
FinSet(n)as canonical finite sets); CTfS Definitions 4.3.4.8, 4.3.4.10, Proposition 4.3.4.9, Exercises 4.3.4.5, 4.3.4.11
- Elections (CTfS Definition 4.3.4.8): choosing for every isomorphism class an elected object , and for every a pair of inverse isomorphisms , yields the elected skeleton, and the proof that sends to between the representatives.
- The skeleton of is the category of ordinals (Cardinality is a complete invariant, Category of Finite Sets); this is the Prop and the Category of Finite Sets as a Prop.
- The skeleton of a Preorder is the Partial Order obtained by quotienting Equivalent Elements of a Preorder.
- The skeleton of a Groupoid is a disjoint union of groups; of , the matrices (Prop of Matrices).
Docs: FinSets — Kittenlab Lecture 1
using Catlab
# Catlab's FinSet(n) already works in the skeleton of FinSet: objects are natural numbers
FinSet(3) == FinSet(3) # isomorphic finite sets are literally equal hereimport Mathlib
open CategoryTheory
#check @CategoryTheory.Skeleton -- the skeleton of a category
#check @CategoryTheory.skeletonEquivalence -- Skeleton C ≌ C
#check @CategoryTheory.FintypeCat.Skeleton -- ℕ with functions Fin m → Fin n