커리–하워드 대응(Curry–Howard correspondence)
명제를 타입(type)으로, 증명을 그 타입의 프로그램으로 읽는 대응. '이면'은 함수(function), '그리고'는 쌍, '또는'은 꼬리표 붙은 값이고, 증명을 군더더기 없이 다듬는 일은 프로그램을 계산하는 일과 같다.
다음 함수를 봅시다.
이것은 비유가 아니라 규칙 하나하나의 일치입니다. 타입 규칙에서 항을 지우고 타입만 남기면 자연 연역(독일 논리학자 게르하르트 겐첸이 1934–35년에 내놓은, 가정을 세우고 내려놓으며 추론하는 증명 체계)의 규칙이 됩니다. Var는 '가정한 것은 쓸 수 있다', App은 'A → B와 A에서 B'(전건 긍정, modus ponens), Abs는 'A를 가정해 B를 얻으면, 가정을 내려놓고 A → B'(→ 도입)입니다. 아래 그림은 같은 유도를 두 가지로 읽게 해 줍니다.
증명할 명제:
대응은 '이면'에서 멈추지 않습니다. 논리의 연결사마다 타입을 만드는 방법이 하나씩 짝지어집니다.
한 줄씩 읽으면 증명이 무엇인지에 대한 하나의 답이 됩니다. 'A 그리고 B'의 증명은 A의 증명과 B의 증명의 쌍입니다. 'A 또는 B'의 증명은 둘 중 하나의 증명에, 어느 쪽인지 알려 주는 꼬리표(inl 또는 inr)를 붙인 것입니다. 거짓 ⊥은 원소(element)가 하나도 없는 빈 타입(empty type)이라 증명이 없습니다. 대신 빈 타입에서 아무 타입 C로 가는 함수는 늘 하나 있어서, 거짓에서는 무엇이든 나온다는 원리가 됩니다. '아니다' ¬A는 따로 두지 않고
몇 가지를 직접 짜 봅시다.
대응의 둘째 절반은 계산입니다. 증명 안에서 → 도입으로 A → B를 만들어 놓고 바로 다음 줄에서 → 제거로 A를 넣어 B를 꺼낸다면, 그것은 돌아가는 길입니다. 처음부터 A의 증명을 가정 자리에 끼워 넣으면 됩니다. 프로그램으로는
역사는 두 단계입니다. 미국 논리학자 해스켈 커리는 1934년 조합자(combinator) 논리의 기본 함수 K와 S의 타입
고전 논리에는 계산이 없을까요? 1990년 티머시 그리핀은 '지금까지의 계산의 나머지'(연속, continuation)를 값으로 붙잡아 나중에 그 자리로 뛰어 돌아가게 하는 연산자(operator) call/cc에
오해 셋을 짚어 둡니다. 첫째, 모든 프로그램이 흥미로운 증명은 아닙니다. 정수(integer)를 받아 정수를 돌려주는 프로그램은 '정수가 있으면 정수가 있다'를 증명할 뿐입니다. 타입이 무엇을 말할 수 있는지가 증명의 내용을 정하고, 흥미로운 정리는 의존 타입처럼 표현력이 큰 체계에서 나옵니다. 둘째, 이것은 정리 하나가 아니라 체계 사이의 대응들의 묶음입니다. 단순 타입 람다 계산은 직관주의 명제 논리의 '이면' 조각에, 시스템 F(System F)는 2차 명제 논리에, 의존 타입 체계는 술어 논리(predicate logic)에, 지라르의 선형 논리(1987)는 자원을 정확히 한 번씩 쓰는 언어에 대응합니다. 셋째, 같은 명제에 서로 다른 증명이 있을 수 있고, 여기서는 그 차이가 프로그램의 차이로 보입니다. A가 기본 타입일 때
이어지는 곳. 증명이 곧 구성이라는 생각의 철학적 뿌리와, 배중률(law of excluded middle)에 프로그램이 없다는 것을 엄밀하게 보이는 방법(크립키 모형, Kripke model)은 직관주의 논리에 있습니다. 표의 마지막 두 줄을 실제로 쓰려면 타입이 값에 의존해야 하며, 그것이 의존 타입과 수학적 귀납법(mathematical induction)을 되부름 프로그램으로 쓰는 방법입니다. 이 대응을 도구로 만든 것이 증명 보조기(proof assistant)이고, Coq(Rocq)와 Lean에서 증명을 검사하는 일은 타입 검사입니다. 합과 곱을 논리 대신 개수로 읽으면 대수적 자료형(algebraic data type)의 셈이 나옵니다. 곱과 함수 타입이 이루는 구조를 대상과 화살표만으로 적으면 데카르트 닫힌 범주가 되고, 부작용이 있는 계산을 타입으로 다루는 모나드(monad)도 같은 줄기에서 나왔습니다. 증명을 기계적으로 검사할 수 있게 된다고 해서 모든 참을 증명할 수 있게 되지는 않는다는 한계는 괴델의 불완전성 정리(Gödel's incompleteness theorems)가 말해 줍니다. 가정을 버리거나 복사하는 규칙을 뺀 선형 람다 항과 증명의 대응은 선형 논리(linear logic)에서, '재귀(recursion)로 정의한 프로그램'과 '귀납법으로 한 증명'이 같은 것이라는 관점은 시작 대수에서 이어집니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 람다 계산
… 그 명제의 증명이 되는 대응이 드러납니다. 미국 논리학자 해스켈 커리와 윌리엄 하워드의 이름을 따커리–하워드 대응이라 합니다. 예를 들어 A를 받아 B를 돌려주는 함수의 타입 A → B는 명제 'A이면 B'에 대응하고, …
- 수학 기초론 논쟁
… 직관주의의 '지어 보여야 있다'는 생각은 직관주의 논리로 다듬어진 뒤, 증명을 프로그램으로 읽는커리–하워드 대응을 거쳐 컴퓨터 과학의 전통으로 이어졌고, 오늘날 컴퓨터가 증명의 모든 단계를 검사하는 증명 보조기의 …
- 타입 이론
… 항은 그 명제의 증명처럼 행동합니다. A의 증명을 받아 B의 증명을 내놓는 방법이기 때문입니다. 이 대응이커리–하워드 대응이고, 여기서 증명은 무엇을 어떻게 만드는지 보여 주는 구성이므로 논리는 직관주의 논리가 됩니다. 타입 …
- 단순 타입 람다 계산
… \mathrm{fix}\,(\lambda x{:}A.\,x) 는 끝없이 자기 자신으로 펼쳐집니다.커리–하워드 대응으로 읽으면 더 심각합니다. 이 항은 아무 명제 A의 '증명'이 되어 버리므로, 논리로서는 모순입니다. …
- 직관주의 논리
… x가 있다'의 증명은 그런 x 하나와 P(x)의 증명입니다. '방법'을 '프로그램'으로 바꿔 읽으면커리–하워드 대응의 표와 한 줄씩 같습니다. 그러면 배중률에 프로그램이 없는 까닭이 보입니다. 모든 튜링 기계 M에 …
- 대수적 자료형
… 변환 프로그램으로 확인됩니다. 분배 법칙이라면 (a, inl b)를 inl (a, b)로 보내는 식입니다.커리–하워드 대응으로 읽으면 이 동형들은 논리의 동치이기도 합니다. A ∧ (B ∨ C)와 (A ∧ B) ∨ (A ∧ …
- 타입 추론: 힌들리–밀너
… (α→α)→α→α는 람다 계산의 처치 수 2가 가지는 타입이기도 해서, 두 페이지가 여기서 만납니다.커리–하워드 대응으로 읽으면 주 타입을 찾는 일은 '이 프로그램이 증명하는 가장 일반적인 명제'를 찾는 일입니다. 그림에서 …
- 다형성과 시스템 F
… \exists X.\,T \:=\: \forall Y.\,(\forall X.\,T\to Y)\to Y .커리–하워드 대응으로 보면 시스템 F는 명제 변수에 '모든'을 붙일 수 있는 2차 명제 논리의 직관주의 판본이고, 위 …
- 의존 타입
… 합에는 아무 일이 없지만 곱은 0입니다. 빈 섬유에서는 고를 점이 없기 때문입니다. 명제가 타입이 된다.커리–하워드 대응에서 A → B가 'A이면 B'였다면, 의존 타입에서는 Π가 '모든 x에 대해 B(x)'가, Σ가 …
- 증명 보조기
… 함수입니다. 증명 보조기는 이 프로그램의 타입이 A\land B\to B\land A 인지 검사합니다.커리–하워드 대응에 따라 증명을 검사하는 일이 타입을 검사하는 일이 되는 것입니다. 왼쪽은 Lean 4로 적은 증명이고 …
- 범주론
… 대상을 가진 모노이드'로 보게 해 줍니다. 커링이 되는 범주인 데카르트 닫힌 범주는 람다 계산과커리–하워드 대응을 한 그림에 모읍니다. 같음을 동형으로 바꿔 읽는 태도는 호모토피 타입 이론에서 '동치인 것은 …
- 보편 성질: 곱, 쌍대곱, 극한
… 짝이라는 것은 쌍대성의 가장 깔끔한 예입니다. 논리의 '그리고'와 '또는'이 곱과 쌍대곱이라는 사실은커리–하워드 대응에서 증명과 프로그램을 잇는 고리가 됩니다. 모든 대상으로 가는 화살표가 하나씩뿐인 시작 대상은 …
- 데카르트 닫힌 범주
… 더해 명제–타입–대상, 증명–프로그램–화살표를 잇는 이 삼각형을 커리–하워드–람벡 대응이라 부릅니다(커리–하워드 대응). '그리고'는 곱, '이면'은 지수, '참'은 끝 대상입니다. '또는'과 '거짓'까지 다루려면 쌍대곱과 …
- 선형 논리와 선형 타입
… 된다는 규칙이고, 축약은 같은 가정 두 벌을 한 벌로 합쳐도, 곧 한 벌을 두 번 써도 된다는 규칙입니다.커리–하워드 대응으로 읽으면 약화는 받은 인자를 버리는 함수 \lambda x.\,\lambda y.\,x 를, 축약은 …
- 영역 이론: 스콧과 재귀의 의미
… 정의한 함수와 Y 조합자가 무엇을 뜻하는지가 이 이론의 첫 질문이었습니다. 단순 타입 람다 계산과커리–하워드 대응: 타입이 있는 언어에 fix를 더하면 끝남과 논리의 무모순성을 함께 잃는다는 이야기입니다. ⟦정지 …
- F-대수와 fold: 재귀와 귀납의 범주론
… 바로 귀납법의 명제입니다. 결과의 타입이 입력에 따라 달라지도록 fold를 넓힌 것이 귀납법이라는 뜻이고,커리–하워드 대응으로 읽으면 '재귀로 정의한 프로그램'과 '귀납법으로 한 증명'이 같은 것입니다. 이어지는 곳. 목록과 …