This webpage is about Lean 3, which is effectively obsolete; the community has migrated to Lean 4.
Jump to the corresponding page on the main Lean 4 website.
Maths in Lean: category theory #
The category
typeclass is defined in category_theory/category/basic.lean.
It depends on the type of the objects, so for example we might write category (Type u)
if we're talking about a category whose objects are types (in universe u
).
Functors (which are a structure, not a typeclass) are defined in category_theory/functor/basic.lean, along with identity functors and functor composition.
Natural transformations, and their compositions, are defined in category_theory/natural_transformation.lean.
The category of functors and natural transformations between fixed categories C
and D
is defined in category_theory/functor/category.lean.
Cartesian products of categories, functors, and natural transformations appear in category_theory/products/basic.lean. (Product in the sense of limits will appear elsewhere soon!)
The category of types, and the hom pairing functor, are defined in category_theory/types.lean.
Notation #
Categories #
We use the ⟶
(\hom
) arrow to denote sets of morphisms, as in X ⟶ Y
.
This leaves the actual category implicit; it is inferred from the type of X
and Y
by typeclass inference.
We use 𝟙
(\b1
) to denote identity morphisms, as in 𝟙 X
.
We use ≫
(\gg
) to denote composition of morphisms, as in f ≫ g
, which means "f
followed by g
".
You may prefer write composition in the usual convention, using ⊚
(\oo
or \circledcirc
), as in f ⊚ g
which means "g
followed by f
". To do so you'll need to add this notation locally, via
local notation f ` ⊚ `:80 g:80 := category.comp g f
Isomorphisms #
We use ≅
for isomorphisms.
Functors #
We use ⥤
(\func
) to denote functors, as in C ⥤ D
for the type of functors from C
to D
.
(Unfortunately ⇒
is reserved in logic.relator
, so we can't use that here.)
We use F.obj X
to denote the action of a functor on an object.
We use F.map f
to denote the action of a functor on a morphism`.
Functor composition can be written as F ⋙ G
.
Natural transformations #
We use τ.app X
for the components of a natural transformation.
Otherwise, we mostly use the notation for morphisms in any category:
We use F ⟶ G
(\hom
or -->
) to denote the type of natural transformations, between functors
F
and G
.
We use F ≅ G
(\iso
) to denote the type of natural isomorphisms.
For vertical composition of natural transformations we just use ≫
. For horizontal composition,
use hcomp
.