튜링의 논문은 이제 마지막 관문을 향해 치닫고 있었다.
그의 손에는 ‘보편 튜링 기계’라는 강력한 무기가 들려 있었다. 모든 계산 가능한 절차를 흉내 낼 수 있는 단 하나의 기계.
하지만 이 강력한 도구로 어떻게 ‘할 수 없음’을 증명한단 말인가?
결정 문제를 정면으로 공격하는 것은 너무 복잡했다. 튜링은 다른 길을 모색했다. 거대한 성을 무너뜨리기 위해 정문을 부수는 대신, 성벽의 가장 약한 고리 하나를 찾아내 집중적으로 공격하는 전략이었다.
그는 자신의 보편 기계를 물끄러미 바라보며 근본적인 질문 하나를 떠올렸다.
‘기계가 계산을 시작하면, 그 계산은 반드시 끝나는가?’
튜링이 직접 설계했던 ‘3+1’ 기계는 명확한 끝이 있었다. 하지만 모든 기계가 그럴까? 규칙을 잘못 짜면, 헤드가 테이프 위에서 영원히 좌우로 왔다 갔다 하거나, 의미 없는 작업을 무한히 반복할 수도 있었다.
이것이다.
튜링은 직감했다. 이것이 바로 힐베르트의 성벽을 무너뜨릴 약한 고리였다.
그는 노트 위에 새로운 질문을 명확하게 정의했다.
“어떤 프로그램(튜링 기계의 규칙표)과 그 프로그램에 주어질 입력값이 있을 때, 이 프로그램이 그 입력을 가지고 계산을 수행하면, 과연 유한한 시간 안에 작업을 마치고 멈출 것인가(정지, Halt), 아니면 영원히 끝나지 않는 무한 루프(infinite loop)에 빠질 것인가?”
그리고 그는 이 질문에 답하는 궁극의 판별기를 상상했다.
“이 질문을 ‘미리’ 판별해 줄 수 있는 만능 프로그램이 존재할까? 실제로 프로그램을 실행해보지 않고도, 그 프로그램의 설계도와 입력값만 보고 ‘이것은 정지한다’ 혹은 ‘이것은 영원히 돈다’라고 100% 정확하게 예측해주는 마스터 프로그램 말이다.”
이것이 바로 훗날 컴퓨터 과학의 심장부를 관통하게 될 ‘정지 문제(The Halting Problem)’였다.
튜링은 이 질문을 ‘악마의 질문’이라 불러도 좋겠다고 생각했다. 그것은 프로그램의 운명을 예언하는 신탁과도 같았다. 만약 그런 만능 판별기가 존재한다면, 프로그래머들은 골치 아픈 무한 루프 버그로부터 완전히 해방될 수 있을 터였다.
자, 이제 그의 전략은 명확해졌다.
결정 문제가 풀 수 없다는 것을 보이는 대신, 훨씬 단순해 보이는 이 ‘정지 문제’가 풀 수 없다는 것을 먼저 증명한다.
그리고 만약 정지 문제가 풀 수 없다면, 그것보다 훨씬 더 복잡하고 포괄적인 결정 문제는 당연히 풀 수 없다는 결론이 따라나올 것이다.
모든 준비는 끝났다.
그는 이제 논리적 함정을 파기 시작했다. 그의 공격 계획은 단순했다.
- 일단, 저런 만능 ‘정지 문제 판별기(H)’가 존재한다고 ‘가정’한다.
- 그 판별기 H를 부품으로 사용하여, 아주 특이하고 심술궂은 새로운 기계를 설계한다.
- 그 새로운 기계에 자기 자신을 집어넣어, 시스템 전체가 모순에 빠져 붕괴하는 것을 보여준다.
튜링의 눈빛이 서늘하게 빛났다. 그는 펜을 들어, 그 누구도 상상하지 못했던 모순 덩어리 기계의 설계를 시작했다. 이 기계는 오직 단 하나의 목적을 위해 태어날 터였다.
바로, 자기 자신을 삼키고 스스로를 파괴하기 위해.
그 논리적 자폭의 순간, 힐베르트의 결정 문제 또한 함께 재가 되어 사라질 운명이었다.