수학 개념 지도
타입 이론과 범주론

범주론(Category theory)

대상과 그 사이의 화살표, 그리고 화살표를 잇는 합성만으로 수학의 구조를 다루는 이론. 집합⁠(set)⁠과 함수⁠(function)⁠, 군과 준동형⁠(homomorphism)⁠, 크기와 행렬⁠(matrix)⁠, 나누어떨어짐이 모두 범주⁠(category)⁠이고, 성질을 원소⁠(element)⁠ 대신 화살표 사이의 관계로 적는다.

h∘(g∘f)=(h∘g)∘f,f∘idA=f=idB∘fh\circ(g\circ f) = (h\circ g)\circ f,\qquad f\circ\mathrm{id}_A = f = \mathrm{id}_B\circ f
먼저 보면 좋은 개념함수집합군

시계의 시각 a(0부터 11까지)를 '짝수 시인가, 홀수 시인가'로 줄이는 방법을 두 가지 생각해 봅시다. 먼저 4로 나눈 나머지⁠(remainder)⁠를 구한 뒤 그것을 다시 2로 나눈 나머지를 구해도 되고, 먼저 6으로 나눈 나머지를 구한 뒤 2로 나눈 나머지를 구해도 됩니다. 7시라면 7 → 3 → 1이고 7 → 1 → 1이라 둘 다 1(홀수)입니다. 아래 그림은 이 네 집합 A = {0, …, 11}, B = {0, 1, 2, 3}, C = {0, …, 5}, D = {0, 1}과 네 함수를 점과 화살표로 그린 것입니다. 어느 길로 가도 결과가 같을 때 이 그림이 가환한다(commute)고 말합니다. 시각 a = , B → D 화살표는 , C → D 화살표는 입니다.

노란 길은 A → B → D, 분홍 길은 A → C → D입니다. 아래 표는 열두 시각 각각에서 두 길의 결과입니다. 초록 칸은 두 길이 같은 곳, 빨간 칸은 다른 곳입니다. 칸을 누르면 그 시각을 따라갑니다.

화살표를 바꿔 보면 몇 가지가 보입니다. 두 화살표를 모두 '(n + 1) mod 2'로 바꿔도 그림은 다시 가환합니다. 가환성은 화살표 하나하나가 아니라 합성한 결과에 대한 성질입니다. 반대로 한 시각에서만 어긋나도 가환하지 않습니다. 가환 그림은 '이 두 계산은 같다'는 등식 여러 개를 한꺼번에 적는 방법이고, 범주론의 정리 대부분은 어떤 그림이 가환한다는 문장으로 적힙니다.

범주(category)는 세 가지로 이루어집니다. 대상(object)들이 있고, 두 대상 A, B 사이에 화살표(arrow, 사상이라고도 합니다) f:A→Bf: A\to B들이 있고, 끝과 시작이 맞물리는 두 화살표 f:A→Bf: A\to B, g:B→Cg: B\to C를 이어 붙인 합성 g∘f:A→Cg\circ f: A\to C가 정해져 있습니다. 적는 순서에 주의하세요. g∘fg\circ f는 'f 다음 g'입니다. 함수를 g(f(x))g(f(x))로 적는 습관을 따른 것이라, 군 페이지의 표처럼 'a 다음 b'를 ab로 적는 방식과는 순서가 반대입니다.

요구하는 것은 둘뿐입니다. 합성은 결합법칙⁠(associativity)⁠ h∘(g∘f)=(h∘g)∘fh\circ(g\circ f) = (h\circ g)\circ f를 만족하고, 대상마다 아무것도 하지 않는 항등 화살표⁠(identity arrow)⁠ idA\mathrm{id}_A가 있어 f∘idA=f=idB∘ff\circ\mathrm{id}_A = f = \mathrm{id}_B\circ f입니다. 결합법칙 덕분에 화살표 여러 개를 이은 길은 괄호 없이 하나의 합성으로 읽히고, 항등 화살표는 '제자리에 머무는 길'을 그림에 넣어 줍니다. 위의 가환 그림이 뜻을 가지려면 이 두 가지면 충분합니다. 함수의 합성은 이 두 법칙을 늘 만족하므로 집합과 함수는 범주를 이룹니다. 이 범주를 보통 Set이라 부릅니다. 새로운 점은 화살표가 꼭 함수일 필요가 없다는 것입니다.

  • 행렬. 대상은 자연수⁠(natural number)⁠ 0, 1, 2, …이고, n에서 m으로 가는 화살표는 m×n 행렬입니다. 합성은 행렬의 곱⁠(matrix multiplication)⁠이고 항등 화살표는 단위행렬입니다. 크기가 맞는 행렬끼리만 곱할 수 있다는 규칙이 곧 '끝과 시작이 맞물려야 합성된다'는 규칙이고, 행렬 곱의 결합법칙이 범주의 결합법칙입니다. n을 ℝⁿ으로 보내면 m×n 행렬과 ℝⁿ → ℝᵐ 선형변환⁠(linear transformation)⁠이 빠짐없이 하나씩 대응하고, 유한 차원 실수⁠(real number)⁠ 벡터 공간⁠(vector space)⁠은 모두 어떤 ℝⁿ과 동형입니다. 그래서 행렬의 범주와 '유한 차원 실수 벡터 공간과 선형변환'의 범주는 동치(equivalent)입니다. 대상끼리 일대일로 대응하지는 않지만(n차원 공간은 무수히 많습니다), 동형⁠(isomorphism)⁠인 대상을 같게 보면 같은 범주라는 뜻입니다.
  • 나누어떨어짐. 대상은 양의 정수⁠(integer)⁠이고, a가 b를 나누면(a | b) a에서 b로 가는 화살표를 하나 두고, 아니면 두지 않습니다. 합성은 'a | b이고 b | c이면 a | c'라는 추이성⁠(transitivity)⁠이고, 항등 화살표는 a | a입니다. 여기서 화살표는 함수가 아니라 '나누어떨어진다'는 사실 하나입니다. 두 대상 사이에 화살표가 많아야 하나인 범주는 반사적이고 추이적인 관계(준순서⁠, preorder⁠)와 같은 것이고, 나누어떨어짐처럼 a | b와 b | a에서 a = b가 나오면 부분 순서라 합니다.
  • 대상이 하나인 범주. 대상이 하나뿐이면 화살표는 모두 그 대상에서 그 대상으로 가므로 언제나 합성할 수 있습니다. 화살표들과 합성은 결합법칙과 항등원⁠(identity element)⁠을 가진 연산, 곧 모노이드⁠(monoid)⁠입니다. 모든 화살표에 되돌리는 화살표가 있으면 군입니다.
  • 군과 준동형. 대상이 군이고 화살표가 연산을 지키는 함수(준동형)인 범주 Grp도 있습니다. 군 하나가 위에서는 범주 전체였는데 여기서는 대상 하나입니다. 같은 것을 여러 층위에서 볼 수 있다는 것이 범주론의 특징입니다.
  • 타입⁠(type)⁠과 프로그램. 대상은 정수·문자열 같은 타입이고 화살표는 한 타입의 값을 받아 다른 타입의 값을 돌려주는 함수입니다. 여기서 함수는 부작용이 없고 언제나 끝나는 것으로 제한합니다. 끝나지 않는 계산이 섞이면 법칙을 확인하기가 훨씬 까다로워집니다. 이 범주에 어떤 구조가 있어야 함수를 값처럼 다룰 수 있는지가 데카르트 닫힌 범주⁠(cartesian closed category)⁠와 타입 이론⁠(type theory)⁠의 주제입니다.

범주론은 대상의 속을 들여다보지 않고 화살표만으로 말합니다. 화살표 f:A→Bf: A\to B에 g∘f=idAg\circ f = \mathrm{id}_A, f∘g=idBf\circ g = \mathrm{id}_B인 g:B→Ag: B\to A가 있으면 f를 동형 사상(isomorphism)이라 하고 A와 B가 동형이라고 합니다. Set에서는 전단사 함수⁠(bijective function)⁠, 행렬의 범주에서는 역행렬⁠(inverse matrix)⁠이 있는 정사각 행렬(행렬식⁠(determinant)⁠이 0이 아닌 것), 나누어떨어짐의 범주에서는 a | a뿐입니다. 범주론의 문장은 동형인 대상끼리 바꿔 넣어도 참과 거짓이 바뀌지 않도록 짓습니다. 원소도 화살표로 적습니다. 원소가 하나인 집합을 1이라 하면, 집합 A의 원소 x는 '1의 유일한 원소를 x로 보내는 함수' 1→A1\to A와 정확히 하나씩 대응합니다. 단사⁠(injective)⁠ 함수도 원소 없이 정의됩니다. f∘u=f∘vf\circ u = f\circ v이면 언제나 u=vu = v인 화살표 f를 단사 사상(mono)이라 하는데, Set에서는 이것이 단사 함수와 같습니다. u, v를 1에서 오는 화살표, 곧 원소로 잡으면 이 조건이 'f(x) = f(y)이면 x = y'가 되고, 반대 방향은 곧바로 확인됩니다.

모든 화살표의 방향을 뒤집어도 범주입니다. 이것을 반대 범주⁠(opposite category)⁠ Cop\mathcal C^{\mathrm{op}}라 합니다. 그래서 화살표로만 적은 정리는 방향을 모두 뒤집은 짝 정리를 공짜로 얻습니다. 모든 대상에서 오는 화살표가 정확히 하나씩인 대상을 끝 대상(terminal object)이라 하고, 방향을 뒤집어 모든 대상으로 가는 화살표가 정확히 하나씩인 대상을 시작 대상(initial object)이라 합니다. Set에서 끝 대상⁠(terminal object)⁠은 원소가 하나인 집합이고(어떤 집합에서든 그리로 가는 함수는 하나뿐), 시작 대상⁠(initial object)⁠은 공집합입니다(공집합⁠(empty set)⁠에서 나가는 함수는 '빈 함수' 하나뿐). 나누어떨어짐의 범주에서 시작 대상은 모든 수를 나누는 1이고, 모든 수가 나누는 양의 정수는 없으므로 끝 대상은 없습니다. 0까지 넣으면 모든 수가 0을 나누므로 0이 끝 대상이 됩니다. 곱과 쌍대곱⁠(coproduct)⁠, 극한⁠(limit)⁠과 쌍대극한⁠(colimit)⁠이 모두 이런 짝입니다(보편 성질⁠(universal property)⁠, 쌍대성⁠(duality)⁠).

두 가지를 짚어 둡니다. 첫째, 범주의 대상이 꼭 '구조를 가진 집합'일 필요는 없습니다. 나누어떨어짐의 범주에서 대상은 수이고 화살표는 사실 하나이며, 행렬의 범주에서 대상은 크기일 뿐입니다. 둘째, 크기 문제입니다. 모든 집합의 모임은 집합이 아니므로(러셀의 역설⁠, Russell's paradox⁠) Set의 대상 전체는 집합이 아닌 '모임'(class)으로 다룹니다. 두 대상 사이의 화살표들이 언제나 집합을 이루는 범주를 국소적으로 작다(locally small)고 합니다. 이 페이지에 나온 범주는 모두 국소적으로 작습니다. 대상 전체와 화살표 전체까지 집합을 이루면 '작은' 범주라 합니다.

무엇을 얻을까요? 첫째, 증명 하나가 여러 분야에서 한꺼번에 일합니다. '곱은 하나뿐인 동형을 빼고는 하나뿐이다'는 집합의 곱집합, 최대공약수⁠(greatest common divisor)⁠, 논리의 '그리고'에 대해 한 번에 증명됩니다. 둘째, 분야 사이에 다리가 놓입니다. 범주에서 범주로 구조를 지키며 가는 사상을 함자⁠(functor)⁠라 하는데, 기준점을 정한 위상수학⁠(topology)⁠의 공간에 군을 붙이는 기본군⁠(fundamental group)⁠은 함자이고, 그래서 대수의 계산으로 위상수학의 불가능성을 증명할 수 있습니다. 셋째, 프로그램의 구조가 드러납니다. 실패·여러 갈래·상태 같은 계산을 한 가지 합성 규칙으로 다루는 모나드⁠(monad)⁠가 그 예입니다. 변환을 보면 대상이 보인다는 이 태도는 대칭과 불변량⁠(invariant)⁠에서 본 클라인의 생각을 끝까지 밀고 간 것이라 할 수 있습니다.

범주론은 1945년 새뮤얼 에일렌베르크와 손더스 매클레인의 논문 「자연 동치의 일반 이론」(General Theory of Natural Equivalences)에서 시작되었습니다. 두 사람은 대수적 위상수학을 연구하다가 '자연스러운 동형'이라는 말에 정확한 뜻을 주려 했고, 그러려면 자연 변환⁠(natural transformation)⁠을, 그러려면 함자를, 그러려면 범주를 정의해야 했습니다. 매클레인의 회고에 따르면 '범주'는 아리스토텔레스와 칸트에게서, '함자'는 철학자 루돌프 카르나프에게서 빌린 말입니다. 알렉산더 그로텐디크가 1957년 이른바 도호쿠 논문에서 호몰로지 대수를 범주의 언어로 다시 세우고 대수기하학을 그 위에 지으면서 범주론은 수학의 일상 언어가 되었습니다. 1958년 대니얼 칸이 수반 함자⁠(adjoint functor)⁠를 정의했고, 1963년 윌리엄 로베어는 박사 논문에서 대수 이론을 범주로 다루며 범주를 수학과 논리의 기초⁠(basics)⁠로 쓰는 길을 열었습니다. 1989년 에우제니오 모지가 계산의 효과를 모나드로 적는 방법을 내놓으면서 범주론은 프로그래밍 언어 이론으로도 퍼졌습니다.

이어지는 곳. 범주 사이의 사상은 함자, 함자 사이의 사상은 자연 변환으로, 이 셋이 범주론의 기본 어휘입니다. 대상을 속이 아니라 관계로 정의하는 방법은 보편 성질에서, 그 방법이 늘 통하는 근거인 '대상은 화살표들로 정해진다'는 요네다 보조정리⁠(Yoneda lemma)⁠에서 볼 수 있습니다. 올림과 내림, ∃와 ∀, 자유 구성처럼 서로 짝을 이루는 구성은 수반 함자가 설명하고, 그 짝에서 모나드가 나옵니다. 대상이 하나인 범주가 곧 모노이드라는 사실은 범주를 '여러 대상을 가진 모노이드'로 보게 해 줍니다. 커링⁠(currying)⁠이 되는 범주인 데카르트 닫힌 범주는 람다 계산⁠(lambda calculus)⁠과 커리–하워드 대응⁠(Curry–Howard correspondence)⁠을 한 그림에 모읍니다. 같음을 동형으로 바꿔 읽는 태도는 호모토피 타입 이론⁠(homotopy type theory)⁠에서 '동치인 것은 같다'는 공리⁠(axiom)⁠로까지 나아갑니다. 행렬의 범주는 행렬의 곱을, 나누어떨어짐의 범주는 최대공약수를 새 눈으로 보게 합니다. 이 어휘 위에 더 쌓은 구조로는 재귀⁠(recursion)⁠와 귀납을 한 틀로 모으는 시작 대수, 순서에서의 수반인 갈루아 연결⁠(Galois connection)⁠, 나란히 놓기 ⊗를 더한 모노이드 범주, 화살표 모음을 거리나 참·거짓으로 바꾼 풍부화된 범주⁠(enriched category)⁠, 국소 자료를 붙이는 층과 층들의 세계인 토포스⁠(topos)⁠가 있습니다. 이 어휘가 최대공약수, 쌍대 공간⁠(dual space)⁠, 연쇄법칙⁠(chain rule)⁠, 내림과 올림에서 각각 어떻게 일하는지는 긴 글 「화살표만으로 본 수학」에서 따라갈 수 있습니다.

이 개념이 나오는 큰 생각쌍대성자기 참조와 대각선표현 바꾸기

이 개념이 나오는 긴 글

타입 이론과 범주론 증명은 프로그램이다 러셀의 역설을 막으려던 '타입'이 프로그램의 실수를 막는 장치가 되었다. 명제를 타입으로, 증명을 프로그램으로 읽으면 둘이 규칙 하나하나까지 맞아떨어진다. 오늘날 수학자들은 그 사실로 컴퓨터에게 증명을 검사받는다. 범주론 화살표만으로 본 수학 최대공약수와 교집합과 '그리고'는 같은 것이고, 화살표를 뒤집으면 최소공배수와 합집합과 '또는'이 된다. 무엇으로 만들었는지 묻지 않고 어떻게 이어지는지만 보는 언어로, '자연스럽다'는 말의 뜻, 관계만으로 대상을 알아보는 요네다의 생각, 함자로 본 연쇄법칙, 어디에나 있는 수반까지 사이트의 여러 분야를 가로지른다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념