Functor
Introduction
In the realm of category theory, a branch of mathematics that deals with abstract structures and relationships between them, the concept of a **functor** plays a pivotal role. Functors are mappings between categories that preserve the structure of categories in a precise manner. They are instrumental in connecting various mathematical structures and facilitating the transfer of properties and results from one context to another.
Definition and Basic Properties
A **functor** is a type of mapping between categories. Formally, given two categories \( \mathcal{C} \) and \( \mathcal{D} \), a functor \( F \) from \( \mathcal{C} \) to \( \mathcal{D} \) consists of two components:
1. **Object Mapping**: For every object \( X \) in \( \mathcal{C} \), there is an object \( F(X) \) in \( \mathcal{D} \). 2. **Morphism Mapping**: For every morphism \( f: X \rightarrow Y \) in \( \mathcal{C} \), there is a morphism \( F(f): F(X) \rightarrow F(Y) \) in \( \mathcal{D} \).
These mappings must satisfy two key properties:
- **Identity Preservation**: For every object \( X \) in \( \mathcal{C} \), \( F(\text{id}_X) = \text{id}_{F(X)} \). - **Composition Preservation**: For any two morphisms \( f: X \rightarrow Y \) and \( g: Y \rightarrow Z \) in \( \mathcal{C} \), \( F(g \circ f) = F(g) \circ F(f) \).
Types of Functors
Functors can be classified into various types based on their properties and the categories they map between.
Covariant Functors
A **covariant functor** is a functor that preserves the direction of morphisms. This means that if \( f: X \rightarrow Y \) is a morphism in \( \mathcal{C} \), then \( F(f): F(X) \rightarrow F(Y) \) is a morphism in \( \mathcal{D} \).
Contravariant Functors
A **contravariant functor** reverses the direction of morphisms. Formally, a contravariant functor \( F \) from \( \mathcal{C} \) to \( \mathcal{D} \) assigns to each object \( X \) in \( \mathcal{C} \) an object \( F(X) \) in \( \mathcal{D} \), and to each morphism \( f: X \rightarrow Y \) in \( \mathcal{C} \), a morphism \( F(f): F(Y) \rightarrow F(X) \) in \( \mathcal{D} \), such that \( F(\text{id}_X) = \text{id}_{F(X)} \) and \( F(g \circ f) = F(f) \circ F(g) \).
Endofunctors
An **endofunctor** is a functor that maps a category to itself. Formally, an endofunctor \( F \) on a category \( \mathcal{C} \) is a functor from \( \mathcal{C} \) to \( \mathcal{C} \).
Bifunctors
A **bifunctor** is a functor that takes two arguments, each from potentially different categories, and maps them to a third category. Formally, a bifunctor \( F \) from categories \( \mathcal{C} \) and \( \mathcal{D} \) to \( \mathcal{E} \) assigns to each pair of objects \( (X, Y) \) an object \( F(X, Y) \) in \( \mathcal{E} \), and to each pair of morphisms \( (f: X \rightarrow X', g: Y \rightarrow Y') \), a morphism \( F(f, g): F(X, Y) \rightarrow F(X', Y') \).
Examples of Functors
Functors are ubiquitous in mathematics and appear in various contexts. Here are some notable examples:
Power Set Functor
The **power set functor** \( \mathcal{P} \) maps each set \( S \) to its power set \( \mathcal{P}(S) \), and each function \( f: S \rightarrow T \) to the function \( \mathcal{P}(f): \mathcal{P}(S) \rightarrow \mathcal{P}(T) \), defined by \( \mathcal{P}(f)(A) = \{ f(a) \mid a \in A \} \) for each subset \( A \subseteq S \).
Hom Functor
The **Hom functor** is a fundamental example in category theory. Given a category \( \mathcal{C} \) and an object \( A \) in \( \mathcal{C} \), the Hom functor \( \text{Hom}(A, -) \) maps each object \( X \) in \( \mathcal{C} \) to the set of morphisms \( \text{Hom}(A, X) \), and each morphism \( f: X \rightarrow Y \) to the function \( \text{Hom}(A, f): \text{Hom}(A, X) \rightarrow \text{Hom}(A, Y) \), defined by \( \text{Hom}(A, f)(g) = f \circ g \) for each \( g \in \text{Hom}(A, X) \).
Forgetful Functor
The **forgetful functor** maps objects and morphisms in a structured category to their underlying sets and functions, respectively. For instance, the forgetful functor from the category of groups to the category of sets maps each group to its underlying set and each group homomorphism to the corresponding function between sets.
Functor Categories
A **functor category** is a category where the objects are functors and the morphisms are natural transformations between these functors. Given two categories \( \mathcal{C} \) and \( \mathcal{D} \), the functor category \( [\mathcal{C}, \mathcal{D}] \) has as objects the functors from \( \mathcal{C} \) to \( \mathcal{D} \), and as morphisms the natural transformations between these functors.
Natural Transformations
A **natural transformation** is a way of transforming one functor into another while preserving the structure of the categories involved. Formally, given two functors \( F, G: \mathcal{C} \rightarrow \mathcal{D} \), a natural transformation \( \eta \) from \( F \) to \( G \) assigns to each object \( X \) in \( \mathcal{C} \) a morphism \( \eta_X: F(X) \rightarrow G(X) \) in \( \mathcal{D} \), such that for every morphism \( f: X \rightarrow Y \) in \( \mathcal{C} \), the following diagram commutes:
\[ \begin{array}{ccc} F(X) & \xrightarrow{\eta_X} & G(X) \\ \downarrow{F(f)} & & \downarrow{G(f)} \\ F(Y) & \xrightarrow{\eta_Y} & G(Y) \end{array} \]
Applications of Functors
Functors are used extensively across various fields of mathematics and theoretical computer science.
Algebraic Topology
In algebraic topology, functors such as the fundamental group functor and homology functors map topological spaces to algebraic structures, facilitating the study of topological properties through algebraic methods.
Algebraic Geometry
In algebraic geometry, functors like the Spec functor map commutative rings to affine schemes, providing a bridge between algebra and geometry.
Functional Programming
In functional programming, functors are used to abstractly represent data structures that can be mapped over. For example, the map function on lists is a functorial operation.
Advanced Topics
Adjunctions
An **adjunction** between two categories \( \mathcal{C} \) and \( \mathcal{D} \) consists of a pair of functors \( F: \mathcal{C} \rightarrow \mathcal{D} \) and \( G: \mathcal{D} \rightarrow \mathcal{C} \), and a pair of natural transformations \( \eta: \text{id}_{\mathcal{C}} \rightarrow G \circ F \) and \( \epsilon: F \circ G \rightarrow \text{id}_{\mathcal{D}} \), satisfying certain coherence conditions. Adjunctions generalize the notion of inverse functions and are fundamental in many areas of mathematics.
Monoidal Functors
A **monoidal functor** between two monoidal categories \( (\mathcal{C}, \otimes, I) \) and \( (\mathcal{D}, \otimes, I) \) is a functor \( F: \mathcal{C} \rightarrow \mathcal{D} \) equipped with a natural isomorphism \( \phi_{X,Y}: F(X) \otimes F(Y) \rightarrow F(X \otimes Y) \) and a morphism \( \phi_I: I \rightarrow F(I) \), satisfying certain coherence conditions.
Representable Functors
A functor \( F: \mathcal{C} \rightarrow \text{Set} \) is **representable** if there exists an object \( X \) in \( \mathcal{C} \) such that \( F \) is naturally isomorphic to the Hom functor \( \text{Hom}(X, -) \). Representable functors play a crucial role in the study of categories and their properties.
Conclusion
Functors are a cornerstone of category theory, providing a powerful framework for understanding and relating different mathematical structures. Their ability to preserve and transfer structure makes them indispensable in various fields of mathematics and theoretical computer science.