커리-하워드 대응 (Curry–Howard correspondence)
쉽게 풀면
커리-하워드 대응은 '프로그램을 짜는 것'과 '수학적 증명을 쓰는 것'이 사실은 같은 활동이라는 놀라운 사실을 보여준다. 어떤 타입은 논리학의 명제에 대응하고, 그 타입을 가진 프로그램을 작성하는 것은 그 명제를 증명하는 것과 동일하다. 예를 들어 '타입 A를 받아 타입 B를 반환하는 함수'는 논리학에서 'A이면 B이다'라는 명제에 대응한다. 이 원리는 Coq, Agda 같은 정리 증명 보조 도구의 이론적 기반이 되어, 프로그램을 작성하는 것 자체로 수학적 증명을 구성할 수 있게 해준다.
왜 중요한가
커리-하워드 대응은 프로그래밍 언어 이론과 수리논리학을 하나의 틀로 묶어주기 때문에, 타입 시스템을 설계하거나 정형 검증 도구를 만드는 연구에서 이론적 근거로 자주 인용됩니다. 이 대응 덕분에 소프트웨어의 정확성을 수학적 증명으로 다룰 수 있게 되어, 안전이 중요한 시스템의 검증이나 프로그래밍 언어의 새로운 타입 기능을 설계할 때에도 이론적 지침으로 활용됩니다. 또한 함수형 프로그래밍 언어의 설계 철학과도 밀접하게 연결되어 있어 관련 논문에서 배경 이론으로 자주 등장합니다.
논문에서는 이렇게 쓰입니다
타입 검사와 정리 증명 사이의 이론적 연결을 설명하거나 정리 증명 보조 도구의 원리를 소개할 때 사용된다.
프로그램에서 메모리나 자원을 몇 번 사용하는지를 타입 검사 단계에서 미리 확인할 수 있도록, 특정 논리 체계와 타입 시스템을 대응시켰다는 뜻이다.
프로그램을 더 단순한 형태로 바꾸는 절차가, 논리학에서 증명을 가장 단순한 형태로 정리하는 절차와 본질적으로 같다는 것을 보였다는 뜻이다.
조금 더 깊게 보면
커리-하워드 대응에서 프로그램의 계산 과정(베타 축약)은 논리적 증명의 정규화 과정과 대응되며, 이 관계는 단순 타입 람다 계산법과 직관주의 논리 사이에서 가장 명확하게 성립합니다. 논리 체계가 확장됨에 따라(예: 선형 논리, 양상 논리) 대응되는 타입 시스템도 함께 확장되며, 각 논리 연결사(함의, 곱, 합 등)는 특정한 타입 생성자에 대응됩니다. 다만 고전 논리 전체를 그대로 대응시키려면 추가적인 제어 연산자 개념이 필요하다는 점도 함께 논의되는 경우가 많습니다.
주의할 점
커리-하워드 대응이 성립하려면 사용하는 타입 시스템이 논리적으로 일관되어야 하며, 임의의 재귀(무한 루프)를 허용하는 타입 시스템에서는 이 대응이 깨질 수 있다(모든 명제가 증명 가능해져 버리기 때문).