타입 이론(Type theory)
모든 항이 태어날 때부터 종류(타입, type)를 갖고, 'a는 A 타입이다'(a : A)라는 판단을 규칙으로만 따지는 체계. 러셀의 역설(Russell's paradox)을 막으려던 장치에서 시작해 프로그래밍 언어의 타입 검사와 컴퓨터가 확인하는 증명의 바탕이 되었다.
3 + true를 계산하라고 하면 어떻게 될까요? 파이썬은 실행하다가 그 줄에 닿아서야 오류를 냅니다. 타입이 있는 언어는 실행하기 전에 거절합니다. 덧셈의 규칙이 'a가 자연수(natural number)이고 b가 자연수이면 a + b는 자연수다'로 적혀 있는데, true는 자연수가 아니므로 이 규칙을 쓸 수 없고 다른 어떤 규칙도 맞지 않기 때문입니다. 검사기는 식을 계산해 보지 않고 모양만 보고 이 결론을 냅니다. 여기서 타입은 '이 값을 어떤 연산에 쓸 수 있는가'를 적은 꼬리표입니다. 타입 이론은 'a는 타입 A의 원소다'라는 판단
판단을 명제가 아니라 '규칙으로 이끌어 내는 것'으로 두는 까닭은 기계가 따질 수 있게 하려는 데 있습니다. 많은 체계에서 판단이 성립하는지는 기계적으로 가릴 수 있어서, 타입 검사는 반드시 끝나는 알고리즘(algorithm)이 됩니다. 늘 그런 것은 아닙니다. 예를 들어 두 항이 같다는 증명을 곧바로 판단의 같음으로 쓰는 '외연적' 마르틴뢰프 타입 이론에서는 타입 검사를 결정할 수 없습니다.
타입은 역설을 막는 장치로 태어났습니다. 1901년 러셀은 '자기 자신을 원소(element)로 갖지 않는 집합들의 집합'이 모순을 낳는다는 것을 알아냈고(러셀의 역설), 1903년 『수학의 원리』 부록에서 유형 이론을 처음 스케치한 뒤 1908년 논문에서 본격적으로 내놓았습니다. 가장 단순한 형태로 말하면 생각은 이렇습니다. 개체는 0층, 개체들의 모임은 1층, 1층 모임들의 모임은 2층으로 나누고, 'x ∈ y'는 y가 x보다 정확히 한 층 위일 때만 문장으로 인정합니다. 그러면 'x ∈ x'는 거짓인 문장이 아니라 문법에 맞지 않는 글자열이 되고, 러셀의 집합
그 뒤 타입 체계는 여러 방향으로 넓어졌습니다. 단순 타입 람다 계산에서는 항이 항에만 의존합니다. 함수(function)
타입이 주는 첫째 이득은 안전입니다. 영국 컴퓨터 과학자 로빈 밀너는 1978년 '타입이 맞는 프로그램은 잘못될 수 없다'고 썼습니다. 오늘날 이 말은 보통 두 정리로 정확히 적습니다(라이트와 펠라이센, 1994). 타입이 붙는 항은 이미 값이거나 한 걸음 더 계산할 수 있고(진행), 한 걸음 계산해도 타입이 그대로입니다(보존). 둘을 합치면 3 + true처럼 규칙이 없어 멈춰 버리는 상태에는 결코 닿지 않습니다. 흔한 오해는 여기서 '타입이 맞으면 프로그램이 옳다'로 건너뛰는 것입니다. 받은 리스트를 무시하고 빈 리스트를 돌려주는 '정렬' 함수도
둘째는 논리입니다. 타입
항에 타입을 적는 방식은 둘입니다. 처치식은
러셀의 층은 현대 타입 이론에서 다른 모습으로 돌아옵니다. 타입들을 원소로 갖는 타입 Type이 있으면 편리한데,
이어지는 곳. 타입 이론의 출발점은 단순 타입 람다 계산이며, 규칙 세 개로 항의 타입을 이끌어 내는 과정과 모든 계산이 끝나는 이유를 거기서 볼 수 있습니다. 규칙에서 항을 지우면 논리 규칙만 남는다는 것이 커리–하워드 대응이고, 그 논리가 배중률(law of excluded middle)을 쓰지 않는 까닭은 직관주의 논리에서 다룹니다. 타입을 +, ×, 거듭제곱으로 셈하면 생성함수(generating function)와 미분(differentiation)까지 이어지는데, 이것이 대수적 자료형(algebraic data type)입니다. 람다 큐브(lambda cube)의 세 축은 각각 다형성과 시스템 F, 타입 연산자, 의존 타입으로 이어집니다. 타입과 함수가 이루는 구조를 따로 떼어 보면 범주론(category theory)이 되고, 곱 타입(product type)을 갖춘 단순 타입 람다 계산이 데카르트 닫힌 범주(cartesian closed category)의 내부 언어라는 사실이 두 세계를 잇습니다. 타입 이론으로 수학을 적고 기계로 확인하는 일은 증명 보조기에서 일어납니다. 다만 산술을 담을 만큼 강하고 모순이 없는 형식 체계라면 무엇이든 괴델의 불완전성 정리(Gödel's incompleteness theorems)의 한계를 받으며, 타입 이론도 예외가 아닙니다. 하위 타입(subtype)과 변성(variance)은 하위 타입과 변성에서, 자원을 정확히 한 번씩 쓰는 타입은 선형 논리(linear logic)에서, 재귀(recursion)로 정의한 프로그램이 무엇을 뜻하는지는 영역 이론(domain theory)에서, 프로그램 옆에 조건을 적어 명세를 증명하는 다른 길은 호어 논리(Hoare logic)에서 이어집니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 집합
… 층의 것만 원소로 가질 수 있게 하면 'R이 R의 원소인가'라는 물음 자체가 적법하지 않게 되는데, 이것이타입 이론의 시작입니다. 이런 해결책이 자리 잡기까지의 논쟁은 수학 기초론 논쟁에서 다룹니다. 원소 대신 함수와 …
- 러셀의 역설
… 러셀 자신은 영국 수학자·철학자 앨프리드 노스 화이트헤드와 함께 쓴 『수학 원리』(1910–1913)에서타입 이론으로 답했습니다. 대상을 개체, 개체의 집합, 집합의 집합, … 하는 식으로 층을 나누고, 집합은 바로 …
- 수학 기초론 논쟁
… 것은 없다'로 말합니다. 러셀은 역설을 피하려고 대상을 층층이 나누어 자기 층의 모임만 원소로 삼게 하는타입 이론을 만들고, 영국의 알프레드 노스 화이트헤드와 함께 『수학 원리』(1910–1913) 세 권에 담았습니다. …
- 의존 타입
… 우주를 층으로 나누는 방법은 러셀의 역설을 피하려던 러셀의 유형 이론을 닮았고, 그 흐름 전체는타입 이론에서 볼 수 있습니다. 모든 함수가 끝나야 한다는 조건은 정지 문제 때문에 보수적으로만 검사할 수 …
- 증명 보조기
… 그의 생각은 증명 보조기로 살아 있습니다. 람다 계산의 항이 증명이 되고, 그 항을 검사하는 일이타입 이론의 규칙을 따르는 일입니다. 반복문 옆에 불변식과 변량을 적는 다프니 같은 검증 도구는 호어 논리의 …
- 범주론
… 까다로워집니다. 이 범주에 어떤 구조가 있어야 함수를 값처럼 다룰 수 있는지가 데카르트 닫힌 범주와타입 이론의 주제입니다. 범주론은 대상의 속을 들여다보지 않고 화살표만으로 말합니다. 화살표 f: A\to B 에 …
- 자연 변환
… 자연 변환이고, 모나드 법칙은 자연 변환들 사이의 등식입니다. 자연성과 매개변수성의 관계는 다형성과타입 이론에서 이어집니다. 행렬식을 나머지로 계산해 맞춰 보는 방법은 중국인의 나머지 정리로 완성되고, …
- 모나드
… 방법⟧에서 같은 실험을 그대로 다시 돌릴 수 있게 해 줍니다. 순수한 계산과 효과를 타입으로 나누는 설계는타입 이론과 람다 계산에서, 모나드를 쓰는 코드의 타입을 기계가 알아내는 일은 타입 추론에서 이어집니다. …
- 하위 타입과 공변·반변
… 함수 타입의 두 자리는 요네다 보조정리의 Hom 함자로 이어집니다. 하위 타입 규칙이 건전한지는타입 이론의 안전성 정리(진행과 보존)로 따지며, 자바 배열은 실행 중 검사 없이는 그 정리가 깨지는 곳입니다. …
- 토포스: 집합을 닮은 우주
… 가설의 독립성은 연속체 가설로 이어지고, 토포스의 내부 언어가 고차 직관주의 타입 이론이라는 점에서타입 이론과 호모토피 타입 이론이 같은 이야기를 다른 쪽에서 합니다.