JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Functors and Natural Transformations

Categories themselves have maps. A functor sends objects to objects and arrows to arrows, respecting composition; a natural transformation is a map between functors. We see why determinant and double-dual are natural, and why a basis is not.

Functors: maps of categories

Once categories are objects of interest, we want maps between them. A [[functor|functor]] F : C → D assigns to each object A of C an object F(A) of D, and to each morphism f : A → B a morphism F(f) : F(A) → F(B), subject to F(id_A) = id_{F(A)} and F(g∘f) = F(g)∘F(f). A functor is a homomorphism of categories: it preserves identities and composition.

  1. [[forgetful-functor|Forgetful functors]] U : Grp → Set, Ring → Ab, Vect → Set just drop structure, sending a group to its underlying set and a homomorphism to its underlying function. Easy to overlook, surprisingly important.
  2. Free functors F : Set → Grp send a set to the free group on it, and a function to the induced homomorphism. These are the partners of the forgetful functors (next guide: adjunctions).
  3. Hom-functors Hom(A, −) : C → Set send B to the set Hom(A, B). These are the seeds of representability and Yoneda (guide 5).
  4. Contravariant functors reverse arrows: F(f) : F(B) → F(A). The dual space V ↦ V* is contravariant — a linear map T : V → W induces T* : W* → V*. Homology functors are covariant; cohomology is contravariant.

Natural transformations

If functors F, G : C → D are two ways of turning C into D, a [[natural-transformation|natural transformation]] η : F ⇒ G is a coherent way to morph one into the other. It gives, for each object A, a component η_A : F(A) → G(A) in D, such that for every f : A → B the square commutes: η_B ∘ F(f) = G(f) ∘ η_A. “Natural” means: the same recipe at every object, with no arbitrary choices that fail to commute with the maps.

The naturality square (must commute for every f : A -> B):

              eta_A
      F(A) ----------> G(A)
       |                |
  F(f) |                | G(f)
       v                v
      F(B) ----------> G(B)
              eta_B

Example 1 -- determinant is natural.
  Let F = GL_n(-) and G = (-)^x  (units functor), CRing -> Grp.
  det_R : GL_n(R) -> R^x  for each commutative ring R.
  For a ring map phi : R -> S, applying phi entrywise to a
  matrix then taking det = taking det then applying phi:
        det_S( phi(M) ) = phi( det_R(M) ).
  The square commutes for every phi  =>  det is NATURAL.

Example 2 -- double dual is natural; single dual basis is NOT.
  eta_V : V -> V**,  v |-> (f |-> f(v)),  on finite-dim Vect.
  For any linear T : V -> W,  T** o eta_V = eta_W o T.  Natural.
  But V -> V* via a chosen basis depends on the basis: change
  basis and the square fails. No natural iso V => V*.
Two textbook naturality checks: det and the double-dual embedding are natural; V ≅ V* is not.

This last point answers a question every linear algebra student feels: a finite-dimensional V is isomorphic to V*, yet the isomorphism feels “fake.” Category theory makes the feeling precise — there is no natural isomorphism V ⇒ V*, because every candidate needs a choice of basis and choices break naturality. The double dual V ⇒ V**, needing no choice, is natural. The vague word “canonical” finally has a definition: natural.