모나드 (범주론)

수학 범주론에서 **모나드**(monad)는 내부 함자 범주의 모노이드 대상이다. 폐포연산과 대수 구조 다양체의 공통적인 일반화이다.
# 정의
\mathcal C가 범주라고 하자. 그렇다면 자기 함자 \mathcal C\to\mathcal C들을 대상으로 하고, 이들 사이의 자연 변환들을 사상으로 하는 자기 함자 범주 \operatorname{End}(\mathcal C)를 생각하자. \operatorname{End}(\mathcal C)는 모노이드 범주이며, 따라서 \operatorname{End}(\mathcal C) 속의 모노이드 대상을 생각할 수 있다. \operatorname{End}(\mathcal C)의 모노이드를 \mathcal C의 **모나드**라고 한다. 구체적으로, 모나드는 다음과 같은 데이터로 이루어져 있다. * 내부 준동형 함자 T\colon C\to C * (항등원) 자연 변환 \eta\colon 1_C\Rightarrow T (1_C는 상수 함자) * (합성) 자연 변환 \mu\colon T^2\Rightarrow T 이들은 임의의 대상 A\in\mathcal C에 대하여 다음 세 그림들을 가환되게 하여야 한다. * (결합 법칙) 임의의 대상 A\in\mathcal C에 대하여, T\mu_A\circ\mu_A=\mu_{TA}\circ\mu_A. 즉, 다음 그림이 가환한다. *: \begin{matrix} TTTA&\xrightarrow{T\mu}&TTA;\\\ {\scriptstyle\mu}\downarrow&&\downarrow\scriptstyle\mu\\\ TTA&\xrightarrow[\mu]{}&TA;\end{matrix} * (항등원의 성질) 임의의 대상 A\in\mathcal C에 대하여, \eta_{TA}\circ\mu_A=T\eta_A\circ\mu_A=\operatorname{id}_A. 즉, 다음 두 그림이 가환한다. :\begin{matrix} TA&\xrightarrow\eta&TTA;\\\ &{\scriptstyle\operatorname{id\searrow&\downarrow\scriptstyle\mu\\\ &&TA;\end{matrix}\qquad\qquad\begin{matrix} TA&\xrightarrow{T\eta}&TTA;\\\ &{\scriptstyle\operatorname{id\searrow&\downarrow\scriptstyle\mu\\\ &&TA;\end{matrix}
## 모나드 위의 대수
모나드 T\colon\mathcal C\to\mathcal C 위의 **대수**(algebra over T) (A,\operatorname{eval})는 다음과 같은 순서쌍이다. * A\in\mathcal C는 \mathcal C의 대상이다. * \operatorname{ev}\colon TA\to A는 \mathcal C의 사상이다. 이는 다음 두 그림들을 가환하게 만들어야만 한다. :\begin{matrix} TTA&\xrightarrow\mu&TA;&\xleftarrow\eta&A;\\\ {\scriptstyle T\operatorname{ev\downarrow&&\downarrow\scriptstyle\operatorname{ev}&\swarrow\scriptstyle\operatorname{id}\\\ TA&\xrightarrow[\alpha]{}&A; \end{matrix} 모나드 T 위의 두 대수 (A,\operatorname{eval}_A), (B,\operatorname{eval}_B) 사이의 **준동형** f\colon A\to B는 다음 그림을 가환하게 만드는 \mathcal C-사상이다. : \begin{matrix} TA&\xrightarrow{Tf}&TB;\\\ {\scriptstyle\operatorname{eval}_A}\downarrow&&\downarrow\scriptstyle\operatorname{eval}_B\\\ A&\xrightarrow[f]{}&B; \end{matrix} 모나드 T 위의 대수들과 그 사이의 준동형들의 범주를 T의 **에일렌베르크-무어 범주**(Eilenberg–Moore category)라고 하며, \mathcal C^T로 표기한다.
## 모나드에 대응하는 수반 함자
수반 함자로부터 항상 모나드를 정의할 수 있다. 그 역 역시 항상 성립한다. 즉, 범주 \mathcal C 위의 모나드 (T,\eta,\mu)로부터 수반 함자를 정의할 수 있다. 사실, 이는 여러 가지로 가능하다. 범주 \operatorname{Adj}(\mathcal C,T)를 다음과 같이 정의하자. * \operatorname{Adj}(\mathcal C,T)의 대상은 T를 유도하는 수반 함자이다. 즉, 수반 함자 (F,G,e,\epsilon) (F\colon\mathcal C\to\mathcal D\colon G) 가운데, (G\circ F,e,G\circ\epsilon\circ F)=(T,\eta,\mu)인 것들이다. * \operatorname{Adj}(\mathcal C,T)의 사상은 수반 함자 사이의 사상 가운데, \mathcal C 위의 함자가 항등 함자인 것들이다. 그렇다면, \operatorname{Adj}(\mathcal C,T)는 적어도 다음 두 대상을 포함한다. * **클라이슬리 범주**(Kleisli category) \mathcal C^T. 이는 \operatorname{Adj}(\mathcal C,T)의 시작 대상이다. * **에일렌베르크-무어 범주**(Eilenberg–Moore category). 이는 \operatorname{Adj}(\mathcal C,T)의 끝 대상이다.
### 클라이슬리 범주
범주 \mathcal C 위의 모나드 (T,\eta,\mu)의 **클라이슬리 범주** \mathcal C_T는 다음과 같은 범주이다. * \mathcal C_T의 대상은 \mathcal C의 대상과 같다. * \mathcal C_T의 사상 X\to Y는 \mathcal C 속의 사상 X\to TY이다. * \mathcal C_T에서 사상의 합성은 다음과 같다. 임의의 f\in\hom_{\mathcal C}(X,TY)=\hom_{\mathcal C_T}(X,Y), g\colon\hom_{\mathcal C}(Y,TZ)=\hom_{\mathcal T_C}(Y,Z)에 대하여, *: g\circ_Tf=\mu_Z\circ Tg\circ f\in\hom_{\mathcal C}(X,TZ)=\hom_{\mathcal C_T}(X,Z) * \mathcal C_T에서의 항등 사상은 모나드 항등원이다. *: \operatorname{id}_{X_T}=\eta_X\in\hom_{\mathcal C}(X,TX)=\hom_{\mathcal C_T}(X,X) 이 경우, 자연스럽게 함자 :F\colon\mathcal C\to\mathcal C_T :F\colon X\mapsto X :F\colon (f\colon X\to Y)\mapsto(\eta_Y\circ f) 및 :G\colon\mathcal C_T\colon\mathcal C :G\colon X\mapsto X :G\colon (f\colon X\to TY)\mapsto \mu_Y\circ Tf 를 정의할 수 있다. 이들은 수반 함자를 이룬다. :F\dashv G 또한 :T=G\circ F 이므로 (T,\eta,\mu)는 수반 (F,G)에 대응하는 모나드이다. 클라이슬리 범주의 원소는 보편대수학의 자유 대수를 일반화하는 것으로 생각할 수 있다. 클라이슬리 범주는 스위스의 수학자 하인리히 클라이슬리(Heinrich Kleisli, 1930~2011)가 도입하였다.
### 에일렌베르크-무어 범주
범주 \mathcal C 위의 모나드 (T,\eta,\mu)의 **에일렌베르크-무어 범주** \mathcal C^T는 T 위의 대수와 준동형들의 범주이다. 이에 대하여, 다음과 같은 망각 함자를 정의할 수 있다. :G\colon\mathcal C^T\to\mathcal C :G\colon (A,\operatorname{eval}_A)\mapsto A :G\colon \left(f\colon(A,\operatorname{eval}_A)\to(B,\operatorname{eval}_B)\right)\mapsto(f\colon A\to B) 마찬가지로, 다음과 같은 자유 대수 함자를 정의할 수 있다. :F\colon\mathcal C\to\mathcal C^T :F\colon X\mapsto (TX,\mu_X) :F\colon (f\colon X\to Y)\mapsto\left(Tf\colon(TX,\mu_X)\to(TY,\mu_Y)\right) 이들은 수반 함자를 이룬다. :F\dashv G 또한 :T=G\circ F 이므로, (T,\eta,\mu) 역시 (F,G)에 대응하는 모나드이다. 에일렌베르크-무어 범주는 사무엘 에일렌베르크와 존 콜먼 무어가 도입하였다.
### 모나드 함자
수반 함자 F\colon\mathcal C\to\mathcal D\colon G에서, 만약 \mathcal D가 에일렌베르크-무어 범주 \mathcal C^{G\circ F}와 동치라면, G를 **모나드 함자**(monadic functor)라고 한다. **벡 모나드성 정리**(Beck’s monadicity theorem)에 의하면, 함자 G\colon\mathcal D\to\mathcal C가 모나드 함자가 되는 것은 다음 네 조건을 충족시키는 것과 동치이다. * G은 왼쪽 수반 함자를 갖는다. * G는 동형 사상을 반사시킨다. 즉, \mathcal D의 사상 f에 대하여 만약 Gf가 \mathcal C의 동형 사상이라면, f 역시 \mathcal D의 동형 사상이다. * \mathcal D는 모든 G-분할 평행쌍의 쌍대동등자를 갖는다. * G는 \mathcal D의 모든 G-분할 평행쌍의 쌍대동등자를 보존한다. 이는 조너선 목 벡(Jonathan Mock Beck, 1935~2006)이 1967년 경 증명하였다.
# 예
범주 \mathcal C 위의 항등 함자 \operatorname{id}_{\mathcal C}\colon\mathcal C\to\mathcal C는 모나드이다. 이 모나드 위의 대수는 (항등 사상이 갖추어진) \mathcal C의 대상 (A,\operatorname{id}_A)이다.
## 폐포
모나드의 대표적인 예는 폐포 연산자이다. 위상 공간 X의 집합들과 그 포함관계들의 범주 \mathcal P(X)를 생각하자. 그렇다면 폐포 연산자 \operatorname{cl}\colon\mathcal P(X)\to\mathcal P(X)는 함자를 이루며, 또한 다음과 같은 자연 변환들이 존재한다. * (\eta) S\subset\operatorname{cl}(S) * (\mu) \operatorname{cl}(\operatorname{cl}(S))=\operatorname{cl}(S) 이들은 모나드 공리들을 만족시킨다. 따라서 닫힘 연산자는 \mathcal P(X)의 모나드다. 이 모나드 위의 대수는 닫힌집합이다.
## 대수 구조 다양체
모나드의 다른 예로, 대수 구조 다양체를 들 수 있다. 대수 구조 다양체 V가 주어졌을 때, 함자 T\colon\operatorname{Set}\to\operatorname{Set}를 다음과 같이 정의하자. * 집합 S에 대하여, TS는 S로부터 생성되는 자유 대수이다. * 함수 f\colon S\to S' 및 항 t\in TS에 대하여, Tf(t)\in S'는 t 속에 등장하는 모든 상수 s\in S를 f(s)로 치환하여 얻는 항이다. 이 경우, 다음과 같이 모나드의 구조를 줄 수 있다. * \mu_S\colon TTS\to TS는 대수 TS 위의 자유 대수 TTS에서, TS에서 성립하는 등식들에 대하여 몫을 취하는 준동형이다. * \eta_S\colon S\to TS는 s\in S를, 하나의 상수로만 구성된 항으로 대응시킨다. T 위의 대수는 V에 속한 대수 구조이다.
## 수반 함자
수반 함자 :F\colon\mathcal C\to\mathcal D :G\colon\mathcal D\to\mathcal C :F\dashv G :\eta\colon\operatorname{id}_{\mathcal D}\Rightarrow G\circ F :\epsilon\colon F\circ G\Rightarrow \operatorname{id}_{\mathcal C} 가 주어졌을 때, :G\circ F\colon\mathcal C\to\mathcal C 는 항상 모나드를 이룬다. 이 경우, 모나드 항등 사상은 \eta이며, 모나드 합성 사상은 :G\epsilon F\colon G\circ F\circ G\circ F\Rightarrow G\circ F 이다.
## 콤팩트 하우스도르프 공간
집합 S에 대하여, TS가 S 위의 모든 극대 필터들의 집합이라고 하자. 함수 S\to S'에 대하여 :Tf\colon TS\to TS' :Tf\colon\mathcal U\mapsto\\{f(U)\colon U\in\mathcal U\\} 로 놓으면, T\colon\operatorname{Set}\to\operatorname{Set}는 함자를 이룬다. 여기에 다음과 같은 자연 변환을 정의하자. :\eta\colon\operatorname{id}_{\operatorname{Set\Rightarrow T :\eta_S\colon s\mapsto\uparrow s=\\{U\subseteq\mathcal S\colon s\in U\\} :\mu\colon TT\Rightarrow T :V\in\mu_S(\mathfrak U)\iff\uparrow V=\\{\mathcal F\in TS\colon V\in\mathcal F\\}\in\mathfrak U 그렇다면 이는 집합의 범주 위의 모나드를 이룬다. 이 모나드 위의 대수는 콤팩트 하우스도르프 공간과 같다. 구체적으로, (S,\lim)가 T 위의 대수라고 하자. 그렇다면, S 위에, 다음 조건을 만족시키는 위상을 줄 수 있다. * 임의의 극대 필터 \mathcal U\in TS에 대하여, \lim\mathcal U\in S는 S 위의 위상에 따른 수렴과 일치한다. 이러한 위상은 유일하며, 또한 콤팩트 하우스도르프 위상임을 보일 수 있다. 이 모나드는 다음과 같은 수반 함자로부터 유래한다. :|\cdot|\colon\operatorname{CompHaus}\to\operatorname{Set} :\beta\colon\operatorname{Set}\to\operatorname{CompHaus} :\beta\dashv|\cdot| 여기서 \operatorname{CompHaus}는 콤팩트 하우스도르프 공간 및 연속 함수의 범주이고, |\cdot|은 콤팩트 하우스도르프 공간을 그 점들의 집합으로 대응시키는 함자이며, \beta는 어떤 집합에 이산 위상을 부여한 뒤 그 스톤-체흐 콤팩트화를 취하는 함자이다.
# 역사
로제 고드망이 1958년에 ‘표준 구성’(construction standard)이라는 이름으로 도입하였다.언어=fr 이후 "삼중"(triple)이라는 이름으로 불리기도 했는데, 이는 모나드의 구성 성분 (T,\mu,\eta)이 셋인 것에서 유래하였다. 이후 장 베나부(Jean Bénabou)는 ‘모나드’라는 용어를 도입하였고, 손더스 매클레인은 저서에서 이 용어를 사용하였다. 138
# 응용
하스켈 등 함수형 프로그래밍 언어에서 입출력 및 데이터 구조를 다룰 때 쓰인다.