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 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.