# Closed monoidal category

In mathematics, especially in category theory, a closed monoidal category is a context where it is possible both to form tensor products of objects and to form 'mapping objects'. A classic example is the category of sets, Set, where the tensor product of sets $A$ and $B$ is the usual cartesian product $A \times B$, and the mapping object $B^A$ is the set of functions from $A$ to $B$. Another example is the category FdVect, consisting of finite-dimensional vector spaces and linear maps. Here the tensor product is the usual tensor product of vector spaces, and the mapping object is the vector space of linear maps from one vector space to another.

The 'mapping object' referred to above is also called the 'internal Hom'. The internal language of closed symmetric monoidal categories is the linear type system.

## Definition

A closed monoidal category is a monoidal category $\mathcal{C}$ such that for every object $B$ the functor given by right tensoring with $B$

$A\mapsto A\otimes B$

has a right adjoint, written

$A\mapsto (B \Rightarrow A).$

This means that there exists a bijection, called 'currying', between the Hom-sets

$\text{Hom}_\mathcal{C}(A\otimes B, C)\cong\text{Hom}_\mathcal{C}(A,B\Rightarrow C)$

that is natural in both A and C. In a different, but common notation, one would say that the functor

$-\otimes B:\mathcal{C}\to\mathcal{C}$

has a right adjoint

$[B, -]:\mathcal{C}\to\mathcal{C}$

Equivalently, a closed monoidal category $\mathcal{C}$ is a category equipped, for every two objects A and B, with

• an object $A\Rightarrow B$,
• a morphism $\mathrm{eval}_{A,B} : (A\Rightarrow B) \otimes A \to B$,

satisfying the following universal property: for every morphism

$f : X\otimes A\to B$

there exists a unique morphism

$h : X \to A\Rightarrow B$

such that

$f = \mathrm{eval}_{A,B}\circ(h \otimes \mathrm{id}_A).$

It can be shown that this construction defines a functor $\Rightarrow : \mathcal{C}^{op} \otimes \mathcal{C} \to \mathcal{C}$. This functor is called the internal Hom functor, and the object $A \Rightarrow B$ is called the internal Hom of $A$ and $B$. Many other notations are in common use for the internal Hom. When the tensor product on $\mathcal{C}$ is the cartesian product, the usual notation is $B^A$ and this object is called the exponential object.

## Biclosed and symmetric categories

Strictly speaking, we have defined a right closed monoidal category, since we required that right tensoring with any object $A$ has a right adjoint. In a left closed monoidal category, we instead demand that the functor of left tensoring with any object $A$

$B\mapsto A\otimes B$

have a right adjoint

$B\mapsto(B\Leftarrow A)$

A biclosed monoidal category is a monoidal category that is both left and right closed.

A symmetric monoidal category is left closed if and only if it is right closed. Thus we may safely speak of a 'symmetric monoidal closed category' without specifying whether it is left or right closed. In fact, the same is true more generally for braided monoidal categories: since the braiding makes $A \otimes B$ naturally isomorphic to $B \otimes A$, the distinction between tensoring on the left and tensoring on the right becomes immaterial, so every right closed braided monoidal category becomes left closed in a canonical way, and vice versa.

We have described closed monoidal categories as monoidal categories with an extra property. One can equivalently define a closed monoidal category to be a closed category with an extra property. Namely, we can demand the existence of a tensor product that is left adjoint to the internal Hom functor. In this approach, closed monoidal categories are also called monoidal closed categories.

## Examples

• The monoidal category Set of sets and functions, with cartesian product as the tensor product, is a closed monoidal category. Here, the internal hom $A \Rightarrow B$ is the set of functions from $A$ to $B$. In computer science, the bijection between tensoring and the internal hom is known as currying, particularly in functional programming languages. Indeed, some languages, such as Haskell and Caml, explicitly use an arrow notation to denote a function. This example is a Cartesian closed category.
• More generally, every Cartesian closed category is a symmetric monoidal closed category, when the monoidal structure is the cartesian product structure. Here the internal hom $A \Rightarrow B$ is usually written as the exponential object $B^A$.
• The monoidal category FdVect of finite-dimensional vector spaces and linear maps, with its usual tensor product, is a closed monoidal category. Here $A \Rightarrow B$ is the vector space of linear maps from $A$ to $B$. This example is a compact closed category.
• More generally, every compact closed category is a symmetric monoidal closed category, in which the internal Hom functor $A\Rightarrow B$ is given by $B\otimes A^*$.