영역 이론: 스콧과 재귀의 의미(Domain theory)
재귀(recursion)로 정의한 함수(function)가 무엇을 뜻하는지 답하는 이론. '아직 모름'(⊥)에서 시작해 정보가 늘어나는 순서 ⊑를 두면 재귀 정의는 방정식 f = F(f)가 되고, 그 뜻은 최소 고정점(least fixed point)이다. F가 스콧 연속(늘어나는 사슬의 상한(upper bound)을 보존함)이면 최소 고정점은 ⊥, F(⊥), F(F(⊥)), …의 상한으로 계산되며, 프로그램으로 쓸 수 있는 F는 모두 이 성질을 가진다.
팩토리얼(factorial)은 흔히 이렇게 정의합니다. fact(n)은 n = 0이면 1, 아니면 n · fact(n − 1). 식의 양쪽에 fact가 있으니 이것은 정의라기보다 방정식입니다. 재귀를 처음 배울 때는 '같은 모양의 더 작은 문제로 줄인다'고 이해하고 넘어가지만, 방정식이라면 물어야 할 것이 있습니다. 해가 있는가, 하나뿐인가? 다른 재귀 정의를 보면 걱정이 현실이 됩니다. f(n) = f(n + 1)은 모든 상수 함수가 만족합니다. f(n) = f(n)은 모든 함수가 만족합니다. 그런데 이 두 정의를 프로그램으로 돌리면 어떤 수를 넣어도 끝나지 않습니다. 컴퓨터는 수많은 해 가운데 무엇을 계산하는 걸까요? 1969–70년 미국 논리학자 데이나 스콧이 세운 영역 이론은 '가장 적게 아는 해'라고 답합니다.
먼저 방정식을 고정점(fixed point) 문제로 바꿉니다. 함수 g를 받아 새 함수를 돌려주는 변환 F를 'F(g)(n)은 n = 0이면 1, 아니면 n · g(n − 1)'로 정의하면, 팩토리얼의 정의는 fact = F(fact)가 됩니다. 다시 말해 fact는 F의 고정점입니다. 고정점이 여럿일 수 있으니 고를 기준이 필요합니다. 끝나지 않는 계산의 결과를 ⊥('바닥'이라 읽습니다. 정보 없음)로 적습니다. 그러면 프로그램이 계산하는 함수는 어떤 입력에서는 값을 정하지 않아도 되는 함수가 됩니다. 이런 함수를 부분 함수라 합니다. 정수(integer) 위의 부분 함수(partial function)들 사이에
이제 ⊥에서 출발해 F를 되풀이해 씌웁니다. F(⊥)는 0에서만 값 1을 정합니다. 0이 아닌 n에서는 ⊥(n − 1)이 필요한데 그것이 ⊥이기 때문입니다. F²(⊥)는 0과 1에서, F³(⊥)는 0, 1, 2에서 값을 정합니다. Fⁿ(⊥)는 '재귀 호출을 n − 1번까지만 허락한 팩토리얼'입니다. 한 단계씩 넘겨 보세요. 재귀 정의:
표의 각 줄은 윗줄을 그대로 품고 몇 칸을 더 채웁니다. 한 번 정해진 값은 바뀌지 않습니다.
이 관찰을 정리로 적으려면 낱말 셋이 필요합니다. 첫째, 가장 작은 원소(element) ⊥가 있고 늘어나는 사슬마다 상한이 있는 순서 집합(set)을 완비 부분 순서(cpo)라 합니다. 부분 함수들의 정보 순서가 그 예입니다. 둘째,
이제 정리입니다. 흔히 클리니 고정점 정리라 부릅니다. cpo에서 F가 스콧 연속이면
가운데 등호가 연속성(continuity)이고, 마지막 등호는 사슬의 맨 앞 ⊥를 빼도 상한이 그대로라는 사실입니다. (3) 최소: y = F(y)인 아무 y에 대해
스콧 연속의 식
연속성이 빠지면 무엇이 무너지는지 작은 예가 있습니다. 자연수 0, 1, 2, …를 크기 순서로 늘어놓고, 그 위에 모든 자연수보다 위에 있는 새 원소 ω(오메가)를 하나 놓고, 다시 그 위에 ω + 1을 하나 더 놓은 순서
프로그램에 연속성을 요구하는 것은 억지 제약이 아니라 사실의 기술입니다. 이런 영역에서 연속성은 '출력의 유한한 조각은 입력의 유한한 조각에만 기댄다'는 뜻이기 때문입니다. 함수 g를 받는 프로그램이 유한한 시간 안에 답을 내려면 g를 유한 번만 불러 볼 수 있습니다. 그러니 답은 g의 어떤 유한한 근삿값에서 이미 정해집니다. 반대로 'g가 모든 n에서 끝나면 1'처럼 무한히 많은 값을 봐야 하는 변환은 연속이 아니고, 프로그램으로 쓸 수도 없습니다. 정지 문제(halting problem)의 벽도 같은 모양으로 보입니다. 정지 문제 자체는 프로그램의 코드를 입력으로 받는 문제라 아래 논증과 같은 정리는 아니지만, 이유가 닮았습니다.
스콧이 이 이론을 만든 동기는 람다 계산(lambda calculus)이었습니다. 람다 계산은 함수를 만들고 함수에 인자를 넣는 규칙만으로 계산을 적는 언어이고, 그 식 하나하나를 항이라 합니다. 스콧이 찾던 것은 이 언어의 모형, 다시 말해 항마다 값을 하나씩 붙여 주는 수학적 세계였습니다. 타입(type) 없는 람다 계산에서는 모든 항이 함수이면서 동시에 다른 함수의 인자도 됩니다. 그러니 값들의 집합 D는 'D에서 D로 가는 함수들의 집합'과 원소를 빠짐없이 하나씩 짝지을 수 있어야(동형(isomorphism)이어야) 합니다. 그런데 칸토어의 대각선 논법(Cantor's diagonal argument)에 따르면, 원소가 둘 이상인 D에서 D로 가는 함수 전체는 D보다 엄격히 많습니다. 스콧은 처음에 이 때문에 타입 없는 람다 계산에는 수학적 모형이 없다고 보고 타입이 있는 논리를 제안했는데, 1969년 가을 연속 함수만 모으면 된다는 것을 깨달았습니다. 연속 함수는 유한한 근삿값들로 정해지므로 함수 전체보다 훨씬 적습니다.
스콧은 작은 영역
영국 컴퓨터 과학자 크리스토퍼 스트레이치와 스콧은 1971년, 프로그램마다 이런 영역의 원소 하나를 그 프로그램의 '뜻'으로 붙이는 방법을 내놓았습니다. 이것을 표시적 의미론(denotational semantics)이라 합니다. 반복문 while b do C(b가 참인 동안 C를 되풀이하라)의 뜻도 최소 고정점으로, '0번 돌고 끝나는 경우, 1번 돌고 끝나는 경우, …'를 쌓아 올린 상한입니다. 데이크스트라가 1975년에 내놓은 최약 전조건(weakest precondition)도 같은 방식으로 계산됩니다. 최약 전조건은 '반복문이 끝나고, 끝난 뒤 원하는 조건이 성립한다'를 보장하는 시작 조건 가운데 가장 느슨한 것이고, 호어 논리(Hoare logic)와 함께 쓰는 계산법입니다.
1977년 고든 플롯킨은 재귀를 위한 상수 fix를 가진 작은 언어 PCF에서, 영역 모형이 프로그램보다 조금 더 많은 것을 담는다는 것을 보였습니다. 예가 '병렬 또는'입니다. 두 인자 가운데 하나라도 참이면, 다른 쪽이 끝나지 않아도 참을 돌려주는 함수입니다. 이 함수는 연속이라서 모형에는 있지만, 인자를 하나씩 차례로 계산하는 PCF로는 쓸 수 없습니다. 첫 인자가 끝나지 않으면 둘째 인자를 볼 차례가 오지 않기 때문입니다. 그래서 모형과 언어가 정확히 맞는 모형을 찾는 문제가 생겼습니다. 이런 모형을 완전 추상 모형이라 합니다. 같은 1977년 로빈 밀너가 그런 모형이 있음을 보였지만, 그의 모형은 프로그램의 문법으로부터 지은 것이었습니다. 문법을 빌리지 않고 수학적으로 지은 완전 추상 모형은 1990년대 중반 무렵 게임 의미론(game semantics)이 내놓을 때까지 이 분야의 큰 문제로 남았습니다. 게임 의미론은 프로그램을 '환경이 묻고 프로그램이 답하는' 질문과 답의 주고받기로 보는 모형입니다.
같은 1977년 파트리크 쿠소와 라디아 쿠소는 추상 해석(abstract interpretation)을 내놓았습니다. 프로그램을 실제 값으로 돌리는 대신 '음수·0·양수' 같은 요약으로 계산해, 프로그램을 실행하지 않고도 그 성질을 미리 알아내는 방법입니다. 계산은 격자 위의 최소 고정점으로 합니다. 격자는 어느 두 원소에도 상한(둘 다의 위에 있는 것 가운데 가장 작은 것)과 하한(둘 다의 아래에 있는 것 가운데 가장 큰 것)이 있는 순서입니다. 실제 값의 격자와 요약의 격자를 갈루아 연결(Galois connection)로 잇는 것이 핵심이며, 오늘날 컴파일러(compiler)와 정적 분석 도구의 이론적 바탕입니다.
연속성 없이 쓰는 고정점 정리(fixed-point theorem)도 있습니다. 두 원소뿐 아니라 모든 부분집합(subset)에 상한과 하한(lower bound)이 있는 순서를 완비 격자라 합니다. 완비 격자(complete lattice)에서는 순서를 지키는 모든 F에 최소 고정점이 있고, 그것은
흔한 오해 둘. 첫째, ⊥는 프로그램이 돌려주는 특별한 값(null이나 오류 코드)이 아닙니다. 돌려주는 값이 없다는 사실을 수학 안에 적는 자리입니다. 위의 h처럼, 프로그램은 ⊥인지 검사할 수 없습니다. 둘째, '최소'는 가장 작은 수가 아니라 가장 적게 아는 것입니다. f(n) = f(n + 1)의 최소 고정점은 상수 0이 아니라 모든 n에서 ⊥인 함수입니다.
이어지는 곳.
- 고정점: 되풀이해 다가간 곳이 고정점이 되는 논증의 원형입니다. 여기서는 거리 대신 정보의 순서가 그 역할을 합니다.
- 재귀와 람다 계산: 재귀로 정의한 함수와 Y 조합자가 무엇을 뜻하는지가 이 이론의 첫 질문이었습니다.
- 단순 타입 람다 계산(simply typed lambda calculus)과 커리–하워드 대응(Curry–Howard correspondence): 타입이 있는 언어에 fix를 더하면 끝남과 논리의 무모순성(consistency)을 함께 잃는다는 이야기입니다.
- 정지 문제: 끝나지 않음을 검사할 수 없다는 관찰을 순서의 언어로 다시 본 것이 이 페이지의 h입니다.
- 갈루아 연결: 두 순서 사이의 짝으로 근삿값을 계산하는 도구입니다.
- 시작 대수: 재귀 타입을 함자의 가장 작은 고정점으로 봅니다.
- 호어 논리: 반복문의 뜻을 최소 고정점으로 계산하는 일이 최약 전조건에서 다시 나옵니다.
- 연속과 극한: 스콧 연속성은 극한의 보존입니다. 실제로 스콧 연속 함수는 '스콧 위상(Scott topology)'이라는 위상(topology)에서의 연속 함수와 정확히 같습니다.
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 연속성
… f(x) , 곧 f(\lim x_n) = \lim f(x_n) 인 함수입니다. 프로그램의 뜻을 다루는영역 이론의 스콧 연속성은 이 식을 '정보가 점점 늘어나는 사슬'과 그 한계(상한)로 옮긴 것입니다.
- 칸토어의 대각선 논법
… D보다 많다'는 이 논법에 막혔습니다. 유한한 정보로 정해지는 함수만 모으면 이 벽을 피할 수 있다는 것이영역 이론의 출발점입니다.
- 정지 문제
… 그 대가로 계산 가능한 함수를 모두 적을 수는 없습니다. 끝나지 않음을 ⊥라는 자리로 수학 안에 적는영역 이론에서는 '끝나지 않으면 참, 끝나면 거짓'인 함수가 정보의 순서를 거스르므로 처음부터 연속 함수가 될 수 …
- 람다 계산
… 막기 때문입니다. 1969년 데이나 스콧은 연속 함수만 모으면 된다는 것을 보여 이 문제를 풀었고, 여기서영역 이론이 시작되었습니다. 변수마다 '수', '참·거짓' 같은 종류(타입)를 붙인 단순 타입 람다 계산에서는 …
- 재귀
… 것은 그 가운데 '가장 적게 아는' 최소 고정점, 여기서는 어떤 n에서도 끝나지 않는 함수라는 것이영역 이론의 답입니다.
- 고정점
… 고정점은 자기 참조와 대각선에서 이어집니다. 거리 대신 '정보의 순서'를 쓰는 고정점도 있습니다.영역 이론은 재귀로 정의한 프로그램의 뜻을 '아직 모름' ⊥에서 시작한 되풀이 \bot, F(\bot), …
- 위상수학
… 호모토피 타입 이론입니다. 정보의 순서 위에도 위상(topology)이 있어서, 프로그램의 뜻을 다루는영역 이론의 스콧 연속 함수는 스콧 위상이라는 위상에서의 연속 함수와 정확히 같습니다.
- 타입 이론
… 자원을 정확히 한 번씩 쓰는 타입은 선형 논리에서, 재귀로 정의한 프로그램이 무엇을 뜻하는지는영역 이론에서, 프로그램 옆에 조건을 적어 명세를 증명하는 다른 길은 호어 논리에서 이어집니다.
- 단순 타입 람다 계산
… 끝나지 않는 항들이 무엇을 뜻하는지를 '아직 모름' ⊥에서 시작한 가장 작은 고정점으로 정하는 것이영역 이론입니다.
- 데카르트 닫힌 범주
… 유한 극한과 부분 대상 분류자까지 갖추면 토포스가 됩니다. D ≅ D D 인 대상은 연속 함수만 모은영역 이론의 세계에서 실제로 지어집니다.
- 호어 논리와 프로그램 검증
… 들어가지만 wp(Q)에는 들어가지 않습니다. '끝난다면'이 공허하게 참이기 때문입니다. 반복문의 wp는영역 이론의 최소 고정점입니다. X_0 = \lnot b \land Q 에서 시작해 X_{k+1} = X_0 …
- F-대수와 fold: 재귀와 귀납의 범주론
… 이르지 아다메크가 이 구성이 통하는 조건을 정리했습니다). 가장 작은 고정점을 이렇게 되풀이로 찾는 일은영역 이론에서 가장 작은 고정점을 찾는 클리니 반복과 같은 모양입니다. 람벡 보조정리는 '없다'는 판정에도 …
- 갈루아 연결
… 비행 제어 소프트웨어의 실행 오류가 없음을 보이는 정적 분석기가 이 원리를 씁니다(호어 논리,영역 이론). 논리에서도 같은 극성이 있습니다. 문장들의 집합 T에는 그 문장을 모두 만족하는 구조들을, 구조들의 …