# Teoria das categorias

Na matemática, a teoria das categorias provê uma linguagem interdisciplinar capaz de delinear resultados e construções gerais, separando-os dos específicos a cada área, possibilitando a simplificação e clarificação de demonstrações. A teoria centra-se nos conceitos de categoria, que é uma abstração do conceito de composição de funções, de functor, transformações entre categorias, e de transformação natural, a qual provê um significado preciso para expressões como "natural" e "canônico".
O conceito de categorias, functores e transformações naturais, em maior generalidade, foi introduzido por Samuel Eilenberg e Saunders Mac Lane, em 1945, em seu artigo "General Theory of Natural Equivalences". Nos anos seguintes, a teoria das categorias foi empregada na topologia algébrica e álgebra homológica, por Norman Steenrod, Alexander Grothendieck e outros. Em 1958, Daniel Kan descobre o conceito de functores adjuntos, que, segundo Mac Lane, são "onipresentes na matemática". Desde então, houve diversos desenvolvimentos.
Sendo de alto nível de abstração, é recomendada, antes do estudo de teoria das categorias, familiaridade de conceitos básicos de álgebra linear, álgebra abstrata e topologia, por exemplo.

## Categoria

Uma categoria C consiste nos seguintes elementos:
* Uma coleção de objetos de C.
* Para cada dupla a, b de objetos, uma coleção de setas (ou morfismos) do domínio (ou origem) a até o contradomínio (ou destino) b, para as quais são usadas a notações f : a → b e f ∈ hom$_C$(a, b).
* Para cada objeto a, uma seta de a até a, chamada identidade 1$_a$ : a → a.
* Para cada tripla de objetos a, b, c, uma operação de composição, levando
    cada seta f : a → b e cada seta g : b → c a uma seta g ∘ f : a → c.
* Devem ser satisfeitas as igualdades:
    (Lei da identidade) Para todos objetos a, b e todas as setas f : a → b, vale 1$_b$ ∘ f = f = f ∘ 1$_a$.
    (Associatividade) Para todos objetos a, b, c, d e todas as setas f : a → b, g : b → c e h : c → d, vale (h ∘ g) ∘ f = h ∘ (g ∘ f).
Há, por exemplo, categorias:
* cujos objetos são conjuntos, e cujos morfismos são funções entre conjuntos;
* cujos objetos são grupos, e cujos morfismos são homomorfismos de grupos;
* cujos objetos são espaços topológicos, e cujos morfismos são funções contínuas;
* cujos objetos são os elementos de um conjunto pré-ordenado fixo (P, ≤), e tal que, para quaisquer objetos x, y ∈ P, o número de morfismos x → y é exatamente um se x ≤ y, e zero se ¬ (x ≤ y).
* cujos objetos são vértices de um grafo, e cujos morfismos são caminhos nesse grafo.
Nestes dois últimos exemplos, percebe-se que os objetos podem não ter "elementos", e os morfismos podem não ter relação com funções.
Para a representação de relações entre os morfismos, usam-se diagramas consistindo de alguns dos objetos e setas de uma categoria; uma sequência de setas, cada uma tendo destino coincidindo com a origem da seguinte, representa a composição de morfismos correspondentes. Um desses diagramas é chamado diagrama comutativo quando quaisquer duas sequências de setas que iniciam num mesmo objeto, e que terminam também num mesmo objeto, têm composições iguais.
Dualizar consiste em inverter o sentido de cada uma das setas em um diagrama; cada categoria tem uma categoria oposta. Desse modo, os teoremas e definições em teoria das categorias se organizam em duplas, um enunciado sendo obtido do outro trocando cada categoria pela oposta; por exemplo, um epimorfismo é um monomorfismo na categoria oposta, um coproduto é um produto na categoria oposta etc.

### Tipos de morfismos

Como os objetos de uma categoria podem não ter "elementos", generalizações de conceitos como função injetiva e função sobrejetiva devem envolver somente setas, e pode haver mais de uma generalização possível.
Como exemplo, generalizando o conceito de função injetiva, um morfismo f : a → b é chamado monomorfismo se e só se
    para todo objeto c e morfismos g, h : c → a satisfazendo f ∘ g = f ∘ h, vale g = h.
Na categoria dos conjuntos, na categoria dos grupos e na categoria dos espaços topológicos, os monomorfismos são exatamente as funções injetivas. Já um morfismo f : a → b é chamado seção se e só se existe g : b → a tal que g ∘ f = 1$_a$. Toda seção é um monomorfismo, mas a recíproca pode falhar; com efeito, na categoria dos grupos abelianos, as seções são exatamente os homomorfismos de grupos abelianos f : A → B que são injetivos e tais que B é a soma direta da imagem de f com algum subgrupo de B.
Dualizando, um morfismo f : b → a é um epimorfismo se e só se
    para todo objeto c e morfismos g, h : a → c satisfazendo g ∘ f = h ∘ f, vale g = h.
Na categoria dos conjuntos, os epimorfismos são precisamente as funções sobrejetivas. Na categoria dos anéis, no entanto, a inclusão ℤ → ℚ é um epimorfismo não sobrejetivo.
Como outro exemplo, um isomorfismo é um morfismo f : a → b tal que há g : b → a satisfazendo g ∘ f = 1$_a$ e f ∘ g = 1$_b$. Na categoria dos espaços topológicos, os isomorfismos são precisamente os homeomorfismos.

### Propriedade universal

Construções como produto cartesiano, soma direta, e espaço funcional podem ser generalizadas para todas as categorias. Com exemplo, dados objetos a, b numa categoria C, um objeto a × b, junto a morfismos p$_a$ : a × b → a e p$_b$ : a × b → b, forma um sistema de produto categorial (binário) se e só se, para qualquer outro objeto c e quaisquer morfismos f : c → a e g : c → b, existe único morfismo h : c → a × b tal que p$_a$ ∘ h = f e p$_b$ ∘ h = g.
Dualmente, há o conceito de coproduto (binário). Na categoria dos conjuntos, os produtos correspondem aos produtos cartesianos, e os coprodutos correspondem às uniões disjuntas. Na categoria dos grupos abelianos, os produtos e coprodutos binários coincidem, e são chamados de soma direta.
Uma propriedade universal é uma propriedade que envolve a existência de único morfismo que faz certo diagrama comutar. Maneiras de definir rigorosamente o conceito incluem functores representáveis e limites e colimites.

## Functor

Um functor é uma correspondência entre objetos de duas categorias que pode ser estendida a uma correspondência entre morfismos, de modo que sejam preservadas as identidades e as composições. Mais precisamente, dadas categorias C e D, um functor (covariante) de C até D, escrito F : C → D, consiste
* de uma atribuição, a cada objeto x ∈ C, de um objeto F(x) ∈ D,
* de uma atribuição, a cada morfismo f : x → y, de um morfismo F$_{x,y}$(f) = F(f) : F(x) → F(y),
satisfazendo
* F(1$_x$) = 1$_{F(x)}$ para cada objeto x ∈ C,
* F(g ∘ f) = F(g) ∘ F(f) para cada dupla de morfismos f : x → y e g : y → z.
Exemplos de correspondências que podem ser estendidas a functores são: a correspondência entre cada conjunto A e seu conjunto de partes P(A) (levando cada f : A → B à função f$^→$ = (S ⊆ A) ↦ {f(x) | x ∈ S}, de imagens de subconjuntos de A); a correspondência entre cada anel comutativo K e seu grupo de matrizes invertíveis GL$_n$(K) de ordem n.
Noutros casos, há um functor contravariante, atribuindo um morfismo F(f) : F(y) → F(x) a cada morfismo f : x → y, e invertendo a ordem das composições. Exemplos de correspondências que podem ser estendidas a functores contravariantes são: a correspondência entre cada conjunto e seu conjunto de partes (levando cada f : A → B à função f$^←$ = (T ⊆ B) ↦ {y | f(y) ∈ T}, de pré-imagens de subconjuntos de B); a correspondência entre cada espaço vetorial e seu espaço dual; a correspondência entre cada anel comutativo e seu espaço de ideais primos.

### Transformação natural

Intuitivamente, uma transformação natural é uma família de morfismos numa categoria dados simultaneamente por uma mesma definição, sem depender de escolhas "arbitrárias". Por exemplo, para cada V espaço vetorial, há mapeamento linear natural e de V ao dual de seu dual, dado por e(v) = f ↦ f(v). Mais precisamente, uma transformação natural entre functores F, G : C → D é uma família de morfismos η$_X$ : F(X) → G(X), para cada X objeto de C, satisfazendo
    para qualquer morfismo f : X → Y, η$_Y$ ∘ F(f) = G(f) ∘ η$_X$.
Eis exemplos:
* A projeção G → G∕[G, G] de cada grupo em sua abelianização (quociente pelo subgrupo comutador) pode ser representada como uma transformação natural.
* A dualidade de Pontryagin pode ser descrita como a existência de isomorfismo natural G ≅ G$^{∧∧}$, para cada G grupo abeliano localmente compacto, onde H$^∧$ denota o grupo topológico dos homomorfismos contínuos de H a 𝕋, grupo multiplicativo dos complexos de valor absoluto um.
Functores e transformações naturais permitem definir o conceito de equivalência de categorias.

### Adjunção

Uma adjunção entre functores F : C → D e G : D → C é uma família natural de isomorfismos, para quaisquer objetos c de C e d de D,$\hom _{D}(F(c),d)\cong \hom _{C}(c,G(d)).$Neste caso, diz-se que F é adjunto esquerdo e G é adjunto direito. Exemplos de adjunções incluem:
* Sendo C = Set a categoria de conjuntos e D = K-Vet a categoria de espaços vetoriais sobre um corpo fixo K, a adjunção$\hom _{K-\mathbf {Vet} }(K[S],V)\cong \hom _{\mathbf {Set} }(S,G(V))$onde K[S] é um espaço vetorial de base indexada pelo conjunto S, e G(V) é o conjunto de elementos do espaço vetorial V.
* Sendo C = Set a categoria de conjuntos e D = Grp a categoria de grupos, a adjunção$\hom _{\mathbf {Grp} }(F(S),H)\cong \hom _{\mathbf {Set} }(S,G(H))$onde F(S) é o grupo livre no conjunto S, e G(H) é o conjunto de elementos do grupo H.
* Sendo D = CompMet a categoria dos espaços métricos completos (cujos morfismos são os mapeamentos uniformemente contínuos) e C = Met a categoria dos espaços métricos, a adjunção$\hom _{\mathbf {CompMet} }(K(M),N)\cong \hom _{\mathbf {Met} }(M,G(N))$onde K(M) é a completação do espaço métrico M, e G(N) = N.
* Sendo C = D = Ab a categoria dos grupos abelianos, e sendo H grupo abeliano fixo, a adjunção$\hom _{\mathbf {Ab} }(A\otimes H,B)\cong \hom _{\mathbf {Ab} }(A,\operatorname {Hom} (H,B))$onde ⊗ denota o produto tensorial entre grupos abelianos, e Hom(H, B) denota o grupo abeliano de homomorfismos de grupo H → B.
* Sendo C = Top a categoria dos espaços topológicos e D = CHaus a categoria dos espaços compactos de Hausdorff, a adjunção$\hom _{\mathbf {CHaus} }(F(X),K)\cong \hom _{\mathbf {Top} }(X,G(K))$onde F(X) é a compactificação de Stone–Čech de X, e G(K) = K.
Se um functor F : C → D é adjunto esquerdo a G : D → C, a composição G ∘ F : C → C faz parte de uma mônade em C.

## Aplicações

Abaixo, seguem algumas aplicações elementares da teoria das categorias.
* Functores são usados para expressar conceitos de topologia algébrica; com efeito, foi nessa área que o conceito começou a ser reconhecido.
* Os teoremas do functor adjunto podem ser usados para demonstrar a existência (e propriedades) de grupos livres, monoides livres, anéis livres etc. (mas não "corpos livres", que não existem), da compactificação de Stone–Čech e de "maiores quocientes de Hausdorff".
* Como adjuntos esquerdos são functores cocontínuos, F(A ⨿ B) ≅ F(A) ∗ F(B), onde F(_) denota o grupo livre, ⨿ denota a união disjunta, e ∗ denota o produto livre (coproduto de grupos).
* Se M é um (R, S)-bimódulo, o functor M ⊗$_S$ _ é adjunto esquerdo, logo cocontínuo, e em particular é functor exato direito (não "exato esquerdo"); isto tem aplicações à álgebra homológica.
* O grupo ℤ$_p$ dos inteiros p-ádicos pode ser descrito como o limite do functor representado diagramaticamente por$\cdots \twoheadrightarrow \mathbb {Z} /p^{3}\twoheadrightarrow \mathbb {Z} /p^{2}\twoheadrightarrow \mathbb {Z} /p$e o grupo ℤ[1p]∕ℤ de Prüfer pode ser descrito como o colimite do functor representado diagramaticamente por$\mathbb {Z} /p\xrightarrow {[n]\mapsto [p\cdot n]} \mathbb {Z} /p^{2}\xrightarrow {[n]\mapsto [p\cdot n]} \mathbb {Z} /p^{3}\rightarrow \cdots$
* Mônades são usadas na linguagem de programação Haskell para modelar, por exemplo, a manipulação de estado global e o não determinismo.
* Tom Leinster emprega teoria das categorias para construir um objeto inicial numa categoria envolvendo espaços de Banach, dando, assim, uma caracterização alternativa do espaço L$^1$([0 … 1]) das funções Lebesgue-integráveis no intervalo [0 … 1].