Maths - Category Theory - Natural Transformations

natural transformation A natural transformation is a mapping between two functors. The functors must have the same domain and codomain as each other. There is also the natuality square condition that must apply for this to be a natural transformation as we shall see below.


For components we will be working in terms of internal objects:

natural transformation component


First we take an object 'x' in 'C' and we see that this maps to a morphism in 'D'.

For every object 'x' in C there is a morphism in D (f x -> g x) known as the components of α at x written αx.

naturality square

Natuality Square

So now we know what happens to on object in 'C', we now want to know what happens to structure in 'C', for this we see what happens to a morphism in 'C'.

A morphism in C would map to two component morphisms in D. This diagram must commute for every morphism in C.

So αx is the component of the natural transform at x and αy is the component of the natural transform at y. For naturality we require that the square in D commutes, that is,

αy• M = N • αx

where: M = F m
and N = G m

so: αy• F m = G m • αx

Here is a more schematic view of the
natuality square. The outside square must
commute like this:

For a natural transformation α: F -> G
iiffor allm: C -a-> D
αddFm = Gm•dαc

natuality square schematic

naturality 2-categories


We could generalise this to any structure in C which would have two components in D. Usually we define categories from the outside using arrows, in this case we look 1 level inside the category, two layers of category are known as a 2-category.

natural transformation compose vertical

Composition Vertical

We can apply α to F to get G and then β to get H.

natural transformation horizontal composition

Composition Horizontal


Horizontal and Vertical Composition

So a natural transformation adds another layer on top of functors. When we looked at functors we saw that we can see them at two levels, we can see them in terms of internal objects, or we can 'lift' the view to be in terms of structure.

So how can functors of functors occur? That is functors that map one functor to another, there are at least two ways which I will show here as horizontal or vertical:

Horizontal natural transform horizontal component The first way that we can get functors of functors is not new, it arises from morphisms. A function of components (x and y) gives rise to a function of the function 'h'.
Vertical natural transform vertical component

The natural transform is shown here as a vertical double arrow.

We can 'lift' the view, so that the natural transformation relates the functors F & G in a way that is independent of the underlying categories C & D.

So we have a morphism of functors, that is we can regard the functors as objects and α as a functor.

Square (combination of horizontal and vertical) natuality square

The natuality square requirement combines these vertical and horizontal functors into to a square which must commute for naturality.

αy º F(h) = G(h) º αx

or if we notate: βF = F(h) and βG= G(h):

αy º βF = βG º αx

So now we have 3 levels at which we can view natural transformations:

When working at level 1 and 2 we must remember that the natuality square (see below) applies but when we include the lowest level natuality comes out of the diagram automatically, so we will start by working in terms of the internal objects, until the natuality square becomes intuitive.


Example - Computer Language Types - Lists

On the functor page we saw how an example of lists (as used in computer languages) could be seen as instances of functors, here we extend that example to natural transformations.

list functor
We start with a 'List' functor. This takes any category 'C' and maps it to a category 'List C'.
For example it maps 'int' to 'List int' and so on, because 'List' is a functor it maps the internal functions of the category. For example 'int' can have a 'negate' function, and we can define 'negate' for 'List int' as negate each element separately. Other categories such as 'string' will have their own functions which will be respected by the list functor. list functor
list reverse We now want to add a reverse operation to the list which reverses the order of the elements. We could define this for each type of list.
But the reverse operation is independent of the type of C so we can just show it like this: list rev
list rev
However, its important to make it clear that the reverse operation is independent of the internal operations of the categories, therefore we draw it 'orthogonal' to the functor, like this.
list reverse example Natuality square for List(Int)

In the case of containers like this:

A list may also be thought of as a cartesian product.

Take example 'C' is a set containing elements such as x and y. 'D' contains lists written as [x] for a list with a single element x.

natuality square example

The cartesian product of x1 and x2 in set is mapped to a list containing x1 and x2.

Example 2 - Permutation Groups

As our category with the object being a set and the morhisms being the permutations of the set elements.

We can think of composition of these permutations as being a natural transformation.

See Yonada lemma.

group permutation


On site here are definitions in Isabella.

Related Subjects

Combinatory Logic

metadata block
see also:
Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

flag flag flag flag flag flag The Princeton Companion to Mathematics - This is a big book that attempts to give a wide overview of the whole of mathematics, inevitably there are many things missing, but it gives a good insight into the history, concepts, branches, theorems and wider perspective of mathematics. It is well written and, if you are interested in maths, this is the type of book where you can open a page at random and find something interesting to read. To some extent it can be used as a reference book, although it doesn't have tables of formula for trig functions and so on, but where it is most useful is when you want to read about various topics to find out which topics are interesting and relevant to you.


Terminology and Notation

Specific to this page here:


This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2024 Martin John Baker - All rights reserved - privacy policy.