이 문서는 형식 논리를 혼자 읽어 학사 과정 수준까지 도달하도록 정리한 자습서다. 명제논리와 술어논리의 문법·의미론·증명 체계를 세운 뒤, 그 체계 자체를 대상으로 삼아 무엇을 말할 수 있는지까지 간다. 건전성과 완전성, 컴팩트성, 결정불가능성, 괴델의 불완전성 정리가 그것이다.
이 과목의 목표는 기호를 외우는 것이 아니다. 어떤 논증이 왜 좋은지 말할 수 있고, 그 판단의 근거를 스스로 검사할 수 있는 것이다.
이 문서와 다른 문서의 분업
이 사이트의 Mathematics for Computer Science 문서가 이미 진리표, 명제 대수, 정규형, SAT, 한정사의 뜻과 부정을 다룬다. 그것을 여기서 다시 가르치지 않는다. 5·6장과 9·10장은 그 내용을 요약하고 지나가는 통과 지점이고, 이 문서가 새로 하는 일은 그 다음부터다.
그 문서가 하는 것
이 문서가 하는 것
진리표를 계산 절차로 다룬다
진리값 배당을 함수로 정의하고 만족 관계를 세운다
증명이 무엇인지 가르친다
증명 체계를 세우고 그 체계를 대상으로 정리를 증명한다
정지 문제를 대각선 논법으로 보인다
튜링 기계를 정의하고 결정 가능과 반결정을 가른다
괴델 제2 정리를 문장 하나로 언급한다
두 정리를 진술하고 증명의 뼈대를 준다
무엇을 알고 있어야 하는가
중학교 수학까지면 된다. 이 문서는 다른 어느 문서보다 전제가 적다. 계산이 거의 없고, 필요한 도구는 나오는 자리에서 만든다.
집합과 원소 — 5장 "어휘" 절 끝에서 중괄호·∈·⊆·∪·∅ 다섯을 한 문단으로 도입한다
함수와 관계 — 10장에서 해석을 정의할 때. 거기서 도입한다
수학적 귀납법 — 13장에서 처음 쓴다. 5장의 재귀적 정의가 미리 준비해 둔다
가산과 비가산 — 15장에서 필요하다. 그 자리에서 정의한다
프로그래밍 경험은 요구하지 않는다. 다만 6장의 지수 폭발과 16장의 판정 문제에서 알고리즘 문서와 만난다.
이 문서가 지키려는 약속
어떤 기호도 정의하기 전에 쓰지 않는다. 처음 나오는 자리에서 이름·뜻·읽는 법을 함께 밝힌다.
⊢ 와 ⊨ 를 끝까지 구분한다. 하나는 증명 체계의 주장이고 하나는 의미론의 주장이다. 둘이 같은지는 13·14장이 답할 문제이지 가정할 것이 아니다.
증명은 말로 된 뼈대를 먼저 주고 형식을 뒤에 둔다. 형식만 있는 증명은 읽는 사람에게 아무것도 남기지 않는다.
각 장은 "이 장에서 새로 나온 것" 표로 닫는다.
어려운 곳은 어렵다고 말한다. 어디서 걸릴지 미리 알려 둔다.
이 문서의 짜임
열일곱 개 장이 여섯 덩어리로 묶인다. 어느 덩어리를 읽고 있는지 알면 각 장이 왜 거기 있는지가 보인다.
부
장
무엇을 하는가
1부 논증
3~4
무엇을 좋은 논증이라 할 것인지 정하고, 자연어에서 형식을 끌어낸다
2부 명제논리
5~8
형식 언어를 만들고, 뜻을 주고, 증명 체계를 세운다
3부 술어논리
9~12
같은 일을 한정사가 있는 언어에 대해 되풀이한다
4부 메타이론
13~15
세운 체계를 대상으로 삼는다. 이 문서를 쓰는 이유
5부 한계
16~17
기계가 판정할 수 없는 것과, 어떤 체계도 다 잡을 수 없는 것
6부 고전 논리 밖
18~19
지금까지의 선택이 선택이었음을 보인다
2부와 3부가 같은 모양으로 배열되어 있다. 문법 → 의미론 → 증명 체계 → (연습·확장) 순서가 두 번 반복된다. 두 번째가 빠르게 읽히는 것은 그 때문이고, 그렇게 되도록 일부러 배열했다.
4부가 이 문서의 정점이다. 13장이 "증명한 것은 참이다"를, 14장이 "참인 것은 증명된다"를 보인다. 두 장을 붙여 읽어야 ⊢ 와 ⊨ 가 왜 같은 것이 되는지가 남는다.
권장 순서와 장별 난이도
장
주제
난이도
예상 시간
앞에 필요한 장
3
논증 — 무엇이 좋은 논증인가
★
3시간
-
4
논증의 형태를 드러내기
★★
4시간
3
5
명제논리의 문법
★★
3시간
4
6
진리표와 진리함수적 의미론
★★
4시간
5
7
자연연역 — 명제논리
★★★
6시간
5, 6
8
증명을 찾는 전략
★★★
5시간
7
9
술어논리의 문법
★★★
5시간
5, 8
10
술어논리의 의미론
★★★★
6시간
6, 9
11
자연연역 — 술어논리
★★★★
6시간
7, 9, 10
12
동일성과 수 세기
★★★
4시간
9, 10, 11
13
건전성
★★★★
6시간
5, 6, 7, 10, 11
14
완전성
★★★★★
8시간
13
15
컴팩트성과 그 대가
★★★★
5시간
12, 14
16
결정불가능성
★★★★
5시간
6, 14
17
괴델 불완전성
★★★★★
7시간
5, 15, 16
18
양상논리
★★★
4시간
6, 10
19
고전 논리 밖
★★★
4시간
7, 13, 18
총 85시간 남짓이다. 하루 2시간이면 여섯 주 정도의 분량이다.
가장 걸리는 곳을 미리 알려 둔다. 11장의 변수 조건과 14장의 완전성 증명이다. 앞의 것은 규칙이 줄의 모양만 보는 것이 아니라 도출의 다른 부분까지 살핀다는 점이 낯설어서 걸리고, 뒤의 것은 증명이 길고 여러 보조정리를 쌓아야 해서 걸린다. 14장은 한 번에 이해하려 하지 말고 "대우로 바꾼다"는 첫 걸음만 확실히 잡고 넘어가도 된다.
18·19장은 앞을 다 읽지 않아도 각각 독립적으로 읽힌다. 다만 19장은 7장의 규칙 목록을 쓴다.
이 문서의 표기 규약
여러 층의 주장이 섞이는 문서라 표기를 어긋나게 쓰면 곧바로 읽을 수 없게 된다. 아래가 전부다.
대상
표기
어디서 정의하는가
문장문자
𝑃, 𝑄, 𝑅
5장
논리식 메타변수
𝜑, 𝜓, 𝜒
3장
논리식 집합
Γ, Δ
6장
연결자
¬∧∨→↔
4~5장
모순
⊥
7장
진리값
T, F
6장
의미론적 귀결
Γ⊨𝜑
6장
도출 가능
Γ⊢𝜑
7장
술어
𝐹, 𝐺, 𝐻
9장
개체상수 · 변수
𝑎,𝑏,𝑐 · 𝑥,𝑦,𝑧
9장
한정사
∀𝑥, ∃𝑥
9장
모형
M=⟨𝐷,𝐼⟩
10장
양상
◻, ◊
18장
술어에 𝑃 를 쓰지 않는 것에 주의하라. 명제논리의 문장문자와 겹쳐 헷갈리기 때문에, 9장 이후 술어는 𝐹,𝐺,𝐻 로 통일한다.
도출은 두 가지 방식으로 적는다. 규칙 하나를 보일 때는 증명 트리를, 여러 줄짜리 도출은 줄 번호와 근거를 적는 표를 쓴다. 트리는 단이 넷을 넘으면 읽히지 않는다.
논리학이 하는 일은 좋은 논증과 나쁜 논증을 가르는 것이다. 그러니 맨 먼저 할 일은 논증이 무엇이고 좋다가 무슨 뜻인지 정하는 것이다. 둘 다 일상에서 쓰는 말이지만, 여기서 정할 뜻은 일상의 뜻보다 훨씬 좁다.
이 장에서 답할 질문은 넷이다.
논증이란 무엇인가. 어떤 말 묶음은 논증이고 어떤 것은 아닌가.
좋은 논증은 무엇이 좋은가. 결론이 참이면 좋은 논증인가.
나쁘다는 것을 어떻게 보이는가.
왜 논리학은 논증이 무엇에 관한 이야기인지를 보지 않는가.
이 장이 이 문서의 실질적인 출발점이다. 앞 장에서 가져오는 것은 없다. 대신 여기서 정하는 낱말 — 전제, 결론, 타당, 건전, 반례 — 은 마지막 장까지 뜻이 바뀌지 않는다.
계산은 거의 없다. 그래서 쉬워 보이지만 판단이 어려운 장이다. 특히 타당성 절에서 거의 모든 독자가 한 번 걸린다. 그 자리에는 미리 표시를 해 두었으니 급히 넘기지 않는 편이 좋다.
논증 — 전제와 결론
논증(argument)은 문장의 묶음이다. 그중 하나가 결론(conclusion)이고, 나머지는 그 결론을 받아들일 이유로 내놓은 전제(premise)다.
셋이 다 있어야 논증이다. 결론이 있어야 하고, 전제가 있어야 하고, 전제를 결론의 이유로 내놓는 의도가 있어야 한다. 문장이 여럿 있다고 논증이 되지는 않는다.
이 문서는 논증을 이렇게 줄 세워 적는다. 위가 전제, 맨 아래가 결론이다.
전제 — 비가 오면 길이 젖는다.
전제 — 비가 온다.
결론 — 길이 젖는다.
일상 글에서는 이렇게 정돈되어 있지 않다. "비 오잖아. 비 오면 길 젖지. 그러니까 길 젖었을 거야" 처럼 순서가 뒤섞여 나온다. 논증을 다루는 첫 작업은 늘 어느 문장이 결론인지 찾는 것이다.
찾는 데 도움이 되는 표시가 있다. '그러므로', '따라서', '그러니까', '결국' 뒤에 오는 것이 대개 결론이고, '왜냐하면', '때문이다', '-니까' 가 붙은 쪽이 대개 전제다. 표시가 아예 없을 때도 많다. 그럴 때는 "이 사람이 나를 무엇에 설득하려 하는가"를 물으면 된다.
논증이 아닌 것
논증과 자주 헷갈리는 셋을 갈라 두자.
무엇인가
하는 일
왜 논증이 아닌가
서술
무슨 일이 있었는지 늘어놓는다
결론이라 할 문장이 없다
주장
결론만 내놓는다
이유로 내놓은 문장이 없다
설명
이미 참으로 받아들인 일이 왜 일어났는지 말한다
결론을 믿게 하려는 것이 아니다
설명과 논증의 구별이 가장 미묘하다. 둘 다 "A 이므로 B 다" 꼴이기 때문이다. 가르는 것은 B 의 지위다. 듣는 사람이 B 를 이미 받아들였으면 그 말은 설명이고, B 를 받아들이게 하려는 것이면 논증이다.
그러니 같은 문장 묶음이 자리에 따라 설명이 되기도 하고 논증이 되기도 한다. "다리가 무너졌다. 볼트가 삭았기 때문이다." 다리가 무너진 것을 모두가 아는 자리에서는 설명이고, 무너졌는지 아닌지를 다투는 자리에서는 논증이다.
(다) 이 프로그램은 느리다. 반복문 안에서 매번 파일을 열기 때문이다. 느리다는 것은 실행 기록에 이미 남아 있다.
(라) 이 프로그램은 느릴 것이다. 반복문 안에서 매번 파일을 열고, 파일을 여는 일은 계산보다 훨씬 오래 걸리기 때문이다.
풀이 보기
묻는 것은 하나다. 받아들이게 하려는 문장이 있고, 그것을 위해 이유를 대는가. 넷을 차례로 건다.
(가) 논증이 아니다. 서술이다. 세 문장이 나란히 있을 뿐 어느 하나가 다른 것의 이유로 놓여 있지 않다. 사이에 '그러므로'를 넣어 보면 어디에 넣어도 말이 되지 않는다.
(나) 논증이 아니다. 주장이다. 결론이라 할 문장은 있지만 이유가 없다. 결론 하나만으로는 논증이 되지 않는다.
(다) 논증이 아니다. 설명이다. 마지막 문장이 "느리다"를 이미 확인된 사실로 못 박는다. 그러니 앞의 이유는 느리다는 것을 믿게 하려는 것이 아니라 왜 느린지를 밝히는 것이다.
(라) 논증이다. 결론은 "이 프로그램은 느릴 것이다"이고 아직 재 보지 않았다. 나머지 두 문장이 그것을 예상할 이유로 놓여 있다.
(다)와 (라)의 문장이 거의 같다는 데 주의하자. 갈린 곳은 결론이 이미 확인된 사실인가 하나뿐이었다. 논증인지 아닌지는 문장 안이 아니라 문장이 놓인 자리에서 결정된다.
예제 2
어떤 사람이 "설명도 결국 이유를 대는 것이니 논증이다"라고 말한다. 왜 그렇게 볼 수 없는지 설명하라.
풀이 보기
모범답안. 논증과 설명은 이유를 대는 목적이 다르다. 논증은 결론을 아직 받아들이지 않은 사람에게 받아들일 근거를 주려는 것이고, 설명은 이미 받아들인 일이 왜 일어났는지를 밝히려는 것이다. 목적이 다르니 잘된 것을 재는 잣대도 다르다. 논증은 전제가 결론을 보증하는지로 재고, 설명은 원인을 제대로 짚었는지로 잰다. 둘을 한 잣대로 재면 좋은 설명이 부당한 논증으로 잘못 판정된다.
답에 반드시 들어가야 하는 것.
결론의 지위가 다르다는 지적 — 논증의 결론은 아직 받아들여지지 않았고, 설명의 대상은 이미 받아들여졌다
잣대가 다르다는 지적 — 타당·부당은 논증의 잣대이지 설명의 잣대가 아니다
같은 문장 묶음이 놓인 자리에 따라 갈릴 수 있다는 지적
거꾸로 "설명은 논증보다 못하다"고 말하는 것도 틀렸다. 둘은 하는 일이 다를 뿐 우열이 없다. 이 문서가 논증만 다루는 것은 논증이 더 중요해서가 아니라 형식으로 잡을 수 있는 것이 논증이기 때문이다.
타당성 — 전제가 참이면 결론이 반드시 참
좋은 논증의 첫째 조건을 정한다.
논증이 타당(valid)하다는 것은 전제가 모두 참인데 결론이 거짓인 경우가 있을 수 없다는 뜻이다.
같은 말을 뒤집으면 이렇다. 전제를 모두 참으로 만드는 상황이라면 어느 것이든 결론도 참으로 만든다. 전제가 결론을 남김없이 보증한다는 것이 타당성이다.
타당하지 않은 논증은 부당(invalid)하다고 한다. 중간은 없다. 논증은 타당하거나 부당하거나 둘 중 하나다.
여기가 이 장에서 가장 걸리는 곳이다
정의를 다시 읽어 보라. "전제가 실제로 참이다"라는 말이 어디에도 없다. 타당성은 "전제가 참이라고 치면"이라는 가정 아래에서만 따지는 성질이다. 전제가 실제로 참인지 거짓인지는 타당성과 상관이 없다.
일상어와 어긋나기 때문에 걸린다. 일상에서 "타당하다"는 대개 "맞는 말이다" 정도의 뜻이다. 여기서는 그런 뜻이 아니다. 아래 논증을 보자.
전제 — 모든 물고기는 날개가 있다.
전제 — 고등어는 물고기다.
결론 — 고등어는 날개가 있다.
첫 전제가 거짓이고 결론도 거짓이다. 그런데 이 논증은 타당하다. 전제가 둘 다 참인 상황을 상상해 보라. 정말로 모든 물고기에 날개가 달린 세상이라면, 고등어가 물고기인 이상 고등어에는 날개가 있다. 전제를 참으로 만들면서 결론을 거짓으로 만들 길이 없다. 그것이 타당하다는 말의 전부다.
반대쪽도 보자.
전제 — 모든 개는 포유류다.
전제 — 어떤 포유류는 헤엄친다.
결론 — 어떤 개는 헤엄친다.
세 문장이 모두 실제로 참이다. 그런데 이 논증은 부당하다. 전제가 결론을 보증하지 않기 때문이다. '개'를 '코끼리'로, '헤엄친다'를 '하늘을 난다'로 바꿔 보라. "모든 코끼리는 포유류다"도 참이고 "어떤 포유류는 하늘을 난다"도 참인데(박쥐가 있다) "어떤 코끼리는 하늘을 난다"는 거짓이다. 짜임이 같은 논증이 참에서 거짓으로 갈 수 있다면, 원래 논증에서 결론이 참인 것은 전제 덕분이 아니다.
<타당성이 막는 칸은 넷 중 하나뿐이다. 나머지 세 칸에서는 실제 참·거짓을 아무리 들여다봐도 타당한지 알 수 없다>[원본 보기]
그림이 말하는 것을 한 문장으로 줄이면 이렇다. 타당성은 전제와 결론 사이의 관계이지 전제나 결론 각각의 성질이 아니다.
예제 3
다음 넷 중 타당한 것을 모두 고르고, 나머지가 왜 타당하지 않은지 각각 밝혀라.
(가) 모든 소수는 정수다. 7 은 소수다. 그러므로 7 은 정수다.
(나) 모든 소수는 홀수다. 2 는 소수다. 그러므로 2 는 홀수다.
(다) 어떤 정수는 짝수다. 7 은 정수다. 그러므로 7 은 짝수다.
(라) 3 은 홀수다. 그러므로 3 은 홀수이거나 짝수다.
풀이 보기
묻는 것은 타당성뿐이다. 그러니 각 문장이 실제로 참인지는 판단에 넣지 않는다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이 있는지만 본다.
(가) 타당하다. 전제가 둘 다 참인 상황에서 7 이 소수이면 7 은 소수 전체에 속하고, 소수 전체가 정수 안에 들어가므로 7 은 정수다. 빠져나갈 틈이 없다. 덤으로 전제가 실제로도 참이다.
(나) 타당하다. 첫 전제 "모든 소수는 홀수다"는 실제로는 거짓이다(2 가 있다). 그러나 그 전제가 참인 상황을 상상하면 2 가 소수인 이상 2 는 홀수여야 한다. 전제가 거짓인 것과 논증이 부당한 것은 다른 일이다.
(다) 부당하다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이 바로 여기 있다 — 지금이 그렇다. "어떤 정수는 짝수다"도 참이고 "7 은 정수다"도 참인데 결론은 거짓이다. 전제는 짝수인 정수가 있다고만 말할 뿐 7 이 그중 하나라고 말하지 않는다.
(라) 타당하다. 결론이 전제보다 약하기 때문이다. "3 은 홀수다"가 참인 상황이라면 "3 은 홀수이거나 짝수다"도 반드시 참이다. 두 갈래 중 하나만 참이어도 '이거나'로 이은 문장은 참이 된다.
넷을 늘어놓고 보면 실제 참·거짓과 타당성이 얼마나 어긋나는지 드러난다. (나)는 전제가 거짓인데 타당하고, (다)는 전제가 다 참인데 부당하다.
답이 말이 되는가. 판정을 뒤집어 검산한다. 부당하다고 한 것에는 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황을 실제로 하나 손에 쥐고 있어야 하고, 타당하다고 한 것에는 그런 상황을 아무리 찾아도 만들 수 없어야 한다. (다)는 그 상황을 댔고 나머지 셋은 대지 못했다. 두 방향의 검산이 성격부터 다르다는 것 — 하나는 물건을 내놓는 일이고 하나는 없음을 말하는 일이다 — 이 뒤의 반례 절이 다루는 주제다.
예제 4
전제가 모두 거짓이고 결론도 거짓인데 타당한 논증을 하나 만들고, 왜 타당한지 설명하라.
풀이 보기
모범답안. 다음 논증을 내놓는다.
전제 — 모든 새는 물속에서 산다.
전제 — 소는 새다.
결론 — 소는 물속에서 산다.
세 문장이 모두 거짓이다. 그럼에도 타당하다. 전제 둘을 참으로 만드는 상황을 상상하면, 그 상황에서 소는 새이고 새는 모두 물속에 살므로 소도 물속에 산다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이 없으므로 타당하다.
답에 반드시 들어가야 하는 것.
전제를 참으로 만드는 상황을 상상하고 그 상황에서 결론이 어떻게 되는지 따졌다는 서술 — 실제 세계에서 따지지 않았다는 것이 요점이다
실제 참·거짓을 판단 근거로 쓰지 않았다는 명시
전제가 모두 참이면서 결론이 거짓인 조합이 불가능하다는 확인
흔한 실수는 전제와 결론이 아무 관계도 없는 거짓 문장 셋을 늘어놓는 것이다. "달은 네모다. 소금은 달다. 그러므로 2 는 3 이다" 는 전제가 다 거짓이지만 부당하다. 전제를 참으로 만들어도 결론이 따라 나오지 않기 때문이다. 전제가 거짓이라고 저절로 타당해지지는 않는다.
답이 말이 되는가. 만든 논증에 두 물음을 따로 던져 본다. 전제가 모두 참인 상황을 상상했을 때 결론이 거짓일 수 있는가 — 없다. 그러면 타당하다. 실제로 전제가 참인가 — 아니다. 두 답이 서로 어긋나 보이지만 어긋난 것이 아니고, 두 물음이 서로 아무 상관이 없다는 것이 이 예제가 만들어 보인 것이다.
예제 5
"이 논증은 결론이 참이니까 타당하다"라는 판단은 틀렸다. 다음 넷 중 왜 틀렸는지를 가장 정확히 짚은 것은 어느 것인가.
(가) 결론이 참이어도 전제가 거짓일 수 있으므로 틀렸다.
(나) 타당성은 전제와 결론이 실제로 어떤 값을 갖는지가 아니라 전제가 참인 모든 상황에서 결론이 참인지를 묻는 것이므로, 결론이 참이라는 사실 하나로는 아무것도 따라 나오지 않는다.
(다) 결론이 참이면 그 논증은 건전하므로, 타당하다고 말하는 것은 너무 약한 판단이다.
(라) 타당성은 결론의 참·거짓과 무관하므로, 결론이 거짓이면 그 논증은 부당하다.
풀이 보기
답은 (나)다. 나머지가 왜 떨어지는지 하나씩 본다.
(가) 지적 자체는 참이지만 과녁이 다르다. 전제가 거짓이어도 타당할 수 있다는 것을 물고기 논증에서 보았다. 그러니 전제가 거짓일 수 있다는 것은 타당성을 무너뜨리는 이유가 되지 않는다. (가)는 건전성이 없을 수 있다는 말을 하고 있을 뿐이다.
(나) 맞다. 타당성의 정의를 그대로 쓰고 있다. 결론이 실제로 참이라는 사실은 앞 그림의 첫째 줄이나 셋째 줄에 해당하는데, 그 두 줄에는 타당한 논증도 부당한 논증도 함께 들어간다.
(다) 틀렸다. 건전하려면 타당한 데다 전제가 참이어야 한다. 결론이 참이라고 건전해지지 않는다. 앞 문항의 (다)가 그 예다 — 전제가 다 참이어도 부당하면 건전하지 않다.
(라) 앞부분은 맞는데 뒷부분이 앞부분을 스스로 뒤집는다. 무관하다면 결론이 거짓이라고 부당해질 수도 없다. 물고기 논증이 바로 반례다. 결론이 거짓인데 타당했다.
이런 문항에서는 (가)처럼 맞는 말이지만 묻는 것이 아닌 후보가 가장 잘 걸린다. 지적이 참인가와 그 지적이 판단의 근거가 되는가는 다른 문제다.
건전성 — 타당함에 사실을 더한다
타당하기만 해서는 결론을 믿을 이유가 되지 못한다. 물고기 논증은 타당했지만 결론은 거짓이었다. 전제가 거짓이었기 때문이다.
그래서 조건을 하나 더 붙인다. 논증이 건전(sound)하다는 것은 타당하고, 게다가 전제가 모두 실제로 참이라는 뜻이다.
건전한 논증의 결론은 반드시 참이다. 타당성이 "전제가 참이면 결론이 참"을 보장하고 건전성이 "전제가 참이다"를 보태 주므로, 둘을 합치면 결론이 참이라는 결론이 나온다. 우리가 논증에서 실제로 얻고 싶은 것은 건전성이다.
그런데 논리학이 다룰 수 있는 것은 타당성뿐이다. "모든 물고기는 날개가 있다"가 참인지 거짓인지는 논리학이 답할 수 있는 물음이 아니다. 그것은 생물학의 몫이다. 건전성은 두 조각으로 나뉘고 논리학은 그중 한 조각만 맡는다.
<두 물음의 순서가 요점이다. 왼쪽 물음만 논리학의 몫이고 오른쪽 물음은 그 분야를 아는 사람의 몫이다>[원본 보기]
낱말이 겹친다 — 건전은 세 곳에서 쓰인다
여기서 미리 밝혀 둘 것이 있다. '건전(sound)'이라는 낱말이 이 문서와 이웃 문서에서 서로 다른 것에 붙는다. 모르고 지나가면 뒤에서 반드시 걸린다.
어디서
무엇에 붙는가
무슨 뜻인가
이 장
논증 하나
타당하고 전제가 실제로 모두 참이다
Mathematics for Computer Science 3장
추론 규칙 하나
전제를 참으로 만드는 어떤 진리값 배정도 결론을 참으로 만든다
이 문서 13장
증명 체계 전체
그 체계로 증명되는 것은 모두 참이다
가장 조심할 곳은 가운데 줄이다. Mathematics for Computer Science 3장은 추론 규칙 하나를 두고 ‘건전하다’고 말한다. 그 뜻은 ‘전제를 참으로 만드는 배정이면 결론도 참으로 만든다’이다. 이 장의 낱말로 옮기면 그것은 건전이 아니라 타당이다. 전제가 실제로 참인지는 묻지 않기 때문이다. 같은 낱말을 보고 같은 뜻이라고 넘기면 뒤에서 계산이 어긋난다.
낱말이 겹치는 것은 우연이 아니다. 세 뜻이 모두 "참을 잃지 않는다"는 하나의 생각을 서로 다른 대상에 적용한 것이다. 그래도 대상이 다르므로 무엇이 건전한지를 늘 함께 말하는 습관을 들이는 편이 안전하다. 이 문서는 논증에 붙일 때만 아무 말 없이 '건전'이라 쓰고, 나머지 둘은 '규칙의 건전성', '체계의 건전성'이라고 적는다.
예제 6
다음 넷을 각각 타당한지, 건전한지 판정하라.
(가) 모든 짝수는 2 로 나누어떨어진다. 10 은 짝수다. 그러므로 10 은 2 로 나누어떨어진다.
(나) 모든 짝수는 3 으로 나누어떨어진다. 10 은 짝수다. 그러므로 10 은 3 으로 나누어떨어진다.
(다) 모든 소수는 정수다. 8 은 정수다. 그러므로 8 은 소수다.
(라) 모든 소수는 정수다. 3 은 정수다. 그러므로 3 은 소수다.
풀이 보기
순서를 지킨다. 먼저 타당한지 보고, 타당한 것에 대해서만 전제가 실제로 참인지 본다. 순서를 바꾸면 (라)에서 틀린다.
(가) 타당하다. 전제 둘이 참인 상황에서 10 이 짝수이면 10 은 2 로 나누어떨어진다. 그리고 전제가 실제로 둘 다 참이다. 따라서 건전하다. 결론도 참이다.
(나) 타당하다. 모든 짝수가 3 으로 나누어떨어지는 상황이라면 짝수인 10 도 그렇다. 그러나 첫 전제가 실제로는 거짓이므로 건전하지 않다. 결론도 거짓이다. 논증의 짜임에는 흠이 없고 흠은 전제에 있다.
(다) 부당하다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이 지금 바로 그것이다 — 전제가 둘 다 참인데 결론이 거짓이다. 부당하므로 건전하지 않다. 전제가 다 참이어도 건전하지 않을 수 있다는 것을 이 문항이 보여 준다.
(라) 여기가 함정이다. 전제도 다 참이고 결론도 참이다. 그러나 (다)와 짜임이 완전히 같으므로 부당하다. 부당하면 건전할 수 없다. 즉 건전하지 않다. 결론이 참인 것은 이 논증 덕분이 아니라 3 이 마침 소수이기 때문이다.
(다)와 (라)를 붙여 놓은 이유가 이것이다. 결론의 참·거짓만 보면 둘이 달라 보이지만 논증으로서는 똑같이 부당하다.
예제 7
"건전하지 않은 논증의 결론은 믿을 수 없다"는 말은 맞는가? 왜 그런지 또는 왜 아닌지 설명하라.
풀이 보기
모범답안. 반만 맞다. 건전하지 않다는 것은 이 논증이 결론을 뒷받침하지 못한다는 뜻이지 결론이 거짓이다라는 뜻이 아니다. 앞 문항의 (라)가 그 예다. 논증은 부당했지만 결론 "3 은 소수다"는 참이다. 그러니 정확히 말하면 "이 논증은 결론을 믿을 근거가 되지 못한다"이고, 결론 자체는 다른 근거로 얼마든지 참일 수 있다.
답에 반드시 들어가야 하는 것.
논증에 대한 판정과 결론에 대한 판정을 구분했는가 — 논증이 나쁘다는 것과 결론이 거짓이라는 것은 다른 주장이다
건전하지 않은 두 가지 경로를 갈랐는가 — 부당하거나, 타당하지만 전제가 거짓이거나
결론이 참인 부당한 논증의 예를 하나라도 들었는가
여기서 나오는 흔한 오류가 오류에 호소하기다. 상대의 논증이 나쁘다는 것을 보이고는 상대의 결론이 거짓이라고 결론짓는 것이다. 그것 자체가 부당한 논증이다.
반례 — 부당함을 보이는 방법
앞에서 부당하다고 판정할 때마다 같은 일을 했다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황을 하나 내놓았다. 그 상황에 이름을 붙인다.
반례(counterexample)는 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이다. 반례가 하나라도 있으면 그 논증은 부당하고, 하나도 없으면 타당하다. 타당성의 정의를 뒤집어 읽은 것뿐이다.
<왼쪽과 오른쪽이 드는 수고가 다르다는 것이 요점이다. 부당함은 점 하나로 끝나고 타당함은 영역 전체를 확인해야 한다>[원본 보기]
여기서 비대칭이 생긴다. 부당함을 보이는 데는 상황 하나면 충분하다. 타당함을 보이려면 상황 전체를 확인해야 한다. 상황이 무한히 많으면 하나씩 확인할 수 없으므로 타당함을 보이는 데는 다른 도구가 필요하다. 6장의 진리표와 7장의 자연연역이 그 도구다.
반례는 이 문서 전체를 관통하는 방법이다. 10장에서는 반례가 되는 상황을 반례 모형이라 부르고, 15장에서는 반례가 되는 세상을 아예 만들어 낸다. 하는 일은 지금 세우는 것과 같다. 무엇을 참으로 만들고 무엇을 거짓으로 만들지를 정한 상황 하나를 내놓는 것이다.
반례를 만드는 두 가지 길
첫째, 상황을 직접 상상한다. 반례는 실제로 일어난 일일 필요가 없다. 앞뒤가 맞기만 하면 된다. 이것을 잊으면 "그런 일은 없었다"는 말로 반례를 물리치려 들게 된다.
둘째, 짜임이 같은 다른 논증을 만든다. '개'를 '코끼리'로 바꿨던 것이 그것이다. 짜임이 같은데 전제가 참이고 결론이 거짓인 논증을 하나 찾으면 된다.
둘째 길이 정확히 무엇을 보이는지는 조심해서 말해야 한다. 그것이 보이는 것은 그 짜임이 결론을 보증하지 못한다는 것이다. 왜 그것으로 충분한지는 다음 절에서 다시 본다.
예제 8
다음 논증이 부당함을 반례로 보여라. "시험에 붙으면 기뻐한다. 그는 기뻐하고 있다. 그러므로 그는 시험에 붙었다."
풀이 보기
구하려는 것은 상황 하나다. 전제 둘을 참으로 만들면서 결론을 거짓으로 만들면 된다. 아는 것은 전제 둘의 내용이고, 쓸 도구는 반례의 정의뿐이다.
결론을 거짓으로 두는 데서 시작한다. 그는 시험에 떨어졌다. 이제 이 상태에서 전제 둘을 참으로 만들 수 있는지 본다. 둘째 전제는 "그는 기뻐하고 있다"이니 기뻐할 다른 이유를 주면 된다.
상황 — 그는 시험에 떨어졌다. 그러나 오랜만에 옛 친구를 만나 기뻐하고 있다. 그리고 그가 만약 붙었더라도 기뻐했을 것이다.
점검한다. 첫 전제는 참이다(붙었다면 기뻐했을 것이라고 두었다). 둘째 전제도 참이다(그는 기뻐하고 있다). 결론은 거짓이다(떨어졌다). 상황 자체에 앞뒤가 맞지 않는 데가 없다. 셋이 다 통과했으므로 반례다.
흔한 실수는 "기뻐하는 것과 시험은 상관없다"처럼 말로만 지적하는 것이다. 그것은 반례가 아니다. 반례는 구체적인 상황이어야 한다. 또 하나, 첫 전제를 거짓으로 만들어 버리면 반례가 되지 않는다. 전제는 모두 참이어야 한다.
짜임으로 보면 이것이 뒤에 나올 후건 긍정이다.
답이 말이 되는가. 반례를 하나 냈으면 두 가지를 검산한다. 그 상황에서 전제가 전부 참인가, 그리고 결론이 거짓인가. 둘 중 하나라도 어긋나면 반례가 아니다. 여기서 잡은 상황은 시험에 붙지 않고도 기뻐하는 상황이니 두 전제가 참이고 결론이 거짓이다. 검산이 끝났고, 반례는 하나면 충분하므로 더 만들 필요도 없다.
예제 9
어떤 학생이 논증 하나를 놓고 "서른 가지 상황을 만들어 봤는데 전부 결론이 참이었다. 그러니 타당하다"고 말한다. 이 추론이 왜 타당성을 확립하지 못하는지 설명하라. 만약 그 서른 가지 중 하나에서 결론이 거짓이었다면 그때는 무엇이 확립되는지도 답하라.
풀이 보기
모범답안. 타당성은 "전제를 참으로 만드는 모든 상황에서 결론이 참"이라는 주장이다. 서른 가지는 유한한 표본이고, 확인하지 않은 상황이 남아 있는 한 그중에 반례가 없다는 보장이 없다. 그러므로 서른 번의 성공은 타당성을 확립하지 못한다. 반대로 부당성은 "그런 상황이 있다"는 주장이므로 하나만 찾으면 확립된다. 서른 가지 중 하나에서 전제가 모두 참인데 결론이 거짓이었다면, 그 하나로 부당함이 완전히 확립된다.
답에 반드시 들어가야 하는 것.
타당성은 모든 상황에 대한 주장이고 부당성은 상황 하나에 대한 주장이라는 대조
유한한 확인으로는 '모든'을 끝낼 수 없다는 지적
확인한 상황이 전제를 모두 참으로 만드는 상황이었는지도 따로 점검해야 한다는 지적
마지막 항목이 자주 빠진다. 전제 하나가 거짓인 상황은 결론이 거짓이든 참이든 반례가 아니다. 그런 상황을 아무리 많이 모아도 부당함이 확립되지 않고, 반대로 그런 상황에서 결론이 참이었다고 타당성이 조금이라도 세워지지도 않는다.
연역과 귀납 — 이 문서가 다루는 것
타당성 잣대로 재면 부당한데도 나쁘다고 하기 어려운 논증이 있다.
전제 — 지금까지 관찰한 백조는 모두 희었다.
결론 — 다음에 볼 백조도 흴 것이다.
부당하다. 전제가 참인데 다음 백조가 검은 상황을 상상할 수 있기 때문이다. 그런데 이 논증은 애초에 결론을 보증한다고 주장한 적이 없다. 보증하지 않겠다고 한 것을 보증하지 않는다고 나무라는 셈이다.
여기서 논증이 두 갈래로 갈린다.
연역 논증(deductive)
귀납 논증(inductive)
무엇을 주장하는가
전제가 참이면 결론이 반드시 참이다
전제가 결론을 그럴듯하게 만든다
잣대
타당 / 부당. 중간이 없다
강하다 / 약하다. 정도가 있다
결론이 담는 내용
전제에 이미 들어 있는 것을 넘지 않는다
전제를 넘어선다
전제를 더하면
타당성은 사라지지 않는다
무너질 수 있다
<오른쪽 끝 두 상자가 차이를 가장 잘 드러낸다. 전제를 하나 더했을 때 어떻게 되는지가 두 갈래를 가른다>[원본 보기]
마지막 줄을 단조성(monotonicity)이라 한다. 연역은 단조적이다. 타당한 논증에 아무 전제나 더 붙여도 여전히 타당하다. 귀납은 그렇지 않다. "다음에 볼 백조도 흴 것이다" 라는 추론은 "오스트레일리아에는 검은 백조가 산다" 라는 전제 하나가 붙는 순간 무너진다.
셋째 줄도 눈여겨볼 만하다. 연역 논증의 결론은 전제에 이미 들어 있던 것을 다시 꺼낸 것이다. 그래서 새 정보를 주지 못한다고 말하기도 한다. 그러나 "들어 있다"와 "보인다"는 다르다. 수학의 정리는 전부 공리에 들어 있지만 아무도 그것을 미리 보지 못한다.
이 문서는 연역만 다룬다. 앞으로 ‘논증’이라고 쓰면 연역 논증을 뜻하고, ‘좋다’는 타당하다는 뜻이다. 귀납이 덜 중요해서가 아니다. 귀납의 강도를 재는 도구는 논리가 아니라 확률이고, 그것은 통계학 문서의 몫이다.
예제 10
다음 넷 중 연역 논증인 것과 귀납 논증인 것을 가르라.
(가) 이 상자에 든 공은 모두 빨갛다. 지금 꺼낸 것은 이 상자에 든 공이다. 그러므로 지금 꺼낸 공은 빨갛다.
(나) 이 상자에서 백 번 꺼냈는데 모두 빨갰다. 그러므로 이 상자에 든 공은 모두 빨갛다.
(다) 두 수를 더해 홀수가 나왔다. 그러므로 두 수 중 하나는 홀수이고 하나는 짝수다.
(라) 이 프로그램은 지난 한 달 동안 한 번도 죽지 않았다. 그러므로 내일도 죽지 않을 것이다.
풀이 보기
가르는 기준은 결과가 아니라 무엇을 주장하는가다. 전제가 결론을 남김없이 보증한다고 주장하면 연역이고, 그럴듯하게 만든다고만 주장하면 귀납이다.
(가) 연역이다. 전제가 참인 상황에서 결론이 거짓일 길이 없다. 그리고 타당하다.
(나) 귀납이다. 백 번이 아니라 백만 번이어도 남은 공에 대해서는 아무것도 보증하지 못한다. 백한 번째가 파란 상황을 상상할 수 있다. 그렇다고 나쁜 추론은 아니다. 표본이 클수록 강해진다.
(다) 연역이다. 그리고 타당하다. 홀수 둘을 더하면 짝수, 짝수 둘을 더해도 짝수이므로, 합이 홀수라면 남은 경우는 하나뿐이다. 전제가 결론을 남김없이 보증한다.
(라) 귀납이다. 지난 기록이 앞날을 보증하지 않는다. 연역으로 읽으면 부당하지만, 그 판정은 이 논증을 잘못 대한 것이다. 귀납 논증에 타당·부당을 들이대면 언제나 부당하다는 답만 나온다. 그래서 잣대를 따로 두는 것이다.
(나)와 (라)를 "부당하다" 한마디로 끝내지 않는 것이 이 문항의 요점이다.
예제 11
타당한 논증에 전제를 아무거나 하나 더 붙여도 타당성이 사라지지 않는 이유를 설명하라.
풀이 보기
모범답안. 타당하다는 것은 전제를 모두 참으로 만드는 상황이 하나도 빠짐없이 결론을 참으로 만든다는 뜻이다. 전제를 하나 더 붙이면 전제를 모두 참으로 만드는 상황이 늘지 않는다. 새 전제까지 참이어야 하므로 그 범위는 그대로이거나 좁아진다. 원래 범위 전체에서 결론이 참이었으니 좁아진 범위에서도 결론이 참이다. 따라서 반례가 새로 생길 수 없고 타당성은 그대로다.
답에 반드시 들어가야 하는 것.
전제를 참으로 만드는 상황의 범위가 좁아지기만 한다는 지적
반례가 새로 생길 수 없다는 결론 — 반례는 전제를 모두 참으로 만들어야 하기 때문이다
귀납과의 대조 — 귀납의 잣대는 모든 상황이 아니라 얼마나 그럴듯한가이므로, 새 전제가 그 값을 낮출 수 있다
앞 절의 그림으로 보면 한눈에 들어온다. 전제를 더하는 것은 파란 영역을 줄이는 일이다. 원래 파란 영역이 주황 영역과 겹치지 않았다면 줄어든 영역도 겹칠 수 없다.
형식이 판단을 이끈다
지금까지 타당한지 아닌지를 판정할 때 우리가 실제로 본 것은 무엇이었나. 물고기도 아니고 소수도 아니었다. 짜임이었다. 이제 그 짜임에 이름과 기호를 준다.
논증 형식과 대입례
문장이 들어갈 자리에 빈칸을 뚫는다. 빈칸은 𝜑, 𝜓, 𝜒 로 적는다. 이것들은 명제가 아니다. 아무 논리식이나 들어갈 수 있는 자리를 가리키는 기호이고, 이런 기호를 메타변수라 부른다. 원자 명제를 적는 𝑃, 𝑄, 𝑅 와 섞지 않도록 조심하자. 𝑃 는 문장 하나이고 𝜑 는 문장이 들어갈 구멍이다.
문장을 잇는 데 쓰는 기호도 둘만 미리 쓴다. 𝜑→𝜓 는 "𝜑 이면 𝜓 다"이고, ¬𝜑 는 "𝜑 가 아니다"이다. 나머지 기호와 정확한 뜻은 5장과 6장에서 세운다.
앞에서 여러 번 나온 짜임을 이렇게 적을 수 있다. 가로선 위가 전제, 아래가 결론이다.
𝜑→𝜓,𝜑𝜓
이것이 논증 형식(argument form)이다. 빈칸에 실제 문장을 채워 만든 논증을 그 형식의 대입례(substitution instance)라 한다. 이 장 첫머리의 비와 길 논증이 𝜑 에 "비가 온다"를, 𝜓 에 "길이 젖는다"를 넣은 대입례다.
규칙은 이렇다. 어떤 논증이 타당한 형식의 대입례이면 그 논증은 타당하다. 빈칸에 무엇을 넣든 상관없다. 형식이 타당하다는 것이 곧 어떤 대입에서도 반례가 없다는 뜻이기 때문이다. 논리학이 내용을 보지 않는 이유가 여기 있다. 내용을 보지 않아도 되는 만큼만 논리학이 답한다.
거꾸로는 성립하지 않는다. 부당한 형식의 대입례라고 해서 그 논증이 부당한 것은 아니다. 논증 하나는 여러 형식의 대입례일 수 있고, 그중 타당한 형식이 하나라도 있으면 타당하다. 곧 볼 부당한 형식 𝜑→𝜓,𝜓𝜑 에 𝜑 와 𝜓 를 둘 다 𝑃 로 놓아 보라. 전제가 𝑃→𝑃 와 𝑃, 결론이 𝑃 인 논증이 되는데 이것은 타당하다.
흔한 형식적 오류 — 후건 긍정과 전건 부정
𝜑→𝜓 를 전제로 쓰는 형식은 네 가지가 있다. 둘은 타당하고 둘은 부당하다. 부당한 둘에는 따로 이름이 붙어 있을 만큼 자주 나온다.
이름
전제
결론
판정
전건 긍정
𝜑→𝜓, 𝜑
𝜓
타당
후건 부정
𝜑→𝜓, ¬𝜓
¬𝜑
타당
후건 긍정 (오류)
𝜑→𝜓, 𝜓
𝜑
부당
전건 부정 (오류)
𝜑→𝜓, ¬𝜑
¬𝜓
부당
<아래 두 형식이 같은 반례 하나로 함께 무너진다는 것이 요점이다. 따로 외울 필요가 없다>[원본 보기]
부당한 두 형식은 반례가 같다. 𝜑 가 거짓이고 𝜓 가 참인 상황이다. 그때 𝜑→𝜓 는 참이 된다 — 조건문은 앞부분이 거짓이면 참으로 친다. 이 규약이 어디서 오는지는 6장에서 다룬다. 지금은 "일어나지 않은 일에 대한 약속은 어긴 것으로 치지 않는다" 정도로 받아들이면 된다.
후건 긍정에서는 그 상황에서 전제 𝜑→𝜓 와 𝜓 가 둘 다 참이고 결론 𝜑 는 거짓이다. 전건 부정에서는 전제 𝜑→𝜓 와 ¬𝜑 가 둘 다 참이고 결론 ¬𝜓 는 거짓이다. 반례 하나가 둘을 함께 무너뜨린다.
비형식 오류는 이름만 적어 둔다
형식이 아니라 내용과 맥락 때문에 나쁜 논증도 많다. 상대의 주장을 약하게 고쳐 놓고 그것을 공격하기(허수아비), 주장 대신 사람을 공격하기(인신공격), 결론을 전제 안에 몰래 넣기(선결문제 요구), 몇 사례로 전체를 단정하기(성급한 일반화), 선택지가 둘뿐인 것처럼 내놓기(거짓 딜레마), 권위에 호소하기, 작은 양보가 파국으로 이어진다고 몰기(미끄러운 비탈).
이 문서는 이것들을 다루지 않는다. 중요하지 않아서가 아니라 형식으로 잡히지 않기 때문이다. 앞 절의 오류에 호소하기도 같은 부류다. 빈칸에 무엇을 넣었느냐를 봐야만 나쁜지 알 수 있으므로, 빈칸만 보는 도구로는 잡을 수 없다.
그리고 형식을 보려면 형식이 눈에 보여야 한다. 자연어 문장은 형식을 감춘다. "비가 오지 않으면 소풍을 간다" 와 "소풍을 가려면 비가 오지 않아야 한다" 는 같은 형식인가 다른 형식인가. 한국어만 들여다봐서는 답이 갈린다. 다음 장이 그 일을 한다. 자연어를 기호로 옮겨 형식을 드러내고, 그 과정에서 무엇을 잃고 무엇을 얻는지 따진다.
예제 12
다음 넷 중 타당한 것을 모두 고르고, 부당한 것은 반례를 들어 보여라.
(가) 이 수가 4 의 배수이면 짝수다. 이 수는 4 의 배수다. 그러므로 짝수다.
(나) 이 수가 4 의 배수이면 짝수다. 이 수는 짝수가 아니다. 그러므로 4 의 배수가 아니다.
(다) 이 수가 4 의 배수이면 짝수다. 이 수는 짝수다. 그러므로 4 의 배수다.
(라) 이 수가 4 의 배수이면 짝수다. 이 수는 4 의 배수가 아니다. 그러므로 짝수가 아니다.
풀이 보기
넷 다 첫 전제가 같다. 𝜑 를 "이 수는 4 의 배수다", 𝜓 를 "이 수는 짝수다" 로 두면 첫 전제가 𝜑→𝜓 다. 둘째 전제와 결론만 다르므로 형식으로 갈리는지부터 본다.
(가) 전건 긍정이다. 타당하다. 4 의 배수는 반드시 짝수이므로 빠져나갈 틈이 없다.
(나) 후건 부정이다. 타당하다. 짝수가 아닌 수가 4 의 배수라면 첫 전제가 깨진다. 그러니 전제 둘이 다 참인 상황에서 결론이 거짓일 수 없다.
(다) 후건 긍정이다. 부당하다. 반례 — 이 수가 6 인 상황. 첫 전제는 여전히 참이고(6 이 4 의 배수라면 짝수일 것이다. 사실 4 의 배수는 모두 짝수이므로 이 전제는 어느 수에 대해서도 참이다), 둘째 전제도 참이며(6 은 짝수다), 결론은 거짓이다(6 은 4 의 배수가 아니다).
(라) 전건 부정이다. 부당하다. 반례는 같다 — 이 수가 6 인 상황. 첫 전제 참, 둘째 전제 "6 은 4 의 배수가 아니다" 참, 결론 "6 은 짝수가 아니다" 거짓.
(다)와 (라)의 반례가 같은 수라는 것을 확인하자. 앞 그림이 말한 그대로다. 𝜑 가 거짓이고 𝜓 가 참인 상황, 곧 4 의 배수는 아니면서 짝수인 수 하나면 둘이 함께 무너진다.
예제 13
어떤 학생이 논증 하나를 보고 "이것은 후건 긍정 형식이니까 부당하다"고 판정했다. 이 판정이 왜 성급한지 설명하라.
풀이 보기
모범답안. 논증 하나는 여러 형식의 대입례일 수 있다. 부당한 형식에 맞아떨어진다는 것은 그 형식이 결론을 보증하지 못한다는 뜻일 뿐, 다른 경로로 결론이 보증될 가능성을 배제하지 못한다. 그러므로 부당함을 확립하려면 형식을 지목하는 것으로는 부족하고, 이 논증 자체에 대한 반례를 하나 내놓아야 한다. 전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 구체적인 상황을 보여야 한다.
답에 반드시 들어가야 하는 것.
대입례 규칙이 한쪽 방향으로만 성립한다는 지적 — 타당한 형식은 타당함을 보증하지만 부당한 형식은 부당함을 보증하지 않는다
반례를 실제로 내놓아야 부당함이 확립된다는 지적
반례가 되는 예 — 𝜑 와 𝜓 에 같은 문장을 넣은 경우처럼 형식은 후건 긍정인데 타당한 논증이 있다
실전에서는 대개 형식을 지목하는 것으로 충분하다. 빈칸에 서로 다른 문장이 들어간 보통의 경우에는 앞의 반례가 그대로 통하기 때문이다. 그래도 확립하는 것은 반례이고 형식은 반례를 찾을 자리를 알려 줄 뿐이라는 순서는 기억해 두는 편이 좋다.
이 장에서 새로 나온 것
용어·기호
뜻
논증(argument)
결론 하나와 그것을 받아들일 이유로 내놓은 전제들의 묶음
전제 / 결론
이유로 내놓은 문장 / 받아들이게 하려는 문장
타당하다(valid)
전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황이 없다. 전제가 실제로 참인지와 무관하다
부당하다(invalid)
그런 상황이 있다. 결론이 거짓이라는 뜻이 아니다
건전하다(sound)
타당하고 전제가 실제로 모두 참이다. 그러면 결론은 반드시 참이다
반례(counterexample)
전제를 모두 참으로 만들면서 결론을 거짓으로 만드는 상황. 하나면 부당함이 확립된다
연역 / 귀납
결론을 보증한다고 주장하는 논증 / 그럴듯하게 만든다고 주장하는 논증. 이 문서는 연역만 다룬다
단조성(monotonicity)
전제를 더해도 타당성이 사라지지 않는 성질. 연역은 단조적이고 귀납은 아니다
논증 형식 / 대입례
빈칸이 뚫린 짜임 / 빈칸을 채워 만든 논증. 타당한 형식의 대입례는 타당하다
𝜑, 𝜓, 𝜒
논리식이 들어갈 자리를 가리키는 메타변수. 명제가 아니다
𝑃, 𝑄, 𝑅
원자 명제. 메타변수와 구별한다
𝜑→𝜓
𝜑 이면 𝜓 다. 앞부분이 거짓이면 전체를 참으로 친다
¬𝜑
𝜑 가 아니다
전건 긍정 / 후건 부정
타당한 두 형식
후건 긍정 / 전건 부정
부당한 두 형식. 𝜑 거짓, 𝜓 참이 공통 반례다
다음 장은 이 장이 남긴 숙제를 받는다. 형식을 보고 판정하기로 했는데, 자연어 문장에서 형식을 어떻게 읽어 낼 것인가. 그리고 기호로 옮기는 동안 무엇이 사라지는가.
논증의 형태를 드러내기
3장은 타당성이 내용의 문제가 아니라 형식의 문제라고 결론지었다. 그렇다면 형식을 꺼내 보여야 한다. 이 장이 하는 일이 그것이다.
이 장에서 답할 질문은 셋이다. 서로 다른 이야기를 하는 두 논증이 같은 형식이라는 말은 무슨 뜻인가. 한국어 문장에서 무엇을 기호로 바꾸고 무엇을 남기는가. 그리고 옮기면서 무엇을 잃는가. 이 장의 제목에 쓴 ‘형태’ 는 3장이 논증 형식이라 부른 것과 같은 것을 가리킨다. 아래에서는 3장의 이름을 그대로 쓴다.
3장에서 가져오는 것은 넷이다. 타당성의 뜻 — 전제가 모두 참인데 결론이 거짓인 경우가 있을 수 없다는 것. 타당성과 건전성의 구별. 논증 형식과 대입례, 그리고 빈칸을 가리키는 메타변수 𝜑, 𝜓, 𝜒 와 원자 명제 𝑃, 𝑄, 𝑅 의 구별. 마지막으로 타당한 형식의 대입례는 타당하지만 거꾸로는 아니라는 규칙이다.
미리 밝혀 둘 것이 있다. 이 장에서 ¬, ∧, ∨, → 같은 기호를 쓴다. 그러나 그 기호의 문법은 5장에서, 뜻은 6장에서 정한다. 여기서는 속기로 쓸 뿐이다. 그래서 이 장의 몇 대목은 '지금은 어긋나 보이지만 6장에서 결말이 난다' 는 모양으로 남는다. 그 어긋남을 미리 느껴 두는 것이 이 장의 목적 가운데 하나다.
진리표로 계산하는 연습을 이미 해 본 독자도 있을 것이다. Mathematics for Computer Science 5장이 그것을 다룬다. 이 장은 그 계산 앞에 놓인 단계, 곧 계산할 대상을 한국어에서 만들어 내는 단계를 다룬다.
같은 형식을 공유하는 논증들
아래 두 논증을 보자.
비가 오면 길이 젖는다. 비가 온다. 따라서 길이 젖는다.
이 수가 4의 배수이면 짝수다. 이 수는 4의 배수다. 따라서 이 수는 짝수다.
하나는 날씨 이야기고 하나는 수 이야기다. 겹치는 낱말이 하나도 없다. 그런데 낱말을 지우고 짜임만 남기면 남는 것이 같다.
𝜑→𝜓, 𝜑, 따라서 𝜓
3장에서 이름을 얻은 것들이다. 빈칸이 뚫린 이 짜임이 논증 형식(argument form)이고, 빈칸을 채워 만든 논증이 그 형식의 대입례(substitution instance)다. 위의 두 논증은 같은 형식의 서로 다른 대입례다. 그런데 3장은 형식을 이미 드러난 것으로 놓고 이야기했다. 한국어 문장을 앞에 두고 어디를 지우고 어디를 남길지 정하는 일 — 그것이 이 장의 몫이다.
<가운데 뼈대에는 내용이 한 조각도 남아 있지 않다. 판정은 뼈대에서 한 번만 하고 대입례가 그것을 물려받는다. 마지막 대입례는 타당하지만 건전하지 않다>[원본 보기]
형식을 꺼내는 이득은 분명하다. 타당성 판정을 형식에서 한 번만 하면 그 형식의 대입례 전부가 판정을 물려받는다. 세상의 문장은 끝이 없지만 형식은 셀 수 있을 만큼 적다. 논리학이 논증을 하나씩 상대하지 않고 다룰 수 있는 이유가 여기 있다.
3장에서 본 대로 방향은 한쪽뿐이다. 형식이 타당하면 대입례는 모두 타당하지만 형식이 타당하지 않다고 해서 그 대입례가 부당한 것은 아니다. 3장은 𝜑 와 𝜓 에 같은 문장을 넣는 예로 그것을 보였다. 이 절의 둘째 예제는 같은 일이 훨씬 넓게 벌어지는 자리를 보인다.
예제 14
아래 세 논증 가운데 같은 형식을 공유하는 것을 찾고, 각각의 형식을 메타변수로 적어라.
(가) 이 프로그램이 멈추면 답을 낸다. 이 프로그램은 멈춘다. 따라서 답을 낸다.
(나) 이 프로그램이 멈추면 답을 낸다. 답을 내지 않았다. 따라서 멈추지 않았다.
(다) 예산이 늘면 인원이 늘어난다. 예산이 늘었다. 따라서 인원이 늘어난다.
풀이 보기
묻는 것은 형식이니 내용어를 지우고 남는 짜임을 견주면 된다. (가)와 (다)가 같은 형식이다.
𝜑→𝜓, 𝜑, 따라서 𝜓
(나)는 다르다. 둘째 전제가 결론이 아니라 후건을 부정한다.
𝜑→𝜓, ¬𝜓, 따라서 ¬𝜑
두 형식 모두 타당하다. 뒤의 것이 3장에서 본 대우를 쓰는 꼴이다. 여기서 짚어 둘 것은 형식이 다르다고 타당성이 다른 것은 아니다라는 점이다. 형식은 타당성을 판정하는 단위일 뿐이고, 서로 다른 여러 형식이 다 타당할 수 있다.
반대 방향의 실수를 조심해야 한다. (나)를 (가)와 같은 형식으로 잡으려고 둘째 전제 '답을 내지 않았다' 를 새 글자 하나로 세우면 부정이 글자 안으로 숨는다. 그러면 그 글자와 첫 전제의 후건 사이에 아무 관계도 없어 보이고, 타당한 논증이 부당해 보인다. 부정을 원자 안에 넣지 말라는 규칙이 다음 절에 나오는데, 이유가 바로 이것이다.
예제 15
아래 논증은 누가 보아도 타당하다. 그런데 이 장의 방식으로 형식을 꺼내면 타당하지 않은 형식이 나온다. 무엇이 일어난 것인가.
모든 사람은 죽는다. 소크라테스는 사람이다. 따라서 소크라테스는 죽는다.
풀이 보기
이 장에서 쓰는 눈은 연결자만 본다. 세 문장 안에 '아니다, 그리고, 또는, 이면' 이 하나도 없으므로 세 문장이 각각 원자가 된다. 𝑃: 모든 사람은 죽는다. 𝑄: 소크라테스는 사람이다. 𝑅: 소크라테스는 죽는다. 그러면 형식은 이렇다.
𝑃, 𝑄, 따라서 𝑅
이 형식은 타당하지 않다. 자리에 아무 문장이나 넣을 수 있으니 전제가 참이고 결론이 거짓인 대입례를 쉽게 만들 수 있다. 그런데 원래 논증은 타당하다. 모순인가. 아니다. 형식이 타당하면 대입례가 타당하다는 규칙은 한 방향으로만 흐른다. 형식이 타당하지 않으면 그 형식은 이 논증의 타당성을 설명하지 못한다는 뜻일 뿐, 논증이 부당하다는 뜻이 아니다.
왜 설명하지 못하는가. 이 논증의 타당성은 문장 안의 짜임에서 나온다. '모든 …는' 과 '소크라테스는 …다' 가 맞물리는 자리인데, 우리 눈은 문장 안을 들여다보지 않으므로 그 맞물림이 보이지 않는다. 그래서 이 문서는 5장부터 8장까지 문장을 통째로 다루는 언어를 쓰고, 9장에서 문장 안을 여는 언어로 넘어간다. 그때 이 논증이 다시 나온다.
말버릇도 하나 정해 두자. '이 논증은 부당하다' 와 '이 논증은 지금 쓰는 언어에서 타당하지 않다' 는 다른 말이다. 뒤의 것은 논증이 아니라 우리 도구의 한계에 대한 말이다.
논리 상항과 비논리 상항
형식을 꺼낸다는 것은 어떤 낱말은 지우고 어떤 낱말은 남긴다는 뜻이다. 남기는 낱말을 논리 상항(logical constant), 지우는 낱말을 비논리 상항(non-logical constant)이라 한다. 기준은 이렇다. 비논리 상항은 무엇으로 갈아끼워도 타당성이 변하지 않는 낱말이고, 논리 상항은 갈아끼우면 타당성이 변할 수 있어 고정해 두는 낱말이다.
이 문서가 논리 상항으로 삼는 것은 아래가 전부다. 늘리지 않는다.
무엇
한국어에서 나타나는 꼴
기호
어느 장에서 정하는가
부정
아니다, 안, 못, -지 않다, -지 못하다
¬
5장 문법, 6장 뜻
논리곱
그리고, 그러나, 하지만, -고, -며, 동시에
∧
5장 문법, 6장 뜻
논리합
또는, 혹은, -거나, -든지, -이나
∨
5장 문법, 6장 뜻
조건
이면, -면, -인 한, 일 때만, 아니면 안 된다
→
5장 문법, 6장 뜻
동치
이면 그리고 그때만, 필요충분조건
↔
5장 문법, 6장 뜻
한정
모든, 어떤, 적어도 하나, 아무도
∀, ∃
9장 — 이 장에서는 다루지 않는다
동일성
와 같다, 바로 그것이다
=
12장
나머지 낱말은 전부 비논리 상항이다. 이름, 술어, 관계, 부사, 그리고 '반드시' 나 '아마' 같은 말까지 모두 그렇다.
5장부터 8장까지 쓰는 언어에서는 자르는 자리가 더 거칠다. 위의 연결자만 남기고 그 사이에 낀 문장 조각을 통째로 글자 하나로 잡는다. 그 글자를 원자 명제(atomic proposition)라 하고 𝑃, 𝑄, 𝑅 로 적는다. 문장 안이 어떻게 생겼는지는 보지 않는다.
<한국어는 부정과 조건을 어미로 붙이므로 낱말 차례와 기호 차례가 어긋난다. 그리고 괄호는 원문에 없다 — 옮기는 사람이 넣는다>[원본 보기]
원자를 고르는 규칙은 넷이다.
더 쪼갤 수 없을 때까지 쪼갠다. 조각 안에 논리 상항이 하나라도 남아 있으면 아직 원자가 아니다.
긍정형으로 잡는다. '비가 오지 않는다' 를 𝑄 로 세우지 말고 ¬𝑃 로 적는다.
참·거짓을 물을 수 있는 문장으로 잡는다. '철수가' 나 '달린다' 같은 조각은 원자가 될 수 없다.
사전을 적는다.𝑃 가 무슨 문장인지 밝히지 않은 기호식은 읽을 수 없다.
예제 16
아래 네 문장의 원자를 골라 사전을 적고 기호로 옮겨라.
(가) 비가 오지 않았고 바람도 불지 않았다.
(나) 철수가 오거나 영희가 온다.
(다) 시험은 어려웠지만 나는 통과했다.
(라) 철수와 영희는 사촌이다.
풀이 보기
(가) 논리 상항은 부정 둘과 논리곱 하나다. 남는 조각은 '비가 온다' 와 '바람이 분다' 다. 𝑃: 비가 온다. 𝑄: 바람이 분다. 답은 ¬𝑃∧¬𝑄 다.
(나) 𝑃: 철수가 온다. 𝑄: 영희가 온다. 답은 𝑃∨𝑄 다.
(다) '-지만' 은 논리곱이다. 𝑃: 시험은 어려웠다. 𝑄: 나는 통과했다. 답은 𝑃∧𝑄 다. 여기서 대조의 뉘앙스가 버려졌다. '어려웠지만 통과했다' 와 '어려웠고 통과했다' 는 느낌이 다르지만 두 문장이 참이 되는 조건은 같다. 참·거짓만 보는 도구는 이 차이를 담지 못한다.
(라) 여기에는 논리 상항이 없다. '와' 가 있으니 논리곱으로 보이지만 쪼개 보면 알 수 있다. '철수는 사촌이다' 는 그것만으로 뜻이 통하지 않는다. 그러므로 문장 전체가 원자 하나다. 𝑃: 철수와 영희는 사촌이다. 판별법을 기억해 두자. 각각으로 나눠 적었을 때 원문과 뜻이 같은가. 같으면 논리곱이고 다르면 원자 하나다. 관계를 말하는 문장은 대개 쪼개지지 않는다.
답이 말이 되는가. 옮긴 식을 사전에 따라 한국어로 되돌려 원문과 견주면 된다. 넷 다 되돌려 보면 원문과 같은 말이 나온다. (라)처럼 통째로 원자 하나로 둔 것도 되돌리면 원문 그대로다 — 쪼개지 않았으니 잃은 것도 없다. 이 되돌려 읽기가 이 장 마지막 절에서 옮기기 절차의 마지막 단계로 못 박힌다.
예제 17
어떤 사람이 아래 논증을 옮겼다. 사전을 이렇게 잡았다 — 𝑃: 비가 온다. 𝑄: 경기가 취소된다. 𝑅: 경기가 취소되지 않았다. 𝑆: 비가 오지 않았다.
비가 오면 경기가 취소된다. 경기가 취소되지 않았다. 따라서 비가 오지 않았다.
이 사전으로 옮기면 어떤 형식이 나오는가. 무엇이 잘못됐는가.
풀이 보기
그 사전으로 옮기면 이렇게 된다.
𝑃→𝑄, 𝑅, 따라서 𝑆
이 형식은 타당하지 않다. 𝑅 와 𝑆 는 다른 글자와 아무 관계가 없는 새 글자이므로, 전제를 다 참으로 만들고 결론을 거짓으로 만드는 데 아무 걸림돌이 없다. 잘못은 부정을 원자 안에 감춘 것이다. 원문에서 '경기가 취소되지 않았다' 는 '경기가 취소된다' 의 부정인데, 새 글자 𝑅 을 세우자 그 관계가 사라졌다. 규칙대로 긍정형만 원자로 잡으면 사전이 둘로 줄어든다.
𝑃→𝑄, ¬𝑄, 따라서 ¬𝑃
이제 앞 절에서 본 타당한 형식이다. 사전을 잘못 잡으면 타당한 논증이 부당해 보인다. 옮기기가 판정에 앞서는 일이고, 잘못 옮기면 그 뒤의 계산이 아무리 정확해도 소용이 없다.
아니다, 그리고, 또는
이제 연결자를 하나씩 옮겨 본다. 셋은 비교적 순하고, 다음 절의 '이면' 이 말썽이다.
아니다
¬𝑃 로 적는다. 가장 안전한 풀이는 '𝑃 인 것은 사실이 아니다' 다. 한국어에서 부정은 따로 선 낱말이 아니라 어미와 접사로 붙는다. '-지 않다', '안-', '못-', '-지 못하다', '아니다' 가 모두 부정이다.
함정이 둘 있다. 첫째, 반대말은 부정이 아니다. '행복하지 않다' 와 '불행하다' 는 다르다. 둘 다 아닌 중간이 있기 때문이다. 반대말을 만나면 원자를 따로 세워야 한다. 둘째, 이중부정을 함부로 줄이지 않는다. ¬¬𝑃 를 𝑃 로 바꿔도 되는지는 6장에서 판정하고, 19장에서는 그 바꿈을 허락하지 않는 논리를 본다. 옮기는 단계에서는 원문의 모양을 그대로 남긴다. 줄이는 일은 옮긴 다음의 일이다.
그리고
𝑃∧𝑄 로 적는다. '그리고' 만이 아니라 '그러나, 하지만, -지만, -고, -며, 동시에, 게다가' 가 모두 논리곱이 된다. 이 낱말들이 나르던 대조와 기대 어긋남은 버려진다.
주어를 아낀 문장은 펴서 옮긴다. '철수는 키가 크고 마르다' 는 '철수는 키가 크다' 와 '철수는 말랐다' 의 논리곱이다. 다만 앞 절에서 본 대로 '와/과' 는 논리곱이 아닐 수 있다. 관계를 말하는 문장은 쪼개지지 않는다.
또는
𝑃∨𝑄 로 적는다. '또는, 혹은, -거나, -든지, -이나' 가 여기 든다. 여기서 한국어와 갈라지는 자리가 처음 나온다. '또는' 에는 두 가지 읽기가 있다.
포함적(inclusive) — 적어도 하나가 참이면 참. 둘 다 참이어도 참이다.
배타적(exclusive) — 정확히 하나가 참일 때만 참. 둘 다 참이면 거짓이다.
논리학은 ∨ 를 포함적 쪽으로 정한다. 배타적으로 읽어야 하는 문장은 기호를 새로 만들지 않고 (𝑃∨𝑄)∧¬(𝑃∧𝑄) 처럼 조립해서 적는다.
<네 경우 가운데 두 읽기가 갈리는 칸은 둘 다 참인 칸 하나뿐이다. 그래서 판별 물음도 하나로 줄어든다>[원본 보기]
그림에서 보듯 판별 물음은 하나로 줄어든다. 둘 다 참일 때도 참인가. 참이면 포함적이고 거짓이면 배타적이다. 그런데 왜 포함적 쪽을 기본으로 삼는가. 자연어의 '또는' 이 배타적으로 들리는 것은 대개 낱말의 뜻 때문이 아니라 말하는 상황 때문이라는 관찰이 있다. 이를 가리는 방법이 취소 시험(cancellability test)이다. 뒤에 말을 덧붙여 그 읽기를 취소해도 모순이 되지 않으면, 그 읽기는 낱말의 뜻이 아니다.
'커피나 차를 드릴게요. 사실 둘 다 드려도 됩니다.' 이 말은 이상하게 들릴 수 있어도 자기모순은 아니다. 배타성이 '또는' 의 뜻이었다면 앞뒤가 맞지 않는 말이 됐을 것이다. 그러므로 배타성은 뜻이 아니라 상황이 얹은 것이고, 필요할 때 위의 꼴로 덧붙여 적으면 된다.
부정과 섞이는 자리도 조심해야 한다. '커피도 차도 마시지 않았다' 는 '마시지 않았다' 가 둘 모두에 걸리므로 ¬𝑃∧¬𝑄 다. 이것이 ¬(𝑃∨𝑄) 와 같은 것인지는 6장에서 확인한다.
예제 18
아래 네 문장을 기호로 옮기고, 옮기면서 버린 것이 있으면 밝혀라.
(가) 이 수는 소수가 아니다.
(나) 나는 행복하지 않다.
(다) 그가 왔다는 것은 사실이 아니다.
(라) 아무도 오지 않았다.
풀이 보기
(가) 𝑃: 이 수는 소수다. 답은 ¬𝑃 다.
(나) 𝑃: 나는 행복하다. 답은 ¬𝑃 다. 여기서 ¬𝑃 를 '나는 불행하다' 로 되읽으면 안 된다. 행복도 불행도 아닌 상태가 있으므로 '불행하다' 는 별도의 원자다. 그 문장이 필요하면 𝑄 를 새로 세워야 한다.
(다) 𝑃: 그가 왔다. 답은 ¬𝑃 다. 이 꼴이 가장 안전한 풀이이고, 애매한 부정문을 만나면 이 꼴로 바꿔 놓고 판단하면 된다.
(라) 겉모습은 부정문이지만 부정이 걸리는 대상이 문장이 아니다. '모든 사람에 대해, 그 사람은 오지 않았다' 라는 뜻이므로 부정과 한정이 얽혀 있다. 이 장의 도구로는 쪼갤 수 없으니 문장 전체를 원자 하나로 잡는다. 𝑃: 아무도 오지 않았다. 이것이 버려진 것이다. 이대로 두면 '아무도 오지 않았다' 와 '철수는 오지 않았다' 사이의 관계가 보이지 않는다. 9장에서 한정사를 얻으면 되찾는다.
예제 19
아래 문장들 가운데 논리곱으로 쪼갤 수 있는 것은 무엇인가. 쪼갤 수 있으면 쪼개고, 없으면 이유를 말하라.
(가) 철수와 영희는 학생이다.
(나) 철수와 영희는 어제 만났다.
(다) 나는 밥을 먹고 이를 닦았다.
풀이 보기
판별법은 하나다. 각각으로 나눠 적었을 때 원문과 뜻이 같은가.
(가) '철수는 학생이다' 와 '영희는 학생이다' 를 합치면 원문과 같다. 쪼개진다. 𝑃∧𝑄 다. (나) '철수는 어제 만났다' 는 뜻이 통하지 않는다. 쪼개지지 않으므로 원자 하나다.
(다) 쪼개진다. 𝑃: 나는 밥을 먹었다. 𝑄: 나는 이를 닦았다. 답은 𝑃∧𝑄 다. 그런데 여기서 순서를 버렸다. 원문은 밥이 먼저였다고 말하지만 𝑃∧𝑄 는 그 말을 하지 않는다. 순서가 논증에 필요하면 순서 자체를 원자로 세워야 한다. 예컨대 𝑅: 밥을 먹은 일이 이를 닦은 일보다 앞선다. 이렇게 세우면 도구 안으로 들어온다.
(가) 학생이면서 65세 이상인 사람도 할인을 받으니 둘 다 참일 때도 참이다. 포함적이다. 𝑃: 학생이다. 𝑄: 65세 이상이다. 𝑅: 요금을 할인한다. 답은 (𝑃∨𝑄)→𝑅 다.
(나) 배타적으로 들린다. 그런데 취소 시험을 걸면 '둘 다 드려도 됩니다' 를 덧붙일 수 있다. 배타성은 뜻이 아니라 상황이다. 포함적으로 옮기고, 배타성이 논증에 정말 필요하면 (𝑃∨𝑄)∧¬(𝑃∧𝑄) 로 적어 따로 주장한다.
(다) 실제로 둘 다일 수는 없다. 그러나 그 까닭은 '또는' 의 뜻이 아니라 문이라는 물건의 성질이다. 세상에 대한 사실을 낱말의 뜻으로 옮겨 넣으면, 나중에 그 사실이 틀린 자리에서 판정이 망가진다. 그러니 𝑃∨𝑄 로 옮기고 필요하면 ¬(𝑃∧𝑄) 를 별도의 전제로 세운다.
셋을 관통하는 원칙이 있다. 기호 하나에 여러 일을 시키지 말고, 주장할 것은 따로 적는다. 옮기기에서 늘 이 편이 안전하다.
이면 — 이 장에서 가장 걸리는 곳
𝑃→𝑄 로 적고, 앞을 전건(antecedent), 뒤를 후건(consequent)이라 한다. 여기가 이 장에서 가장 걸리는 곳이다. 다른 연결자는 한국어와 대체로 맞는데 조건문은 그렇지 않다.
진리조건은 6장에서 정하지만 결말을 미리 말해 두는 편이 낫다. 6장은 𝑃→𝑄 를 실질함의(material implication)로 정한다. 즉 전건이 참인데 후건이 거짓인 경우에만 거짓이고 나머지 경우는 모두 참이다. 특히 전건이 거짓이면 후건이 무엇이든 전체가 참이 된다. 이 대목이 불편해야 정상이다. 불편한 자리를 지금 짚어 두면 6장에서 무엇이 해결되고 무엇이 해결되지 않는지 알아볼 수 있다.
실질함의와 어긋나는 세 자리
첫째, 연관이 없어도 참이 된다. '달이 치즈로 되어 있으면 2 더하기 2는 4다' 는 전건이 거짓이므로 실질함의로는 참이다. 한국어로는 말이 안 되는 문장이다. 자연어의 '이면' 은 전건과 후건 사이의 연결을 주장하는데 실질함의는 진리값 조합만 본다.
둘째, 반사실 조건문을 담지 못한다. '내가 그때 뛰었더라면 버스를 탔을 것이다' 는 뛰지 않았다는 것을 전제로 하는 문장이다. 전건이 거짓이므로 실질함의로는 무조건 참이 된다. 그러나 이 문장은 거짓일 수 있다 — 버스가 이미 떠났다면 그렇다. 반사실 조건문은 → 로 옮길 수 없다. 18장의 도구가 필요하다.
셋째, 법칙과 인과를 담지 못한다. '쇠를 가열하면 팽창한다' 는 어떤 한 번의 일이 아니라 규칙성을 주장한다. 𝑃→𝑄 하나로는 그 '늘' 이 담기지 않는다. 9장의 한정사가 그 일부를 맡는다.
그렇다면 왜 실질함의를 쓰는가. 첫째, 논증에 쓰이는 조건문의 많은 부분이 정확히 '전건이 참인데 후건이 거짓인 일은 없다' 만 주장한다. 수학의 조건문이 거의 다 그렇고, 그 자리에서는 실질함의가 모자라지도 넘치지도 않는다.
둘째, 진리값만 보고 정하기로 마음먹으면 고를 여지가 거의 없다. 다르게 정하면 조건문이 이미 있는 다른 연결자와 같은 것이 되어 버린다. 정말 그런지는 6장에서 확인한다. 지금은 어긋남을 기억해 두는 것으로 충분하다.
뒤집히는 표현
조건문에서 실수가 가장 많이 나는 곳은 진리조건이 아니라 방향이다. 한국어의 여러 표현이 전건과 후건을 뒤집는다.
한국어
기호
왜 그렇게 되는가
𝑃 이면 𝑄 다
𝑃→𝑄
가장 곧은 꼴. 𝑃 가 충분조건이다
𝑃 인 한 𝑄 다
𝑃→𝑄
위와 같다
𝑃 는 𝑄 의 충분조건이다
𝑃→𝑄
𝑃 만 있으면 𝑄 가 따라온다
𝑃 일 때만 𝑄 다
𝑄→𝑃
𝑃 없이는 𝑄 가 안 된다. 방향이 뒤집힌다
𝑃 이어야만 𝑄 다
𝑄→𝑃
위와 같다
𝑃 가 아니면 𝑄 가 아니다
𝑄→𝑃
¬𝑃→¬𝑄 와 같은 주장이다
𝑃 없이는 𝑄 일 수 없다
𝑄→𝑃
위와 같다
𝑃 는 𝑄 의 필요조건이다
𝑄→𝑃
𝑃 가 없으면 안 되는 쪽이다
𝑄 이려면 𝑃 이어야 한다
𝑄→𝑃
위와 같다
𝑃 가 아니면 𝑄 다
¬𝑃→𝑄
부정이 전건에 붙을 뿐 방향은 그대로다
𝑃 이면 그리고 그때만 𝑄 다
𝑃↔𝑄
(𝑃→𝑄)∧(𝑄→𝑃) 의 줄임이다
<표현이 열 가지여도 판단은 하나다 — 어느 쪽이 없으면 안 되는가. 그 쪽이 화살촉 자리다>[원본 보기]
3장이 이 장에 넘긴 물음이 여기서 풀린다. '비가 오지 않으면 소풍을 간다' 와 '소풍을 가려면 비가 오지 않아야 한다' 는 같은 형식인가. 𝑃: 비가 온다. 𝑄: 소풍을 간다 로 잡으면 앞의 것은 ¬𝑃→𝑄 이고 뒤의 것은 𝑄→¬𝑃 다. 서로 다른 형식이고 어느 쪽도 다른 쪽을 함의하지 않는다. 한국어만 들여다봐서는 갈리던 물음이 기호로 옮기자마자 결말이 난다.
표를 외우는 것보다 요령 하나를 익히는 편이 낫다. 화살표는 언제나 충분조건에서 필요조건으로 간다. 없어서는 안 되는 쪽을 찾아 화살촉 자리에 놓으면 된다. 표 마지막 줄의 ↔ 는 새 연결자가 아니라 두 방향의 조건문을 함께 주장하는 줄임이고, '필요충분조건' 과 '서로 같다' 가 모두 이 꼴로 간다.
예제 21
아래 문장들을 기호로 옮겨라. 사전을 함께 적어라.
(가) 비가 오면 소풍은 취소된다.
(나) 소풍을 가려면 날이 맑아야 한다.
(다) 회원일 때만 입장할 수 있다.
(라) 비자가 없으면 입국할 수 없다.
풀이 보기
(가) 𝑃: 비가 온다. 𝑄: 소풍이 취소된다. 곧은 꼴이므로 𝑃→𝑄 다.
(나) 𝑃: 소풍을 간다. 𝑄: 날이 맑다. '-려면 -여야 한다' 는 뒤의 것이 없으면 안 된다는 말이다. 그러니 날이 맑은 것이 필요조건이고 답은 𝑃→𝑄 다. 여기서 순서에 속지 말아야 한다. 문장에서 '소풍' 이 먼저 나왔지만 그것이 전건이 되는 것은 낱말 순서 때문이 아니라, 소풍을 갔다는 사실에서 날이 맑았다는 사실이 따라 나오기 때문이다.
(다) 𝑃: 회원이다. 𝑄: 입장할 수 있다. '일 때만' 은 방향을 뒤집는다. 답은 𝑄→𝑃 다.
(라) 𝑃: 비자가 있다. 𝑄: 입국할 수 있다. 글자 그대로 옮기면 ¬𝑃→¬𝑄 다. 이것은 '입국했다면 비자가 있었다', 곧 𝑄→𝑃 와 같은 주장이다. 어느 꼴로 적어도 되지만 같은 문서 안에서는 하나로 통일하는 편이 뒤의 계산에서 편하다.
예제 22
앞 예제 (라)의 문장 '비자가 없으면 입국할 수 없다' 가 참이라고 하자. 아래 셋 가운데 따라 나오는 것은 무엇인가.
(가) 비자가 있으면 입국할 수 있다.
(나) 입국했다면 비자가 있었다.
(다) 비자가 없으면 입국하지 않았다.
풀이 보기
사전은 앞 예제와 같고 원문은 𝑄→𝑃 다. (나)는 원문을 그대로 다시 적은 것이고 (다)도 원문과 같은 주장이다. 둘 다 따라 나온다.
(가)는 𝑃→𝑄 다. 원문의 화살표를 거꾸로 돌린 것이므로 따라 나오지 않는다. 비자가 있어도 다른 이유로 입국을 거절당할 수 있다. 이것이 실무에서 가장 자주 나오는 조건문 오류다. 필요조건을 충분조건으로 뒤집어 읽는 것이고, 3장의 후건 긍정 오류와 같은 뿌리다. 어떤 문서가 '𝑃 없이는 𝑄 가 안 된다' 고만 말했다면 그 문서는 𝑃 가 있을 때 무슨 일이 일어나는지 아무 말도 하지 않았다.
예제 23
아래 조건문 가운데 → 로 옮겨도 뜻이 보존되는 것은 무엇인가. 보존되지 않는 것은 무엇을 잃는가.
(가) 이 수가 6의 배수이면 3의 배수다.
(나) 내가 그때 뛰었더라면 버스를 탔을 것이다.
(다) 쇠를 가열하면 팽창한다.
풀이 보기
(가) 보존된다. 이 문장이 주장하는 것은 정확히 '6의 배수인데 3의 배수가 아닌 경우는 없다' 이고, 그것이 실질함의가 말하는 바다. 수학의 조건문은 대개 이렇다.
(나) 보존되지 않는다. 나는 뛰지 않았으니 전건이 거짓이고, 실질함의로 옮기면 이 문장은 무조건 참이 된다. 그런데 원문은 거짓일 수 있다. 원문이 말하는 것은 진리값 조합이 아니라 '다른 상황이었다면 어땠을까' 이고, 그 '다른 상황' 을 다루는 도구는 18장에 있다.
(다) 부분적으로만 보존된다. 이 문장은 한 번의 가열이 아니라 가열하는 모든 경우를 말한다. 𝑃→𝑄 로 옮기면 그 '모든' 이 사라진다. 9장의 한정사를 얻으면 '모든 쇳덩이에 대해, 가열하면 팽창한다' 로 옮길 수 있다. 정리하면 이렇다. 조건문을 옮기기 전에 물어야 할 것은 이 문장이 정말로 '전건 참·후건 거짓인 경우가 없다' 만 주장하는가다. 더 많은 것을 주장하고 있으면 → 는 그 문장에 대해 너무 약하다.
옮기면서 잃는 것
앞의 절들에서 잃은 것들을 한자리에 모으자. 옮기기는 손실 압축이다. 무엇을 버릴지는 무엇을 판정하려는가가 정한다.
잃는 것
보기
어떻게 되는가
어디서 되찾는가
시제
비가 온다 / 비가 왔다
서로 다른 원자가 된다. 같은 글자로 묶으면 판정이 망가진다
이 문서에서 다루지 않는다
양상
반드시 그렇다 / 그럴 수 있다
그냥 버려진다. 𝑃 와 반드시 𝑃 를 구별할 수 없다
18장 양상논리
정도
덥다, 키가 크다, 행복하다
참과 거짓 둘로만 갈라야 한다. 중간이 없어진다
19장 다치논리
화용적 함축
그리고 의 시간 순서, 또는 의 배타 읽기
버려진다. 뜻이 아니라 상황이 얹은 것이기 때문이다
되찾지 않는다. 필요하면 따로 주장한다
문장 안의 짜임
모든 사람은 죽는다
원자 하나로 뭉개진다
9장 술어논리
관계
철수와 영희는 사촌이다
원자 하나로 뭉개진다
9장 술어논리
반사실
뛰었더라면 탔을 것이다
전건이 거짓이라 무조건 참이 된다
18장 양상논리
표의 넷째 줄을 정리해 두자. 문장이 말한 것(what is said)과 함축한 것(implicature)은 다르다. '커피나 차를 드릴게요' 는 둘 중 하나만 준다고 말하지 않았지만 그렇게 들린다. 이런 것을 화용적 함축(pragmatic implicature)이라 하고, 앞에서 본 취소 시험이 둘을 가른다. 논리는 말한 것만 옮긴다. 그러니 옮긴 뒤에 반드시 물어야 할 것이 있다. 버린 것이 이 판정에 영향을 주는가. 영향이 없으면 옮기기가 성공한 것이고, 영향이 있으면 원자를 다시 잡거나 더 센 도구로 옮겨야 한다.
예제 24
'그는 결혼하고 아이를 낳았다' 와 '그는 아이를 낳고 결혼했다' 를 각각 옮기면 𝑃∧𝑄 와 𝑄∧𝑃 가 된다. 6장에서 이 둘은 서로 바꿔도 되는 것으로 판정된다. 그러면 두 문장이 같아진다. 무엇이 어긋났고, 왜 그래도 이 도구를 쓰는가.
풀이 보기
어긋난 것은 시간 순서다. 원문 둘은 순서가 반대인데 기호식은 그 차이를 담지 못한다.
그런데 순서가 '-고' 의 뜻인지는 따져 봐야 한다. 취소 시험을 걸어 보자. '그는 결혼하고 아이를 낳았다. 순서는 나도 모르겠다.' 이 말은 이상하게 들리지만 자기모순은 아니다. 그러므로 순서는 뜻이 아니라 함축이고, 이 도구는 말한 것에 대해서는 옳다. 두 문장이 말한 것은 결혼과 출산이 둘 다 있었다는 사실뿐이며, 그 점에서 두 문장은 정말로 같다.
그래도 순서가 논증에 필요한 경우가 있다. 그러면 순서를 원자로 세우면 된다. 𝑅: 결혼이 출산보다 앞선다. 이렇게 하면 두 문장이 𝑃∧𝑄∧𝑅 와 𝑃∧𝑄∧¬𝑅 로 갈라진다. 요령은 늘 같다 — 도구를 바꾸기 전에 원자를 다시 잡아 보라.
예제 25
아래 논증을 옮겨 형식을 적어라. 옮기면서 버린 것 셋을 찾고, 그 버림이 판정을 바꾸는지 따져라.
비가 온다면 반드시 길이 젖는다. 길이 젖었다. 따라서 비가 왔다.
풀이 보기
먼저 옮긴다. 𝑃: 비가 온다. 𝑄: 길이 젖는다.
𝑃→𝑄, 𝑄, 따라서 𝑃
이것은 후건 긍정이고 타당하지 않다. 3장에서 본 형식이다. 버린 것 셋을 찾자. 첫째는 '반드시' 다. 양상은 이 도구에 자리가 없어 그냥 사라졌다. 둘째와 셋째는 시제 다. '비가 온다' 와 '비가 왔다' 를 같은 𝑃 로 묶었고, '길이 젖는다' 와 '길이 젖었다' 를 같은 𝑄 로 묶었다.
이 버림이 판정을 바꾸는가. 바꾸지 않는다. 시제를 살려 원자를 넷으로 늘리면 전제와 결론 사이의 연결이 더 약해지므로 여전히 타당하지 않다. '반드시' 를 살리면 첫 전제가 더 센 주장이 되지만 후건 긍정이라는 짜임 자체는 그대로다. 그러니 부당하다는 판정은 원문에 대해서도 유효하다.
방향을 조심해야 한다. 이 확인은 판정이 '부당' 으로 나왔을 때 더 중요하다. 버린 것 때문에 부당해 보이는 것일 수도 있기 때문이다. 앞 절에서 부정을 원자에 감춘 사례가 정확히 그런 경우였다.
답이 말이 되는가. 버린 것 셋을 하나씩 도로 얹어 보며 같은 물음을 던지면 된다. 이것을 되살리면 판정이 달라지는가. 셋 다 아니오였으므로 버린 채로 판정해도 된다. 하나라도 예였다면 그 조각을 원자로 세워 형식 안에 집어넣어야 한다. 무엇을 버릴지 정하는 기준은 취향이 아니라 이 물음이다.
괄호가 없으면 문장이 갈라진다
아래 문장을 읽어 보자 — 비가 오고 바람이 불거나 눈이 온다.
이 문장은 두 가지로 읽힌다. 𝑃: 비가 온다. 𝑄: 바람이 분다. 𝑅: 눈이 온다 로 잡으면 이렇다.
𝑃∧(𝑄∨𝑅) — 비는 반드시 오고, 거기에 바람이나 눈이 더해진다.
(𝑃∧𝑄)∨𝑅 — 비와 바람이 함께 오거나, 아니면 눈이 온다.
두 읽기는 서로 다른 문장이다. 비가 오지 않고 눈만 오는 상황을 생각하면 앞의 것은 거짓이고 뒤의 것은 참이다. 답이 갈리므로 같은 문장일 수 없다.
<같은 글자열이 서로 다른 두 나무로 갈라진다. 꼭대기에 선 연결자가 문장의 종류를 정한다>[원본 보기]
그림에서 두 읽기를 나무로 그렸다. 꼭대기에 선 연결자가 문장을 마지막으로 하나로 묶는 연결자이고, 그것을 주연결자(main connective)라 한다. 주연결자가 무엇이냐가 문장의 종류를 정한다 — 앞의 것은 논리곱 문장이고 뒤의 것은 논리합 문장이다. 이 이름을 따로 두는 까닭은 뒤에서 계속 쓰기 때문이다. 6장에서 진리값을 마지막에 계산하는 것이 주연결자이고, 7장에서 어떤 규칙을 쓸지 고를 때 보는 것도 주연결자다. 정확한 정의는 5장에서 한다.
자연어에는 괄호가 없다. 억양과 쉼표와 문맥이 그 일을 대신하지만 확실하지 않다. 그래서 형식 언어는 괄호를 강제한다. 애매하게 적을 방법을 아예 없애는 것이 5장 문법의 목적 가운데 하나다. 옮기는 사람이 지킬 원칙은 이것이다. 애매성은 없애지 말고 드러내라. 두 읽기를 다 적은 뒤 문맥으로 고르고, 골랐다는 사실을 밝혀 둔다. 조용히 하나를 고르면 나중에 그 선택이 어디서 왔는지 아무도 모른다.
예제 26
'회원이거나 학생이고 20세 미만이면 요금을 할인한다' 를 두 가지로 옮기고, 두 읽기의 답이 갈리는 상황을 하나 들어라.
풀이 보기
사전을 먼저 적는다. 𝑃: 회원이다. 𝑄: 학생이다. 𝑅: 20세 미만이다. 𝑆: 요금을 할인한다. 애매한 부분은 조건문의 전건이고 두 읽기가 있다.
읽기 하나. (𝑃∨(𝑄∧𝑅))→𝑆 — 회원이면 그것만으로 할인이고, 회원이 아니면 학생이면서 20세 미만이어야 한다.
읽기 둘. ((𝑃∨𝑄)∧𝑅)→𝑆 — 회원이든 학생이든, 어느 쪽이어도 20세 미만이라는 조건은 반드시 채워야 한다.
답이 갈리는 상황은 30세 회원이다. 첫 읽기로는 할인을 받고 둘째 읽기로는 받지 못한다.
어느 쪽이 맞는가. 문장만으로는 정할 수 없다. 실제로 이런 문장은 약관과 법령에서 분쟁을 낳는다. 그러니 옮기는 사람이 할 일은 하나를 고르는 것이 아니라 두 읽기를 적어 물어보는 것이다. 한국어에서는 쉼표가 도움이 된다. '회원이거나, 학생이고 20세 미만이면' 은 첫 읽기 쪽으로, '회원이거나 학생이고, 20세 미만이면' 은 둘째 읽기 쪽으로 기운다. 기울 뿐이고 정해지지는 않는다.
예제 27
'비가 오고 바람이 불지 않는다' 는 몇 가지로 읽히는가. 각각을 기호로 적고 주연결자를 밝혀라.
풀이 보기
𝑃: 비가 온다. 𝑄: 바람이 분다 로 잡는다.
읽기 하나. 𝑃∧¬𝑄 — 비는 오고 바람은 안 분다. 주연결자는 ∧ 이고 부정은 𝑄 에만 걸린다.
읽기 둘. ¬(𝑃∧𝑄) — 비가 오면서 바람이 부는 일은 없다. 주연결자는 ¬ 이고 부정이 논리곱 전체에 걸린다.
두 읽기는 다르다. 비도 안 오고 바람도 안 부는 상황에서 앞의 것은 거짓이고 뒤의 것은 참이다. 한국어에서는 첫 읽기가 자연스럽다. 부정 어미가 뒤쪽 서술어에만 붙어 있기 때문이다. 둘째 읽기를 말하고 싶으면 '비가 오면서 바람이 부는 것은 아니다' 처럼 부정을 문장 전체로 끌어내는 것이 좋다. 이 예제가 보여 주는 것은 부정의 범위가 애매성의 가장 흔한 원인이라는 점이다. 부정을 만나면 늘 '어디까지 걸리는가' 를 먼저 정하라.
옮기는 절차
지금까지의 규칙을 절차로 묶으면 이렇게 된다. 익숙해지기 전에는 여섯 단계를 눈으로 밟는 편이 빠르다.
<마지막 단계가 검사다. 되읽어 원문과 어긋나면 사전부터 고치러 돌아간다. 사전은 장식이 아니라 옮긴 결과의 절반이다>[원본 보기]
문장을 따로 떼어 적는다. 논증이면 전제와 결론을 줄줄이 늘어놓는다.
논리 상항을 찾아 표시한다. 어미와 접사로 숨어 있는 것까지 찾는다.
남은 조각을 원자로 잡고 사전을 적는다. 긍정형으로, 참·거짓을 물을 수 있는 문장으로.
뼈대를 만든다. 조각만 글자로 바꾸고 연결은 아직 한국어로 둔다. '𝑃 가 아니면 𝑄 가 아니다' 처럼.
기호로 바꾸고 괄호를 넣는다. 애매하면 두 읽기를 다 적는다.
되읽어 원문과 견준다. 어긋나면 세 번째 단계로 돌아간다.
네 번째 단계를 건너뛰고 싶어지지만 건너뛰지 않는 편이 좋다. 한국어 연결을 남긴 채 조각만 글자로 바꿔 놓으면 방향이 뒤집히는지 애매한지가 이 단계에서 눈에 들어온다. 여섯 번째 단계가 유일한 검사다. 기호식을 한국어로 되읽어 원문과 견주는 것이고, 이것 말고는 옮기기가 맞았는지 확인할 방법이 없다. 사전을 적어 두지 않으면 되읽을 수조차 없다.
예제 28
아래 논증을 절차대로 옮기고 형식을 적어라.
시험을 통과하지 못하면 졸업할 수 없다. 나는 졸업했다. 따라서 나는 시험을 통과했다.
풀이 보기
첫째, 문장을 늘어놓는다. 전제 둘과 결론 하나다.
둘째, 논리 상항을 찾는다. 첫 전제에 '-지 못하면' 과 '-ㄹ 수 없다' 가 있다. 부정 둘과 조건 하나다. 나머지 두 문장에는 논리 상항이 없다.
셋째, 원자를 잡고 사전을 적는다. 긍정형으로 잡는다. 𝑃: 나는 시험을 통과한다. 𝑄: 나는 졸업한다.
넷째, 뼈대를 만든다. '𝑃 가 아니면 𝑄 가 아니다', '𝑄 다', 따라서 '𝑃 다'. 다섯째, 기호로 바꾼다.
¬𝑃→¬𝑄, 𝑄, 따라서 𝑃
여섯째, 되읽는다. '시험을 안 통과하면 졸업을 못 한다. 졸업했다. 그러므로 시험을 통과했다.' 원문과 맞는다. 형식을 메타변수로 적으면 이렇다.
¬𝜑→¬𝜓, 𝜓, 따라서 𝜑
이 형식은 타당하다. 첫 전제가 '졸업했다면 통과했다' 와 같은 주장이므로 둘째 전제와 맞물려 결론이 나온다. 앞 절의 표에서 본 대로 ¬𝑃→¬𝑄 는 𝑄→𝑃 와 같은 주장이고, 그렇게 적으면 이 논증이 전건 긍정 꼴이라는 것이 바로 보인다. 여기서 배울 것이 있다. 같은 주장을 어느 꼴로 적을지가 다음 단계의 수고를 정한다. 어느 꼴이 좋은지 판단하는 기준은 6장과 7장에서 생긴다.
답이 말이 되는가. 여섯 단계를 다 밟았는지 세어 본다. 상항을 표시했고, 원자를 골라 사전을 적었고, 뼈대를 세웠고, 기호와 괄호를 붙였고, 마지막에 되읽어 원문과 맞췄다. 되읽기에서 어긋나지 않았으므로 옮김이 끝났다. 옮기기의 검산은 계산이 아니라 되읽기 하나뿐이다 — 그래서 사전을 적지 않으면 검산할 방법이 없다.
예제 29
어떤 사람이 '회원이 아니면 할인을 받지 못한다' 를 ¬𝑃→𝑄 로 옮겼다. 사전은 𝑃: 회원이다, 𝑄: 할인을 받는다 다. 되읽기로 잘못을 찾아라.
풀이 보기
되읽는다. ¬𝑃 는 '회원이 아니다' 이고 𝑄 는 '할인을 받는다' 다. 그러므로 이 기호식은 '회원이 아니면 할인을 받는다' 를 말한다. 원문과 반대다. 후건의 부정이 빠졌다. 바르게 옮기면 이렇다.
¬𝑃→¬𝑄
어디서 빠졌는지 보자. 넷째 단계의 뼈대를 적어 보면 '𝑃 가 아니면 𝑄 가 아니다' 인데 여기서 뒤쪽 '아니다' 를 흘렸다. 뼈대 단계를 건너뛰고 곧바로 기호를 쓰면 이런 실수가 잘 나온다.
되읽기의 힘이 여기 있다. 기호식만 노려보면 무엇이 빠졌는지 알기 어렵지만, 한국어로 풀어 원문과 나란히 놓으면 어긋남이 바로 드러난다. 되읽어서 원문과 같은 말이 되지 않으면 옮기기가 끝난 것이 아니다.
이 장에서 새로 나온 것
용어와 기호부터 모은다.
이름
기호
뜻
메모
전건 · 후건
—
𝑃→𝑄 의 앞과 뒤
3장이 이름만 쓴 말을 여기서 정의했다
논리 상항
—
갈아끼우지 않고 고정하는 낱말
부정·논리곱·논리합·조건·동치, 그리고 9장의 한정
비논리 상항
—
무엇으로 갈아끼워도 되는 낱말
이름, 술어, 관계, 부사
원자 명제
𝑃, 𝑄, 𝑅
더 쪼개도 논리 상항이 나오지 않는 문장
3장이 이름을 주었고 이 장이 고르는 규칙을 정했다
부정
¬
아니다, 안, 못, -지 않다
반대말은 부정이 아니다
논리곱
∧
그리고, 그러나, -고, -지만
대조와 순서는 버려진다
논리합
∨
또는, -거나, -든지
포함적으로 정한다. 배타는 (𝑃∨𝑄)∧¬(𝑃∧𝑄) 로 조립한다
조건
→
이면, 일 때만, 아니면 안 된다
앞이 전건, 뒤가 후건
동치
↔
이면 그리고 그때만
(𝑃→𝑄)∧(𝑄→𝑃) 의 줄임
충분조건 · 필요조건
—
화살표의 꼬리와 화살촉
없으면 안 되는 쪽이 필요조건이다
실질함의
—
전건 참·후건 거짓일 때만 거짓인 조건문
6장에서 정한다. 자연어와 어긋나는 자리가 셋 있다
주연결자
—
문장을 마지막으로 하나로 묶는 연결자
5장에서 정확히 정의한다
화용적 함축
—
말해진 것이 아니라 상황이 얹은 뜻
취소 시험으로 가른다. 지워지면 뜻이 아니다
판단 규칙으로는 아래를 얻었다.
물음
기준
두 논증이 같은 형식인가
내용어를 지우고 남는 짜임이 같은가
논증이 부당한가
형식이 타당하지 않은 것과 논증이 부당한 것은 다르다
와 를 논리곱으로 쪼갤 수 있는가
각각으로 나눠 적었을 때 원문과 뜻이 같은가
또는 가 포함적인가
둘 다 참일 때도 문장이 참인가. 취소 시험도 함께 건다
조건문의 방향이 어느 쪽인가
없으면 안 되는 쪽이 화살촉 자리다
조건문을 → 로 옮겨도 되는가
전건 참·후건 거짓인 경우가 없다는 것만 주장하는가
옮기기가 성공했는가
되읽어 원문과 같은 말이 되는가. 버린 것이 판정을 바꾸지 않는가
이 장에서 기호를 썼지만 그 기호들이 무엇인지는 아직 정하지 않았다. 어떤 글자열이 문장이고 어떤 것이 아닌지, 괄호를 어떻게 붙이는지, 주연결자가 무엇인지 — 이것을 정하는 것이 5장이다. 그리고 이 장에서 미뤄 둔 불편함, 곧 조건문의 진리조건은 6장에서 결말이 난다.
명제논리의 문법
4장에서 우리는 자연어 문장을 기호로 옮겼다. 그 작업에는 늘 판단이 끼어들었다. 이 "그리고"는 ∧ 인가 아니면 시간 순서를 말하는가, 이 문장은 어디까지가 가정인가, 이 대명사는 무엇을 가리키는가. 판단이 끼어든다는 것은 같은 문장을 두 사람이 다르게 옮길 수 있다는 뜻이다.
이 장은 방향을 뒤집는다. 옮겨 가는 쪽 — 목적지 언어 — 을 먼저 못 박는다. 어떤 기호열이 이 언어의 문장이고 어떤 것이 아닌지를, 뜻을 전혀 보지 않고 모양만으로 정한다. 그렇게 정하고 나면 옮기는 일에 여전히 판단이 남더라도, 옮겨 간 결과물에는 판단이 남지 않는다.
답할 질문은 셋이다. 어떤 기호열이 논리식인가, 그것을 애매함 없이 정할 수 있는가. 논리식 하나를 읽는 방법이 왜 정확히 하나뿐인가. 그리고 𝑃 와 𝜑 는 무엇이 다른가.
4장에서 가져오는 것은 연결자 다섯 개와 그 읽는 법뿐이다. 4장에서는 어느 연결자를 고를지를 뜻으로 판단했다. 이 장에서는 그 뜻을 한 번도 쓰지 않는다.
그래서 이 장에는 규율이 하나 있다. 어떤 논리식에 대해서도 참이라거나 거짓이라고 말하지 않는다. 진리값은 6장의 몫이고, 증명 가능성은 7장의 몫이다. 문법·의미론·증명 체계라는 세 층을 따로 세우고 나중에 그 사이의 관계를 정리로 증명하는 것이 이 문서 전체의 설계이며, 13장부터 17장까지가 그 정리들이다. 지금은 맨 아래층을 짓는다.
이 문서를 읽기 전에 Mathematics for Computer Science 를 읽은 사람이라면 진리표와 명제 대수를 이미 안다. 그 문서는 논리식을 ‘이미 있는 것’으로 놓고 그 뜻을 따졌다. 이 장은 그 앞자리를 채운다 — 논리식이라는 것이 애초에 무엇인지를 정한다.
왜 문법을 따로 정하는가
다음 한국어 문장을 보자. "비가 오고 바람이 불면 경기가 취소된다."
두 가지로 읽힌다. 비와 바람이 둘 다 있어야 취소되는 것일 수도 있고, 비가 오고 있는데 거기에 더해 바람이 불면 취소된다는 뜻일 수도 있다. 후자는 사실상 전자와 같지만, 문장 구조로 보면 "비가 온다"가 가정 안에 있는지 밖에 있는지가 다르다. 기호로 옮기면 그 차이가 드러난다. 𝑃 를 "비가 온다", 𝑄 를 "바람이 분다", 𝑅 을 "경기가 취소된다"로 두면 후보가 둘이다. 글자를 𝑃, 𝑄, 𝑅 로 고른 것은 다음 절에서 문장문자를 그렇게 정하기 때문이고, 낱말의 머리글자를 따다 쓰지 않는 것이 이 문서의 약속이다.
((𝑃∧𝑄)→𝑅)그리고(𝑃∧(𝑄→𝑅))
이 둘은 서로 다른 기호열이다. 괄호의 자리가 다르다. 자연어에서는 이 차이가 억양이나 문맥에 숨지만, 기호에서는 숨을 곳이 없다.
그런데 여기서 한 걸음 더 나가야 한다. 괄호를 아예 빼고 𝑃∧𝑄→𝑅 라고만 적으면 어떻게 되는가. 이 기호열은 위의 두 식 중 어느 쪽인가. 이 물음에 답하려면 "무엇이 논리식인가"를 먼저 정해야 한다. 그것을 정하는 규칙의 모음을 그 언어의 문법(syntax)이라 한다.
문법이 갖춰야 할 조건은 둘이다. 첫째, 규칙이 유한해야 한다. 논리식은 무한히 많으므로 목록으로는 줄 수 없다. 둘째, 판정이 기계적이어야 한다. 어떤 기호열을 들고 왔을 때 논리식인지 아닌지를, 그 기호열의 뜻을 이해하지 않고도 정할 수 있어야 한다.
두 조건을 만족하는 언어를 형식 언어(formal language)라 한다. 어휘의 목록과 결합 규칙만으로 무엇이 문장인지가 정해지고, 뜻은 그 위에 따로 얹는 언어다. 프로그래밍 언어가 그렇고, 이제 세울 명제논리의 언어도 그렇다.
뜻을 따로 얹는 것이 왜 이득인가. 층을 나누면 층 사이의 관계를 정리로 물을 수 있기 때문이다. 이 문서가 세울 층은 셋이다.
층
무엇을 정하는가
어디서 세우는가
문법
어떤 기호열이 이 언어의 문장인가. 뜻은 보지 않는다
이 장, 그리고 9장
의미론
문장에 뜻을 준다. 무엇이 무엇의 귀결인가
6장, 그리고 10장
증명 체계
어떤 규칙으로 문장에서 문장으로 옮겨 갈 수 있는가
7장, 그리고 11장
아래 두 층은 같은 문법 위에 따로 세워진다. 한쪽이 다른 쪽을 참고하지 않는다. 그래서 "증명 체계로 얻을 수 있는 것과 의미론이 인정하는 것이 같은가"라는 물음이 뜻을 갖게 되고, 그 답이 13장(건전성)과 14장(완전성)이다. 층을 나누지 않았다면 물을 것이 없었을 것이다.
예제 30
앞의 두 후보 ((𝑃∧𝑄)→𝑅) 와 (𝑃∧(𝑄→𝑅)) 가 서로 다른 식이라는 것을, 뜻을 전혀 말하지 않고 보여라.
풀이 보기
묻는 것은 두 기호열이 다르다는 것이고, 쓸 수 있는 것은 기호를 왼쪽부터 하나씩 견주는 일뿐이다. 뜻을 보지 않겠다고 했으므로 다른 방법이 없다.
첫 기호는 둘 다 여는 괄호로 같다. 둘째 기호가 갈린다. 왼쪽 식은 다시 여는 괄호이고, 오른쪽 식은 𝑃 다. 여기서 이미 두 기호열이 다르다.
이 논증에 "그리고"나 "만약"의 뜻이 한 번도 들어가지 않았다는 점이 요점이다. 모양만 보고도 다르다고 말할 수 있다. 반대로 뜻을 보고 다르다고 말하려면 진리표가 필요하고, 그것은 6장의 일이다.
여기서 조심할 것 하나. 모양이 다르다고 뜻도 반드시 다른 것은 아니다. (𝑃∧𝑄) 와 (𝑄∧𝑃) 는 모양이 다르지만 6장에서 뜻이 같다는 것을 보게 된다. 모양의 차이가 뜻의 차이를 함의하지는 않는다. 이 방향을 거꾸로 쓰지 않도록 주의하자.
예제 31
다음 기호열 넷 중 논리식으로 인정할 수 없는 것을 고르고, 지금 그 이유를 얼마나 정확히 말할 수 있는지 확인하라. (가) (𝑃∧𝑄) (나) 𝑃∧∨𝑄 (다) (𝑃∧𝑄 (라) )𝑃(
풀이 보기
눈으로 보면 (가)만 멀쩡하고 나머지 셋은 이상하다. (나)는 연결자가 둘 붙어 있고, (다)는 괄호가 짝이 맞지 않으며, (라)는 괄호가 뒤집혀 있다.
그런데 "이상하다"는 것은 이유가 아니다. 지금 우리가 가진 것은 눈짐작뿐이고, 눈짐작은 사람마다 다르고 기계는 갖고 있지 않다. 예컨대 (나)를 두고 "∧ 뒤에 ∨ 가 오면 앞의 것을 무시하기로 하자"고 규칙을 정하는 언어를 만들 수도 있다. 그런 언어가 나쁘다고 말할 근거가 아직 없다.
필요한 것은 "이상하다"가 아니라 "정의의 어느 조항도 그것을 만들지 못한다"는 말이다. 그런 말을 하려면 조항이 먼저 있어야 한다. 다음 두 절이 그것을 만든다. 그 뒤에 이 예제로 돌아오면 셋 각각을 정확한 이유로 배제할 수 있다.
이 예제의 소득은 답이 아니라 답을 말할 언어가 아직 없다는 자각이다. 형식 언어를 세우는 일은 대개 이 자각에서 시작한다.
어휘 — 이 언어에 있는 기호
언어를 세우는 첫걸음은 쓸 수 있는 기호를 남김없이 적는 일이다. 그 목록을 어휘(vocabulary)라 한다. 명제논리의 어휘는 세 무리다.
첫째, 문장문자(sentence letter)𝑃,𝑄,𝑅,𝑃1,𝑃2,𝑃3,… 다. 더 쪼개지 않는 원자 문장을 가리키는 기호이고, 무한히 많다. 아래첨자 번호를 쓰는 것은 필요하면 얼마든지 더 쓸 수 있게 하기 위해서다.
둘째, 연결자(connective) 다섯이다. ¬ (부정), ∧ (논리곱), ∨ (논리합), → (함의), ↔ (동치). 각 연결자에는 항수(arity) — 재료로 받는 논리식의 개수 — 가 정해져 있다. ¬ 만 1항이고 나머지 넷은 2항이다.
셋째, 괄호( 와 ) 다. 괄호는 뜻을 가진 기호가 아니다. 뒤에서 보듯 어느 규칙이 어디에 쓰였는지를 종이에 남기는 구두점일 뿐이다.
이것이 전부다. 쉼표도 마침표도 빈칸도 어휘가 아니다.
<연결자마다 항수가 적혀 있는 것을 눈여겨보라 — 다음 절의 정의가 조항을 몇 개 갖는지가 이 항수로 정해진다. 아래 상자는 이 장에서 자주 섞여 들어오는 기호들이고, 그것들이 왜 어휘가 아닌지가 이 장의 절반이다>[원본 보기]
어휘에 없는 것 가운데 셋만 미리 짚어 둔다.
⊥ (모순)은 지금 어휘에 없다. 7장에서 필요해지면 그때 어휘에 더한다. 어휘를 늘리는 일이 무엇인지는 다음 절의 정의를 보면 분명해진다 — 조항 하나를 더하는 일이다.
∀ 와 ∃ 는 9장에서 다른 언어를 세울 때 쓴다. 명제논리의 언어에는 없다.
𝜑, 𝜓, Γ 는 이 장에서 계속 쓰겠지만 어휘가 아니다. 논리식 안에 이 글자가 적히는 일은 없다. 왜 그런지가 이 장 마지막 절이다.
예제 32
다음 각각이 명제논리의 어휘인지 판정하라. 어휘라면 어느 무리인지, 아니라면 왜 아닌지 밝혀라. (가) 𝑃17 (나) ↔ (다) 𝑝 (라) ⊥ (마) ) (바) 쉼표
풀이 보기
판정 기준은 위의 세 무리 목록에 있는가뿐이다. 목록에 없으면 어휘가 아니다.
(가) 어휘다. 문장문자 무리에 속한다. 아래첨자에 어떤 자연수가 와도 된다.
(나) 어휘다. 연결자 다섯 중 하나이고 항수는 2다.
(다) 어휘가 아니다. 문장문자는 대문자로 적기로 했다. 소문자 𝑝 는 이 언어에 없는 글자다. 이것이 사소해 보이지만 사소하지 않다 — 어휘가 목록으로 정해져 있다는 말은 목록에 없는 글자는 하나도 쓸 수 없다는 뜻이다.
(라) 지금은 어휘가 아니다. 7장에서 어휘에 더한 뒤에는 어휘가 된다. 언어가 무엇인지는 우리가 정하는 것이고, 정한 것을 바꾸려면 정의를 고쳐야 한다.
(마) 어휘다. 셋째 무리인 괄호에 속한다.
(바) 어휘가 아니다. 명제논리의 문장에는 쉼표가 나타나지 않는다. 뒤에 Γ={𝑃,𝑄} 처럼 쉼표를 쓰는 자리가 나오는데, 그것은 논리식 안이 아니라 논리식들을 늘어놓는 자리다. 이 구분이 마지막 절의 주제다.
예제 33
문장문자를 유한 개 — 이를테면 𝑃, 𝑄, 𝑅 셋 — 만 두면 무엇이 곤란해지는가.
풀이 보기
묻는 것은 어휘를 줄였을 때 잃는 것이고, 답을 찾는 방법은 줄인 어휘로는 옮길 수 없는 논증을 하나 만들어 보는 것이다.
원자 문장 넷이 서로 다르게 등장하는 논증을 생각하자. "월요일에 회의가 있다. 화요일에 회의가 있다. 수요일에 회의가 있다. 목요일에 회의가 있다." 이 넷은 서로 다른 원자 문장이므로 서로 다른 문장문자로 옮겨야 한다. 문자가 셋뿐이면 넷 중 둘을 같은 문자로 옮길 수밖에 없고, 그러면 원래 논증에 없던 관계가 생긴다. 월요일과 화요일이 같은 문장이 되어 버린다.
그러면 문자를 네 개로 늘리면 되는가. 다섯 개짜리 논증이 오면 다시 막힌다. 어떤 유한한 개수를 골라도 그보다 원자가 하나 더 많은 논증을 만들 수 있다. 그래서 무한히 많이 둔다.
답이 말이 되는가. 무한히 두면서도 다루기 쉬운 방식이 아래첨자다. 𝑃1,𝑃2,𝑃3,… 는 무한히 많지만 각각을 유한한 기호로 적을 수 있고, 번호를 붙여 세어 나갈 수도 있다. 이 마지막 성질이 나중에 쓰인다.
집합 기호 — 여기서 한 문단으로 정해 둔다
방금 예제에 {𝑃,𝑄} 가 나왔다. 이 중괄호 표기는 앞으로 계속 쓰인다 — 6장이 귀결을 정의할 때, 7장이 Γ⊢𝜑 를 정의할 때, 10장이 해석을 정의할 때 모두 쓴다. 어려운 것이 아니므로 처음 쓰이는 자리인 여기서 정하고 넘어간다. 아래 기호들은 전부 메타언어의 표기이고 논리식 안에 들어가는 기호가 아니다.
집합(set)이란 무엇이 그 안에 있는지만으로 정해지는 모임이다. 안에 든 것 하나하나를 원소(element)라 한다. 원소를 다 적을 수 있으면 중괄호 안에 쉼표로 늘어놓는다. {𝑃,𝑄} 는 𝑃 와 𝑄 를 원소로 갖는 집합이다. 논리식들의 집합에는 그리스 대문자 Γ(감마)와 Δ(델타)를 이름으로 즐겨 쓴다. 필요한 기호는 넷뿐이다.
∈ — 원소.𝑃∈Γ 는 "𝑃 가 Γ 의 원소다"이고, 아니면 𝑃∉Γ 라 적는다
⊆ — 부분집합.Γ⊆Δ 는 "Γ 의 원소가 전부Δ 의 원소다". 두 집합이 같아도 성립한다
∪ — 합집합.Γ∪Δ 는 둘 중 어느 한쪽에라도 든 것을 모은 집합이다. Γ∪{𝜑} 처럼 원소 하나를 붙이는 데 특히 자주 쓴다
∅ — 빈 집합. 원소가 하나도 없는 집합. {} 라고 적어도 같은 것이다
덧붙일 것이 셋이다. 첫째, 순서와 되풀이는 셈하지 않는다.{𝑃,𝑄} 와 {𝑄,𝑃} 와 {𝑃,𝑄,𝑃} 는 같은 집합이다. "무엇이 들어 있는지만으로 정해진다"는 말이 그 뜻이다. 둘째, 원소가 무한히 많아도 된다. 문장문자 전체의 모임도 집합이고, 그때는 원소를 다 적는 대신 말로 적는다. 셋째, 이 문서에 필요한 집합 기호는 위 넷이 전부다. 교집합이나 멱집합 같은 것은 나오지 않는다.
집합 말고도 수학의 도구가 몇 개 더 필요해지는데 전부 쓰이는 자리에서 꺼낸다. 함수는 6장이 배당을 정의할 때, 순서쌍과 관계는 10장이 해석을 정의할 때, 가산과 비가산은 15장이 모형의 크기를 셀 때 각각 그 자리에서 도입한다.
예제 34
Γ={𝑃,𝑄}, Δ={𝑃,𝑄,𝑅} 라 하자. 다음 각각이 참인지 판정하라. (가) 𝑃∈Γ (나) {𝑃}∈Γ (다) {𝑃}⊆Γ (라) Γ⊆Δ (마) Γ⊆Γ (바) ∅⊆Γ
풀이 보기
판정 기준은 방금 적은 넉 줄뿐이다. 걸리는 자리는 (나)와 (다)의 차이 하나다.
(가) 참.𝑃 는 Γ 안에 늘어놓은 것 가운데 하나다.
(나) 거짓.Γ 의 원소는 𝑃 와 𝑄 이지 𝑃 하나만 든 집합이 아니다. ∈ 는 안에 든 것 하나를 묻는다.
(다) 참.{𝑃} 의 원소는 𝑃 뿐이고 그것이 Γ 의 원소이므로 "전부 들어 있다"가 성립한다. ∈ 와 ⊆ 는 다른 기호다 — 앞엣것은 왼쪽에 원소를 놓고 뒤엣것은 왼쪽에 집합을 놓는다.
(라) 참.𝑃 도 𝑄 도 Δ 에 있다.
(마) 참. 정의는 "전부 들어 있다"만 요구하고 "더 있다"를 요구하지 않는다. 어떤 집합이든 자기 자신의 부분집합이다.
(바) 참. 빈 집합에는 원소가 없으므로 "원소가 전부 Γ 에 있다"를 어길 원소가 하나도 없다. 6장에서 공허하게 참이라 부르게 될 모양이 여기서 미리 나온다.
답이 말이 되는가. 여섯 답이 전부 정의의 낱말 하나씩에 걸렸다 — "하나", "전부", "없다". 새 기호를 만나면 정의를 외우기보다 이렇게 예를 몇 개 넣어 보는 편이 빠르다.
예제 35
Γ={𝑃} 라 하자. (가) Γ∪{𝑄} 를 원소를 늘어놓아 적어라. (나) Γ∪{𝑃} 는 무엇인가. (다) Γ∪∅ 은 무엇인가. (라) 이 셋이 7장에서 왜 쓸모가 있을지 짐작해 보라.
풀이 보기
(가) 어느 한쪽에라도 든 것을 모으면 {𝑃,𝑄} 다.
(나){𝑃} 다. 𝑃 가 이미 들어 있으므로 아무것도 늘지 않는다. 되풀이를 셈하지 않는다는 약속이 여기서 값을 한다.
(다){𝑃} 다. 빈 집합에는 보탤 것이 없다.
(라) 7장은 "전제 목록에 가정을 하나 더한다"는 일을 되풀이하게 되는데, 그것이 정확히 Γ∪{𝜑} 다. (나)와 (다)가 말하는 것은 같은 것을 두 번 더해도, 아무것도 더하지 않아도 목록이 그대로라는 것이다. 도출에서 같은 가정을 두 번 써도 방출은 한 번뿐인 이유가 이 성질에 기댄다.
답이 말이 되는가. 집합은 "몇 개 들었는가"가 아니라 "무엇이 들었는가"만 기억하는 그릇이다. 전제를 두 번 적었다고 논증이 달라지지는 않으므로, 논리식의 목록을 담기에 알맞은 그릇이 바로 이것이다.
적형식 — 정의를 재귀로 세운다
어휘로 만들 수 있는 기호열은 무한히 많고, 그 대부분은 쓸모없다. )¬(∧ 도 어휘 안의 기호로만 이루어진 기호열이다. 우리는 그중 문장 노릇을 하는 것만 골라내야 한다. 골라낸 것을 적형식(well-formed formula, wff)이라 한다. 줄여서 논리식이라고도 부르겠다.
목록으로 줄 수는 없다. 적형식은 무한히 많기 때문이다. 그래서 만드는 방법을 준다. 정의는 세 조항이다.
기저. 모든 문장문자는 적형식이다.
재귀.𝜑 가 적형식이면 ¬𝜑 도 적형식이다. 𝜑 와 𝜓 가 적형식이면 (𝜑∧𝜓), (𝜑∨𝜓), (𝜑→𝜓), (𝜑↔𝜓) 도 적형식이다.
폐포. 위 두 조항을 유한 번 적용해 얻어지는 기호열만이 적형식이다.
여기서 𝜑 와 𝜓 는 "아무 적형식이나"라고 읽으면 된다. 이 글자들의 정확한 신분은 마지막 절에서 밝힌다.
괄호가 붙는 자리를 확인해 두자. 이항 조항은 결과 전체에 괄호를 한 쌍 두르고, ¬ 조항은 두르지 않는다.(𝜑∧𝜓) 이지 𝜑∧𝜓 가 아니며, ¬𝜑 이지 (¬𝜑) 가 아니다.
같은 정의를 한 줄로 압축해 적는 표기도 널리 쓰인다. 다른 책이나 프로그래밍 언어 명세에서 만나게 되므로 읽는 법만 익혀 두자.
𝜑::=𝑃∣¬𝜑∣(𝜑∧𝜑)∣(𝜑∨𝜑)∣(𝜑→𝜑)∣(𝜑↔𝜑)
::= 는 "다음 중 하나로 만들어진다"로, 세로줄은 "또는"으로 읽는다. 첫 갈래가 기저 조항이고 나머지 다섯이 재귀 조항이다. 한 갈래 안에 𝜑 가 두 번 나와도 두 자리를 같은 식으로 채우라는 뜻은 아니다. 각 자리를 따로 채운다. 그리고 폐포 조항은 이 표기에 적히지 않고 약속으로 숨어 있다 — 이 표기를 쓸 때는 늘 폐포가 함께 붙어 있다고 읽는다. 이 문서는 조항 이름을 부를 일이 많으므로 앞의 세 줄짜리 정의를 계속 쓴다.
이 정의가 왜 이런 모양인가
세 조항이 각각 다른 일을 한다. 하나씩 빼 보면 무슨 일을 하는지 드러난다.
기저를 빼면 아무것도 만들 수 없다. 재귀 조항은 "적형식이 있으면"으로 시작하므로, 처음부터 하나도 없으면 영원히 아무것도 나오지 않는다. 기저는 출발점을 준다.
재귀를 빼면 문장문자만 남는다. 재귀 조항은 유한한 규칙 다섯 개로 무한히 많은 대상을 덮는 장치다. 규칙이 다섯인 것은 연결자가 다섯이기 때문이고, 그중 하나만 모양이 다른 것은 ¬ 만 1항이기 때문이다. 정의의 조항 개수는 어휘의 항수 표가 정한다.
폐포를 빼면 정의가 아무것도 배제하지 못한다. 이것이 가장 미묘한 자리다. 앞의 두 조항은 "이것들은 적형식이다"라고만 말하고 "저것은 적형식이 아니다"라고는 한 마디도 하지 않는다. 그러니 누군가 "𝑃∧∨𝑄 도 적형식이다"라고 우겨도 두 조항 중 어느 것과도 충돌하지 않는다. 폐포 조항이 있어야 "두 조항으로 만들어지지 않았으므로 적형식이 아니다"라고 말할 수 있다.
그런데 폐포 조항의 값어치는 배제에 있지 않다. 진짜 값어치는 증명에 있다. 폐포 조항은 모든 적형식이 유한 번의 단계로 만들어졌다고 말한다. 그러면 적형식 전체에 대한 주장을 이렇게 증명할 수 있다 — 문장문자에서 성립하고, 재귀 조항 다섯 각각이 그 성질을 재료에서 결과로 물려준다는 것만 보이면 된다. 확인할 것이 여섯 가지로 끝나고, 그것으로 무한히 많은 식을 전부 덮는다.
이 증명 방법을 구조적 귀납법이라 하고, 13장에서 정식으로 세운다. 이 장에서는 그 증명을 하지 않는다. 다만 정의가 그 모양으로 서 있다는 것만 기억해 두자. 13장에서 건전성을 증명할 때, 14장에서 완전성을 증명할 때, 그 증명들의 뼈대는 전부 위의 세 조항을 그대로 베낀 것이 된다. 재귀적 정의를 잘 세우는 일이 나중 증명의 절반이다.
구성열 — 만들어 온 이력을 적는다
어떤 기호열이 적형식임을 보이려면 무엇을 내놓아야 하는가. 폐포 조항이 답을 준다. 기저에서 출발해 조항을 유한 번 적용한 이력을 내놓으면 된다.
정확히 적자. 기호열의 유한한 목록 𝜑1,𝜑2,…,𝜑𝑛 이 구성열(construction sequence)이라는 것은, 각 𝜑𝑖 가 문장문자이거나 앞선 항들에 재귀 조항 하나를 적용한 결과라는 뜻이다. 목록의 마지막 항이 우리가 보이려던 기호열이면 증명이 끝난다.
<재료가 반드시 위쪽 줄에서만 온다는 것이 이 목록의 규칙이다. 그리고 괄호가 ④ 와 ⑥ 에만 붙고 ⑤ 에는 붙지 않는 것 — 어느 조항이 쓰였는지가 괄호로 드러난다는 점을 확인하라>[원본 보기]
논리식은 유한하고, 전부 세어 나갈 수 있다
폐포 조항에서 곧바로 따라 나오는 사실이 하나 더 있다. 모든 적형식은 유한한 기호열이다. 조항을 유한 번 적용해 만든 것이고, 조항 하나가 붙이는 기호는 많아야 세 개(연결자 하나와 괄호 둘)이기 때문이다. 그래서 이 언어에는 무한히 긴 연언 𝑃1∧𝑃2∧𝑃3∧⋯ 같은 것이 아예 없다.
여기에 하나를 더 얹으면 15장에서 쓸 사실이 된다. 문장문자에 번호가 붙어 있으므로 기호 수가 같은 적형식들을 번호 순으로 늘어놓을 수 있고, 기호 수 자체도 1,2,3,… 으로 늘어놓을 수 있다. 두 줄 세우기를 겹치면 적형식 전체에 1,2,3,… 을 빠짐없이 붙일 수 있다. 이런 성질을 가진 모임을 셀 수 있다(가산, countable)고 한다. 이 장에서는 이 말을 딱 그 뜻으로만 쓴다. 정확한 정의는 15장에서 세우고, 익숙한 독자를 위해 덧붙이면 Mathematics for Computer Science 의 무한집합 장에 같은 논법이 있다.
<줄마다 무한히 많고 줄도 무한히 많은데 전체에 번호가 붙는다는 것이 요점이다. 15장의 컴팩트성이 이 사실과 ‘증명은 유한하다’ 는 사실 둘 위에 선다>[원본 보기]
예제 36
다음 각 기호열이 적형식인지 판정하라. 적형식이면 구성열을 적고, 아니면 어느 조항도 그것을 만들지 못함을 보여라. (가) ¬¬𝑃 (나) (¬(𝑃→𝑄)↔𝑅) (다) (𝑃∧𝑄 (라) 𝑃∧∨𝑄
풀이 보기
판정 도구는 세 조항뿐이다. 적형식임을 보이려면 구성열을 내놓고, 아님을 보이려면 맨 바깥에서 무슨 조항이 쓰였을지를 따져 모든 갈래를 막는다.
(가) 적형식이다. 구성열은 𝑃,¬𝑃,¬¬𝑃 다. 첫 항은 기저 조항, 둘째 항은 첫 항에 ¬ 조항, 셋째 항은 둘째 항에 ¬ 조항이다. 괄호가 하나도 없는 것이 맞다 — ¬ 조항은 괄호를 두르지 않는다.
(나) 적형식이다. 구성열은 𝑃,𝑄,𝑅,(𝑃→𝑄),¬(𝑃→𝑄),(¬(𝑃→𝑄)↔𝑅) 이다. 넷째 항은 첫째와 둘째에 → 조항, 다섯째는 넷째에 ¬ 조항, 여섯째는 다섯째와 셋째에 ↔ 조항이다.
(다) 적형식이 아니다. 이 기호열은 여는 괄호로 시작한다. 기저 조항의 결과는 문장문자 하나이므로 괄호가 들어 있지 않고, ¬ 조항의 결과는 ¬ 로 시작하므로 아니다. 남은 것은 이항 조항인데, 이항 조항의 결과는 여는 괄호로 시작해 닫는 괄호로 끝난다. 이 기호열은 𝑄 로 끝난다. 모든 갈래가 막혔으므로 폐포 조항에 의해 적형식이 아니다.
(라) 적형식이 아니다. 이 기호열은 𝑃 로 시작하고 𝑄 로 끝난다. 문장문자 하나가 아니므로 기저가 아니고, ¬ 로 시작하지 않으므로 ¬ 조항이 아니며, 여는 괄호로 시작하지 않으므로 이항 조항도 아니다. 세 갈래가 모두 막힌다.
앞 절에서 "이상하다"고밖에 말하지 못했던 것을 이제 정확히 말했다. 이유는 "연결자가 둘 붙어서"가 아니라 "세 조항 중 어느 것도 이 모양을 만들지 못해서"다. 배제의 근거는 늘 폐포 조항이다.
예제 37
폐포 조항을 정의에서 빼 보자. 그러면 어떤 곤란이 생기는지, (라)의 𝑃∧∨𝑄 를 예로 들어 구체적으로 보여라.
풀이 보기
폐포 조항을 뺀 정의는 기저와 재귀 두 조항만 남는다. 두 조항은 각각 "이러이러한 것은 적형식이다" 꼴의 포함 주장이다.
이제 누군가 "𝑃∧∨𝑄 도 적형식이다"라고 주장한다고 하자. 이 주장이 기저 조항과 충돌하는가. 기저 조항은 문장문자가 적형식이라고 말할 뿐, 다른 것이 적형식이 아니라고는 말하지 않는다. 충돌하지 않는다. 재귀 조항과 충돌하는가. 재귀 조항도 마찬가지로 무엇이 적형식인지만 말한다. 충돌하지 않는다.
즉 그 주장을 반박할 수단이 없다. 앞 예제의 (라) 풀이를 다시 읽어 보면 "세 갈래가 모두 막힌다"까지는 두 조항만으로 말할 수 있지만, 거기서 "그러므로 적형식이 아니다"로 넘어가는 마지막 한 걸음이 폐포 조항이다.
답이 말이 되는가. 이것은 논리학에만 있는 문제가 아니다. "내 친구는 갑과 을이다"라는 말이 "갑과 을만 내 친구다"를 뜻하는지 "갑과 을도 내 친구다"를 뜻하는지 애매한 것과 같다. 재귀적 정의를 적을 때는 "이것만"이라는 말을 반드시 적어 두어야 한다.
예제 38
정의는 이항 연결자에만 괄호를 두르고 ¬ 에는 두르지 않는다. ¬ 에 괄호를 두르지 않아도 문제가 생기지 않는 이유를 설명하라. ¬𝑃∧𝑄 라는 기호열을 근거로 삼아 보라.
풀이 보기
걱정되는 것은 이렇다. ¬ 에 괄호가 없으니 "¬ 가 𝑃 만 받는지 𝑃∧𝑄 를 받는지"가 애매해지지 않겠는가.
그런데 그런 애매함이 생기려면 ¬𝑃∧𝑄 라는 기호열 자체가 적형식이어야 한다. 정의로 확인해 보자. 이 기호열은 ¬ 로 시작하므로 기저도 이항 조항도 아니다. ¬ 조항이라면 ¬ 뒤의 나머지 전체 𝑃∧𝑄 가 적형식이어야 하는데, 그것은 여는 괄호로 시작하지 않으므로 이항 조항의 결과가 아니고 한 글자도 아니다. 따라서 ¬𝑃∧𝑄 는 적형식이 아니다.
걱정하던 두 읽기를 정의대로 적으면 이렇게 갈린다.
¬(𝑃∧𝑄)와(¬𝑃∧𝑄)
둘은 첫 기호부터 다르다. 앞엣것은 ¬ 로 시작하고 뒤엣것은 여는 괄호로 시작한다. 이항 조항이 두른 괄호가 이미 구분을 다 해 주고 있다.¬ 에 괄호를 더 두르면 읽기만 나빠지고 얻는 것이 없다.
답이 말이 되는가. 항수로 보면 자연스럽다. 1항 연결자는 재료가 하나뿐이라 "어느 쪽 재료인지"를 물을 여지가 없고, 2항 연결자는 재료가 둘이라 경계를 표시해야 한다. 괄호가 필요한 것은 재료가 둘 이상일 때다.
예제 39
무한히 긴 연언 𝑃1∧𝑃2∧𝑃3∧⋯ 는 왜 적형식이 아닌가. "끝이 없어서"보다 정확한 이유를 대라.
풀이 보기
묻는 것은 정의의 어느 조항이 이것을 막느냐다. 답은 폐포 조항이다.
폐포 조항은 유한 번 적용해 얻어지는 것만이 적형식이라고 말한다. 그러면 어떤 적형식이든 그것을 만든 구성열이 유한한 목록이고, 목록의 각 단계가 붙이는 기호는 많아야 셋이다. 따라서 적형식의 기호 수는 반드시 유한하다. 무한히 긴 기호열은 어떤 구성열의 마지막 항도 될 수 없다.
"끝이 없어서"라는 답이 왜 부족한지도 짚어 두자. 그것은 결론을 다시 말한 것일 뿐 근거가 아니다. 근거는 정의의 조항이어야 한다. 이 장의 모든 판정에서 같은 요령이 통한다 — 답의 근거로 조항 이름을 대라.
이 사실이 어디에 쓰이는가. 15장의 컴팩트성 정리는 "논리식 집합이 무한해도, 그 안의 유한한 부분들만 살펴서 전체를 판정할 수 있다"는 모양을 하고 있다. 그 정리가 성립하는 바탕에 식 하나하나는 유한하다는 이 사실이 있다. 각 식이 무한히 길 수 있었다면 "유한한 부분만 보면 된다"는 말이 성립하지 않는다.
주연결자와 부분식
적형식 하나를 손에 들었다고 하자. 그것을 만든 마지막 조항이 무엇이었는지 알 수 있는가. 알 수 있다. 그리고 그 답이 하나뿐이라는 것이 이 절의 핵심이다.
유일 가독성(unique readability). 모든 적형식은 정확히 한 가지 방식으로 만들어진다. 즉 마지막에 쓰인 조항과 그 조항이 쓴 재료가 하나로 정해진다.
이것은 정의에서 곧바로 나오는 것이 아니라 증명해야 하는 정리다. 정의는 "이렇게 만들면 적형식이다"라고만 말했지 "만드는 방법이 하나뿐이다"라고는 말하지 않았다. 증명에는 13장의 도구가 필요하므로 여기서는 결과만 쓴다. 다만 이 정리가 성립하는 이유가 괄호라는 것은 지금 확인해 둘 수 있다. 아래 그림이 그것이다.
마지막 조항이 쓴 연결자를 그 식의 주연결자(main connective)라 한다. 주연결자를 찾는 절차는 기계적이다. 맨 바깥 괄호가 있으면 그 안쪽에서, 왼쪽부터 괄호 깊이를 세며 — 여는 괄호에서 하나 올리고 닫는 괄호에서 하나 내린다 — 깊이 0인 자리에 있는 이항 연결자를 찾는다. 없고 맨 앞이 ¬ 이면 그 ¬ 가 주연결자다.
주연결자가 왜 중요한지는 뒤에서 계속 드러난다. 6장에서 식의 뜻을 계산할 때 어느 규칙을 쓸지 고르는 기준이 주연결자이고, 7장에서 증명 규칙을 고르는 기준도 주연결자다. 식을 보고 가장 먼저 해야 할 일이 주연결자를 찾는 일이라고 생각해도 좋다.
<뿌리의 연결자가 주연결자이고 잎에는 반드시 문장문자만 온다. 나무를 위에서 아래로 읽으면 분해이고 아래에서 위로 읽으면 조립이라는 것 — 그래서 나무 하나가 곧 구성열 하나다>[원본 보기]
이 나무를 파스 트리(parse tree)라 한다. 마디마다 적형식이 하나씩 붙어 있고, 그 적형식들을 부분식(subformula)이라 한다. 정의도 재귀로 준다. 𝜑 자신은 𝜑 의 부분식이고, 𝜑 가 ¬𝜓 꼴이면 𝜓 의 부분식이 모두 𝜑 의 부분식이며, 𝜑 가 이항 조항으로 만들어졌으면 두 재료의 부분식이 모두 𝜑 의 부분식이다.
정의가 재귀면 그 위에 얹는 개념도 재귀가 된다. 이 패턴은 이 문서에서 계속 반복된다. 9장의 자유변수, 10장의 만족 관계, 13장의 건전성 증명이 모두 같은 모양으로 적힌다.
같은 방식으로 식의 복잡도도 정할 수 있다. 문장문자의 복잡도를 0 이라 하고, 조항을 한 번 쓸 때마다 1 을 올린다고 하면 — ¬𝜑 의 복잡도는 𝜑 의 복잡도에 1 을 더한 것이고, (𝜑∧𝜓) 의 복잡도는 두 재료의 복잡도 중 큰 쪽에 1 을 더한 것이다. 이 수는 파스 트리의 높이와 같다. 13장에서 "복잡도가 작은 식에서 성립하면 큰 식에서도 성립한다" 꼴로 증명을 꾸릴 때 이 수를 센다. 지금은 재귀적 정의 위에 이런 수를 얹을 수 있다는 것만 확인해 두면 된다.
<두 나무가 잎도 같고 마디 수도 같은데 묶는 순서만 다르다. 괄호를 지우면 이 둘을 구별할 방법이 없어진다는 것이 이 그림의 요점이고, 그래서 정의가 이항 조항마다 괄호를 두른다>[원본 보기]
예제 40
다음 각 식의 주연결자를 찾고, 그 근거로 괄호 깊이 계산을 적어라. (가) ((𝑃→𝑄)∧¬𝑅) (나) ¬((𝑃→𝑄)∧𝑅) (다) (¬𝑃↔(𝑄∨¬𝑅))
풀이 보기
절차는 하나다. 맨 바깥 괄호를 지운 뒤 왼쪽부터 깊이를 세고, 깊이 0에서 만나는 이항 연결자를 찾는다.
(가) 맨 바깥 괄호를 지우면 (𝑃→𝑄)∧¬𝑅 다. 왼쪽부터 간다. 여는 괄호에서 깊이 1이 되고, → 를 만날 때 깊이가 1이므로 후보가 아니다. 닫는 괄호에서 깊이 0으로 돌아오고, 그다음 ∧ 를 깊이 0에서 만난다. 주연결자는 ∧ 다. 재료는 (𝑃→𝑄) 와 ¬𝑅 다.
(나) 맨 앞이 ¬ 이고 그 뒤에 괄호가 열린다. 바깥 괄호가 없으므로 깊이 0에서 만나는 이항 연결자를 찾는데, ¬ 뒤의 여는 괄호부터 깊이가 1 이상이 되어 마지막 닫는 괄호에서야 0으로 돌아온다. 깊이 0에 이항 연결자가 없고 맨 앞이 ¬ 이므로 주연결자는 ¬ 다. 재료는 ((𝑃→𝑄)∧𝑅) 하나다.
(가)와 (나)를 나란히 놓으면 괄호 한 쌍의 위치가 주연결자를 바꾼다는 것이 보인다. 두 식은 기호 구성이 거의 같지만 서로 다른 조항으로 만들어졌다.
(다) 바깥 괄호를 지우면 ¬𝑃↔(𝑄∨¬𝑅) 다. ¬ 는 이항이 아니므로 건너뛰고, ↔ 를 깊이 0에서 만난다. 그 뒤의 ∨ 는 깊이 1이라 후보가 아니다. 주연결자는 ↔ 다.
답이 말이 되는가. 세 경우 모두 깊이 0의 이항 연결자가 하나뿐이었다. 유일 가독성 정리가 말하는 것이 바로 이것이고, 그것이 늘 그러하다는 보장이 정리의 내용이다.
예제 41
((𝑃∧𝑄)→¬(𝑄∨𝑃)) 의 부분식을 모두 적어라. 서로 다른 부분식은 몇 개인가. 그리고 파스 트리의 마디 수와 견주어 보라.
풀이 보기
부분식의 재귀적 정의를 그대로 따라간다. 위에서 아래로 한 층씩 내려간다.
식 자신 ((𝑃∧𝑄)→¬(𝑄∨𝑃)) 가 첫째다. 주연결자가 → 이므로 두 재료 (𝑃∧𝑄) 와 ¬(𝑄∨𝑃) 의 부분식이 모두 포함된다.
(𝑃∧𝑄) 쪽으로 내려가면 𝑃 와 𝑄 가 나온다. ¬(𝑄∨𝑃) 쪽으로 내려가면 (𝑄∨𝑃) 가 나오고, 다시 𝑄 와 𝑃 가 나온다.
모아 보면 서로 다른 부분식은 여섯이다. ((𝑃∧𝑄)→¬(𝑄∨𝑃)), (𝑃∧𝑄), ¬(𝑄∨𝑃), (𝑄∨𝑃), 𝑃, 𝑄.
파스 트리의 마디 수는 몇인가. 뿌리 하나, 그 아래 둘, (𝑃∧𝑄) 아래 둘, ¬(𝑄∨𝑃) 아래 하나, (𝑄∨𝑃) 아래 둘 — 모두 여덟이다. 마디는 여덟인데 서로 다른 부분식은 여섯이다. 𝑃 와 𝑄 가 각각 두 자리에 나타나기 때문이다.
여기서 얻을 구분이 하나 있다. 부분식으로 "나타남"과 "서로 다른 부분식"은 다른 것을 센다. 나타남의 개수는 마디 수와 같고, 서로 다른 부분식의 개수는 그보다 작거나 같다. 뒤에서 논리식의 크기를 잴 때 어느 쪽을 세는지 밝혀야 하는 자리가 나온다.
괄호 생략 규약
정의를 곧이곧대로 지키면 괄호가 빨리 늘어난다. (((𝑃∧𝑄)∧𝑅)→𝑆) 를 읽어 보면 알 수 있다. 그래서 종이 위에서는 괄호를 줄여 쓰는 관습을 함께 쓴다. 관습은 셋이다.
맨 바깥 괄호를 지운다.(𝑃∧𝑄) 를 𝑃∧𝑄 로 적는다.
결합 우선순위를 정한다.¬ 가 가장 세게 묶고, 다음이 ∧, 그다음이 ∨, 그다음이 →, ↔ 가 가장 약하게 묶는다. 세게 묶는 것이 먼저 괄호를 갖는다.
같은 연결자가 이어지면 묶는 방향을 정한다.∧ 와 ∨ 는 왼쪽으로 묶고, → 와 ↔ 는 오른쪽으로 묶는다.
<오른쪽 0번 줄에서 3번 줄로 내려가는 것이 괄호를 되돌리는 절차다. ¬P 에 끝까지 괄호가 붙지 않는 것과, 3번 줄만이 정의가 인정하는 기호열이라는 것 두 가지를 확인하라>[원본 보기]
여기서 반드시 짚어야 할 것이 있다. 이 셋은 문법이 아니다. 앞 절의 정의 어디에도 우선순위라는 조항이 없다. 정의는 이항 조항마다 괄호를 두르라고만 말한다. 그러므로
𝑃∧𝑄는 적형식이 아니다. 그것은 적형식 (𝑃∧𝑄) 를 가리키는 줄임말이다.
이 구분을 흐리면 나중에 비싼 값을 치른다. 13장 이후에서 "모든 적형식에 대하여" 꼴의 주장을 증명할 때 확인할 조항이 여섯 개(기저 하나와 연결자 다섯)로 끝나는 것은 정의에 그것뿐이기 때문이다. 우선순위까지 조항으로 치면 확인할 것이 늘어나고, 늘어난 것들은 서로 겹쳐서 증명이 지저분해진다. 관습은 종이 위의 편의이고, 정의는 증명의 뼈대다.
결합 방향을 우리가 골랐다는 사실도 눈여겨보자. ∧ 를 왼쪽으로 묶기로 한 것은 약속일 뿐이고, 오른쪽으로 묶기로 정한 책도 있다. 그래도 큰 탈이 없는 이유는 6장에서 밝혀진다 — 두 방식이 가리키는 두 적형식은 서로 다른 식이지만 뜻이 같다. 모양은 다르고 뜻은 같은 대표적인 자리다.
→ 는 사정이 다르다. (𝑃→(𝑄→𝑅)) 와 ((𝑃→𝑄)→𝑅) 는 뜻도 다르다. 그래서 → 가 이어질 때는 규약이 정한 오른쪽 결합을 정확히 기억하고 있어야 하고, 조금이라도 헷갈리면 괄호를 남겨 두는 편이 낫다. 6장에서 두 식이 실제로 갈리는 배당을 보게 된다.
앞으로 이 문서는 이 규약을 줄곧 쓴다. 6장 이후 본문에 나오는 식들은 대부분 줄임말이고, 필요할 때만 괄호를 다 채워 적는다. 규약을 쓰는 것과 규약을 정의로 착각하는 것은 다른 일이다.
예제 42
다음 줄임말이 가리키는 적형식을 괄호를 모두 채워 적어라. (가) ¬𝑃∧𝑄→𝑅 (나) 𝑃→𝑄→𝑅 (다) 𝑃∧𝑄∨𝑅 (라) ¬(𝑃→𝑄)↔¬𝑃∧𝑄
풀이 보기
요령은 약하게 묶는 연결자를 맨 나중에 처리하는 것이다. 즉 가장 약한 연결자가 주연결자가 된다.
(가) 가장 약한 것은 → 다. 그러니 → 가 주연결자이고 왼쪽 덩어리는 ¬𝑃∧𝑄 다. 그 안에서는 ¬ 가 ∧ 보다 세므로 ¬𝑃 가 먼저 묶인다. 결과는 ((¬𝑃∧𝑄)→𝑅) 이다.
(나)→ 가 둘 이어졌다. 오른쪽으로 묶는 규약을 쓴다. 오른쪽 → 가 먼저 묶여 (𝑄→𝑅) 이 되고, 그것을 왼쪽 → 가 받는다. 결과는 (𝑃→(𝑄→𝑅)) 이다. ((𝑃→𝑄)→𝑅) 이 아니다.
(다)∧ 가 ∨ 보다 세다. 𝑃∧𝑄 가 먼저 묶이고 ∨ 가 주연결자가 된다. 결과는 ((𝑃∧𝑄)∨𝑅) 이다.
(라) 가장 약한 것은 ↔ 다. 왼쪽 덩어리는 ¬(𝑃→𝑄) 로 이미 괄호가 있고, 오른쪽 덩어리 ¬𝑃∧𝑄 는 (¬𝑃∧𝑄) 로 묶인다. 결과는 (¬(𝑃→𝑄)↔(¬𝑃∧𝑄)) 이다.
답이 말이 되는가. 네 답 모두 여는 괄호로 시작하고 닫는 괄호로 끝난다. 이항 조항이 마지막에 쓰였으니 그래야 한다. 만약 답이 괄호로 시작하지 않는다면 주연결자를 ¬ 로 잘못 잡은 것이다.
예제 43
((𝑃→𝑄)→𝑅) 에서 지울 수 있는 괄호와 지울 수 없는 괄호를 가려내라. 최대한 줄인 줄임말은 무엇인가.
풀이 보기
묻는 것은 "지워도 같은 식을 가리키는가"이고, 확인 방법은 지운 뒤에 규약대로 복원해 원래 식이 나오는지 보는 것이다.
맨 바깥 괄호부터. 지우면 (𝑃→𝑄)→𝑅 이 된다. 복원해 보자. 깊이 0의 이항 연결자는 뒤쪽 → 하나뿐이므로 그것이 주연결자가 되고, 바깥 괄호를 다시 두르면 ((𝑃→𝑄)→𝑅) 이다. 원래대로 돌아왔으므로 지울 수 있다.
안쪽 괄호는 어떤가. 마저 지우면 𝑃→𝑄→𝑅 이 된다. 복원하면 앞 예제 (나)에서 봤듯이 (𝑃→(𝑄→𝑅)) 이 나온다. 원래 식이 아니다. 그러므로 안쪽 괄호는 지울 수 없다.
최대한 줄인 줄임말은 (𝑃→𝑄)→𝑅 이다.
왜 안쪽 괄호가 살아남는가. → 의 결합 방향을 오른쪽으로 정했기 때문이다. 규약이 정한 방향과 반대로 묶고 싶을 때는 괄호를 남겨야 한다. 규약은 자주 쓰는 쪽을 짧게 적게 해 줄 뿐이고, 반대쪽을 없애지는 못한다.
대상언어와 메타언어
이 장 내내 두 종류의 언어가 섞여 있었다. 이제 갈라 놓는다.
대상언어(object language)는 우리가 연구 대상으로 삼는 언어다. 여기서는 명제논리의 언어이고, 그 어휘는 앞에서 못 박은 것이 전부다 — 문장문자, 연결자 다섯, 괄호 둘.
메타언어(metalanguage)는 그 언어에 대해 말하는 데 쓰는 언어다. 여기서는 한국어이고, 거기에 몇 개의 기호를 보탰다. 𝜑, 𝜓, 𝜒 는 적형식 하나를 가리키는 변수이고, Γ, Δ 는 적형식들의 집합을 가리키는 변수다. 이 다섯 글자를 메타변수라 부른다.
<두 상자에 든 기호가 하나도 겹치지 않는다는 것이 이 그림의 전부다. 아래 상자에 φ 가 없다는 것을 확인하라 — 그것이 이 절에서 가장 자주 틀리는 자리다>[원본 보기]
이제 자주 틀리는 세 가지를 짚는다.
첫째, 𝜑 는 논리식이 아니다. 논리식을 가리키는 이름이다. 𝑃 는 대상언어의 기호이므로 논리식 안에 실제로 적히지만, 𝜑 라는 글자가 논리식 안에 적히는 일은 없다. 앞의 정의에서 "𝜑 가 적형식이면 ¬𝜑 도 적형식이다"라고 적은 것은, 어떤 적형식을 가져오든 그 앞에 ¬ 를 붙인 것이 적형식이라는 한국어 문장이었다.
둘째, (𝜑∧𝜓) 는 적형식이 아니다. 적형식의 모양을 가리키는 표현이고, 이런 것을 도식(schema)이라 한다. 이 도식에 해당하는 적형식은 무한히 많다. (𝑃∧𝑄) 도, (¬𝑅∧(𝑃→𝑄)) 도 그렇다. "주연결자가 ∧ 인 적형식"이라고 길게 말하는 대신 도식으로 짧게 적는 것이다.
셋째, "(𝑃∧𝑄) 는 적형식이다"라는 문장은 대상언어의 문장이 아니다. 대상언어에는 "적형식"이라는 낱말이 없다. 어휘를 다시 보라 — 문장문자와 연결자와 괄호뿐이다. 그러니 이 문장은 한국어 문장, 곧 메타언어의 문장이다.
일상어에도 같은 구분이 있다. "서울"은 두 글자이고 서울은 도시다. 앞쪽은 낱말에 대한 말이고 뒤쪽은 도시에 대한 말이다. 논리식에서도 마찬가지다. (𝑃∧𝑄) 는 기호 다섯 개짜리 문자열이고, 그것이 무엇을 말하는지는 6장에서 따진다.
왜 이 구분이 13장부터 17장까지를 떠받치는가. 그 장들에서 증명하는 것이 전부 이 언어에 대한 주장이기 때문이다. 13장의 건전성은 "증명 체계로 얻을 수 있는 것은 의미론이 인정하는 것이다"라는 주장이고, 14장의 완전성은 그 역이다. 이 주장들은 대상언어로는 한 글자도 적을 수 없다. 대상언어에 "증명"이라는 표현도 "의미"라는 표현도 없기 때문이다. 그래서 이런 정리를 메타정리(metatheorem)라 부른다.
그리고 17장이 특별한 이유가 여기서 나온다. 괴델은 대상언어가 메타언어의 말을 흉내 내게 만든다. 산술의 언어 안에서 "이 식은 증명 가능하다"에 해당하는 논리식을 실제로 만들어 내는 것이 그 정리의 기술적 핵심이다. 두 층이 원래 갈라져 있다는 것을 지금 확실히 해 두어야 그때 무슨 일이 벌어지는지 보인다.
판정 기준은 하나다. 어휘 목록에 있는 기호만으로 적혀 있는가. 하나라도 목록 밖의 기호나 낱말이 섞이면 메타언어다.
(가) 대상언어. 괄호, 𝑃, →, 𝑄 가 전부 어휘에 있다. 게다가 정의의 조항으로 만들어지므로 적형식이다.
(나) 메타언어.𝜑 와 𝜓 가 어휘에 없다. 이것은 도식이고, 주연결자가 → 인 적형식들의 모양을 가리킨다.
(다) 메타언어. "주연결자"와 "이다"가 한국어다. 이 문장 안에 대상언어의 표현 (𝑃→𝑄) 가 들어 있지만, 문장 자체는 그것에 대해 말하는 한국어 문장이다. 인용부호가 그 경계를 표시한다.
(라) 메타언어. 등호, 중괄호, 쉼표가 모두 어휘 밖이다. 이 표현은 적형식 두 개를 원소로 갖는 집합에 Γ 라는 이름을 붙인 것이고, 집합을 다루는 일은 논리식 바깥의 일이다.
(마) 대상언어. 어휘 안의 기호뿐이고 구성열도 있다.
답이 말이 되는가. 대상언어로 판정된 것은 (가)와 (마) 둘이고, 둘 다 적형식이다. 뒤집어 말하면 대상언어의 표현이란 결국 적형식과 그 부분이고, 나머지는 전부 우리가 그것에 대해 하는 말이다.
예제 45
어떤 학생이 "(𝜑→𝜑) 는 적형식이다"라고 적었다. 이 주장을 그대로 받아들일 수 있는가. 받아들일 수 없다면 무엇으로 고쳐야 하는가.
풀이 보기
먼저 글자 그대로 읽어 보자. (𝜑→𝜑) 라는 기호열이 적형식이라는 말이다. 정의로 판정하면 𝜑 는 어휘에 없는 글자이므로 기저 조항의 결과가 아니고, 재귀 조항의 재료도 될 수 없다. 글자 그대로는 그르다.
학생이 하려던 말은 다른 것이다. "어떤 적형식을 가져와 𝜑 자리에 넣더라도 결과가 적형식이다"라는 말이었을 것이다. 그렇게 고쳐 적으면 옳다. 재귀 조항의 → 갈래에서 두 재료로 같은 식을 쓴 경우이기 때문이다.
여기서 "넣는다"라는 말도 살펴 두자. 그 작업은 대상언어 안에서 일어나는 일이 아니다. 대상언어에는 대입이라는 연산이 없다. 도식을 읽고 그에 맞는 적형식을 고르는 일은 우리가 메타언어에서 하는 일이다.
정확한 문장으로 정리하면 이렇다. "모든 적형식 𝜑 에 대하여 (𝜑→𝜑) 는 적형식이다." 앞머리의 "모든 적형식 𝜑 에 대하여"가 𝜑 의 신분을 밝혀 준다. 메타변수를 쓸 때는 그 변수가 무엇을 훑는지를 먼저 말하는 습관을 들이는 것이 좋다. 13장 이후의 정리 진술이 전부 이 모양이다.
이 장에서 새로 나온 것
용어 · 기호
뜻
형식 언어(formal language)
어휘 목록과 결합 규칙만으로 무엇이 문장인지가 정해지는 언어. 뜻은 그 위에 따로 얹는다
어휘(vocabulary)
쓸 수 있는 기호의 전체 목록. 목록에 없는 기호는 하나도 쓸 수 없다
문장문자(sentence letter)
𝑃,𝑄,𝑅,𝑃1,𝑃2,…. 더 쪼개지 않는 원자. 무한히 많고 번호를 붙일 수 있다
연결자(connective)
¬ (1항), ∧ · ∨ · → · ↔ (2항)
항수(arity)
연결자가 재료로 받는 논리식의 개수. 정의의 조항 모양을 정한다
적형식(well-formed formula, wff)
기저 · 재귀 · 폐포 세 조항으로 정해지는 기호열. 이 문서에서 논리식이라 하면 이것이다
기저 조항
문장문자는 적형식이다
재귀 조항
𝜑 가 적형식이면 ¬𝜑 도, 𝜑 와 𝜓 가 적형식이면 (𝜑∧𝜓) 등도 적형식이다
폐포 조항
두 조항을 유한 번 적용해 얻어지는 것만이 적형식이다. 배제의 유일한 근거
구성열(construction sequence)
적형식을 만들어 온 유한한 목록. 적형식임을 보이는 방법은 이것을 내놓는 것뿐이다
주연결자(main connective)
그 식을 만든 마지막 조항이 쓴 연결자. 괄호 깊이 0에서 찾는다
부분식(subformula)
파스 트리의 마디에 붙는 적형식. 식 자신도 자기의 부분식이다
파스 트리(parse tree)
구성 과정을 나무로 그린 것. 뿌리가 식 전체, 잎이 문장문자
유일 가독성(unique readability)
적형식마다 파스 트리가 정확히 하나다. 정의가 아니라 정리이고, 괄호 덕에 성립한다
괄호 생략 규약
바깥 괄호를 지우고 우선순위 ¬,∧,∨,→,↔ 로 읽는다. 문법이 아니라 관습이다
결합 방향
∧ · ∨ 는 왼쪽으로, → · ↔ 는 오른쪽으로 묶는다
줄임말
괄호를 지운 기호열. 적형식이 아니라 적형식을 가리키는 이름이다
대상언어(object language)
연구 대상이 되는 언어. 여기서는 명제논리의 언어
메타언어(metalanguage)
대상언어에 대해 말하는 언어. 여기서는 한국어와 메타변수
메타변수 𝜑,𝜓,𝜒
적형식 하나를 가리키는 메타언어의 변수. 어휘가 아니다
메타변수 Γ,Δ
적형식들의 집합을 가리키는 메타언어의 변수
집합(set) · 원소(element)
무엇이 들어 있는지만으로 정해지는 모임과 그 안에 든 것. 순서와 되풀이는 셈하지 않는다
∈ · ⊆ · ∪ · ∅
원소 · 부분집합 · 합집합 · 빈 집합. 메타언어의 표기이고 논리식 안에 들어가지 않는다
도식(schema)
(𝜑∧𝜓) 처럼 적형식의 모양을 가리키는 표현. 그 자체는 적형식이 아니다
메타정리(metatheorem)
대상언어에 대한 정리. 13장부터 증명하는 것이 전부 이것이다
셀 수 있다(가산, countable)
1,2,3,… 을 빠짐없이 붙일 수 있다. 적형식 전체가 그렇다
챙겨 갈 것은 넷이다.
적형식은 세 조항으로 정해진다. 기저가 출발점을 주고, 재귀가 유한한 규칙으로 무한을 덮고, 폐포가 밖을 잘라낸다. 판정의 근거로 늘 조항 이름을 대라.
괄호는 뜻이 없고 구조를 표시한다. 이항 조항이 두른 괄호 덕에 파스 트리가 하나로 정해진다. 괄호를 지운 것은 줄임말이고 적형식이 아니다.
𝑃 는 대상언어이고 𝜑 는 메타언어다. 이 구분을 흐리면 13장 이후의 정리들이 무슨 주장인지 알 수 없게 된다.
모든 적형식은 유한하고, 적형식 전체는 셀 수 있다. 15장이 이 두 사실 위에 선다.
다음 장에서는 이 기호열들에 뜻을 준다. 문장문자마다 진리값을 하나씩 배당하고, 그 배당이 식 전체의 진리값을 어떻게 정하는지를 파스 트리를 따라 잎에서 뿌리로 올라가며 계산한다. 이 장에서 세운 재귀적 정의가 그 계산의 뼈대가 된다 — 조항마다 규칙을 하나씩 붙이면 그것이 의미론이다.
진리표와 진리함수적 의미론
5장은 어떤 기호열이 논리식인지를 정했다. 문법만 정한 것이라, 지금까지 (𝑃∧𝑄)→¬𝑅 은 규칙에 맞게 조립된 모양일 뿐 참도 거짓도 아니다. 이 장이 그 모양에 뜻을 준다. 문법에 뜻을 주는 부분을 의미론(semantics)이라 하고, 명제논리의 의미론은 놀랄 만큼 단순하다. 참과 거짓 두 값, 그리고 그 값을 어떻게 물려주는지에 관한 규칙 다섯 개가 전부다.
이 장에서 답할 질문은 넷이다.
논리식이 참이라거나 거짓이라는 말은 정확히 무슨 뜻인가
4장에서 억지 같다고 남겨 둔 F→T 가 왜 참인가
3장이 "상상할 수 있는 모든 상황"이라고만 말한 것을 어떻게 셀 수 있는 것으로 바꾸는가
진리표로 다 판정되는데 왜 7장의 증명 체계가 따로 필요한가
5장에서 가져오는 것은 셋이다. 문장문자 𝑃,𝑄,𝑅 과 다섯 연결자 ¬∧∨→↔, 괄호 생략 규약, 그리고 재귀적 정의다. 셋째가 이 장의 뼈대다. 5장이 "식을 어떻게 만드는가"를 재귀로 정했으니, 이 장은 "그렇게 만든 식의 값을 어떻게 정하는가"를 같은 재귀로 정한다. 5장의 조항 하나마다 값 계산 규칙 하나가 짝지어 붙는다.
진리표 자체는 처음이 아니다. Mathematics for Computer Science 5장이 진리표 채우기, 동치와 타당성과 만족가능성, 명제 대수 열두 규칙, DNF·CNF, SAT 를 이미 다룬다. 그것들을 다시 가르치지 않는다. 여기서 하는 일은 그 계산 절차 밑에 정의를 놓는 일이다. mcs 는 진리표를 계산 방법으로 다뤘지 진리표의 한 줄이 무엇인지는 정의하지 않았고, 논리식들 사이의 귀결 관계에 이름과 기호를 붙이지도 않았다. 그 둘이 이 장의 몫이다.
진리값 배당 — 진리표의 한 줄은 함수다
𝑃 가 참인지 거짓인지는 𝑃 만 보아서는 알 수 없다. 5장에서 정한 대로 문장문자는 속이 비어 있고, 무엇을 뜻하는지는 사전이 정한다. 그러니 의미론은 이렇게 출발할 수밖에 없다. 참·거짓을 밖에서 넣어 준다.
여기서 함수라는 말을 딱 필요한 만큼만 쓴다. 함수란 들어오는 것마다 나가는 것을 정확히 하나씩 짝지어 주는 규칙이다. 들어올 수 있는 것들의 모임을 정의역, 나갈 수 있는 것들의 모임을 공역이라 한다. 지금 필요한 것은 이 세 낱말뿐이고, 10장에서 훨씬 큰 함수를 다룰 때 제대로 다시 세운다.
정의를 적는다. 진리값 배당(valuation)이란 문장문자 전체의 집합을 정의역으로 하고 {T,F} 를 공역으로 하는 함수다. 배당을 𝑣 로 적고, 𝑣 가 문장문자 𝑃 에 배정한 값을 𝑣(𝑃) 로 적는다.
왜 하필 함수인가. 함수는 "하나마다 정확히 하나"를 요구한다. 그것이 우리가 원하는 것과 정확히 같다. 한 배당 안에서 𝑃 가 참이면서 동시에 거짓일 수는 없고(값이 둘일 수 없다), 값이 정해지지 않은 문자가 남아 있어서도 안 된다(값이 없을 수 없다). 진리표의 한 줄이 지켜야 할 규칙이 함수의 조건 그대로다.
<왼쪽 화살표 묶음과 오른쪽 색칠한 줄이 같은 것이다 — 진리표의 한 줄은 표를 채우는 절차가 아니라 함수 하나다>[원본 보기]
그림의 오른쪽이 이 절의 요점이다. 진리표의 한 줄이 배당 하나다. 표를 채운다는 것은 여러 함수를 차례로 훑는 일이고, 문장문자가 𝑛 개면 배당은 2𝑛 개다. 문자마다 두 가지 선택이 있고 선택끼리 서로 얽히지 않으니 곱해진다.
하나 더 밝혀 둘 것이 있다. 배당은 문장문자 전체에 값을 준다. 문장문자는 5장에서 𝑃,𝑄,𝑅,𝑃1,𝑃2,… 로 끝없이 만들 수 있게 해 두었으므로 배당 하나가 정하는 값은 무한히 많다. 그런데 진리표는 몇 줄로 끝난다. 모순이 아니다. 어떤 식의 값은 그 식에 실제로 나오는 문장문자의 값에만 달려 있기 때문이다. 이 사실은 당연해 보이지만 증명이 필요한 사실이고, 그 증명은 식의 구조에 대한 귀납이라 13장의 도구를 쓴다. 여기서는 쓰기만 하고 갚는 것은 13장에서 한다.
예제 46
𝑃,𝑄,𝑅,𝑆 네 문자만 생각한다. (가) 배당은 몇 개인가. (나) 그중 𝑣(𝑃)=T 이고 𝑣(𝑆)=F 인 것은 몇 개인가. (다) 𝑣(𝑃)=𝑣(𝑄) 인 것은 몇 개인가.
풀이 보기
(가) 문자마다 T 와 F 두 가지이고 네 문자의 선택이 서로 독립이므로 2×2×2×2=24=16 개다.
(나) 𝑃 와 𝑆 의 값이 못 박혔으니 자유롭게 고를 수 있는 것은 𝑄 와 𝑅 뿐이다. 22=4 개.
(다) 𝑣(𝑃)=𝑣(𝑄)=T 인 경우와 둘 다 F 인 경우로 나뉜다. 각 경우에 𝑅 과 𝑆 가 자유로우므로 4 개씩, 모두 8 개다. 전체의 절반이다.
세 물음이 모두 같은 요령으로 풀린다. 못 박힌 문자를 빼고 남은 문자의 개수만큼 2를 곱한다. 진리표에서 "𝑃 열이 T 인 줄만 본다"는 것이 바로 (나)를 하는 일이다.
답이 말이 되는가. 세 답의 크기 순서를 조건의 세기와 견줘 본다. (가)는 아무 조건이 없어 16, (다)는 조건이 하나 붙어 절반인 8, (나)는 값 둘이 못 박혀 4 다. 조건이 셀수록 개수가 줄어드는 것이 맞고, 셋 다 2 의 거듭제곱이어야 한다. 둘 중 하나라도 어긋나면 어딘가에서 잘못 센 것이다.
예제 47
배당을 문장문자가 아니라 논리식 전체에 값을 주는 함수로 정의하면 안 되는가? 그러면 재귀적 정의를 세울 것 없이 곧바로 모든 식의 값이 생긴다.
풀이 보기
정의하는 것 자체는 막을 수 없다. 문제는 그렇게 정의하면 원하지 않는 것까지 함께 허용된다는 데 있다.
그런 함수 중에는 𝑢(𝑃)=T 이면서 𝑢(¬𝑃)=T 인 것도 있고, 𝑢(𝑃∧𝑄)=T 인데 𝑢(𝑃)=F 인 것도 있다. 연결자의 뜻을 아무 데도 적지 않았으니 그것들을 배제할 근거가 없다. 그러면 ¬ 은 "아니다"를 뜻하지 않게 되고, 의미론이 아무 일도 하지 않은 것이 된다.
그래서 자유와 강제를 갈라 둔다. 문장문자의 값은 자유롭게 고를 수 있고, 나머지는 전부 강제된다. 자유로운 부분이 배당이고, 강제하는 규칙이 다음 절의 재귀적 정의다. 이 구분은 5장의 문법과 짝을 이룬다 — 문장문자는 문법에서도 더 쪼갤 수 없는 기저였다. 덧붙이면, 다음 절의 정의를 마친 뒤 나오는 "확장 배당"은 실제로 논리식 전체에 값을 주는 함수다. 다만 그것은 배당 하나에서 유일하게 정해지는 함수이지 우리가 고르는 것이 아니다.
연결자는 진리함수다 — 값은 구조를 따라 올라간다
배당은 문장문자에만 값을 준다. 나머지 식의 값을 정하려면 연결자가 값을 어떻게 물려주는지 정해야 한다. 진리함수(truth function)란 진리값 몇 개를 받아 진리값 하나를 내놓는 함수다. ¬ 은 값 하나를 받아 하나를 내놓는 1항 진리함수, 나머지 넷은 값 둘을 받아 하나를 내놓는 2항 진리함수다. 각 연결자를 진리함수로 못 박는 것이 아래 표다. 이 표는 성질이 아니라 정의다.
𝜑
𝜓
¬𝜑
𝜑∧𝜓
𝜑∨𝜓
𝜑→𝜓
𝜑↔𝜓
T
T
F
T
T
T
T
T
F
F
F
T
F
F
F
T
T
F
T
T
F
F
F
T
F
F
T
T
¬𝜑 열은 𝜓 와 상관없으므로 위 두 줄과 아래 두 줄이 각각 같은 값이다.
확장 배당 — 5장의 조항마다 규칙 하나
이제 배당 𝑣 를 논리식 전체로 넓힌다. 넓힌 함수를 ¯𝑣 로 적고 확장 배당이라 부른다. 정의는 5장의 재귀적 문법을 그대로 따라간다.
기저 — 문장문자 𝑃 에 대해 ¯𝑣(𝑃)=𝑣(𝑃)
¬ 조항 — ¯𝑣(¬𝜑) 는 ¯𝑣(𝜑)=F 이면 T, 아니면 F
∧ 조항 — ¯𝑣(𝜑∧𝜓) 는 ¯𝑣(𝜑) 와 ¯𝑣(𝜓) 가 둘 다 T 이면 T, 아니면 F
∨ 조항 — ¯𝑣(𝜑∨𝜓) 는 둘 중 하나라도 T 이면 T, 아니면 F
→ 조항 — ¯𝑣(𝜑→𝜓) 는 ¯𝑣(𝜑)=T 이고 ¯𝑣(𝜓)=F 이면 F, 아니면 T
↔ 조항 — ¯𝑣(𝜑↔𝜓) 는 ¯𝑣(𝜑) 와 ¯𝑣(𝜓) 가 같으면 T, 다르면 F
5장의 문법 정의와 나란히 놓고 보라. 조항의 개수도 같고 순서도 같다. 문법이 식을 조립한 경로를 값 계산이 그대로 되짚는다. 5장이 "모든 적형식에는 그것을 만든 구성열이 있다"고 했으므로, 이 정의는 모든 적형식에 값을 하나씩 준다. 그리고 5장이 "괄호 덕분에 파스 트리가 하나로 정해진다"고 했으므로, 그 값도 하나로 정해진다. 문법에서 한 일이 여기서 값을 받는다.
<잎에 놓인 것은 배당이 준 값이고 위로 올라가는 각 단계는 진리함수 한 번이다 — 계산 순서를 정하는 것은 괄호이지 우리의 취향이 아니다>[원본 보기]
이제 기호를 하나 도입한다. ¯𝑣(𝜑)=T 일 때 배당 𝑣 가 𝜑 를 만족한다고 말하고
𝑣⊨𝜑
라고 적는다. 이 기호를 만족 관계라 부른다. 읽기는 "𝑣 는 𝜑 를 만족한다" 또는 "𝜑 는 𝑣 에서 참이다"다. ⊨ 는 5장의 낱말로 말하면 메타언어의 기호다. 논리식 안에 들어가는 기호가 아니라 논리식에 대해 우리가 하는 말을 줄여 적는 기호다. 𝜑→𝜓 는 논리식이지만 𝑣⊨𝜑 는 논리식이 아니라 문장이다. 이 구분을 놓치면 이 문서의 나머지가 전부 흐려진다.
예제 48
𝜑 를 ((𝑃→𝑄)∧¬𝑅)↔(𝑄∨𝑅) 라 하자. 배당 𝑣 가 𝑣(𝑃)=T,𝑣(𝑄)=F,𝑣(𝑅)=F 일 때 ¯𝑣(𝜑) 를 구하고, 𝑣⊨𝜑 인지 답하라.
풀이 보기
안쪽부터 올라간다. 순서를 정하는 것은 괄호다. ¯𝑣(𝑃→𝑄) — 𝑃 가 T, 𝑄 가 F 이므로 → 조항의 유일한 거짓 경우다. 값은 F.
¯𝑣(¬𝑅) — 𝑅 이 F 이므로 값은 T.
¯𝑣((𝑃→𝑄)∧¬𝑅) — F 와 T 이므로 둘 다 참이 아니다. 값은 F.
¯𝑣(𝑄∨𝑅) — 둘 다 F 이므로 값은 F.
¯𝑣(𝜑) — 왼쪽이 F, 오른쪽이 F 로 같으므로 ↔ 조항에 따라 값은 T 다. 따라서 𝑣⊨𝜑 다.
눈여겨볼 것이 하나 있다. 𝜑 의 두 쪽이 모두 거짓인데 전체는 참이 되었다. ↔ 는 두 쪽이 참인지가 아니라 두 쪽이 같은지를 묻는다. 여기서 실수하는 사람이 많다.
답이 말이 되는가. 계산이 맞는지 보려면 주연결자에서 한 번 더 내려가 두 재료의 값을 다시 구해 보면 된다. 왼쪽이 F, 오른쪽이 F 이고 ↔ 조항이 "같으면 참"이니 값이 T 로 되돌아온다. 그리고 이 계산에 쓴 것이 𝑃,𝑄,𝑅 세 문자의 값뿐이라는 점도 확인해 두자 — 배당이 나머지 무한히 많은 문자에 무엇을 주든 값이 흔들리지 않는다.
예제 49
값 𝑛 개를 받아 값 하나를 내놓는 진리함수는 모두 몇 개인가. 𝑛=1 과 𝑛=2 에 대해 세어 보고 일반식을 구하라. 우리가 쓰는 연결자는 다섯 개뿐인데 그 수와 견주면 무슨 말을 할 수 있는가.
풀이 보기
진리함수는 "입력 조합마다 출력 하나"를 정하는 것이니, 입력 조합의 개수만큼 자리가 있고 각 자리에 두 가지를 넣을 수 있다. 𝑛=1 이면 입력 조합이 2 가지이므로 함수는 22=4 개다. 항상 T, 항상 F, 그대로 두기, 뒤집기. 넷 중 마지막이 ¬ 이다.
𝑛=2 이면 입력 조합이 4 가지이므로 24=16 개다. 우리는 그중 넷(∧,∨,→,↔)에만 기호를 주었다. 이름을 안 준 것 중에도 쓸모 있는 것이 있다 — mcs 5장의 ⊕(XOR)가 그중 하나다.
일반적으로 입력 조합은 2𝑛 가지이므로 진리함수는 22𝑛 개다. 𝑛=3 이면 벌써 256 개, 𝑛=4 이면 65536 개다.
그러면 곤란해 보인다. 연결자는 다섯인데 진리함수는 이렇게 많다. 이름이 없는 진리함수는 표현할 수 없는 것 아닌가? 그렇지 않다. 다섯 연결자를 조합하면 모든 진리함수를 만들 수 있고, 사실 두 개만 있어도 된다. 그것이 이 장 마지막 절의 주제다.
F→T 가 왜 참인가 — 이 장에서 가장 걸리는 곳
앞 표의 → 열이 유일하게 직관과 부딪히는 자리다. 4장에서 자연어 조건문을 화살표로 옮길 때 이 불편함을 남겨 두었다. 여기서 갚는다. 각도를 넷으로 나눠 본다.
각도 하나 — 진리함수로 쓰기로 한 이상 빈칸을 둘 수 없다
먼저 무엇을 이미 정했는지 확인하자. 우리는 → 를 진리함수로 쓰기로 했다. 그 말은 𝜑→𝜓 의 값이 𝜑 와 𝜓 의 진리값만으로 정해진다는 뜻이다. 두 값의 조합은 넷뿐이고, 넷 모두에 값을 정해야 정의가 끝난다. "전건이 거짓일 때는 말할 것이 없다"고 비워 두면 그것은 진리함수가 아니고, 그러면 → 가 든 식은 배당이 주어져도 값이 없는 식이 된다. 이 장 전체가 무너진다.
각도 둘 — 남은 칸을 다르게 채우면 이미 이름이 있는 것이 된다
다툼이 없는 줄이 둘 있다. T→T 는 T, T→F 는 F. 약속을 어긴 경우는 뒤쪽 하나뿐이라는 데는 누구도 반대하지 않는다. 그러면 고를 수 있는 자리는 전건이 거짓인 두 줄뿐이고, 채우는 방법은 네 가지다. 넷을 다 해 보면 답이 나온다.
<네 가지 채움 가운데 셋은 이미 이름이 있는 연결자로 되돌아간다 — 조건문 노릇을 하는 채움은 맨 위 하나뿐이고 그것이 실질함의다>[원본 보기]
그림이 말하는 바를 글로 옮기면 이렇다. 두 줄을 모두 F 로 채우면 그 연결자는 ∧ 와 진리표가 똑같아진다. 그러면 𝜑→𝜓 를 주장하는 것이 𝜑 를 주장하는 것을 포함하게 되어, "지금 비는 안 오지만 비가 오면 땅이 젖는다" 같은 말을 아예 할 수 없다. 엇갈리게 채우면 ↔ 가 되어 방향이 사라지거나, 𝜓 자체가 되어 전건이 아무 구실도 하지 못한다. 새로운 연결자가 되는 채움은 하나뿐이다.
각도 셋 — 조건문은 "이 일은 일어나지 않는다"는 주장이다
𝜑→𝜓 가 무엇을 주장하는지 표에서 거꾸로 읽어 보자. 거짓이 되는 줄이 하나뿐이므로, 이 식은 정확히 이렇게 말한다. 𝜑 가 참인데 𝜓 가 거짓인 일은 없다. 그 이상도 이하도 아니다. 그러면 전건이 거짓인 경우는 저절로 풀린다. 금지된 일이 일어나지 않았으므로 주장이 어겨지지 않았고, 어겨지지 않은 주장은 참이다. 이런 참을 공허하게 참(vacuously true)이라 한다. 공허하다는 것은 흠이 아니라 정확히 그만큼만 말했다는 뜻이다.
각도 넷 — 규칙과 사례
실무의 예가 이 채움을 강제한다. 어떤 시스템의 명세가 "조건 𝑖 이면 동작 𝑖 를 한다"는 규칙 열두 줄이라 하자. 명세 전체를 하나의 식으로 묶으려면 열두 조건문을 ∧ 로 이어야 하는데, 지금 조건이 성립한 규칙이 둘뿐이라면 나머지 열 개도 참이 되어야 전체가 참이 된다. mcs 5장이 이 논증을 자세히 편다. 여기서는 결론만 가져온다 — 조건이 발동하지 않은 규칙을 "어기지 않은 것"으로 세지 않으면 규칙 여러 개를 한 식으로 묶는 일 자체가 안 된다.
마지막으로 잃은 것을 정직하게 적어 둔다. 실질함의에는 인과도 관련성도 들어 있지 않다.𝜑 가 거짓이기만 하면 𝜑→𝜓 는 𝜓 가 무엇이든 참이다. 억지라고 느끼는 것이 옳다. 그것을 담으려면 진리함수라는 틀 자체를 버려야 하고, 그 길이 18장의 양상논리와 19장의 관련성 논리다. 이 문서는 17장까지 진리함수의 틀 안에 머문다.
예제 50
카드가 넉 장 있다. 한 면에는 수가, 다른 면에는 색이 있다. 보이는 면은 차례로 8, 3, 빨강, 파랑이다. 규칙은 "앞면이 짝수이면 뒷면은 빨강이다"다. 규칙이 어겨졌는지 확인하려면 어느 카드를 뒤집어야 하는가. 뒤집을 필요가 없는 카드는 왜 필요가 없는가.
풀이 보기
카드 한 장마다 𝑃 를 "이 카드의 수 면은 짝수다", 𝑄 를 "이 카드의 색 면은 빨강이다"라 하자. 규칙은 𝑃→𝑄 이고, 규칙이 어겨진다는 것은 그 카드에서 𝑃→𝑄 가 거짓이라는 것, 즉 𝑃 가 참이고 𝑄 가 거짓인 줄이라는 것이다. 거짓이 되는 줄이 하나뿐이므로 확인할 것도 하나뿐이다.
8 — 𝑃 가 참인 것이 확정됐고 𝑄 를 모른다. 뒤가 빨강이 아니면 그 유일한 줄이 되므로 뒤집어야 한다.
파랑 — 𝑄 가 거짓인 것이 확정됐고 𝑃 를 모른다. 앞이 짝수이면 그 유일한 줄이 되므로 뒤집어야 한다.
3 — 𝑃 가 거짓인 것이 확정됐으므로 뒤가 무엇이든 F→T 아니면 F→F 이다. 빨강 — 𝑄 가 참인 것이 확정됐으므로 앞이 무엇이든 T→T 아니면 F→T 이다. 네 경우가 모두 참인 줄이므로 두 장은 뒤집을 필요가 없다.
답은 8 과 파랑 두 장이다. 사람들은 이 문제에서 8 과 빨강을 고르는 일이 흔한데, 빨강을 고르는 것은 규칙을 𝑃↔𝑄 로 읽은 것이다. 그리고 3 을 굳이 뒤집어 보고 싶어지는 것이 바로 이 절이 다루는 불편함이다. 전건이 거짓인 카드는 규칙을 시험하지 못한다는 것이 F→T 가 참이라는 말의 실제 모습이다.
예제 51
표를 바꿔 보면 무엇을 잃는지 알 수 있다. (가) F→F 를 F 로 바꾸면 𝑃→𝑃 는 어떻게 되는가. (나) F→T 를 F 로 바꾸면 (𝑃∧𝑄)→𝑃 는 어떻게 되는가.
풀이 보기
(가) 𝑃→𝑃 는 배당 두 개만 보면 된다. 𝑣(𝑃)=T 이면 T→T 로 참이다. 𝑣(𝑃)=F 이면 F→F 인데 이것을 F 로 바꿨으니 거짓이다. 즉 𝑃→𝑃 가 항상 참인 식이 아니게 된다. "𝑃 이면 𝑃 다"가 참이 아닌 논리는 쓸 데가 없다.
(나) 배당 넷을 본다. 𝑣(𝑃)=T,𝑣(𝑄)=F 이면 𝑃∧𝑄 는 F 이고 𝑃 는 T 이므로 전체는 F→T 다. 이것을 F 로 바꿨으니 거짓이다. 즉 "𝑃 이고 𝑄 이면 𝑃 이다"가 항상 참인 식이 아니게 된다. 논리곱에서 한쪽을 떼어내는 일이 막히는 것이다.
두 실험이 같은 말을 한다. 우리가 지키고 싶은 아주 기본적인 식들이 참이려면 전건이 거짓인 두 줄이 참이어야 한다. 실질함의의 표는 취향이 아니라 나머지를 지키려고 치른 값이다.
항진명제·모순·우연, 그리고 의미론적 귀결
한 논리식은 배당마다 값을 갖는다. 그러면 "모든 배당에서 어떤가"를 물을 수 있고, 그 물음의 답이 세 갈래로 갈린다.
항진명제(tautology) — 모든 배당에서 참인 식. 𝑃∨¬𝑃 가 그렇다
모순(contradiction) — 모든 배당에서 거짓인 식. 𝑃∧¬𝑃 가 그렇다
우연(contingent) — 참인 배당도 있고 거짓인 배당도 있는 식. 𝑃→𝑄 가 그렇다
그리고 만족가능하다는 것은 참으로 만드는 배당이 하나라도 있다는 뜻이다. 항진명제와 우연인 식이 만족가능하고 모순은 아니다. 논리식의 집합에 대해서도 같은 말을 쓴다. Γ 가 만족가능하다는 것은 Γ 의 원소를 전부 한꺼번에 참으로 만드는 배당이 있다는 뜻이다. 하나씩 따로 참으로 만들 수 있는 것과는 다른 요구다.
두 식 𝜑 와 𝜓 가 모든 배당에서 같은 값을 가지면 논리적으로 동치라 한다. 동치인지 묻는 것은 𝜑↔𝜓 가 항진명제인지 묻는 것과 같다. 값이 같다는 것이 곧 ↔ 조항의 조건이기 때문이다. 4장이 판정을 미뤄 둔 두 물음이 여기서 끝난다. ¬¬𝑃 와 𝑃 는 배당 두 개에서 값이 같으므로 동치이고, ¬(𝑃∨𝑄) 와 ¬𝑃∧¬𝑄 도 배당 네 개에서 값이 같으므로 동치다(드모르간 법칙). 둘 다 표를 채우면 그 자리에서 확인된다.
여기서 낱말이 겹치는 것을 짚어 두어야 한다. mcs 5장은 모든 배정에서 참인 식을 "타당한 식"이라 부른다. 이 문서는 그렇게 하지 않는다. 3장이 논증에 대해 타당이라는 낱말을 이미 썼고, 논증과 식은 다른 것이기 때문이다. 이 문서에서 타당한 것은 논증이고, 식은 항진명제다. 마찬가지로 mcs 의 "일관적"은 여기서 "만족가능한 집합"이라 부른다. 일관성이라는 낱말은 7장 이후 증명 체계 쪽에 쓸 자리가 따로 있어 비워 둔다.
의미론적 귀결 Γ⊨𝜑
이제 이 장의 중심 정의다. 3장은 좋은 논증을 "전제가 모두 참인데 결론이 거짓인 상황이 없는 것"이라 했고, 그때 상황이 무엇인지는 상상에 맡겼다. 명제논리 안에서는 상황이 곧 배당이다. 그러니 이렇게 적을 수 있다.
정의.Γ 를 논리식들의 집합, 𝜑 를 논리식이라 하자. Γ 의 원소를 모두 참으로 만드는 배당이 전부𝜑 도 참으로 만들면, 𝜑 는 Γ 의 의미론적 귀결이라 하고
Γ⊨𝜑
라고 적는다. 그렇지 않으면 Γ⊨𝜑 가 아니라고 한다. {𝜑1,𝜑2}⊨𝜓 는 중괄호를 생략해 𝜑1,𝜑2⊨𝜓 로도 적는다.
앞 절의 𝑣⊨𝜑 와 같은 기호를 쓴다. 헷갈릴 일은 없다. 왼쪽에 배당이 오면 만족이고 논리식 집합이 오면 귀결이다. 두 뜻이 이어져 있기도 하다 — Γ⊨𝜑 는 "Γ 를 만족하는 모든 𝑣 가 𝜑 도 만족한다"는 말이니, 귀결은 만족을 모든 배당에 대해 한 번 훑은 것이다.
<위 줄에서 칠해진 칸이 아래 줄에서도 칠해져 있으면 귀결이다 — 칠해지지 않은 칸에서 무슨 일이 일어나는지는 귀결과 아무 상관이 없다>[원본 보기]
그림 아래쪽이 중요하다. 귀결은 포함 관계다. 전제를 참으로 만드는 배당의 모임이 결론을 참으로 만드는 배당의 모임 안에 들어 있으면 귀결이고, 밖으로 삐져나온 칸이 하나라도 있으면 귀결이 아니다.
Γ 가 빈 집합인 경우를 따로 보자. 이때는 왼쪽을 아예 비워 ⊨𝜑 라고 적는다. 정의를 그대로 읽으면 "빈 집합의 원소를 모두 참으로 만드는 배당은 전부 𝜑 도 참으로 만든다"가 되는데, 빈 집합에는 원소가 없으므로 어떤 배당이든 그 조건을 공허하게 만족한다. 앞 절의 공허한 참이 여기서 다시 나온 것이다. 따라서 ⊨𝜑 는 "모든 배당이 𝜑 를 참으로 만든다"는 말, 즉 𝜑 가 항진명제다와 같은 말이다.
마지막으로 → 와 ⊨ 를 잇는 다리를 하나 놓는다. Γ∪{𝜑}⊨𝜓 인 것과 Γ⊨𝜑→𝜓 인 것은 같은 말이다. 이유는 짧다. Γ 를 만족하는 배당을 아무거나 잡았을 때, "𝜑 도 만족하면 𝜓 도 만족한다"는 것과 "𝜑→𝜓 를 만족한다"는 것이 → 조항에 의해 똑같은 조건이기 때문이다. 전제를 하나 왼쪽에서 오른쪽으로 옮겨 화살표로 바꿔도 되고 그 반대도 된다. 두 층을 잇는 이 다리는 7장에서 → 도입 규칙의 모습으로 다시 나타난다.
예제 52
다음 각 식이 항진명제인가, 모순인가, 우연인가. 우연이면 참으로 만드는 배당과 거짓으로 만드는 배당을 하나씩 들어라.
(가)𝑃→(𝑄→𝑃)(나)(𝑃→𝑄)∧𝑃∧¬𝑄(다)(𝑃∨𝑄)→𝑃
풀이 보기
(가) 항진명제다.𝑣(𝑃)=F 이면 바깥 화살표의 전건이 거짓이라 전체가 참이다. 𝑣(𝑃)=T 이면 안쪽 𝑄→𝑃 의 후건이 참이라 안쪽이 참이고, 그러면 바깥도 참이다. 배당을 두 갈래로만 나누어 여덟 줄 대신 두 경우로 끝냈다.
(나) 모순이다. 전체가 참이려면 세 조각이 모두 참이어야 한다. 셋째에서 𝑣(𝑄)=F, 둘째에서 𝑣(𝑃)=T 이 강제되는데, 그러면 첫째 𝑃→𝑄 가 T→F 이라 거짓이다. 요구가 서로 부딪히므로 참으로 만드는 배당이 없다.
(다) 우연이다.𝑣(𝑃)=T 이면 후건이 참이라 전체가 참이다. 𝑣(𝑃)=F,𝑣(𝑄)=T 이면 전건이 참이고 후건이 거짓이라 전체가 거짓이다.
(나)에서 쓴 방법을 기억해 두자. 전체를 참으로 만들려면 무엇이 강제되는지 따라간다. 다음 절의 반례 찾기가 이 방법을 거꾸로 쓴 것이다.
예제 53
{𝑃→𝑄,𝑄→𝑅}⊨𝑃→𝑅 임을 보여라. 진리표 여덟 줄을 다 채우지 말고 하라.
풀이 보기
보여야 할 것은 "두 전제를 모두 참으로 만드는 배당은 전부 결론도 참으로 만든다"이다. 그런 배당 𝑣 를 아무거나 하나 잡고 시작한다.
결론 𝑃→𝑅 이 참인지 보려면 → 조항에 따라 𝑣(𝑃)=T 인 경우만 걱정하면 된다. 𝑣(𝑃)=F 이면 결론이 곧바로 참이기 때문이다.
그러니 𝑣(𝑃)=T 라 하자. 첫 전제 𝑃→𝑄 가 참인데 전건이 참이므로 후건이 참이어야 한다. 즉 𝑣(𝑄)=T 다. 둘째 전제 𝑄→𝑅 도 참인데 이제 전건이 참이므로 𝑣(𝑅)=T 이다. 그러면 결론 𝑃→𝑅 은 T→T 라 참이다.
어느 배당을 잡았든 결론이 참이었으므로 귀결이 성립한다. 여덟 줄 대신 두 갈래로 끝났다.
이 풀이가 하는 일을 보라. 배당 하나를 잡되 그 배당에 대해 아는 것은 "전제를 참으로 만든다"뿐이고, 거기서 값을 하나씩 끌어냈다. 이것이 의미론적 귀결을 직접 보이는 표준 방법이다.
예제 54
다음 세 물음에 답하라. (가) ⊨𝜑 와 "𝜑 가 항진명제다"가 같은 말인 이유를 정의로부터 설명하라. (나) Γ 가 만족가능하지 않으면 Γ⊨𝜑 가 모든 𝜑 에 대해 성립함을 보여라. (다) (나)가 이상하게 느껴진다면 어디가 이상한가.
풀이 보기
(가) 정의는 "Γ 의 원소를 모두 참으로 만드는 배당이 전부 𝜑 도 참으로 만든다"이다. Γ 가 빈 집합이면 원소가 없으므로 "원소를 모두 참으로 만든다"는 조건에 걸리는 배당이 하나도 없다. 즉 모든 배당이 그 조건을 통과한다. 그러면 남는 요구는 "모든 배당이 𝜑 를 참으로 만든다"뿐이고, 그것이 항진명제의 정의다.
(나) Γ 가 만족가능하지 않다는 것은 Γ 의 원소를 모두 참으로 만드는 배당이 하나도 없다는 뜻이다. 그러면 "그런 배당은 전부 𝜑 도 참으로 만든다"는 요구를 어길 배당이 없다. 어겨지지 않았으므로 성립한다. 𝜑 가 무엇이든 상관없다.
(다) 이상하게 느껴지는 것이 정상이다. {𝑃,¬𝑃}⊨𝑄 가 성립한다는 말인데, 𝑄 는 전제와 아무 관계도 없는 식이다. 이것을 폭발(explosion)이라 한다.
어디가 이상한가를 정확히 짚으면 이렇다. 이상한 것은 정의가 아니라 귀결이라는 낱말에서 우리가 기대하는 것이다. 우리는 결론이 전제와 관련이 있기를 기대하는데, 이 정의는 관련성에 대해 아무 말도 하지 않는다. 앞 절에서 → 가 인과를 버린 것과 정확히 같은 자리다. 두 자리 모두 19장의 관련성 논리가 되돌아와 손대는 곳이고, 7장에서는 이것이 ⊥ 제거 규칙(폭발률)이라는 이름으로 다시 나타난다.
반례 배당 — 귀결이 아님을 보이는 법
3장은 논증이 타당하지 않음을 보이려면 반례 하나를 내놓으라고 했다. 전제가 모두 참인데 결론이 거짓인 상황이다. 그때 상황을 어떻게 만드는지는 상상력에 맡길 수밖에 없었다. 이제는 다르다. 상황이 배당이므로 반례를 찾는 일이 절차가 된다.
Γ⊨𝜑 가 아님을 보이려면 반례 배당 하나를 내놓으면 된다. 반례 배당이란 Γ 의 원소를 모두 참으로 만들면서 𝜑 는 거짓으로 만드는 배당이다. 하나면 끝난다. 찾는 요령은 정의를 거꾸로 읽는 것이다.
<결론을 거짓으로 놓고 거꾸로 내려온다 — 왼쪽 끝은 배당 하나로 끝나지만 오른쪽 끝은 모든 갈림길이 막혔음을 확인해야 한다>[원본 보기]
절차를 말로 적으면 이렇다. 결론을 F 로 놓는다. 전제를 하나씩 T 로 놓는다. 그러면 값이 강제되는 자리가 생긴다 — 예를 들어 𝜓→𝜒 가 참인데 𝜒 가 거짓이면 𝜓 는 거짓일 수밖에 없다. 강제되는 것을 다 채우고, 강제되지 않으면 갈림길에서 한 쪽을 골라 계속한다. 모순 없이 다 채워지면 그것이 반례다. 어느 길로 가도 같은 문장문자에 T 와 F 가 함께 요구되면 반례가 없는 것이고, 그때는 귀결이 성립한다. 채워야 할 문장문자는 식과 전제에 실제로 나오는 것뿐이다. 나머지 문자의 값은 아무래도 좋다. 그래서 반례를 적을 때는 "𝑣(𝑃)=T,𝑣(𝑄)=F, 나머지는 아무렇게나"라고 적으면 충분하다.
예제 55
{𝑃→𝑄,¬𝑃}⊨¬𝑄 인가? 반례 배당이 있으면 내놓아라.
풀이 보기
결론 ¬𝑄 를 거짓으로 놓는다. 그러면 𝑣(𝑄)=T 가 강제된다. 둘째 전제 ¬𝑃 를 참으로 놓는다. 그러면 𝑣(𝑃)=F 가 강제된다.
첫째 전제 𝑃→𝑄 를 확인한다. 𝑣(𝑃)=F 이므로 전건이 거짓이라 참이다. 요구와 어긋나지 않는다.
모순 없이 다 채워졌다. 반례 배당은 𝑣(𝑃)=F,𝑣(𝑄)=T 이고, 나머지 문자는 아무래도 좋다. 이 배당에서 두 전제는 모두 참이고 결론은 거짓이다. 따라서 귀결이 아니다.
이 논증의 이름이 전건 부정 오류다. 3장에서 부당하다고 배운 것을 여기서는 배당 하나로 확정했다. 3장의 "상상할 수 있는 상황"이 두 문자의 값 두 개로 줄어든 것이 이 장이 한 일이다.
예제 56
{𝑃∨𝑄,𝑄→𝑅,¬𝑅}⊨𝑃 인가? 반례를 찾아보고, 찾지 못하면 왜 없는지 말하라.
풀이 보기
결론 𝑃 를 거짓으로 놓는다. 𝑣(𝑃)=F 다. 셋째 전제 ¬𝑅 을 참으로 놓는다. 𝑣(𝑅)=F 이 강제된다.
둘째 전제 𝑄→𝑅 을 참으로 놓는다. 후건 𝑅 이 거짓이므로 전건도 거짓이어야 한다. 𝑣(𝑄)=F 가 강제된다.
첫째 전제 𝑃∨𝑄 를 참으로 놓아야 하는데, 지금 𝑣(𝑃)=F 이고 𝑣(𝑄)=F 이므로 ∨ 조항에 따라 값이 F 다. 참이어야 하는데 거짓이다. 모순이다.
갈림길이 한 번도 없었다는 데 주목하라. 매 단계에서 값이 강제되었으므로 다른 길이 애초에 없었고, 따라서 반례가 존재하지 않는다. {𝑃∨𝑄,𝑄→𝑅,¬𝑅}⊨𝑃 다.
그런데 여기서 정직하게 말할 것이 있다. 우리가 얻은 것은 "반례가 없다"이지 "왜 결론이 따라 나오는가"가 아니다. 위 풀이를 남에게 건네면 상대는 각 단계를 다시 확인해야 하고, 확인을 마쳐도 손에 남는 것은 여전히 "막다른 길이었다"뿐이다. 이 답답함이 다음 절과 7장의 출발점이다.
진리표의 한계 — 줄이 2𝑛 개다
앞 절의 방법도, 진리표를 다 채우는 방법도 원리상으로는 늘 통한다. 배당이 유한 개이므로 전부 확인하면 어떤 물음이든 판정된다. 명제논리는 이 뜻에서 결정 가능하다. 문제는 그 유한이 얼마나 큰가다.
<오른쪽 그림이 왼쪽 곡선의 이유다 — 문자를 하나 더하면 표가 통째로 두 벌이 되므로 줄 수가 정확히 두 배가 된다>[원본 보기]
문장문자 개수 𝑛
진리표의 줄 수
1 초에 100 만 줄을 채운다면
10
1024
눈 깜짝할 사이
20
1048576
약 1 초
30
약 10 억
약 18 분
40
약 1 조
약 13 일
50
약 1000 조
약 36 년
문자 열 개를 늘리면 시간이 천 배가 된다. 컴퓨터가 두 배 빨라져도 다룰 수 있는 문자는 하나 늘어날 뿐이다. 이런 증가를 지수적이라 하고, 그것이 어떤 뜻인지와 다항 시간과 무엇이 다른지는 알고리즘 문서가 다룬다. 만족가능성 판정을 다항 시간에 할 수 있는지는 아직 아무도 모르고, 그것이 mcs 5장이 소개한 P 대 NP 문제다.
그런데 속도만 문제인 것이 아니다. 진리표는 판정은 해 주지만 왜 그런지는 말해 주지 않는다. 앞 절 마지막 예제에서 본 그대로다. 백만 줄을 다 채워 "전제가 참인데 결론이 거짓인 줄이 없다"는 것을 확인해도, 손에 남는 것은 백만 번의 확인이지 이유가 아니다. 그 확인을 남에게 건넬 수도 없다.
사람이 실제로 하는 일은 다르다. 앞 절의 예제에서 우리는 여덟 줄을 채우는 대신 "𝑅 이 거짓이니 𝑄 도 거짓이고, 그러면 𝑃∨𝑄 가 참일 수 없다"고 몇 줄로 말했다. 그 몇 줄은 배당의 개수와 상관이 없다. 문장문자가 스무 개여도 같은 길이로 말할 수 있다.
이런 말하기를 규칙으로 못 박아 기계도 사람도 같은 기준으로 검사할 수 있게 만든 것이 증명 체계이고, 그것이 7장이다. 7장이 하는 일을 미리 한 문장으로 적으면 이렇다 — 배당을 전부 훑지 않고도 귀결을 확정하는 방법을 만든다. 그리고 그렇게 만든 방법이 정말 의미론과 어긋나지 않는지, 의미론이 인정하는 것을 빠짐없이 잡아내는지가 13장과 14장의 물음이다.
예고를 하나 더 해 둔다. 지금은 "느리지만 되기는 된다"는 상황이다. 9장에서 술어논리로 넘어가면 이마저 무너진다. 그때는 배당 대신 모형을 훑어야 하는데 모형은 무한히 많고 크기도 무한할 수 있다. 술어논리에 대해서는 진리표에 해당하는 방법이 아예 없고, 그것이 16장의 결정불가능성이다.
예제 57
문장문자 26 개가 든 논리식이 항진명제인지 진리표로 확인하려 한다. 1 초에 106 줄을 채우는 기계를 쓴다면 얼마나 걸리는가. 문자를 여섯 개 더 늘리면 몇 배가 되는가.
풀이 보기
줄 수는 226 이다. 210=1024≈103 이므로 226=26×220≈64×106, 곧 약 6400 만 줄이다.
1 초에 106 줄이므로 걸리는 시간은 약 64 초다.
문자를 여섯 개 늘리면 줄 수가 26=64 배가 된다. 시간도 64 배이므로 약 4096 초, 곧 한 시간이 넘는다.
여기서 읽어야 할 것은 두 수의 크기가 아니라 기울기다. 문자 여섯 개를 늘렸을 뿐인데 1 분이 1 시간이 되었다. 다시 여섯 개를 늘리면 사흘이 된다. 문제를 조금 키웠을 뿐인데 방법이 통째로 못 쓰게 되는 것, 그것이 지수적 증가의 실제 모습이다.
답이 말이 되는가. 단위부터 본다. 줄 수를 초당 줄 수로 나눴으니 남는 단위가 초이고, 실제로 초로 답했다. 크기도 어림해 본다. 226 이 6천만을 조금 넘고 기계가 초당 백만 줄이므로 예순 몇 초 — 계산한 64 초와 맞는다. 그리고 늘린 쪽 답이 원래 답의 64 배여야 하는데 64×64=4096 이므로 맞는다.
예제 58
다음 귀결이 성립하는지 판정하라. 진리표를 쓰지 말고 하라. 그리고 진리표로 했다면 몇 줄이었을지 말하라.
{𝑃1→𝑃2,𝑃2→𝑃3,…,𝑃19→𝑃20}⊨𝑃1→𝑃20
풀이 보기
결론을 거짓으로 놓는다. 𝑃1→𝑃20 이 거짓이 되는 길은 하나뿐이므로 𝑣(𝑃1)=T 이고 𝑣(𝑃20)=F 이 강제된다.
이제 전제를 왼쪽부터 본다. 𝑃1→𝑃2 가 참이고 𝑣(𝑃1)=T 이므로 𝑣(𝑃2)=T 다. 같은 이유로 𝑣(𝑃3)=T 이고, 이 강제가 오른쪽으로 계속 번져 𝑣(𝑃20)=T 에 이른다.
그런데 결론에서 𝑣(𝑃20)=F 이 강제되어 있었다. 같은 문자에 두 값이 요구되므로 모순이고, 갈림길이 한 번도 없었으므로 반례가 없다. 귀결이 성립한다.
풀이의 모양을 눈여겨보라. 같은 규칙을 열아홉 번 되풀이했을 뿐이다. 되풀이되는 규칙에 이름을 붙이고 어떤 순서로 이어 붙여도 되는지를 정하면 증명 체계가 된다. 7장이 이 규칙에 붙일 이름은 → 제거이고, 3장에서 전건 긍정이라 부른 것과 같은 것이다.
진리함수적 완전성 — 연결자 둘이면 충분하다
앞에서 𝑛 항 진리함수가 22𝑛 개라고 셌다. 연결자는 다섯 개뿐인데 그 많은 진리함수를 다 표현할 수 있는가? 답은 그렇다이고, 사실 훨씬 강한 말을 할 수 있다.
연결자들의 모임이 진리함수적으로 완전하다(또는 적정 집합이다)는 것은 그 모임의 연결자만 써서 모든 진리함수를 표현할 수 있다는 뜻이다. {¬,∧,∨,→,↔} 는 물론이고 {¬,∧} 만으로도 완전하다.
<한 칸 내려갈 때마다 연결자가 하나씩 사라지는데 표현할 수 있는 진리함수는 하나도 줄지 않는다 — 맨 아래 갈래는 더 줄이면 무너지는 자리다>[원본 보기]
왜 그런지의 뼈대만 적는다. 세 걸음이다.
첫째, 진리표에서 식을 읽어낸다. 아무 진리함수나 주어졌다 하자. 그 함수가 T 인 줄마다 "그 줄에서만 참인 식"을 하나씩 만든다. 그 줄에서 T 인 문자는 그대로, F 인 문자는 ¬ 을 붙여 전부 ∧ 로 묶으면 된다. 그런 식들을 ∨ 로 이으면 원하던 진리함수가 나온다. 참인 줄이 하나도 없으면 𝑃∧¬𝑃 를 쓴다. 여기까지에 쓰인 연결자는 ¬,∧,∨ 셋뿐이다
둘째, ∨ 를 지운다.𝜑∨𝜓 와 ¬(¬𝜑∧¬𝜓) 가 논리적으로 동치임을 진리표 네 줄로 확인하면 된다. 식에 남은 ∨ 를 하나씩 이렇게 바꾸면 {¬,∧} 만 남는다
셋째, → 와 ↔ 는 애초에 필요 없었다. 첫째 걸음이 그것들을 쓰지 않고 진행되기 때문이다
첫째 걸음에서 나오는 식이 mcs 5장의 DNF 다. mcs 는 그것을 "모든 식을 정규형으로 바꿀 수 있다"는 형태로 말했는데, 여기서는 방향이 반대다. 식에서 출발하는 것이 아니라 진리함수에서 출발한다. 그래서 결론도 다르다 — 이름 없는 진리함수까지 포함해 전부 표현된다는 것이다.
이것은 개요이지 증명이 아니다. 제대로 하려면 "그 줄에서만 참"이라는 주장을 확인해야 하고, 그러려면 식의 구조에 대한 귀납이 필요하다. 그 도구는 13장에서 세운다. 적정 집합의 완전한 분류, 그리고 어떤 연결자를 빼면 무엇을 잃는지는 19장의 몫이다. 19장에서 직관주의 논리를 다룰 때 이 이야기가 되돌아온다 — 거기서는 연결자 사이의 이런 바꿔치기가 더 이상 성립하지 않는다.
쓸모도 적어 둔다. 연결자가 둘뿐이면 논리식 전체에 대한 증명에서 따져야 할 경우도 둘뿐이다. 13장의 건전성과 14장의 완전성이 그 이득을 그대로 가져간다.
예제 59
다음 진리함수를 나타내는 식을 진리표에서 읽어내고, 그것을 {¬,∧} 만으로 다시 써라.
𝑃
𝑄
값
T
T
F
T
F
T
F
T
T
F
F
F
풀이 보기
값이 T 인 줄이 둘째와 셋째다. 각 줄에서 "그 줄에서만 참인 식"을 만든다.
둘째 줄은 𝑃 가 T, 𝑄 가 F 이므로 𝑃∧¬𝑄. 셋째 줄은 ¬𝑃∧𝑄. 두 식을 ∨ 로 잇는다.
(𝑃∧¬𝑄)∨(¬𝑃∧𝑄)
확인해 보자. 첫째 줄에서는 두 항이 모두 거짓이고, 넷째 줄에서도 그렇다. 둘째와 셋째 줄에서는 각각 한 항이 참이다. 원하던 표와 같다. 이 진리함수가 mcs 5장의 ⊕(XOR)다.
이제 ∨ 를 지운다. 𝛼∨𝛽 를 ¬(¬𝛼∧¬𝛽) 로 바꾸는 규칙에 𝛼 를 𝑃∧¬𝑄, 𝛽 를 ¬𝑃∧𝑄 로 넣으면
¬(¬(𝑃∧¬𝑄)∧¬(¬𝑃∧𝑄))
가 된다. ¬ 과 ∧ 만 남았다. 읽기는 훨씬 나빠졌다. 적정 집합을 줄이는 것은 쓰기 편하려고 하는 일이 아니라 증명할 것을 줄이려고 하는 일이다.
예제 60
{∧,∨} 는 진리함수적으로 완전하지 않다. 즉 ∧ 와 ∨ 만으로는 ¬𝑃 와 같은 값을 갖는 식을 만들 수 없다. 그 이유를 대라.
풀이 보기
모든 문장문자에 T 를 주는 배당 𝑣 를 생각하자. 주장은 이것이다. ∧ 와 ∨ 만으로 만든 식은 이 𝑣 에서 반드시 T 다.
왜 그런가. 식이 어떻게 만들어졌는지를 따라가 보면 된다. 식이 문장문자 하나뿐이면 𝑣 가 곧바로 T 를 준다. 𝜑∧𝜓 꼴이면 재료인 𝜑 와 𝜓 도 ∧ 와 ∨ 만으로 만든 것이므로 둘 다 T 이고, 그러면 ∧ 조항에 따라 전체도 T 다. 𝜑∨𝜓 꼴이어도 마찬가지다. 만들어진 순서를 따라 내려가면 어느 식도 F 가 될 기회가 없다.
그런데 ¬𝑃 는 이 𝑣 에서 F 다. 따라서 ∧ 와 ∨ 만으로 만든 어떤 식도 ¬𝑃 와 같은 값을 가질 수 없다.
이 논증의 모양을 기억해 두라. 구조에 대한 귀납이라 부르는 것이다. 성질 하나를 잡고, 기저에서 성립함을 보이고, 조항마다 재료에서 결과로 성질이 옮아감을 보였다. 13장 전체가 이 모양의 논증이고, 거기서 이 방법에 이름을 붙이고 왜 정당한지를 따진다. 여기서는 씨만 뿌려 둔다.
이 장에서 새로 나온 것
기호·용어
뜻
의미론(semantics)
문법이 정한 모양에 참·거짓을 주는 부분
정의역 · 공역
함수가 받는 것들의 모임과 내놓을 수 있는 것들의 모임
진리값 배당 𝑣
문장문자 전체에서 {T,F} 로 가는 함수. 진리표의 한 줄이 배당 하나
진리함수
진리값 몇 개를 받아 진리값 하나를 내놓는 함수. 𝑛 항 진리함수는 22𝑛 개
확장 배당 ¯𝑣
배당을 논리식 전체로 넓힌 함수. 5장의 조항마다 규칙 하나로 재귀적으로 정의된다
만족 𝑣⊨𝜑
¯𝑣(𝜑)=T 라는 뜻. 왼쪽이 배당이면 이 뜻이다
항진명제(tautology)
모든 배당에서 참인 식. mcs 는 이것을 식이 타당하다고 부른다
모순(contradiction)
모든 배당에서 거짓인 식
우연(contingent)
참인 배당도 거짓인 배당도 있는 식
논리적 동치
모든 배당에서 값이 같음. 𝜑↔𝜓 가 항진명제인 것과 같다
만족가능한 집합
원소를 전부 한꺼번에 참으로 만드는 배당이 있음. mcs 의 일관적에 해당한다
의미론적 귀결 Γ⊨𝜑
Γ 를 모두 참으로 만드는 배당이 전부 𝜑 도 참으로 만든다
⊨𝜑
왼쪽이 빈 경우. 𝜑 가 항진명제라는 뜻
반례 배당
전제를 모두 참으로, 결론을 거짓으로 만드는 배당. 귀결이 아님을 확정한다
공허하게 참
금지된 경우가 일어나지 않아 참. F→𝜓 와 ⊨𝜑 의 정의가 이것으로 설명된다
폭발(explosion)
만족가능하지 않은 Γ 는 무엇이든 귀결로 갖는다
진리함수적 완전성 · 적정 집합
그 연결자만으로 모든 진리함수를 표현할 수 있음. {¬,∧} 로 충분하다
챙겨 갈 것은 넷이다.
배당은 함수이고 진리표의 한 줄이 그 함수 하나다. 문장문자가 𝑛 개면 배당은 2𝑛 개이고, 논리식의 값은 5장의 문법 조항을 그대로 따라가는 재귀로 정해진다
F→T 가 참인 것은 취향이 아니다. 진리함수로 쓰기로 한 이상 그 칸을 채워야 하고, 다르게 채우면 ∧ 나 ↔ 가 되어 버리며, 𝑃→𝑃 조차 항진명제가 아니게 된다
Γ⊨𝜑 는 배당의 포함 관계다. 귀결이 아님은 반례 배당 하나로 끝나지만 귀결임은 모든 배당을 훑어야 한다. 왼쪽이 비면 항진명제다
진리표는 판정은 하지만 이유를 주지 않는다. 게다가 줄이 2𝑛 개라 문자 열 개를 늘리면 시간이 천 배가 된다
7장은 마지막 두 줄에 답한다. 배당을 훑는 대신 규칙을 이어 붙여 결론에 이르는 길을 만들고, 그 길 자체를 종이에 적어 남에게 건넬 수 있게 한다. 그때 쓰는 기호는 ⊨ 가 아닌 다른 기호이고, 두 기호가 결국 같은 것을 가리키는지가 13장과 14장의 물음이 된다. 이 장에서 세운 의미론이 그 물음의 한쪽 편이다.
자연연역 — 명제논리
6장은 명제논리의 물음을 전부 판정할 수 있게 해 주었다. 그러면서 마지막 절에 두 가지를 남겼다. 하나는 값이다 — 문장문자가 𝑛 개면 진리표가 2𝑛 줄이라 문자 열 개를 늘리면 시간이 천 배가 된다. 다른 하나가 더 나쁘다. 진리표는 판정을 해 주지만 이유를 말해 주지 않는다. 백만 줄을 다 확인해도 손에 남는 것은 백만 번의 확인이지 남에게 건넬 수 있는 무엇이 아니다.
이 장은 다른 길을 놓는다. 배당을 훑는 대신 규칙을 이어 붙여 전제에서 결론까지 가는 길을 종이에 적는다. 그 종이를 도출이라 하고, 이어 붙일 수 있는 규칙의 목록을 증명 체계라 한다. 5장이 문법을, 6장이 의미론을 세웠으니 이제 세 층 가운데 마지막이다. 여기서부터가 이 문서의 본체이고, 13장 이후의 정리들은 전부 이 장에서 만든 것을 대상으로 삼는다.
이 장에서 답할 질문은 다섯이다.
규칙을 이어 붙인 종이가 왜 증명이 되는가. 무엇이 그것을 검사할 수 있게 만드는가
규칙은 몇 개면 되고, 왜 하필 그것들인가
"잠깐 이렇다고 해 보자"라는 말 — 가정 — 을 어떻게 규칙으로 다루는가
귀류법은 왜 다른 규칙들과 성격이 다른가
⊢ 는 6장의 ⊨ 와 무엇이 다른가
6장에서 가져오는 것은 셋이다. 첫째, 반례를 찾을 때 값이 강제되던 그 단계 — 그것이 이 장의 → 제거 규칙이 된다. 둘째, 의미론적 연역정리 Γ∪{𝜑}⊨𝜓 ⟺ Γ⊨𝜑→𝜓 — 이것이 → 도입 규칙의 모습으로 다시 나타난다. 셋째, 폭발 — 만족가능하지 않은 집합은 무엇이든 귀결로 갖는다는 사실이 ⊥ 제거 규칙이 된다. 6장이 갈고리 셋을 걸어 두었고 이 장이 셋을 다 받는다.
5장에서 가져오는 것은 적형식의 정의와 주연결자다. 특히 주연결자를 찾는 일이 이 장에서 규칙을 고르는 기준이 된다.
그리고 이 장에는 5장과 같은 규율이 하나 있다. 도출 안에서는 참이라거나 거짓이라는 말을 한 번도 쓰지 않는다. 진리표는 여기 들어오지 않는다. 규칙은 줄에 적힌 기호열의 모양만 본다. 그렇게 따로 세워 놓아야 "증명 체계로 얻는 것과 의미론이 인정하는 것이 같은가"라는 물음이 뜻을 갖고, 그 답이 13장과 14장이다.
왜 증명 체계가 필요한가
6장 마지막에서 우리는 스무 개의 문장문자가 든 논증을 열아홉 줄로 처리했다. 진리표로 했다면 백만 줄이 넘었을 것이다. 그 차이가 어디서 왔는지 짚어 보자. 진리표는 식에 나오는 문장문자의 개수에 끌려 커지고, 그 풀이는 논증의 모양에 끌려 커졌다. 두 값은 서로 관계가 없다. 문자가 백 개여도 논증이 단순하면 몇 줄로 끝난다.
<두 길이 답하는 물음은 같은데 무엇에 끌려 커지는지가 다르다. 그리고 오른쪽 끝에만 종이 한 장이 남는다는 것 — 그 종이가 있어야 남이 검사할 수 있다>[원본 보기]
증명 체계(proof system)란 유한한 규칙의 목록과, 그 규칙만 써서 만들어진 것이 무엇인지를 정하는 약속이다. 갖춰야 할 조건은 5장에서 문법에 요구했던 것과 같다.
규칙이 유한해야 한다. 증명은 무한히 많으므로 목록으로 줄 수 없다. 만드는 방법을 준다
규칙 적용 여부를 모양만으로 판정할 수 있어야 한다. 어떤 줄이 규칙에 맞게 나왔는지를, 그 줄이 무엇을 뜻하는지 모르고도 정할 수 있어야 한다
규칙 하나하나가 작아야 한다. 규칙 하나가 "이 논증은 타당하다" 같은 큰 주장이면 검사가 원래 문제만큼 어려워진다
이 문서가 쓰는 체계는 자연연역(natural deduction)이다. 겐첸(Gentzen)이 1930년대에 세운 방식이고, 이름 그대로 사람이 실제로 논증할 때 하는 동작을 규칙으로 옮긴 것이다. "둘 다 성립하니까 '그리고'로 묶어도 된다", "이렇다고 쳐 보자", "둘 중 하나이니 각 경우를 따져 보자" 같은 동작이 그대로 규칙이 된다. 공리를 잔뜩 두고 규칙은 하나만 두는 방식(공리 체계)도 있지만, 그쪽은 짧은 논증도 길어져서 배우기에 나쁘다.
규칙 목록은 다음 절부터 하나씩 세운다. 그 전에 어휘를 한 번 손봐야 한다.
예제 61
6장 마지막 절에서 {𝑃1→𝑃2,…,𝑃19→𝑃20}⊨𝑃1→𝑃20 을 열아홉 단계로 확정했다. 그 풀이가 되풀이한 동작을 한 문장으로 적고, 그것이 진리표의 한 줄을 채우는 일과 어떻게 다른지 밝혀라.
풀이 보기
되풀이된 동작은 하나다. 𝜓→𝜒 가 참이고 𝜓 가 참이면 𝜒 도 참이라고 적는다. 풀이는 이것을 𝑃1 부터 𝑃20 까지 열아홉 번 이어 붙였다.
진리표의 한 줄을 채우는 일과 무엇이 다른가. 진리표의 한 줄은 배당 하나를 고정하고 그 배당에서 각 식의 값을 계산한다. 배당이 바뀌면 처음부터 다시 해야 하고, 그래서 줄 수가 배당 개수만큼 필요하다. 위 동작은 배당을 하나도 고정하지 않았다. "전제가 참인 배당이라면"이라는 조건만 걸어 두고 그 아래서 값을 끌어냈으므로, 배당 전체를 한꺼번에 다룬 셈이다.
답이 말이 되는가. 열아홉 단계가 백만 줄을 대신할 수 있었던 이유가 여기 있다. 한 단계가 배당 하나가 아니라 배당 전부에 대해 말하기 때문이다. 이 절약이 증명 체계의 값어치이고, 되풀이된 저 동작에 이름을 붙인 것이 곧 → 제거 규칙이다.
예제 62
누군가 종이 한 장을 건네며 "여기 도출이 있다"고 말한다. 당신은 그 종이에 적힌 𝑃, 𝑄, 𝑅 이 각각 무엇을 뜻하는지 전혀 모른다. 검사할 수 있는가? 검사할 수 있다면 무엇을 확인하는 것인가?
풀이 보기
검사할 수 있다. 그리고 그것이 증명 체계를 세우는 목적이다.
확인할 것은 줄마다 둘뿐이다. 첫째, 그 줄에 적힌 것이 5장의 적형식인가. 둘째, 그 줄의 근거가 규칙 목록의 어느 규칙과 모양이 맞는가 — 근거가 인용한 줄들과 이 줄을 견주어 규칙이 요구하는 모양인지 보는 것이다. 두 확인 어디에도 𝑃 가 무엇을 뜻하는지가 들어오지 않는다.
뜻을 모르면 못 하는 일도 분명히 해 두자. 그 도출이 쓸모 있는지는 알 수 없다. 결론이 우리가 알고 싶던 것인지, 전제가 실제로 성립하는지는 뜻을 알아야 판단할 수 있다. 검사가 뜻과 무관한 것이지 논증 전체가 그런 것은 아니다.
답이 말이 되는가. 이것이 6장과 갈리는 자리다. 진리표를 다 채운 사람은 "어긋나는 줄이 없었다"만 손에 쥐지만, 도출을 적은 사람은 남이 줄 단위로 다시 확인할 수 있는 종이를 쥔다. 그리고 검사가 이렇게 값싸기 때문에 기계에게 맡길 수도 있다.
⊥ 을 어휘에 더한다
5장은 명제논리의 어휘를 세 무리로 못 박았다 — 문장문자, 연결자 다섯, 괄호 둘. 그러면서 ⊥ 은 일부러 넣지 않고 "7장에서 필요해지면 그때 더한다"고 적어 두었다. 지금이 그때다.
왜 필요한가. 곧 세울 부정 규칙은 "가정을 놓았더니 모순이 났다"는 상황을 다룬다. 그런데 규칙은 줄에 적힌 논리식만 본다. 그러니 "모순이 났다"도 논리식 하나로 적혀 있어야 한다. 그 자리를 채울 기호가 ⊥ 이다.
어휘를 늘리는 일이 무엇인지 5장이 미리 말해 두었다. 정의에 조항 하나를 더하는 일이다. 고칠 곳이 정확히 두 군데다.
5장의 적형식 정의 — 기저 조항에 한 줄을 더한다. ⊥ 은 적형식이다. 이때 ⊥ 은 문장문자가 아니다. 문장문자는 무한히 많고 서로 다른 원자를 가리키지만 ⊥ 은 하나뿐이고 무엇도 가리키지 않는다. 재료를 하나도 받지 않는 연결자, 즉 항수가 0 인 연결자로 보아도 좋다
6장의 확장 배당 정의 — 조항 하나를 더한다. 어떤 배당 𝑣 에 대해서도 ¯𝑣(⊥)=F 이다
둘째 조항을 눈여겨보자. 값이 정의로 못 박혀 있고 배당이 손대지 못한다. 6장은 자유와 강제를 갈라 두었다 — 문장문자의 값만 자유롭게 고르고 나머지는 전부 강제된다. ⊥ 은 문장문자가 아니므로 자유 쪽에 서지 못한다.
치르는 값도 적어 두자. 5장은 "모든 적형식에 대하여" 꼴의 주장을 증명할 때 확인할 갈래가 여섯(기저 하나와 연결자 다섯)이라고 했다. 이제 일곱이 된다. 13장과 14장의 증명이 그만큼 길어진다. 기호 하나를 더하는 일은 공짜가 아니다.
낱말도 하나 정리한다. 6장은 모든 배당에서 거짓인 식을 모순이라 불렀다. ⊥ 은 그런 식이지만, 모순인 식이 ⊥ 뿐인 것은 아니다 — 𝑃∧¬𝑃 도 모순이다. "모순"은 성질의 이름이고 ⊥ 은 어휘의 기호다. 읽을 때는 "모순" 또는 "부조리"라고 읽는다.
예제 63
⊥ 을 더한 정의 아래 다음 각각이 적형식인지 판정하라. 적형식이면 구성열을, 아니면 어느 조항도 그것을 만들지 못함을 보여라. (가) ⊥ (나) ¬⊥ (다) (𝑃→⊥) (라) ⊥𝑃 (마) (⊥∧⊥)
풀이 보기
판정 기준은 5장 그대로다. 달라진 것은 기저 조항에 갈래가 하나 늘었다는 것뿐이다.
(가) 적형식이다. 구성열은 ⊥ 한 항이고 근거는 새 기저 조항이다.
(나) 적형식이다. 구성열은 ⊥,¬⊥ 이다. 둘째 항은 첫째 항에 ¬ 조항을 쓴 것이다. 괄호가 없는 것이 맞다 — ¬ 조항은 괄호를 두르지 않는다.
(다) 적형식이다. 구성열은 𝑃,⊥,(𝑃→⊥) 이다. ⊥ 이 이항 조항의 재료로 쓰일 수 있다는 점을 확인해 두자. 기저 조항이 만든 것은 무엇이든 재료가 된다.
(라) 적형식이 아니다. 기호 두 개짜리 기호열이다. 기저 조항의 결과는 ⊥ 하나이거나 문장문자 하나이므로 기호가 둘일 수 없고, ¬ 로 시작하지 않으며, 여는 괄호로 시작하지 않으므로 이항 조항도 아니다. 세 갈래가 다 막혔다.
(마) 적형식이다. 구성열은 ⊥,(⊥∧⊥) 이다. 뜻으로 보면 쓸 일이 없는 식이지만 문법은 뜻을 보지 않는다. 5장의 규율이 여기서도 그대로다.
예제 64
⊥ 을 새로 들이지 말고 𝑃∧¬𝑃 를 대신 쓰면 안 되는가? 두 식은 모든 배당에서 거짓이므로 값은 같다. 그런데도 기호를 하나 더 두는 이유를 대라.
풀이 보기
값이 같다는 것은 맞다. 곤란은 값이 아니라 규칙을 적을 때 생긴다.
곧 세울 부정 도입 규칙은 "𝜑 를 가정해 모순을 얻으면 ¬𝜑 를 적어도 된다" 꼴이다. 여기서 모순 자리에 𝑃∧¬𝑃 를 넣어 보자. 왜 하필 𝑃 인가? 도출 어디에도 𝑃 가 나오지 않는데 𝑃 를 끌어들여야 한다. 그럼 도식으로 "어떤 𝜓 에 대해 𝜓∧¬𝜓"라고 적어야 하는데, 그러면 규칙 하나가 아니라 𝜓 마다 하나씩 무한히 많은 규칙이 된다.
폭발률도 마찬가지다. "𝑃∧¬𝑃 에서 무엇이든"은 규칙이 되지만 𝑄∧¬𝑄 에서 출발하려면 또 다른 규칙이 필요하다.
그래서 거래를 한다. 어휘에 기호 하나를 더하는 값을 치르고 규칙 목록을 유한하게 유지한다. 증명 체계의 첫째 조건이 규칙이 유한할 것이었으니 값을 치를 만하다.
답이 말이 되는가. 5장이 ⊥ 을 미뤄 둔 이유도 이제 보인다. 문법만 세우는 자리에서는 ⊥ 이 아무 일도 하지 않는다. 기호는 그것이 일을 하기 시작하는 자리에서 도입하는 것이 옳다.
도출 — 줄, 근거, 그리고 가정의 범위
이제 "규칙을 이어 붙인 종이"가 정확히 무엇인지 정한다.
도출(derivation)이란 줄의 유한한 목록이다. 각 줄에는 논리식 하나와 근거 하나가 붙는다. 근거는 세 종류뿐이다.
전제 — 논증이 처음부터 주어진 것으로 삼는 식
가정 — "잠깐 이렇다고 해 보자"로 우리가 놓는 식. 놓는 순간부터 범위(scope)가 열린다
규칙 이름과 인용한 줄 번호 — 앞선 줄들에서 규칙 하나를 써서 이 줄을 얻었다는 표시
전제와 가정에는 아무 적형식이나 올 수 있다. 아무 제약이 없다는 것이 이상해 보이지만 이상하지 않다 — 마음대로 놓은 가정은 나중에 방출하거나 열린 채로 남기거나 둘 중 하나인데, 열린 채로 남으면 결론이 그 가정에 기댄 것으로 셈된다. 공짜로 얻는 것은 없다.
긴 도출은 표로 적는다. 줄 번호, 논리식, 근거 세 칸이고, 논리식 칸 앞의 세로 막대가 열려 있는 가정의 범위를 나타낸다. 막대가 하나면 가정 하나 아래, 둘이면 가정 둘 아래다. 막대가 끝나는 곳에서 그 가정이 닫힌다. 이 적는 방식을 피치(Fitch) 스타일이라 한다.
<오른쪽 칸을 보라 — 1번부터 4번까지는 가정 1 에 기대고 있고 5번만 기댄 것이 없다. 방출이란 그 칸을 비우는 일이고, 칸이 빈 줄만 그 자체로 주장할 수 있다>[원본 보기]
그림의 오른쪽 칸이 도출의 핵심 장부다. 줄마다 그 줄이 기대고 있는 가정이 있고, 규칙은 그 장부를 갱신한다. 대부분의 규칙은 재료가 기댄 것을 그대로 물려주고, 방출 규칙만 목록에서 하나를 빼낸다. 이 장부를 손으로 적을 필요는 없다 — 세로 막대가 같은 일을 하고 있기 때문이다.
규칙 하나를 따로 보일 때는 표 대신 나무로 그린다. 위가 재료이고 가로줄 아래가 결과이며, 오른쪽에 규칙 이름을 적는다.
𝜑→𝜓𝜑𝜓→E
두 표기는 같은 것을 적는다. 나무는 규칙 하나의 모양을 보이기에 좋고, 표는 여러 규칙을 이어 붙인 긴 도출을 적기에 좋다. 이 문서는 그렇게 나눠 쓴다.
도출을 검사하는 절차도 여기서 못 박아 두자. 줄마다 물을 것은 둘이다.
<이 절차에 진리값도 배당도 진리표도 나오지 않는다는 것을 확인하라. 검사하는 사람은 P 가 무엇을 뜻하는지 몰라도 되고, 그래서 기계도 같은 검사를 할 수 있다>[원본 보기]
둘째 물음이 이 절에서 가장 잘 틀리는 자리다. 이미 닫힌 범위 안의 줄은 밖에서 인용할 수 없다. 그 줄은 가정 아래서만 얻은 것이고, 가정이 닫히면 그 줄이 서 있던 바닥이 없어진다.
<두 잘못이 겉보기에 아주 다른데 원인은 같다 — 줄 하나가 무엇에 기대고 있는지를 놓친 것이다. 오른쪽 잘못은 결론을 한 칸 약하게 적으면 곧바로 옳은 도출이 된다>[원본 보기]
예제 65
다음 도출에서 줄마다 기대고 있는 가정을 적어라. 그리고 어느 줄이 전제 없이 주장할 수 있는 줄인지 말하라. 규칙 이름은 다음 절에서 정하므로 지금은 근거가 가리키는 줄 번호와 세로 막대만 따라가면 된다.
줄
논리식
근거
1
│ 𝑃
가정
2
│ │ 𝑄
가정
3
│ │ 𝑃
1 R
4
│ 𝑄→𝑃
2–3 →I
5
𝑃→(𝑄→𝑃)
1–4 →I
풀이 보기
요령은 하나다. 그 줄을 감싸고 있는 세로 막대의 개수만큼 가정에 기대고 있다.
1번 줄 — 막대가 하나이고 그 막대가 1번 줄에서 시작한다. 기대는 것은 가정 1 자신이다.
2번 줄 — 막대가 둘이다. 가정 1 과 가정 2 둘 다에 기댄다. 3번 줄도 막대가 둘이므로 같다. 3번 줄이 인용한 1번 줄은 바깥 막대 안에 있고 아직 닫히지 않았으므로 손이 닿는다.
4번 줄 — 막대가 하나로 줄었다. 안쪽 가정 2 가 방출되었기 때문이다. 기대는 것은 가정 1 뿐이다.
5번 줄 — 막대가 없다. 가정 1 도 방출되었으므로 기대는 것이 하나도 없다. 전제도 없었으므로 이 줄은 그 자체로 주장할 수 있는 유일한 줄이다.
답이 말이 되는가. 방출은 안쪽부터 바깥쪽으로 일어난다. 가정 2 를 열어 놓은 채 가정 1 을 먼저 닫을 수는 없다 — 그러면 막대가 서로 엇갈리게 되는데, 그런 모양은 애초에 적을 수 없다. 이 "엇갈릴 수 없음"이 범위 규칙의 전부다.
예제 66
도출의 정의만 가지고 다음에 답하라. (가) 같은 논리식이 두 줄에 나타나도 되는가. (나) 전제가 하나도 없는 도출이 있을 수 있는가. (다) 줄이 무한히 많은 도출이 있을 수 있는가. (라) 도출의 마지막 줄이 열린 범위 안에 있어도 되는가.
풀이 보기
(가) 된다. 정의는 줄의 목록이라고만 했지 서로 달라야 한다고 하지 않았다. 앞 예제의 1번과 3번 줄이 실제로 같은 식이다. 반복 규칙 R 이 있는 것도 그래서다.
(나) 있을 수 있다. 앞 예제가 그런 도출이다. 전제 칸이 하나도 없고 가정 둘을 열었다가 둘 다 닫았다. 이런 도출이 주는 식을 뒤에서 정리라 부른다.
(다) 없다. 정의가 유한한 목록이라고 못 박았다. 이 조건은 그냥 편의가 아니다 — 도출이 유한하다는 사실이 15장의 컴팩트성 정리를 떠받친다. 5장에서 "적형식은 유한하다"와 짝을 이루는 사실이다.
(라) 되기는 한다. 다만 그때 얻은 것은 "전제에서 그 식이 나온다"가 아니라 "전제와 그 열린 가정들에서 그 식이 나온다"다. 열린 가정은 사실상 전제와 같은 구실을 하므로, 결론을 적을 때 그것들을 빠짐없이 세어야 한다. 앞 그림의 오른쪽 잘못이 정확히 이것을 빠뜨린 경우다.
네 답이 모두 정의의 낱말 하나씩에 걸려 있다는 점을 눈여겨보자. "목록", "전제가 없어도 되는가", "유한한", "열린". 정의를 읽을 때는 낱말 하나하나가 무엇을 허용하고 무엇을 막는지 따져 보는 것이 좋다.
가정을 열지 않는 규칙들
규칙은 모두 열세 개다. 그중 아홉은 가정을 열지도 닫지도 않는다 — 앞선 줄에서 새 줄 하나를 얻을 뿐이다. 이 절에서 그중 일곱을 세우고, ⊥ 이 관련된 둘은 부정과 함께 다룬다.
<규칙 목록은 외울 것이 아니라 자리를 채운 표다. 연결자마다 만드는 법과 쓰는 법이 하나씩이고, ⊥ 만 도입 자리가 비어 있다. 그리고 표 밖의 두 규칙 가운데 IP 만 성격이 다르다>[원본 보기]
표가 말하는 규칙성이 이 절의 요점이다. 연결자마다 규칙이 둘씩이고, 도입 규칙은 결론에 그 연결자가 있고 제거 규칙은 전제에 그 연결자가 있다. 그래서 규칙을 고르는 기준이 5장의 주연결자가 된다. 얻으려는 식의 주연결자를 보면 도입 규칙이 나오고, 손에 든 식의 주연결자를 보면 제거 규칙이 나온다. 8장의 전략이 통째로 이 관찰 위에 선다.
논리곱부터. 도입은 둘을 묶고 제거는 하나를 떼어낸다.
𝜑𝜓𝜑∧𝜓∧I𝜑∧𝜓𝜑∧E𝜑∧𝜓𝜓∧E
∧E 를 두 벌 적었다. 어느 쪽을 떼어내도 되므로 규칙 하나가 두 모양을 갖는 것이고, 세는 방식에 따라 둘로 세기도 한다. 이 문서는 하나로 센다.
논리합의 도입도 두 모양이다. 재료 하나에서 원하는 아무 식이나 붙여 논리합을 만들 수 있다.
𝜑𝜑∨𝜓∨I𝜑𝜓∨𝜑∨I
𝜓 가 어디서 왔는지 묻고 싶어지는 자리다. 아무 데서도 오지 않았다. 𝜑 를 손에 쥐었으면 𝜑∨𝜓 는 무엇을 붙이든 얻을 수 있다. 6장의 ∨ 조항이 "하나라도 참이면 참"이었으니 이상한 규칙이 아니다. 정보를 버리는 규칙이라고 생각하면 된다.
함의의 제거는 3장에서 전건 긍정이라 부른 것이고 앞 절에서 나무로 이미 보았다. 𝜑→𝜓 와 𝜑 에서 𝜓 를 얻는다. 6장에서 반례를 찾을 때 값이 강제되던 그 단계가 이 규칙이다.
동치는 두 조건문을 묶고 푸는 규칙이다.
𝜑→𝜓𝜓→𝜑𝜑↔𝜓↔I𝜑↔𝜓𝜑𝜓↔E
↔E 도 반대 방향이 있다 — 𝜑↔𝜓 와 𝜓 에서 𝜑 를 얻는다. 책에 따라 ↔I 를 가정을 여는 꼴로 두기도 하는데, 얻어지는 것은 같다. 이 문서는 위 모양으로 둔다.
마지막은 반복이다. 앞선 줄의 식을 그대로 다시 적는다.
𝜑𝜑R
아무것도 하지 않는 규칙이 왜 필요한가. 범위 때문이다. 바깥에서 이미 얻은 식을 안쪽 범위에서 결론으로 써야 할 때가 있는데, 그러려면 그 식이 안쪽 범위의 줄로 한 번 적혀야 한다. 앞 절 예제의 3번 줄이 그 자리다.
예제 67
다음 도출의 근거 칸이 비어 있다. 채워라. 보이려는 것은 {𝑃∧𝑄,𝑃→𝑅}⊢𝑅∧𝑄 다.
줄
논리식
근거
1
𝑃∧𝑄
전제
2
𝑃→𝑅
전제
3
𝑃
?
4
𝑅
?
5
𝑄
?
6
𝑅∧𝑄
?
풀이 보기
줄마다 "이 식이 앞선 어느 줄에서 어느 규칙으로 나오는가"를 묻는다. 규칙을 찾는 요령은 이 줄의 식과 앞선 줄의 식을 견주어 어느 연결자가 사라지거나 생겼는지 보는 것이다.
3번 줄 — 𝑃 는 1번 줄 𝑃∧𝑄 의 왼쪽이다. ∧ 가 사라졌으므로 제거 규칙이다. 근거는 1 ∧E.
4번 줄 — 𝑅 은 2번 줄의 후건이고, 그 전건 𝑃 가 3번 줄에 있다. 근거는 2, 3 →E.
5번 줄 — 3번 줄과 같은 요령으로 1번 줄에서 오른쪽을 떼어냈다. 근거는 1 ∧E.
6번 줄 — ∧ 가 새로 생겼고 두 조각이 4번과 5번 줄에 있다. 근거는 4, 5 ∧I.
답이 말이 되는가. 열린 가정이 하나도 없고 전제는 둘 다 Γ 의 원소이며 마지막 줄이 목표한 식이다. 그리고 규칙을 고를 때마다 본 것이 주연결자 하나였다는 점을 확인해 두자. 8장이 이 요령을 절차로 만든다.
예제 68
다음 두 도출은 각각 어디가 틀렸는가. 규칙의 모양과 견주어 정확히 짚어라.
(가) 1. 𝑃∨𝑄 (전제) / 2. 𝑃 (1 ∨E)
(나) 1. 𝑃→𝑄 (전제) / 2. 𝑄 (전제) / 3. 𝑃 (1, 2 →E)
풀이 보기
(가) ∨E 라는 이름을 붙였지만 그 규칙의 모양이 아니다. ∨E 는 재료를 셋 받는다 — 논리합 하나와, 두 갈래에서 각각 같은 결론에 이른 도출 둘이다. 여기서는 재료가 하나뿐이다.
더 근본적으로, 논리합에서 한쪽을 떼어내는 규칙은 없다. 있어서도 안 된다. 𝑃∨𝑄 가 성립한다고 𝑃 가 성립하는 것은 아니기 때문이다. ∧E 와 헷갈리기 쉬운데, 둘의 차이가 곧 ∧ 와 ∨ 의 차이다.
(나) →E 는 𝜑→𝜓 와 𝜑 에서 𝜓 를 얻는다. 여기서는 후건 𝑄 를 가지고 전건 𝑃 를 얻으려 했다. 규칙이 요구하는 것은 전건이지 후건이 아니다.
3장의 낱말로 하면 이것이 후건 긍정 오류다. 6장의 낱말로 하면 {𝑃→𝑄,𝑄}⊨𝑃 가 아니고, 반례 배당은 𝑣(𝑃)=F,𝑣(𝑄)=T 다. 같은 잘못을 세 장이 각각 다른 말로 잡아낸 셈이다.
두 잘못의 공통점을 짚어 두자. 둘 다 규칙 이름은 적혀 있는데 그 규칙의 모양이 아니다. 검사의 첫째 물음에서 걸린다. 이름을 적었다고 규칙을 쓴 것이 아니다.
가정 방출 — →I
여기가 이 장에서 가장 걸리는 곳이다. 앞 절의 규칙들은 "앞선 줄에서 새 줄 하나"라는 모양이었다. 이제 재료가 줄 하나가 아니라 도출 한 토막인 규칙이 나온다.
함의 도입.𝜑 를 가정으로 놓고 그 범위 안에서 𝜓 를 얻었다면, 가정을 닫고 𝜑→𝜓 를 적어도 된다.
[𝜑]1⋮𝜓𝜑→𝜓→I,1
나무에서 대괄호와 어깨번호가 방출을 나타낸다. [𝜑]1 는 "가정 1 로 놓았고 번호 1 이 붙은 규칙에서 닫혔다"는 뜻이다. 피치 스타일에서는 세로 막대가 끝나는 것이 같은 표시다.
이 규칙을 정확히 읽는 것이 중요하다. 𝜑→𝜓 를 적는 순간 𝜑 를 주장한 것이 아니다. 얻은 것은 "𝜑 라면 𝜓"뿐이고, 도출 안에서 𝜑 는 이제 없는 것이 된다. 앞 그림에서 마지막 줄만 기댄 가정 칸이 비어 있던 것이 이 말이다.
6장의 갈고리가 여기서 걸린다. 6장은 Γ∪{𝜑}⊨𝜓 와 Γ⊨𝜑→𝜓 가 같은 말이라는 것을 의미론적 연역정리로 보였다. →I 는 그 정리의 한쪽 방향을 증명 체계 안에서 규칙으로 못 박은 것이고, →E 가 반대 방향이다. 두 층에서 같은 모양의 사실이 따로 나타난 것인데, 이 둘이 정말 같은 것을 말하는지는 아직 증명되지 않았다. 그것이 13장과 14장이다.
실무에서 이 규칙은 거꾸로 쓴다. 목표가 𝜑→𝜓 이면 곧바로 𝜑 를 가정으로 열고 𝜓 를 목표로 삼는다. 무엇을 가정할지 고민할 일이 없다는 것이 자연연역의 큰 이점이고, 8장이 이 요령을 전략으로 다듬는다.
예제 69
{𝑃→𝑄,𝑄→𝑅}⊢𝑃→𝑅 을 보이는 도출을 적어라.
풀이 보기
목표 𝑃→𝑅 의 주연결자가 → 이므로 도입 규칙을 쓴다. 즉 𝑃 를 가정으로 열고 그 안에서 𝑅 을 얻으면 된다. 안에서 무엇을 할지는 전제 둘의 주연결자를 보면 나온다 — 둘 다 → 이므로 제거 규칙을 쓸 자리다.
줄
논리식
근거
1
𝑃→𝑄
전제
2
𝑄→𝑅
전제
3
│ 𝑃
가정
4
│ 𝑄
1, 3 →E
5
│ 𝑅
2, 4 →E
6
𝑃→𝑅
3–5 →I
4번과 5번 줄이 1번과 2번 줄을 인용했다. 바깥의 줄을 안쪽 범위에서 인용하는 것은 늘 허용된다 — 그 줄들이 서 있는 바닥이 없어진 적이 없기 때문이다. 막을 것은 반대 방향뿐이다.
6번 줄에서 가정 1 이 방출되었고, 남은 것은 전제 둘뿐이다. 보이려던 것이 정확히 그것이다.
답이 말이 되는가. 6장에서 같은 논증을 반례 탐색으로 확정했을 때 "𝑣(𝑃)=T 라 하자"로 시작했다. 그 "라 하자"가 여기서 3번 줄의 가정이 되었다. 6장의 풀이가 하던 일을 규칙으로 못 박으면 이 도출이 나온다.
예제 70
→I 와 →E 를 각각 한 번씩 써서 다음 둘을 보여라. (가) Γ∪{𝜑}⊢𝜓 이면 Γ⊢𝜑→𝜓 이다. (나) Γ⊢𝜑→𝜓 이면 Γ∪{𝜑}⊢𝜓 이다.
풀이 보기
묻는 것은 특정 도출이 아니라 도출을 고쳐 만드는 방법이다. 재료로 주어지는 것이 도출 하나이고, 내놓아야 하는 것도 도출 하나다.
(가) 재료는 Γ 와 𝜑 를 전제로 삼아 𝜓 에 이르는 도출이다. 그 도출에서 𝜑 를 전제 자리에서 빼고 가정으로 다시 놓는다. 즉 𝜑 를 가정으로 열고 그 범위 안에 원래 도출을 통째로 넣는다. 마지막 줄이 𝜓 이므로 거기서 →I 를 써서 가정을 닫으면 𝜑→𝜓 가 나온다. 남은 전제는 Γ 뿐이다.
(나) 재료는 Γ 를 전제로 삼아 𝜑→𝜓 에 이르는 도출이다. 여기에 𝜑 를 전제로 한 줄 더 붙이고, 두 줄에 →E 를 쓰면 𝜓 가 나온다. 전제는 Γ 와 𝜑 다.
두 방향을 합치면 Γ∪{𝜑}⊢𝜓 와 Γ⊢𝜑→𝜓 는 같은 말이다. 6장의 의미론적 연역정리와 문장이 똑같다. 다른 것은 기호 하나 — 거기서는 ⊨ 였고 여기서는 ⊢ 다.
답이 말이 되는가. 두 층이 같은 모양의 사실을 각자 갖고 있다는 것은 좋은 징조이지 증명이 아니다. 이 절의 논증 어디에도 배당이 나오지 않았고, 6장의 증명 어디에도 규칙이 나오지 않았다. 같은 문장이 두 번 나온 것이지 한 번 증명된 것이 아니다.
모순 — ¬I, ¬E, ⊥E
부정 규칙 셋이 ⊥ 을 매개로 맞물린다. ¬E 가 ⊥ 을 만들고, ¬I 가 그것을 받아 부정을 만들고, ⊥E 가 ⊥ 을 아무 데로나 흘려보낸다.
부정 제거. 어떤 식과 그 부정을 둘 다 손에 쥐면 ⊥ 을 적는다. 폭발률.⊥ 에서는 무엇이든 적는다.
𝜑¬𝜑⊥¬E⊥𝜓⊥E
부정 도입.𝜑 를 가정으로 놓고 그 범위 안에서 ⊥ 을 얻었다면, 가정을 닫고 ¬𝜑 를 적는다.
[𝜑]1⋮⊥¬𝜑¬I,1
→I 와 모양이 똑같다. 다른 것은 범위 안에서 얻어야 하는 것이 𝜓 가 아니라 ⊥ 이라는 점과, 결과에 → 대신 ¬ 이 붙는다는 점뿐이다. 가정을 여닫는 장치는 하나이고 두 규칙이 그것을 나눠 쓴다. 그래서 앞 절에서 익힌 범위 규칙이 그대로 적용된다.
⊥E 는 6장의 폭발을 그대로 옮긴 것이다. 6장은 만족가능하지 않은 집합이 무엇이든 귀결로 갖는다는 것을 정의에서 끌어냈고, 그때 "이상하게 느껴지는 것이 정상"이라고 적었다. 여기서도 마찬가지다. 이상하게 느껴지는 까닭도 같다 — 규칙이 관련성에 대해 아무 말도 하지 않기 때문이다. 19장의 관련성 논리가 되돌아와 손대는 자리가 두 층 모두에 하나씩 생긴 셈이다.
예제 71
{𝑃→𝑄,¬𝑄}⊢¬𝑃 를 보이는 도출을 적어라. 3장에서 후건 부정이라 부른 형식이다.
풀이 보기
목표 ¬𝑃 의 주연결자가 ¬ 이므로 도입 규칙을 쓴다. 즉 𝑃 를 가정으로 열고 그 안에서 ⊥ 을 얻으면 된다. ⊥ 을 얻는 길은 ¬E 하나뿐이므로 어떤 식과 그 부정을 나란히 만들어야 하는데, 전제에 ¬𝑄 가 있으니 𝑄 를 만들면 된다.
줄
논리식
근거
1
𝑃→𝑄
전제
2
¬𝑄
전제
3
│ 𝑃
가정
4
│ 𝑄
1, 3 →E
5
│ ⊥
4, 2 ¬E
6
¬𝑃
3–5 ¬I
5번 줄의 근거를 "4, 2"로 적었다. ¬E 는 식과 그 부정을 받으므로 순서는 상관없지만, 규칙의 모양대로 𝜑 를 먼저 적는 습관을 들이면 검사하기 쉽다.
답이 말이 되는가. 목표를 보고 규칙을 고른 것이 두 번이다 — 목표가 ¬𝑃 라서 ¬I, 그 안의 목표가 ⊥ 이라서 ¬E. 목표의 주연결자가 규칙을 부르고, 그 규칙이 새 목표를 준다. 이 되풀이가 8장의 뼈대다.
예제 72
{𝑃,¬𝑃}⊢𝑄 를 보여라. 𝑄 는 전제와 아무 관계도 없는 식이다. 이것이 6장에서 본 것과 같은 일임을 밝혀라.
풀이 보기
도출은 네 줄이다.
줄
논리식
근거
1
𝑃
전제
2
¬𝑃
전제
3
⊥
1, 2 ¬E
4
𝑄
3 ⊥E
6장에서 본 것은 이랬다. {𝑃,¬𝑃} 를 모두 참으로 만드는 배당이 하나도 없으므로 "그런 배당은 전부 𝑄 도 참으로 만든다"는 요구를 어길 배당이 없고, 따라서 {𝑃,¬𝑃}⊨𝑄 다. 공허하게 참인 경우였다.
두 논증이 하는 말은 같은데 근거가 전혀 다르다. 6장은 어길 배당이 없다고 했고, 여기서는 규칙 둘을 이어 붙였다고 한다. 이쪽에는 배당이라는 낱말이 한 번도 나오지 않는다.
어디가 이상한지도 6장과 같은 자리다. 이상한 것은 규칙이 아니라 "따라 나온다"에서 우리가 기대하는 관련성이다. ⊥E 를 빼면 이 도출은 막히지만, 그러면 다른 곳에서 잃는 것이 생긴다. 무엇을 잃고 무엇을 얻는지 따지는 것이 19장의 일이다.
덧붙여 하나. ⊥E 의 결론 자리에 오는 𝜓 는 도출의 다른 어디에도 나올 필요가 없다. ∨I 에서 새 식을 붙였던 것과 같은 종류의 자유다. 규칙 가운데는 이렇게 재료에 없던 식을 결론에 끌어들이는 것이 몇 개 있다.
경우 나누기 — ∨E
논리합을 손에 쥐었을 때 할 수 있는 일은 하나다. 두 경우로 나누어 각각 따져 보고, 어느 쪽이든 같은 결론에 이르면 그 결론을 적는다. 일상에서 늘 하는 추론이고, 규칙으로 적으면 재료가 셋인 규칙이 된다.
𝜑∨𝜓[𝜑]1⋮𝜒[𝜓]2⋮𝜒𝜒∨E,1,2
재료 셋은 논리합 하나와 도출 토막 둘이다. 토막마다 가정을 하나씩 열고 닫으므로 이 규칙도 방출 규칙이다. 다만 앞 절의 둘과 달리 방출된 가정이 결론의 모양에 흔적을 남기지 않는다.→I 는 방출한 가정을 화살표 왼쪽에 적어 두었지만, ∨E 의 결론 𝜒 에는 𝜑 도 𝜓 도 나타나지 않는다.
피치 스타일로 적으면 범위가 둘 이어진다. 첫 갈래의 막대가 닫히고 둘째 갈래의 막대가 열리며, 두 막대의 마지막 줄이 같은 식이어야 한다. 그 식이 결론이 된다.
조심할 것 하나. 두 갈래에서 얻은 결론이 다르면 규칙을 쓸 수 없다. 𝜑 쪽에서 𝜒1 을, 𝜓 쪽에서 𝜒2 를 얻었다면 규칙이 요구하는 모양이 아니다. 그럴 때는 두 갈래 모두에서 𝜒1∨𝜒2 를 얻도록 각 갈래에 ∨I 를 한 번씩 더 쓰면 된다.
예제 73
{𝑃∨𝑄,𝑃→𝑅,𝑄→𝑅}⊢𝑅 을 보이는 도출을 적어라.
풀이 보기
손에 든 것 가운데 주연결자가 ∨ 인 식이 있으므로 ∨E 를 쓸 자리다. 두 갈래에서 각각 𝑅 에 이르면 된다.
줄
논리식
근거
1
𝑃∨𝑄
전제
2
𝑃→𝑅
전제
3
𝑄→𝑅
전제
4
│ 𝑃
가정
5
│ 𝑅
2, 4 →E
6
│ 𝑄
가정
7
│ 𝑅
3, 6 →E
8
𝑅
1, 4–5, 6–7 ∨E
8번 줄의 근거가 셋을 인용한다. 논리합이 적힌 1번 줄, 첫 갈래 4–5, 둘째 갈래 6–7 이다. 규칙의 재료가 셋이므로 근거도 셋이다.
5번과 7번 줄이 같은 식이라는 점을 확인하라. 이것이 어긋나면 8번 줄을 적을 수 없다.
답이 말이 되는가. 4번 줄과 6번 줄에서 각각 가정을 열었고 둘 다 닫혔다. 8번 줄이 기대는 것은 전제 셋뿐이다. 그리고 두 갈래를 따로 계산한 것이 진리표로 치면 "𝑃 가 참인 줄들"과 "𝑄 가 참인 줄들"을 나눠 본 것에 해당한다. 경우 나누기는 진리표를 쪼개는 일을 규칙으로 옮긴 것이다.
4번 줄의 근거가 재료를 둘만 인용했다. ∨E 는 재료가 셋이고, 빠진 것은 둘째 갈래다. 𝑄 를 가정한 도출 토막이 없다.
왜 그것이 없으면 안 되는가. 1번 줄이 말하는 것은 "𝑃 이거나 𝑄"뿐이고 어느 쪽인지는 모른다. 𝑃 쪽만 따져서는 𝑄 인 경우에 결론이 성립하는지 알 수 없다. 경우를 나누었으면 나눈 경우를 빠짐없이 닫아야 한다.
고치면 이렇다. 3번 줄 뒤에 𝑄 를 가정으로 열고, ∨I 로 𝑄∨𝑃 를 얻은 뒤, 세 재료를 모두 인용해 ∨E 를 쓴다. 두 갈래에서 쓴 ∨I 의 모양이 서로 다르다는 점도 눈여겨보라 — 한쪽은 뒤에 붙이고 한쪽은 앞에 붙인다.
답이 말이 되는가. 이 잘못은 앞 절 (가)의 잘못과 뿌리가 같다. 둘 다 논리합에서 한쪽만 골라 쓴 것이다. ∨ 를 손에 쥐고 할 수 있는 일은 경우를 전부 나누는 것뿐이라는 점을 기억하면 두 잘못을 함께 피할 수 있다.
IP — 이 규칙만 성격이 다르다
마지막 규칙이다. 간접증명(indirect proof), 줄여서 IP.¬𝜑 를 가정으로 놓고 그 범위 안에서 ⊥ 을 얻었다면, 가정을 닫고 𝜑 를 적는다.
[¬𝜑]1⋮⊥𝜑IP,1
¬I 와 견주어 보라. 재료의 모양이 똑같다 — 가정 하나에서 ⊥ 을 얻는 것. 다른 것은 가정과 결론에서 ¬ 이 한 칸씩 옮겨 간 것뿐이다.
<두 규칙의 재료가 같고 다른 것은 마지막 한 걸음뿐이다. ¬I 는 얻은 것을 그대로 적고, IP 는 ‘아니라고 하면 모순이다’ 에서 ‘그렇다’ 로 건너뛴다. 그 한 걸음이 이 체계를 고전 논리로 만든다>[원본 보기]
왜 이 규칙만 성격이 다른가. 나머지 열두 규칙은 전부 연결자 하나의 뜻을 풀어 쓴 것이다. ∧I 는 ∧ 를 만드는 법이고 ∧E 는 쓰는 법이며, 도입과 제거가 짝을 이루어 그 연결자가 무엇인지를 함께 정한다. IP 는 그 표에 자리가 없다. 어느 연결자의 도입도 제거도 아니다.
IP 가 말하는 것은 연결자의 뜻이 아니라 태도에 가깝다. "𝜑 가 아니라고 하면 모순이다"에서 "𝜑 다"로 건너뛰어도 좋다는 것. 그 사이에는 "참과 거짓 말고 다른 것은 없다"는 전제가 놓여 있다. 6장의 배당이 값을 {T,F} 둘 중 하나로만 주었으니 그 전제는 이미 의미론에 들어 있었지만, 증명 체계에서는 규칙으로 따로 넣어야 한다.
그래서 이런 실험이 뜻을 갖는다. IP 를 빼면 어떻게 되는가. 남은 열두 규칙은 그대로 돌아간다. 다만 증명되는 것이 줄어든다. 대표적으로 배중률 𝑃∨¬𝑃 를 더는 얻지 못한다. 그렇게 줄인 체계가 직관주의 논리이고, 19장이 그 체계를 다룬다. 거기서 이 절로 되돌아온다.
19장을 미리 한 줄로 말해 두면 이렇다. 직관주의는 "증명된 것만 주장한다"는 입장이고, 그 입장에서는 "¬𝜑 가 아니다"가 "𝜑 를 증명했다"를 뜻하지 않는다. IP 는 정확히 그 건너뜀을 허락하는 규칙이므로 가장 먼저 버려진다.
예제 75
배중률 ⊢𝑃∨¬𝑃 를 보이는 도출을 적어라. 전제가 하나도 없다.
풀이 보기
목표의 주연결자가 ∨ 이므로 ∨I 를 쓰고 싶지만, 그러려면 𝑃 나 ¬𝑃 가운데 하나를 손에 쥐어야 한다. 전제가 없으니 둘 다 없다. 막혔으므로 IP 를 쓴다. 목표 전체의 부정을 가정한다.
줄
논리식
근거
1
│ ¬(𝑃∨¬𝑃)
가정
2
│ │ 𝑃
가정
3
│ │ 𝑃∨¬𝑃
2 ∨I
4
│ │ ⊥
3, 1 ¬E
5
│ ¬𝑃
2–4 ¬I
6
│ 𝑃∨¬𝑃
5 ∨I
7
│ ⊥
6, 1 ¬E
8
𝑃∨¬𝑃
1–7 IP
안쪽에서 한 일을 보라. 𝑃 를 가정해 보니 곧바로 목표가 나왔고(3번 줄), 그것이 1번 줄과 부딪혀 ⊥ 이 되었다. 그러면 ¬I 로 ¬𝑃 를 얻는다(5번 줄). 이제 ¬𝑃 를 손에 쥐었으니 다시 ∨I 로 목표를 만들 수 있고(6번 줄), 그것도 1번 줄과 부딪힌다.
4번과 7번 줄이 둘 다 1번 줄을 인용했다. 1번 줄은 바깥 막대 안에 있고 그 막대는 8번 줄에서야 닫히므로, 그때까지는 안쪽 어디서든 손이 닿는다.
답이 말이 되는가. 이 도출은 IP 없이는 적을 수 없다. 마지막 줄을 ¬I 로 바꾸면 얻어지는 것은 ¬¬(𝑃∨¬𝑃) 이지 𝑃∨¬𝑃 가 아니다. 여덟 줄 가운데 정확히 한 줄이 고전 논리를 쓰고 있고, 그 한 줄이 19장에서 문제가 된다.
예제 76
다음 두 도출을 적고, 어느 쪽이 IP 를 쓰는지 밝혀라. (가) 𝑃⊢¬¬𝑃 (나) ¬¬𝑃⊢𝑃
풀이 보기
(가) 목표의 주연결자가 ¬ 이므로 ¬I 를 쓴다. ¬𝑃 를 가정하고 ⊥ 을 얻으면 된다.
줄
논리식
근거
1
𝑃
전제
2
│ ¬𝑃
가정
3
│ ⊥
1, 2 ¬E
4
¬¬𝑃
2–3 ¬I
(나) 목표가 𝑃 다. 주연결자가 없으므로 도입 규칙이 없고, 전제 ¬¬𝑃 의 주연결자는 ¬ 인데 ¬E 를 쓰려면 ¬𝑃 가 있어야 한다. 막혔으므로 IP 를 쓴다.
줄
논리식
근거
1
¬¬𝑃
전제
2
│ ¬𝑃
가정
3
│ ⊥
2, 1 ¬E
4
𝑃
2–3 IP
두 도출이 마지막 줄의 규칙 이름 하나만 빼고 같다. 줄 수도 같고 가정도 같고 ⊥ 을 얻는 방법도 같다. 그런데 (가)는 IP 없이 되고 (나)는 되지 않는다.
답이 말이 되는가. 이 한 쌍이 IP 의 정체를 정확히 보여 준다. IP 가 하는 일은 이중부정을 지우는 일이다. 실제로 IP 대신 "¬¬𝜑 에서 𝜑"를 규칙으로 두어도 같은 체계가 되고, 그래서 19장에서 직관주의를 설명할 때 "이중부정 제거가 성립하지 않는다"는 말과 "IP 가 없다"는 말이 같은 뜻으로 쓰인다. 6장의 낱말로 하면 ¬¬𝑃 와 𝑃 는 논리적으로 동치인데, 동치인 두 식 사이를 오가는 것조차 규칙 하나를 필요로 한다는 점이 증명 체계의 성격을 잘 보여 준다.
Γ⊢𝜑 — 증명 체계의 주장
규칙 열세 개가 다 세워졌다. 이제 그것으로 무엇을 주장할 수 있는지 기호로 못 박는다.
정의.Γ 를 논리식들의 집합, 𝜑 를 논리식이라 하자. 마지막 줄이 𝜑 이고 열린 가정이 전부 Γ 의 원소인 도출이 있으면, 𝜑 는 Γ 에서 도출 가능하다고 하고
Γ⊢𝜑
라고 적는다. 기호 ⊢ 는 "턴스타일"이라 읽고, 문장으로는 "Γ 에서 𝜑 가 도출된다"로 읽는다. 6장에서와 같이 중괄호는 생략해 𝜑1,𝜑2⊢𝜓 로도 적는다.
왼쪽이 빈 경우가 따로 이름을 갖는다. ⊢𝜑 는 열린 가정이 하나도 없는 도출로 𝜑 를 얻는다는 뜻이고, 이때 𝜑 를 이 체계의 정리(theorem)라 한다. 앞에서 적은 𝑃→(𝑄→𝑃) 와 𝑃∨¬𝑃 가 정리다. 정리는 아무것도 주어지지 않아도 손에 넣을 수 있는 식이다.
여기서 낱말 하나를 마저 채운다. 6장이 "일관성이라는 낱말은 증명 체계 쪽에 쓸 자리가 있어 비워 둔다"고 했다. 그 자리가 여기다. Γ⊢⊥ 이면 Γ 를 비일관적이라 하고, 그렇지 않으면 일관적이라 한다. 6장의 만족가능성이 배당으로 정의된 성질인 데 반해 일관성은 도출로 정의된 성질이다. 두 성질이 같은 집합을 가려내는지가 14장의 핵심 물음이 된다.
그리고 절대 흐리면 안 되는 것.
<두 상자 사이에 화살표가 없다는 것이 이 그림의 전부다. 정의가 서로를 한 글자도 참조하지 않으므로 둘이 일치할 까닭이 아직 없고, 그 화살표를 놓는 것이 13장과 14장이다>[원본 보기]
Γ⊢𝜑 는 증명 체계의 주장이다. "이러이러한 도출이 있다"는 말이고, 확인하려면 도출 한 벌을 내놓으면 된다. Γ⊨𝜑 는 의미론의 주장이다. "이러이러한 배당이 전부 그렇다"는 말이고, 확인하려면 배당을 훑어야 한다. 두 정의는 서로를 참조하지 않는다. 한쪽에는 규칙과 줄과 범위가 있고 다른 쪽에는 배당과 진리함수가 있다.
그러므로 이 장 안에서는 두 기호를 섞어 쓸 수 없다. 도출을 적다가 "여기는 진리표로 봐도 참이니까"라고 적으면 그 줄은 규칙이 아니고, 반대로 반례를 찾다가 "→E 로"라고 적으면 그것도 의미론의 논증이 아니다. 두 기호가 결국 같은 것을 가리키는지는 13장과 14장이 증명해야 할 정리이지 지금 쓸 수 있는 사실이 아니다.
마지막으로 정의에서 곧바로 따라 나오는 두 가지를 적어 둔다. 첫째, Γ⊆Δ 이고 Γ⊢𝜑 이면 Δ⊢𝜑 이다. 같은 도출이 그대로 통하기 때문이다. 3장에서 연역의 단조성이라 부른 성질이 증명 체계 쪽에서도 성립한다. 둘째, 도출은 유한한 목록이므로 인용되는 전제도 유한하다. 따라서 Γ⊢𝜑 이면 Γ 의 어떤 유한한 부분집합에서도 𝜑 가 도출된다.Γ 가 무한해도 그렇다. 15장의 컴팩트성 정리가 이 사실 위에 선다.
예제 77
다음 각 주장이 무슨 뜻인지 정의로 풀어 적고, 이 장의 도구만으로 확정할 수 있는지 답하라. (가) ⊢𝑃→𝑃 (나) 𝑃⊢𝑄 가 아니다 (다) {𝑃,¬𝑃} 는 비일관적이다
풀이 보기
(가) 열린 가정이 하나도 없는 도출로 𝑃→𝑃 를 얻는다는 뜻이다. 확정할 수 있다. 도출은 두 줄이다 — 𝑃 를 가정으로 열고(1번), 곧바로 →I 로 닫으면 𝑃→𝑃 가 나온다. 범위 안에서 아무 일도 하지 않았지만 규칙이 요구하는 것은 "범위 안의 마지막 줄이 후건"뿐이므로 문제가 없다.
(나) 열린 가정이 𝑃 뿐이고 마지막 줄이 𝑄 인 도출이 하나도 없다는 뜻이다. 확정할 수 없다. 도출을 아무리 많이 시도해 실패해도 "아직 못 찾았다"일 뿐이다. 있음은 하나 내놓으면 끝나지만 없음은 그렇지 않다.
(다) {𝑃,¬𝑃} 를 열린 가정으로 삼아 ⊥ 에 이르는 도출이 있다는 뜻이다. 확정할 수 있다. 앞 절 폭발 예제의 3번 줄까지가 그 도출이다.
(나)가 이 장의 가장 큰 구멍이다. 증명 체계는 "있다"를 보이는 데는 값싸지만 "없다"를 보이는 데는 아무 도움이 안 된다. 그러면 어떻게 해야 하는가. 13장의 건전성을 거쳐 반대편으로 넘어간다. 건전성이 "⊢ 이면 ⊨"를 말해 주면, 𝑃⊨𝑄 가 아님을 반례 배당 하나로 보인 뒤 그것을 뒤집어 𝑃⊢𝑄 가 아니라고 결론지을 수 있다. 두 층을 이어야 비로소 되는 일이 있다는 것 — 그것이 13장이 필요한 실제 이유다.
예제 78
다음 글이 두 기호를 섞어 썼다. 어디가 문제인지 짚고, 두 층 가운데 어느 쪽으로 다시 쓰면 되는지 말하라.
"{𝑃→𝑄,𝑃}⊢𝑄 를 보이자. 𝑃→𝑄 와 𝑃 를 모두 참으로 만드는 배당을 잡으면 → 조항에 따라 𝑄 도 참이다. 따라서 도출이 존재한다."
풀이 보기
결론은 옳다. 문제는 근거다. 보이려는 것은 ⊢ 인데 논증은 배당으로 진행했다.
정확히 짚으면 이렇다. 논증이 실제로 보인 것은 {𝑃→𝑄,𝑃}⊨𝑄 다. 마지막 문장 "따라서 도출이 존재한다"가 ⊨ 에서 ⊢ 로 건너뛰었는데, 그 건너뜀을 허락하는 것이 완전성 정리이고 아직 증명되지 않았다.
두 가지로 고칠 수 있다. 주장을 ⊨ 로 바꾸면 논증이 그대로 옳은 것이 된다. 아니면 주장을 ⊢ 로 두고 논증을 도출로 바꾸면 된다 — 1번 줄 𝑃→𝑄 (전제), 2번 줄 𝑃 (전제), 3번 줄 𝑄 (1, 2 →E). 세 줄이면 끝난다.
답이 말이 되는가. 이 예에서는 어느 쪽으로 고쳐도 쉬웠고 결론도 옳았다. 그래서 더 위험하다. 결론이 옳은 채로 근거만 층을 넘나드는 글은 스스로 알아채기 어렵다. 주장에 적힌 기호가 무엇인지 먼저 보고, 그 기호의 정의에 나오는 낱말만으로 논증을 쓰는 습관을 들이는 것이 유일한 방어다.
이 장에서 새로 나온 것
기호 · 용어
뜻
증명 체계(proof system)
유한한 규칙 목록과, 그 규칙만으로 만들어진 것이 무엇인지를 정하는 약속
자연연역(natural deduction)
이 문서가 쓰는 증명 체계. 사람이 실제로 하는 추론 동작을 규칙으로 옮긴 것
⊥
어휘에 새로 더한 기호. 적형식 정의의 기저 조항 하나와 확장 배당 정의의 조항 하나가 함께 늘었다. 항상 ¯𝑣(⊥)=F
도출(derivation)
줄의 유한한 목록. 각 줄은 논리식 하나와 근거 하나
근거
전제 / 가정 / 규칙 이름과 인용한 줄 번호 셋 중 하나
가정과 범위(scope)
가정을 놓으면 범위가 열린다. 피치 스타일에서 세로 막대가 범위다. 범위는 엇갈릴 수 없다
방출(discharge)
가정을 닫는 일. 방출된 가정은 그 줄이 기대는 목록에서 빠진다. →I, ¬I, ∨E, IP 가 방출한다
피치 스타일
줄 · 논리식 · 근거 세 칸으로 긴 도출을 적는 방식
증명 트리
규칙 하나를 보일 때 쓰는 나무 표기. [𝜑]1 의 대괄호와 어깨번호가 방출을 나타낸다
∧I / ∧E
𝜑 와 𝜓 에서 𝜑∧𝜓 / 𝜑∧𝜓 에서 어느 쪽이든
∨I / ∨E
𝜑 에서 𝜑∨𝜓 나 𝜓∨𝜑 / 논리합과 두 갈래 도출에서 공통 결론. 경우 나누기
→I / →E
가정 𝜑 아래 𝜓 를 얻으면 𝜑→𝜓 (방출) / 𝜑→𝜓 와 𝜑 에서 𝜓. 전건 긍정
↔I / ↔E
𝜑→𝜓 와 𝜓→𝜑 에서 𝜑↔𝜓 / 𝜑↔𝜓 와 한쪽에서 다른 쪽
¬I / ¬E
가정 𝜑 아래 ⊥ 을 얻으면 ¬𝜑 (방출) / 𝜑 와 ¬𝜑 에서 ⊥
⊥E
폭발률. ⊥ 에서 무엇이든. 6장의 폭발이 규칙이 된 것
IP
간접증명. 가정 ¬𝜑 아래 ⊥ 을 얻으면 𝜑 (방출). 이 규칙 하나가 고전 논리를 만든다
R
반복. 앞선 줄의 식을 그대로 다시 적는다. 안쪽 범위로 끌어들일 때 쓴다
도출 가능 Γ⊢𝜑
열린 가정이 전부 Γ 안에 있고 마지막 줄이 𝜑 인 도출이 있다
정리(theorem) ⊢𝜑
열린 가정 없이 도출되는 식. 아무것도 주어지지 않아도 얻을 수 있다
일관적 · 비일관적
Γ⊢⊥ 이면 비일관적, 아니면 일관적. 6장의 만족가능성과 짝을 이루는 증명 체계 쪽 성질
단조성
Γ⊆Δ 이고 Γ⊢𝜑 이면 Δ⊢𝜑
도출의 유한성
Γ⊢𝜑 이면 Γ 의 어떤 유한한 부분집합에서도 𝜑 가 도출된다
챙겨 갈 것은 넷이다.
규칙은 열세 개이고 모양만 본다. 연결자마다 도입과 제거가 짝을 이루고, 규칙을 고르는 기준은 5장의 주연결자다. 도출을 검사할 때 묻는 것은 둘뿐이다 — 근거가 규칙 모양과 맞는가, 인용한 줄이 손닿는 범위에 있는가
가정은 열고 닫는 것이다. 열린 가정은 결론이 기대는 목록에 남고, 방출되면 목록에서 빠진다. 방출 규칙은 →I, ¬I, ∨E, IP 넷이고 장치는 하나다. 닫힌 범위 안의 줄은 밖에서 없는 것과 같다
IP 만 성격이 다르다. 나머지 열둘은 연결자 하나의 뜻을 풀어 쓴 것이지만 IP 는 "아니라고 하면 모순"에서 "그렇다"로 건너뛴다. 이 규칙 하나를 빼면 19장의 직관주의 논리가 된다
⊢ 와 ⊨ 는 다른 것이다. 하나는 도출이 있다는 주장이고 하나는 배당이 전부 그렇다는 주장이다. 둘을 잇는 화살표는 아직 없다
8장은 이 규칙들을 어떤 순서로 고를지를 다룬다. 목표의 주연결자에서 거꾸로 내려오는 방법, 막혔을 때 IP 를 꺼내는 시점, 손에 든 식을 언제 풀어야 하는지 같은 것들이다. 규칙을 아는 것과 증명을 찾는 것은 다른 일이고, 이 장은 앞쪽만 했다.
그리고 11장이 이 체계에 한정사 규칙 넷을 더한다. 그때 새로 생기는 어려움은 규칙의 개수가 아니라 변수 조건이다. 이 장의 범위 규칙이 그 조건의 예행연습이 된다 — 어느 줄이 어디에 기대고 있는지를 따지는 일이 거기서도 그대로 나온다.
증명을 찾는 전략
7장은 규칙을 다 주었다. 그런데 규칙을 전부 외운 사람도 빈 종이 앞에서 막힌다. 규칙 목록은 "이렇게 쓰면 옳다"를 말할 뿐 "지금 무엇을 쓸까"는 말해 주지 않기 때문이다. 진리표에는 이런 어려움이 없었다. 줄을 다 채우면 답이 나오니 막힐 자리가 없다. 도출은 다르다. 규칙을 쓸 자리가 여러 곳이고, 잘못 고르면 종이만 채우다 끝난다.
이 장은 그 빈자리를 메운다. 새 규칙은 하나도 없다. 7장이 준 규칙으로 길을 찾는 법만 다룬다. 답할 질문은 넷이다.
빈 종이의 첫 줄에 무엇을 쓰는가
규칙이 열 몇 개인데 왜 대부분의 자리에서 고를 것이 하나뿐인가
경우 나누기와 귀류법은 언제 꺼내고 언제 참는가
다 쓴 도출이 옳은지 어떻게 스스로 검사하는가
7장에서 가져오는 것은 규칙 열셋과 도출을 적는 방식이다. 도입·제거가 짝인 여덟(∧I·∧E, ∨I·∨E, →I·→E, ↔I·↔E), 부정 둘(¬I·¬E), 폭발률 ⊥E, 간접증명 IP, 반복 R.
세 낱말도 다시 확인해 둔다. 가정은 전제가 아닌데 잠시 참이라 치고 놓는 식이고, 가정 아래에서 얻은 줄을 묶은 덩어리가 부증명이며, 부증명을 닫으면서 그 가정을 결론 안으로 집어넣는 일이 방출이다. 방출하는 규칙은 넷뿐이다 — →I, ¬I, ∨E, IP. 7장이 못 박은 그 넷이고 이 장이 늘리지 않는다.
긴 도출은 피치 스타일 표로 적는다. 칸은 줄 번호·논리식·근거 셋이고, 논리식 앞에 붙은 세로줄 │ 하나가 부증명 하나를 뜻한다. 세로줄이 끊기면 그 부증명은 닫힌 것이다. 근거 칸에는 전제·가정이라 적거나 인용한 줄 번호와 규칙 이름을 적고, 방출은 2~4 →I 처럼 범위로 적는다. 짧은 도출은 증명 트리로 적되 단이 넷을 넘으면 반드시 표를 쓴다.
마지막으로 이 장의 성격을 밝혀 둔다. 예제가 본체다. 설명은 요령에 이름을 붙이는 데 그치고 그 요령이 무엇인지는 풀이가 보여 준다. 그래서 모든 풀이는 답이 아니라 왜 그 첫 수인지부터 적는다. 막다른 길로 들어가 보는 예제도 둘 있다. 그것들이 이 장에서 가장 쓸모 있는 예제다.
목표에서 거꾸로 간다
이 절이 이 장의 중심이다. 다른 요령은 전부 여기서 갈라져 나온다.
초보자가 하는 일은 대개 이렇다. 전제를 늘어놓고 쓸 수 있는 규칙을 아무거나 써 본다. 이 방법이 나쁜 이유는 갈래가 너무 많기 때문이다. 𝑃 한 줄만 있어도 ∨I 로 만들 수 있는 식이 무한히 많다. 𝑃∨𝑄, 𝑃∨(𝑄∧𝑅), 그 무엇이든. 앞으로 가는 길은 사방으로 갈라진다.
거꾸로 가면 사정이 뒤집힌다. 지금 얻으려는 식을 목표(goal)라 하자. 목표의 주연결자는 하나뿐이고 그 연결자를 만드는 도입 규칙도 하나뿐이므로, 마지막 줄에 무엇이 올지는 고를 것 없이 정해진다. 그리고 그 규칙이 요구하는 재료가 곧 새 목표가 된다. 목표가 짧아지므로 되풀이하면 언젠가 더 쪼갤 수 없는 곳에 닿는다.
<가운데 칸만 보면 오른쪽 칸이 자동으로 정해진다 — 규칙을 고른다기보다 목표를 더 작은 목표로 갈아 치우는 것이다>[원본 보기]
표로 다시 적는다. 이 표가 이 장 전체에서 가장 많이 쓰인다.
목표의 모양
마지막에 쓸 규칙
새 목표
𝜑→𝜓
→I
𝜑 를 가정하고 𝜓
𝜑∧𝜓
∧I
𝜑 하나, 𝜓 하나
¬𝜑
¬I
𝜑 를 가정하고 ⊥
𝜑↔𝜓
↔I
𝜑→𝜓 하나, 𝜓→𝜑 하나
𝜑∨𝜓
∨I — 다만 한쪽을 골라야 한다
𝜑 하나, 또는 𝜓 하나
원자 𝑃
도입 규칙이 없다
전제 쪽에서 밀고 나오거나 IP
다섯째와 여섯째 줄만 성격이 다르다. ∨I 는 어느 쪽을 만들지 고르라고 요구하고 원자에는 아예 도입 규칙이 없다. 이 두 줄에서 막힌다. 나머지 넷은 기계적이다. ↔I 는 7장에서 가정을 열지 않는 규칙으로 두었으므로 그 자체는 부증명을 만들지 않는다. 다만 새 목표 둘이 모두 조건문이라 각각 →I 로 내려가게 되고, 그래서 도출이 대체로 두 배가 된다. 하는 일은 결국 →I 를 두 번 하는 것이다.
예제 79
⊢𝑃→(𝑄→(𝑃∧𝑄)) 를 증명하라.
풀이 보기
전제가 없다. 앞으로 밀 것이 아무것도 없으니 거꾸로 가는 수밖에 없다. 이런 문제가 거꾸로 가기를 연습하기에 가장 좋다.
목표의 주연결자는 바깥 → 다. 표의 첫 줄대로 →I 를 쓴다. 𝑃 를 가정하고 새 목표는 𝑄→(𝑃∧𝑄). 그 주연결자도 → 이니 다시 →I 로 𝑄 를 가정하고 목표는 𝑃∧𝑄. 또 보면 주연결자가 ∧ 이고, ∧I 가 요구하는 𝑃 와 𝑄 는 둘 다 이미 가정으로 놓여 있다. 끝났다.
줄
논리식
근거
1
│ 𝑃
가정
2
│ │ 𝑄
가정
3
│ │ 𝑃∧𝑄
1, 2 ∧I
4
│ 𝑄→(𝑃∧𝑄)
2~3 →I
5
𝑃→(𝑄→(𝑃∧𝑄))
1~4 →I
눈여겨볼 것 둘. 첫째, 고민한 곳이 한 군데도 없다. 매 단계에서 목표의 주연결자를 보았을 뿐이다. 둘째, 도출을 쓴 순서와 찾은 순서가 반대다. 우리는 5번 줄을 먼저 정하고 1번 줄로 내려왔다. 3번 줄이 깊이 2 에서 깊이 1 의 줄을 부른 것도 눈에 담아 두라. 부증명이 열려 있는 한 바깥 줄은 언제나 부를 수 있다. 안에서 밖은 보이고 밖에서 안은 안 보인다.
종이에 적을 때는 이렇게 하면 편하다. 맨 아래에 목표를 적고 그 위에 가정을 적고 가운데를 비워 둔다. 빈칸이 좁아질 때까지 되풀이한다.
예제 80
⊢¬(𝑃∧¬𝑃) 를 증명하라.
풀이 보기
목표의 주연결자가 ¬ 이므로 ¬I 다. 𝑃∧¬𝑃 를 가정하고 ⊥ 을 목표로 삼는다.
여기서 요령 하나. 목표가 ⊥ 이 되는 것은 손해가 아니라 이득이다.⊥ 은 딱 한 가지 방법으로만 얻어진다 — ¬E 로 𝜑 와 ¬𝜑 를 부딪치는 것. 그러니 목표가 ⊥ 이면 할 일이 "서로 어긋나는 두 줄을 찾아라" 하나로 좁혀진다. 가정에 ∧E 를 두 번 쓰면 𝑃 와 ¬𝑃 가 나오고, 그것이 찾던 두 줄이다.
[𝑃∧¬𝑃]1𝑃∧E[𝑃∧¬𝑃]1¬𝑃∧E⊥¬E¬(𝑃∧¬𝑃)¬I,1
대괄호와 위첨자 1 이 방출된 가정을 뜻한다. 같은 가정을 두 번 썼지만 방출은 한 번에 이루어진다. 가정은 몇 번을 쓰든 한 번 방출한다.
전제에서 앞으로 간다
거꾸로 가기가 멈추는 곳이 있다. 목표가 원자이거나, 쪼갤 수는 있어도 재료를 어디서 구할지 모를 때다. 그때는 방향을 바꿔 손에 든 것을 본다. 손에 든 것이란 지금 줄에서 부를 수 있는 줄 전부, 즉 전제와 아직 열려 있는 부증명의 가정과 거기서 이미 얻어 놓은 줄들이다. 앞으로 밀기란 그 줄들에 제거 규칙을 써서 새 줄을 꺼내는 일이다.
여기서 수를 두 갈래로 나눠 두면 편하다. 공짜 수는 ∧E, ↔E, 그리고 전건을 이미 쥔 →E 다. 고를 것도 잃을 것도 없고 줄만 늘 뿐 목표는 그대로다. 값비싼 수는 ∨I, ∨E, IP, ⊥E 다. 어느 쪽을 고르게 하거나, 같은 목표를 두 번 증명하게 하거나, 목표 자체를 바꿔 버린다.
공짜 수는 망설이지 말고 다 써라. 특히 ∧E 는 언제나 안전하다. 손에 𝜑∧𝜓 가 있으면 𝜑 와 𝜓 를 곧바로 따로 적어 두라. 붙어 있는 동안에는 그 조각을 다른 규칙에 넣을 수 없다. 값비싼 수는 뒤로 미룬다. 그 이유는 다음 두 절에서 하나씩 본다.
예제 81
전제 𝑃∧(𝑄∧𝑅) 와 (𝑃∧𝑄)→𝑆 에서 𝑆 를 도출하라.
풀이 보기
목표 𝑆 는 원자다. 거꾸로 갈 데가 없으니 시작부터 앞으로 밀어야 한다. 전제를 본다. 첫째는 ∧ 이니 ∧E 가 공짜다. 둘째는 → 인데 →E 를 쓰려면 전건 𝑃∧𝑄 를 쥐어야 하고 지금은 없다. 그러면 첫째 전제부터 푼다.
줄
논리식
근거
1
𝑃∧(𝑄∧𝑅)
전제
2
(𝑃∧𝑄)→𝑆
전제
3
𝑃
1 ∧E
4
𝑄∧𝑅
1 ∧E
5
𝑄
4 ∧E
6
𝑃∧𝑄
3, 5 ∧I
7
𝑆
2, 6 →E
요점은 6번 줄이다. ∧E 로 다 풀어헤친 뒤 ∧I 로 필요한 모양으로 다시 조립했다.𝑃∧(𝑄∧𝑅) 와 𝑃∧𝑄 는 다른 식이므로 그냥 쓸 수 없다. 괄호가 다르면 다른 식이라는 5장의 규약이 여기서 값을 치른다.
𝑅 은 꺼내 놓기만 하고 쓰지 않았다. 3~5번 줄을 꺼낼 때 우리는 무엇이 쓰일지 몰랐다. 공짜 수는 쓸모를 확인하고 두는 것이 아니라 일단 두는 것이다.
답이 말이 되는가. 이 도출에는 상자가 하나도 없으므로 범위를 따질 일이 없고, 확인할 것은 줄마다 근거가 규칙 모양과 맞는지 하나뿐이다. 그리고 마지막 줄이 목표 𝑆 이며 기대고 있는 것은 전제 둘뿐이다. 쓰지 않은 줄이 남아 있어도 도출은 틀리지 않는다 — 검산이 묻는 것은 남은 줄이 아니라 쓴 줄의 근거다.
막다른 길
전제 𝑃→𝑄 하나에서 (𝑃∧𝑅)→(𝑄∧𝑅) 을 얻으려 한다. 앞으로 밀기만 해서 끝까지 가 보고 어디서 왜 막히는지 적어라.
풀이 보기
손에 든 것은 𝑃→𝑄 한 줄뿐이다. 쓸 수 있는 규칙을 훑는다.
∧E — 𝑃→𝑄 는 ∧ 이 아니다. 못 쓴다
→E — 전건 𝑃 가 있어야 한다. 없다
∨I — 쓸 수는 있다. (𝑃→𝑄)∨𝜒 를 얻는다. 그런데 𝜒 를 아무거나 골라야 하고 목표에는 ∨ 가 없다. 쓸모가 없다
R — 𝑃→𝑄 를 한 번 더 적을 뿐이다
막혔다. 규칙을 잘못 쓴 것이 아니라 쓸 수 있는 규칙이 없다. 왜 그런가. 전제가 조건문 하나뿐이면 전건을 손에 넣기 전에는 아무것도 뗄 수 없다. 그리고 그 전건 𝑃 는 지금 종이 어디에도 없다. 앞으로만 미는 한 영원히 생기지 않는다.
𝑃 는 목표를 쪼개야 생긴다. 목표가 → 이므로 →I 로 𝑃∧𝑅 을 가정하면 그 가정에 ∧E 를 써서 𝑃 가 나온다. 가정도 손에 든 것에 들어간다는 점이 여기서 결정적이다.
줄
논리식
근거
1
𝑃→𝑄
전제
2
│ 𝑃∧𝑅
가정
3
│ 𝑃
2 ∧E
4
│ 𝑅
2 ∧E
5
│ 𝑄
1, 3 →E
6
│ 𝑄∧𝑅
5, 4 ∧I
7
(𝑃∧𝑅)→(𝑄∧𝑅)
2~6 →I
챙길 교훈은 이것이다. 앞으로 밀기는 스스로 재료를 만들지 못한다. 새 재료는 전제 아니면 가정에서 오고 가정은 목표를 쪼개야 생긴다. 두 방향은 어느 하나를 고르는 것이 아니라 번갈아 쓰는 것이다.
가운데서 만난다
앞의 두 절을 합치면 실제로 쓰는 절차가 된다. 순서가 있다.
목표를 더 쪼갤 수 없을 때까지 거꾸로 간다. 가정이 쌓이고 목표가 짧아진다
손에 든 것에 공짜 수를 다 쓴다. 1에서 생긴 가정도 재료다
남은 틈을 본다. 대개 그때는 목표가 원자 하나이고 손에 든 것도 몇 줄뿐이다
<어느 한쪽만으로는 닿지 않는다 — 목표를 쪼개야 가정이 손에 들어오고 전제를 풀어야 그 가정이 쓸모를 얻는다>[원본 보기]
이 절차의 좋은 점은 어려운 판단을 맨 뒤로 미룬다는 것이다. 1과 2 는 고를 것이 없다. 정말로 생각해야 하는 곳은 3 뿐이고, 거기 도착했을 때는 문제가 이미 훨씬 작아져 있다.
예제 83
전제 𝑃→(𝑄→𝑅) 에서 (𝑃∧𝑄)→𝑅 을 도출하라.
풀이 보기
1단계. 목표의 주연결자가 → 이므로 →I. 𝑃∧𝑄 를 가정하고 목표는 𝑅 이 된다. 𝑅 은 원자이므로 거꾸로 가기는 여기서 멈춘다.
2단계. 손에 든 것은 𝑃→(𝑄→𝑅) 과 𝑃∧𝑄 다. 공짜 수를 쓴다 — ∧E 로 𝑃 와 𝑄.
3단계. 이제 𝑃 가 손에 있으므로 →E 가 열린다. 𝑄→𝑅 이 나오고 𝑄 도 있으니 한 번 더 →E 하면 𝑅 이다. 만났다.
줄
논리식
근거
1
𝑃→(𝑄→𝑅)
전제
2
│ 𝑃∧𝑄
가정
3
│ 𝑃
2 ∧E
4
│ 𝑄
2 ∧E
5
│ 𝑄→𝑅
1, 3 →E
6
│ 𝑅
5, 4 →E
7
(𝑃∧𝑄)→𝑅
2~6 →I
이 문제는 6장의 의미론적 연역정리가 증명 체계 쪽에서 어떻게 보이는지도 알려 준다. →I 는 "가정을 하나 얹고 짧은 목표를 얻는 일"을 "가정 없이 긴 목표를 얻는 일"로 바꿔 준다. 두 층이 같은 모양을 하고 있다는 것이 13·14장의 물음이다.
답이 말이 되는가. 다 적은 도출에 세 가지를 묻는다. 마지막 줄이 목표 (𝑃∧𝑄)→𝑅 과 글자까지 같은가, 열어 둔 상자가 모두 닫혔는가, 남은 것이 전제뿐인가. 셋이 다 맞으면 도출이 끝난 것이다. 이 장 뒤의 되돌아보기 절이 같은 확인을 다섯 항목으로 늘려 정리한다.
예제 84
전제 (𝑃∨𝑄)→𝑅 과 𝑃 에서 𝑅 을 도출하라. 목표에 ∨ 가 없는데도 ∨I 를 쓰게 되는 자리다.
풀이 보기
목표 𝑅 은 원자다. 앞으로 민다. 전제 (𝑃∨𝑄)→𝑅 에 →E 를 쓰려면 전건 𝑃∨𝑄 가 필요한데 손에는 𝑃 밖에 없다.
여기서 물음을 뒤집는다. "𝑃 에서 무엇을 만들 수 있나"가 아니라 "𝑃∨𝑄 를 어떻게 얻나"다. ∨ 를 만드는 규칙은 ∨I 하나이고 그 규칙은 한쪽만 있으면 된다. 𝑃 가 있다.
(𝑃∨𝑄)→𝑅𝑃𝑃∨𝑄∨I𝑅→E
앞 절에서 ∨I 를 값비싼 수로 분류했는데 여기서는 값이 없다. 차이는 고를 근거가 있느냐다. 아무 데도 쓰이지 않을 ∨ 를 만들면 갈래가 무한하지만, 지금처럼 다른 규칙이 𝑃∨𝑄 라는 정확한 모양을 요구하면 고를 것이 없다.
요령으로 적어 둔다. ∨I 는 목표가 ∨ 일 때 쓰는 규칙이 아니라 어떤 ∨ 가 필요할 때 쓰는 규칙이다. 목표가 ∨ 인 경우는 오히려 다음 절과 그다음 절에서 애를 먹인다.
경우 나누기를 언제 쓰는가
∨E 는 규칙 열셋 가운데 가장 크다. 부증명을 둘 요구하고 그 둘이 같은 식으로 끝나야 하며 밖으로 나오는 것은 그 식 하나뿐이다.
<값과 비용이 함께 있다 — ∨ 를 쓸 수 있게 해 주는 유일한 규칙이지만 목표가 반으로 쪼개지지 않고 같은 목표를 두 번 증명하게 만든다>[원본 보기]
비용을 정확히 말해 두는 것이 중요하다. →I 나 ∧I 는 목표를 더 작게 만든다. ∨E 는 그러지 않는다. 두 갈래의 목표가 지금 목표 그대로다. 문제가 쉬워지지 않고 개수만 두 배가 된다. 대신 얻는 것이 있다 — 갈래마다 가정이 하나씩 늘어난다. ∨E 가 값을 하는 것은 그 새 가정이 실제로 도움이 될 때뿐이다. 그래서 판단 기준은 목표가 아니라 손에 든 것이다.
상황
∨E 를 쓰는가
손에 든 줄에 ∨ 가 있고 그것 말고는 쓸 것이 없다
쓴다. 그 ∨ 를 쓰는 길이 이것뿐이다
손에 든 줄에 ∨ 가 있지만 다른 공짜 수가 남아 있다
미룬다. 공짜 수를 먼저 다 쓴다
목표가 ∨ 인데 손에 든 줄에는 ∨ 가 없다
쓰지 않는다. 나눌 것이 없다
셋째 줄이 가장 자주 틀리는 자리다. 목표에 있는 ∨ 는 ∨E 의 재료가 아니다. ∨E 는 이미 가진 ∨를 소비하는 규칙이다.
예제 85
전제 (𝑃∨𝑄)∧𝑅 에서 (𝑃∧𝑅)∨(𝑄∧𝑅) 을 도출하라.
풀이 보기
첫 수는 공짜 수다. 전제가 ∧ 이므로 ∧E 로 𝑃∨𝑄 와 𝑅 을 따로 적어 둔다. 이것을 먼저 하지 않으면 뒤에서 𝑅 을 쓸 수 없다.
이제 손에 ∨ 가 있다. 목표는 ∨I 로 고를 수 없다 — 어느 쪽인지 모른다. ∨E 를 꺼낼 자리다. 갈래마다 목표는 (𝑃∧𝑅)∨(𝑄∧𝑅) 그대로 두고, 갈래 안에서∨I 를 쓴다. 갈래 안에서는 어느 쪽인지가 가정으로 정해져 있으므로 고를 근거가 생긴다.
줄
논리식
근거
1
(𝑃∨𝑄)∧𝑅
전제
2
𝑃∨𝑄
1 ∧E
3
𝑅
1 ∧E
4
│ 𝑃
가정
5
│ 𝑃∧𝑅
4, 3 ∧I
6
│ (𝑃∧𝑅)∨(𝑄∧𝑅)
5 ∨I
7
│ 𝑄
가정
8
│ 𝑄∧𝑅
7, 3 ∧I
9
│ (𝑃∧𝑅)∨(𝑄∧𝑅)
8 ∨I
10
(𝑃∧𝑅)∨(𝑄∧𝑅)
2, 4~6, 7~9 ∨E
5번과 8번 줄이 3번 줄을 부른다. 3번은 깊이 0 이고 어떤 상자에도 갇혀 있지 않으므로 어느 갈래 안에서든 부를 수 있다. 전제와 미리 꺼내 둔 공짜 줄은 모든 갈래가 공유한다. 이것이 공짜 수를 먼저 쓰라는 말의 실질적인 이득이다 — 나중에 하면 갈래마다 되풀이해야 한다.
6번과 9번은 같은 식인데 만든 방법이 다르다. 하나는 왼쪽 자리를 채워 만들었고 하나는 오른쪽 자리를 채워 만들었다. 두 갈래가 같은 곳에 닿기만 하면 가는 길은 달라도 된다.
막다른 길
전제 ¬(𝑃∧𝑄) 에서 ¬𝑃∨¬𝑄 를 얻으려 한다. 지금까지 배운 수만 써서 끝까지 가 보고 어디서 막히는지 적어라.
풀이 보기
목표가 ∨ 이니 ∨I 부터 시도한다. 왼쪽을 고르면 ¬𝑃 를 먼저 얻어야 한다. ¬𝑃 는 ¬I 로 얻는다 — 𝑃 를 가정하고 ⊥ 을 찾는다. 그 부증명 안에서 손에 든 것은 ¬(𝑃∧𝑄) 와 𝑃 다. ⊥ 을 얻으려면 ¬E 로 𝑃∧𝑄 와 ¬(𝑃∧𝑄) 를 부딪쳐야 하고, 그러려면 𝑄 가 있어야 한다. 𝑄 가 없다. 막혔다. 오른쪽을 고르면 대칭으로 𝑃 가 없어 막힌다.
그러면 ∨E 는 어떤가. 쓸 수 없다. 손에 든 줄에 ∨ 가 하나도 없다. 앞 표의 셋째 줄이 바로 이 경우다.
<막힌 이유는 규칙을 잘못 쓴 것이 아니다 — 전제는 둘 중 하나라고만 말하는데 ∨I 는 어느 쪽인지를 요구한다>[원본 보기]
막힌 이유를 정확히 적어 두는 것이 중요하다. 전제 ¬(𝑃∧𝑄) 는 둘 다는 아니다만 말한다. 어느 쪽이 거짓인지는 말하지 않는다. 그런데 ∨I 는 어느 쪽인지를 요구한다. 요구와 정보가 어긋나 있으므로 이 길로는 갈 수 없다.
6장의 말로 하면 이렇다. ¬(𝑃∧𝑄) 를 참으로 만드는 배당 가운데 ¬𝑃 가 참인 것도 있고 ¬𝑄 가 참인 것도 있지만, 어느 한쪽이 모든 배당에서 따라 나오지는 않는다. 즉 ¬(𝑃∧𝑄)⊭¬𝑃 다. 도출할 수 없는 것을 도출하려 했으니 막힌 것이 당연하다. 그래도 ¬𝑃∨¬𝑄 자체는 귀결이므로 도출도 있어야 한다. 다음 절이 그것을 준다.
막혔을 때 — IP
IP 는 마지막 수단이다. 그렇게 못 박아 두는 데는 이유가 있다.
<IP 가 맨 아래에 있다 — 위의 네 관문은 목표를 작게 만들지만 IP 는 목표를 ⊥ 으로 바꿔 놓기만 하고 무엇을 향해 갈지는 알려 주지 않는다>[원본 보기]
IP 의 모양은 이렇다. 목표가 𝜑 일 때 ¬𝜑 를 가정하고 ⊥ 을 얻으면 𝜑 를 얻는다. 얻는 것은 손에 든 줄이 하나 는다는 것이다 — ¬𝜑 는 원래 아무 데도 없던 정보다. 잃는 것은 목표가 ⊥ 으로 바뀐다는 것이고, ⊥ 에는 주연결자가 없으니 이는 거꾸로 가기를 포기하는 것이다. 즉 IP 는 거꾸로 가기를 앞으로 밀기에 걸고 바꾸는 수다. 앞으로 밀 재료가 충분할 때만 값을 하므로 다른 수가 남아 있는 한 꺼내지 않는다.
¬I 와 헷갈리지 않게 갈라 둔다. 둘 다 "가정하고 ⊥ 을 얻는다"는 모양이라 자주 뒤섞인다.
규칙
가정하는 것
얻는 것
언제
¬I
𝜑
¬𝜑
목표가 ¬ 로 시작할 때
IP
¬𝜑
𝜑
목표가 ¬ 로 시작하지 않고 다른 길이 다 막혔을 때
목표가 ¬𝜑 인데 IP 를 쓰면 ¬¬𝜑 를 가정하게 되어 부정이 한 겹 더 붙는다. 그런 자리에서는 언제나 ¬I 가 낫다. 그리고 ⊥ 을 얻는 방법은 하나뿐이므로 — ¬E 로 𝜓 와 ¬𝜓 를 부딪친다 — IP 를 시작한 뒤의 물음은 늘 같다. "어떤 𝜓 를 부딪칠까." 대개 답은 방금 가정한 ¬𝜑 안에 있다.
예제 87
⊢¬¬𝑃→𝑃 를 증명하라.
풀이 보기
목표가 → 이므로 →I. ¬¬𝑃 를 가정하고 목표는 𝑃 가 된다. 𝑃 는 원자라 거꾸로 갈 수 없다. 앞으로 밀어 본다. 손에 든 것은 ¬¬𝑃 하나인데 부정을 벗기는 제거 규칙이 없다. ¬E 는 부정을 벗기는 규칙이 아니라 ⊥ 을 만드는 규칙이다. 막혔다.
관문을 다 지났으니 IP 다. 목표 𝑃 의 부정, 즉 ¬𝑃 를 가정한다. 그러면 손에 ¬¬𝑃 와 ¬𝑃 가 함께 있고, 이 둘이 바로 ¬E 가 요구하는 짝이다 — 𝜓 를 ¬𝑃 로 놓으면 ¬𝜓 가 ¬¬𝑃 다.
줄
논리식
근거
1
│ ¬¬𝑃
가정
2
│ │ ¬𝑃
가정
3
│ │ ⊥
1, 2 ¬E
4
│ 𝑃
2~3 IP
5
¬¬𝑃→𝑃
1~4 →I
다섯 줄짜리이지만 이 도출은 각별하다. 이 문서에서 IP 없이는 얻을 수 없는 첫 식이다. 다른 열두 규칙만으로는 ¬¬𝑃 에서 𝑃 로 갈 수 없다. 19장에서 IP 를 빼면 이 식이 정확히 그때 사라진다.
실전에서는 이 결과를 요령으로 쓴다. 손에 ¬¬𝜓 가 보이면 곧바로 𝜓 를 적어 둔다. 속으로는 위의 네 줄을 끼워 넣는 것이지만 매번 다시 쓰지는 않는다.
답이 말이 되는가. 다섯 줄을 거꾸로 읽어 검산한다. 마지막 줄이 목표이고, 그 재료인 4번 줄과 방출 범위가 →I 가 요구하는 모양이며, 4번 줄의 IP 는 바로 위 ⊥ 을 재료로 받았고, 그 ⊥ 은 ¬E 가 1번과 2번을 부딪쳐 만든 것이다. 줄마다 그 규칙이 요구하는 재료가 손닿는 자리에 있는지만 보면 되고, 그것이 도출 검사의 전부다.
예제 88
앞 절에서 막혔던 것을 푼다. 전제 ¬(𝑃∧𝑄) 에서 ¬𝑃∨¬𝑄 를 도출하라.
풀이 보기
막혔던 이유는 ∨I 가 "어느 쪽"을 요구하는데 전제가 그것을 주지 않기 때문이었다. IP 는 그 요구 자체를 없앤다. 어느 쪽인지 고르지 않고 ¬𝑃∨¬𝑄 전체를 목표에서 손으로 옮긴다.
¬(¬𝑃∨¬𝑄) 를 가정하고 ⊥ 을 찾는다. 이 가정이 얼마나 센 정보인지 보라. 이것과 부딪칠 식은 ¬𝑃∨¬𝑄 이고 그것은 ¬𝑃 하나만 있어도 ∨I 로 만들어진다. 즉 ¬𝑃 를 가정하기만 해도 곧바로 ⊥ 이 나온다. 그러면 IP 로 𝑃 를 얻는다. 같은 방법으로 𝑄 도 얻고, 둘을 ∧I 로 붙이면 전제와 부딪쳐 다시 ⊥ 이다. 바깥 IP 가 닫힌다.
줄
논리식
근거
1
¬(𝑃∧𝑄)
전제
2
│ ¬(¬𝑃∨¬𝑄)
가정
3
│ │ ¬𝑃
가정
4
│ │ ¬𝑃∨¬𝑄
3 ∨I
5
│ │ ⊥
2, 4 ¬E
6
│ 𝑃
3~5 IP
7
│ │ ¬𝑄
가정
8
│ │ ¬𝑃∨¬𝑄
7 ∨I
9
│ │ ⊥
2, 8 ¬E
10
│ 𝑄
7~9 IP
11
│ 𝑃∧𝑄
6, 10 ∧I
12
│ ⊥
1, 11 ¬E
13
¬𝑃∨¬𝑄
2~12 IP
IP 가 세 번 쓰였다. 이 도출을 처음부터 설계해서 쓸 수 있는 사람은 없다. 실제로는 이렇게 찾는다 — 바깥 IP 를 놓고 나면 2번 줄이 손에 들어오고, 2번과 부딪칠 것을 만들려면 ¬𝑃 나 ¬𝑄 하나면 된다는 것이 보이고, 그러면 "¬𝑃 를 가정하면 ⊥ 이 나온다"는 것이 곧 "𝑃 를 얻는다"는 뜻임이 보인다.
왜 IP 가 여기서 값을 하는지 이제 분명하다. 목표에 있는 ∨ 는 아무 쓸모가 없지만 손에 든 ¬(⋯∨…) 는 대단히 쓸모가 있다. IP 는 목표를 손으로 옮겨 주는 수다.
예제 89
⊢𝑃∨¬𝑃 를 증명하라(배중률).
풀이 보기
전제가 없다. 손에 아무것도 없이 시작하는데 목표는 ∨ 다. ∨I 로 𝑃 를 고를 수도 ¬𝑃 를 고를 수도 없다 — 둘 다 아무 전제 없이 증명될 리 없다. ∨E 는 나눌 ∨ 가 없다. 관문이 다 막혔으니 IP 다.
¬(𝑃∨¬𝑃) 를 가정한다. 앞 예제와 같은 요령이 그대로 통한다 — 이 가정과 부딪칠 식은 𝑃∨¬𝑃 이고 그것은 𝑃 하나로도 ¬𝑃 하나로도 만들어진다.
줄
논리식
근거
1
│ ¬(𝑃∨¬𝑃)
가정
2
│ │ 𝑃
가정
3
│ │ 𝑃∨¬𝑃
2 ∨I
4
│ │ ⊥
1, 3 ¬E
5
│ ¬𝑃
2~4 ¬I
6
│ 𝑃∨¬𝑃
5 ∨I
7
│ ⊥
1, 6 ¬E
8
𝑃∨¬𝑃
1~7 IP
5번 줄에서 IP 가 아니라 ¬I 를 썼다는 데 주목하라. 그 자리의 목표는 ¬𝑃 로 부정이므로 앞의 표대로 ¬I 다. IP 를 썼다면 ¬¬𝑃 를 가정하게 되어 한 겹이 더 늘었을 것이다.
배중률은 IP 없이는 증명되지 않는다. 19장에서 IP 를 뺀 체계(직관주의 논리)를 볼 때 𝑃∨¬𝑃 가 정리에서 빠진다는 사실이 그 체계의 성격을 가장 잘 보여 준다.
되돌아보기 — 스스로 검사하는 절차
도출을 다 썼다고 끝이 아니다. 자연연역의 좋은 점은 옳은지 검사하는 일이 기계적이라는 것이다. 찾는 것은 어렵지만 확인하는 것은 쉽다. 아래 다섯 항목을 위에서부터 훑으면 된다.
모든 줄에 근거가 있는가. 빈칸이 하나도 없어야 한다. 전제와 가정도 근거다
인용한 줄이 그 규칙이 요구하는 모양인가.→E 라면 인용한 두 줄 가운데 하나가 조건문이고 다른 하나가 정확히 그 전건이어야 한다
인용한 줄이 범위 안에 있는가. 그 줄을 감싼 상자가 모두 아직 열려 있어야 한다
모든 부증명이 방출되었는가. 열린 상자를 남긴 채 끝나면 안 된다
마지막 줄이 목표이고 깊이가 0 인가. 그리고 남은 가정이 전제뿐인가
<5번 줄 하나가 상자 안의 세 줄을 대신한다 — 부증명이 남기는 것은 그 안의 줄들이 아니라 조건문 한 줄이다>[원본 보기]
셋째 항목이 가장 자주 걸린다. 규칙 이름과 줄 번호만 보면 맞아 보이는데 범위를 벗어난 경우다. 닫힌 상자 안의 줄은 그 가정 아래에서만 참이므로 상자 밖에서는 없는 것과 같다. 상자가 남기는 것은 그 안의 줄들이 아니라 방출이 만들어 낸 한 줄뿐이다.
예제 90
아래 도출은 𝑃→𝑄,𝑄→𝑅⊢𝑃→𝑅 를 주장한다. 결론은 옳지만 도출에는 잘못이 있다. 다섯 항목으로 찾아라.
줄
논리식
근거
1
𝑃→𝑄
전제
2
𝑄→𝑅
전제
3
│ 𝑃
가정
4
│ 𝑄
1, 3 →E
5
𝑃→𝑄
3~4 →I
6
𝑅
2, 4 →E
7
𝑃→𝑅
3~6 →I
풀이 보기
첫째 항목은 통과한다. 모든 줄에 근거가 있다. 둘째도 통과한다. 6번 줄을 보면 2번이 조건문 𝑄→𝑅 이고 4번이 그 전건 𝑄 다. 모양은 정확하다.
셋째에서 걸린다. 5번 줄에서 부증명이 방출되었으므로 그 상자는 닫혔고 3번과 4번은 닫힌 상자 안에 있다. 6번 줄은 4번 줄을 부를 수 없다. 넷째와 다섯째에서도 걸린다. 7번 줄은 3~6 을 부증명이라고 부르는데 3~4 는 이미 5번에서 방출되었고 5번과 6번은 상자 밖이다. 그런 상자는 없다.
잘못의 뿌리는 하나다. 상자를 너무 일찍 닫았다. 5번 줄은 필요하지도 않은 줄이었다 — 𝑃→𝑄 는 이미 1번에 있다. 그 한 줄을 지우면 상자가 계속 열려 있고 나머지가 다 맞는다. 즉 5번 자리에 𝑅 을 적고(근거 2, 4 →E) 그것을 상자 안에 둔 뒤 3~5 를 →I 로 방출하면 여섯 줄로 끝난다.
요령으로 적으면 이렇다. 상자는 그 안에서 할 일이 다 끝났을 때만 닫는다. 방출은 되돌릴 수 없다.
예제 91
전제 𝑃 와 ¬𝑃 에서 𝑄 를 도출하라. 그리고 그 도출이 다섯 항목을 정말 통과하는지 확인하라. 𝑄 는 전제와 아무 상관도 없어 보이는데 괜찮은가.
풀이 보기
줄
논리식
근거
1
𝑃
전제
2
¬𝑃
전제
3
⊥
2, 1 ¬E
4
𝑄
3 ⊥E
다섯 항목을 훑는다. (1) 네 줄 모두 근거가 있다. (2) 3번은 ¬E 가 요구하는 대로 ¬𝑃 와 𝑃 를 인용했고 4번은 ⊥E 가 요구하는 대로 ⊥ 한 줄을 인용했다. (3) 부증명이 없으니 범위 문제도 없다. (4) 닫을 상자가 없다. (5) 마지막 줄이 목표이고 깊이 0 이며 열린 가정은 전제 둘뿐이다. 전부 통과하므로 이 도출은 옳다.
𝑄 가 전제와 상관없어 보이는 것은 사실이지만 그것은 도출의 흠이 아니다. 6장의 폭발을 떠올리면 어긋남이 없다. {𝑃,¬𝑃} 를 모두 참으로 만드는 배당은 없으므로 "전제를 모두 참으로 만드는 배당은 결론도 참으로 만든다"가 공허하게 성립한다. 즉 {𝑃,¬𝑃}⊨𝑄 다. 의미론이 인정하는 것을 증명 체계도 인정해야 하고 그 일을 하는 규칙이 ⊥E 다.
여기서 검사의 성격도 드러난다. 다섯 항목은 도출이 규칙을 지켰는지만 본다. 결론이 흥미로운지는 보지 않는다. 그리고 그것으로 충분하다. 규칙을 지킨 도출은 반드시 참을 낳는다는 것이 13장의 건전성 정리다.
흔한 실수
자주 나오는 실수 넷을 모아 둔다. 처음 셋은 검사 항목으로 걸러지고 넷째는 규칙의 방향을 잘못 기억한 데서 온다.
실수
어떻게 드러나는가
고치는 법
방출하지 않은 가정을 남긴다
마지막 줄의 깊이가 0 이 아니다
남은 상자를 닫는 규칙을 찾는다. 없으면 증명한 것이 목표가 아니다
범위를 벗어난 줄을 인용한다
인용한 줄과 지금 줄 사이에서 세로줄이 끊긴다
상자를 늦게 닫거나 필요한 줄을 상자 안에서 다시 얻는다
∨E 의 두 갈래가 서로 다른 식으로 끝난다
방출 줄의 식이 어느 갈래와도 같지 않다
두 갈래 모두 지금 목표까지 밀어붙인다
¬E 와 ⊥E 를 뒤바꾼다
⊥ 이 없는데 ⊥E 를 쓰거나 ⊥ 에서 ¬E 를 쓴다
아래 입출력 표를 확인한다
넷째 실수는 이름이 비슷해서 생긴다. 두 규칙은 방향이 정반대다.
규칙
들어가는 것
나오는 것
¬E
𝜑 한 줄과 ¬𝜑 한 줄
⊥
⊥E
⊥ 한 줄
아무 식이나 하나
¬I
𝜑 를 가정한 부증명, 끝이 ⊥
¬𝜑
IP
¬𝜑 를 가정한 부증명, 끝이 ⊥
𝜑
표를 한 줄로 요약하면 이렇다. ¬E 는 ⊥ 을 만드는 유일한 규칙이고 ⊥E 는 ⊥ 을 쓰는 유일한 규칙이다.¬ 을 없애는 규칙은 어디에도 없다. 부정을 벗기는 일은 IP 가 대신한다.
예제 92
다음 두 도출은 각각 어느 규칙을 잘못 썼는가. (가) 1번 𝑃 전제, 2번 ¬𝑃 전제, 3번 𝑄 — 근거는 '1, 2 ⊥E'. (나) 1번 ¬¬𝑃 전제, 2번 𝑃 — 근거는 '1 ¬E'.
풀이 보기
(가) ⊥E 는 ⊥ 한 줄만 인용한다. 여기서는 𝑃 와 ¬𝑃 두 줄을 인용했으니 규칙의 모양이 아니다. 검사 둘째 항목에서 걸린다. 고치려면 한 줄을 끼워 넣는다. 먼저 ¬E 로 ⊥ 을 만들고 그다음 ⊥E 로 𝑄 를 얻는다. 앞 절의 네 줄짜리 도출이 정확히 그것이다. 두 규칙은 잇달아 쓰는 것이지 하나로 합쳐 쓰는 것이 아니다.
(나) ¬E 는 부정을 벗기는 규칙이 아니다. 이 이름을 "¬ 를 없앤다"로 읽으면 반드시 이 실수를 한다. ¬E 가 없애는 것은 부정 기호가 아니라 식 전체다 — 두 줄을 먹고 ⊥ 하나를 내놓는다. ¬¬𝑃 에서 𝑃 로 가는 길은 앞 절에서 본 IP 뿐이고 세 줄이 든다.
예제 93
아래 도출의 잘못을 모두 찾아라. 주장은 𝑃∨(𝑄∧𝑅)⊢𝑃∨𝑄 다.
줄
논리식
근거
1
𝑃∨(𝑄∧𝑅)
전제
2
│ 𝑃
가정
3
│ 𝑄∧𝑅
가정
4
│ 𝑄
3 ∧E
5
𝑃∨𝑄
1, 2, 3~4 ∨E
풀이 보기
잘못이 둘이다. 첫째, 두 갈래가 같은 식으로 끝나지 않는다. 왼쪽 갈래는 𝑃 에서 시작해 𝑃 로 끝나고 오른쪽 갈래는 𝑄 로 끝난다. ∨E 가 내놓을 수 있는 것은 두 갈래에 공통으로 나온 그 식뿐인데 공통인 것이 없다. 5번 줄의 𝑃∨𝑄 는 어느 갈래에도 나오지 않았다.
둘째, 왼쪽 갈래가 부증명의 꼴을 갖추지 않았다. 근거 칸이 '1, 2, 3~4'인데 2번 하나는 범위가 아니다. ∨E 는 ∨ 한 줄과 부증명 둘을 인용한다.
고치는 법은 하나다. 두 갈래 모두를 지금 목표까지 밀어붙인다. 각 갈래 안에서 ∨I 를 한 번씩 쓰면 된다.
줄
논리식
근거
1
𝑃∨(𝑄∧𝑅)
전제
2
│ 𝑃
가정
3
│ 𝑃∨𝑄
2 ∨I
4
│ 𝑄∧𝑅
가정
5
│ 𝑄
4 ∧E
6
│ 𝑃∨𝑄
5 ∨I
7
𝑃∨𝑄
1, 2~3, 4~6 ∨E
갈래의 결론이 가정과 똑같아야 하는 경우라면 R(반복)로 한 줄을 적어 준다. 근거 없는 줄을 남기지 않기 위해서다. 마지막 문장을 붙여 둔다. 실수는 대개 검사에서 걸린다. 걸리지 않으면 도출은 옳다. 그것이 증명을 형식화한 대가로 얻는 것이다.
이 장에서 새로 나온 것
규칙은 하나도 늘지 않았다. 늘어난 것은 규칙을 고르는 요령의 이름들이다.
용어
뜻
목표(goal)
지금 얻으려는 식. 도출을 찾는 동안 계속 바뀐다. 규칙을 고르면 목표가 갈린다
거꾸로 가기
목표의 주연결자를 보고 마지막에 쓸 도입 규칙을 정하는 것. 이 장의 중심 원리
앞으로 밀기
손에 든 줄에 제거 규칙을 써서 새 줄을 꺼내는 것
손에 든 것
지금 줄에서 부를 수 있는 줄 전부. 전제, 열린 가정, 그것들에서 얻은 줄
가운데서 만나기
목표를 끝까지 쪼갠 뒤 손에 든 것을 다 펴고 남은 틈을 보는 절차
공짜 수
고를 것도 잃을 것도 없는 수. ∧E, ↔E, 전건을 이미 쥔 →E
값비싼 수
∨I(한쪽을 고른다), ∨E(같은 목표를 두 번), IP(목표를 ⊥ 으로 바꾼다)
막다른 길
규칙을 옳게 썼는데도 더 갈 수 없는 상태. 손에 든 정보와 규칙이 요구하는 것이 어긋난 것
다섯 항목 검사
근거 있음 · 규칙 모양 · 범위 · 방출 · 마지막 줄. 이 순서로 훑는다
피치 스타일 표
줄 · 논리식 · 근거 세 칸. 식 앞의 세로줄 하나가 부증명 하나
챙겨 갈 것은 넷이다.
결론의 주연결자가 마지막 수를 정한다.→ 면 가정하고 후건을, ∧ 면 둘을 따로, ¬ 이면 가정하고 ⊥ 을. 여기에는 고를 것이 없다
∨I 는 목표가 ∨ 라고 쓰는 규칙이 아니다. 다른 규칙이 어떤 ∨ 를 요구할 때, 또는 ∨E 의 갈래 안에서 쓴다
∨E 는 손에 든 ∨ 를 소비하는 규칙이고 두 갈래의 목표는 지금 목표 그대로다. 목표가 작아지지 않으므로 값비싸다
IP 는 거꾸로 가기를 앞으로 밀기로 바꾸는 수다. 목표를 ⊥ 으로 넘기고 목표의 부정을 손에 받는다. 다른 관문이 다 막혔을 때만 꺼낸다
마지막으로 이 장이 남기는 물음 하나. 여기서 쓴 요령은 어느 것도 절차가 아니다. "이렇게 하면 반드시 찾아진다"는 보장이 없다. 진리표에는 그런 보장이 있었다. 줄을 다 채우면 끝났다. 그러면 증명 체계는 진리표보다 못한 것인가? 그렇지 않다는 것이 14장의 완전성 정리다 — Γ⊨𝜑 이면 도출은 반드시 있다. 있다는 것은 보장되고, 찾는 일이 이 장의 몫이었다.
술어논리의 문법
다음 논증을 보자. "모든 사람은 죽는다. 소크라테스는 사람이다. 그러므로 소크라테스는 죽는다."
이것이 타당하다는 데에는 이견이 있을 수 없다. 두 전제가 참이면서 결론이 거짓인 사정은 상상조차 되지 않는다. 그런데 이 논증을 5장의 언어로 옮기면 원자 문장이 셋이고 그 사이에 연결자가 하나도 없으므로, 얻어지는 형식은 𝑃,𝑄∴𝑅 다. 6장의 뜻으로 이 형식은 부당하다.𝑃 와 𝑄 에 T 를, 𝑅 에 F 를 배당하면 전제가 모두 참이고 결론이 거짓이 된다.
3장에서 못 박아 둔 것을 여기서 되새겨야 한다. 타당한 형식의 대입례는 타당하지만, 부당한 형식의 대입례라고 해서 부당한 것은 아니다. 그러니 위의 결과는 "소크라테스 논증이 부당하다"는 뜻이 아니다. 명제논리가 이 논증에 준 형식이 너무 성글다는 뜻이다. 논증을 떠받치는 것 — "사람"과 "죽는다"가 여러 문장에 되풀이된다는 사실 — 이 전부 원자 안에 갇혀 보이지 않는다.
이 장은 원자 안을 연다. 문장문자 하나를 술어와 이름으로 갈라 놓고, 갈라 놓은 조각들을 다시 조립하는 문법을 세운다. 그렇게 만든 언어를 술어논리(predicate logic)의 언어라 하고, 1차 논리(first-order logic)라고도 부른다.
이 장에서 답할 질문은 넷이다. 어떤 기호열이 술어논리의 논리식인가. ∀𝑥 는 식 안의 어디까지를 지배하는가. 같은 변수 𝑥 가 한 식 안에서 성격이 둘로 갈릴 수 있는가. 그리고 "𝑥 자리에 𝑎 를 넣는다"는 것이 정확히 무슨 연산인가.
8장에서 가져오는 것은 거의 없다. 7·8장은 증명 체계 층을 세웠고 이 장은 맨 아래 문법 층으로 돌아간다. 실제로 다시 쓰는 것은 5장의 세 조항과 괄호 규약, 4장의 옮기기 절차, 그리고 방금 쓴 6장의 반례 배당 하나뿐이다. 다만 7·8장에서 규칙을 고를 때 기준이 주연결자였다는 것은 기억해 두는 편이 좋다. 11장에서 한정사 규칙이 끼어드는 자리가 거기다.
5장의 규율도 그대로 지킨다. 이 장은 어떤 논리식에 대해서도 참이라거나 거짓이라고 말하지 않는다. 마지막 절에서 자연어를 옮길 때만 뜻을 잠깐 빌려 쓰고, 그때마다 진리조건은 10장의 몫이라고 밝힌다.
Mathematics for Computer Science 를 읽은 사람은 ∀ 와 ∃, 논의 영역, 한정사의 순서와 부정을 이미 안다. 이 장은 그것을 다시 가르치지 않는다. 그 문서가 멈춘 자리 — 그 기호들로 적힌 것이 애초에 무엇인지 — 를 채운다.
왜 명제논리로 부족한가
명제논리가 못 보는 것이 정확히 무엇인지 먼저 짚자. 소크라테스 논증의 세 문장에는 같은 낱말이 되풀이된다. "사람"이 첫째와 둘째에, "죽는다"가 첫째와 셋째에, "소크라테스"가 둘째와 셋째에 나온다. 논증이 성립하는 이유가 그 되풀이에 있다.
그런데 5장의 언어에서 문장문자는 더 쪼개지지 않는다.𝑃 와 𝑄 가 낱말을 나눠 갖고 있다는 것을 적을 방법이 그 언어에는 없다. 문장문자는 서로 아무 관계가 없는 별개의 기호일 뿐이다.
<왼쪽 세 상자 사이에 선이 하나도 없다는 것과, 오른쪽에서 같은 글자가 여러 줄에 나타난다는 것 — 이 대비가 이 장 전체의 동기다>[원본 보기]
그래서 문장 하나를 셋으로 나눈다. 무엇에 대해 말하는가(대상), 무엇이라고 말하는가(술어), 그리고 대상을 하나 고르는가 아니면 전부를 훑는가(한정사). "소크라테스는 사람이다"는 대상 하나와 술어 하나로 갈라지고, "모든 사람은 죽는다"는 대상을 특정하지 않고 전부를 훑는다.
나눠 놓고 나면 되풀이가 기호에 드러난다. 첫 전제와 결론이 같은 술어를 쓰고, 둘째 전제와 결론이 같은 이름을 쓴다. 그 사실이 종이 위에 적혀 있어야 11장의 증명 규칙이 그것을 붙잡을 수 있다.
예제 94
𝑃,𝑄∴𝑅 가 부당한 형식임을 6장의 방법으로 보여라. 그리고 이 결과로부터 "소크라테스 논증은 부당하다"가 따라 나오지 않는 이유를 3장의 낱말로 말하라.
풀이 보기
부당함을 보이는 방법은 반례 배당 하나를 내놓는 것이다. 𝑣(𝑃)=T, 𝑣(𝑄)=T, 𝑣(𝑅)=F 로 두면 전제 둘이 모두 참이고 결론이 거짓이다. 세 문장문자가 서로 다른 기호이므로 이 배당을 막을 것이 아무것도 없다.
이제 둘째 물음이다. 3장에서 우리는 타당한 형식의 대입례는 타당하다고 했고, 그 역이 성립하지 않는다고 했다. 여기가 정확히 그 자리다. 어떤 논증이 부당한 형식의 대입례라는 사실은 그 논증에 대해 아무것도 말해 주지 않는다. 같은 논증이 더 촘촘한 형식의 대입례이기도 하고, 그 형식이 타당할 수 있기 때문이다.
확인해 두자. 부당한 형식의 대입례 중에는 실제로 부당한 것도 있다. "모든 고래는 물고기다. 소크라테스는 사람이다. 그러므로 소크라테스는 죽는다." 이것도 𝑃,𝑄∴𝑅 로 옮겨진다. 같은 형식에서 타당한 것과 부당한 것이 함께 나오므로, 그 형식은 판정에 쓸 수 없다. 판정에 쓸 수 있는 더 촘촘한 형식을 만드는 것이 이 장의 일이다.
예제 95
한정사가 전혀 없는 논증에도 명제논리로 부족한 것이 있다. "𝑎 는 𝑏 보다 크다. 𝑏 는 𝑐 보다 크다. 그러므로 𝑎 는 𝑐 보다 크다." 이 논증을 명제논리로 옮기면 무엇이 되는가. 그리고 이 예가 앞의 예와 무엇이 다른가.
풀이 보기
세 문장 모두 더 쪼갤 연결자가 없으므로 각각 문장문자 하나가 되고, 형식은 다시 𝑃,𝑄∴𝑅 다. 앞의 예와 똑같이 부당한 형식이 나온다.
다른 점은 여기에 ∀ 도 ∃ 도 없다는 것이다. 되풀이되는 것은 두 자리를 갖는 술어 "…는 …보다 크다"와 세 이름 𝑎, 𝑏, 𝑐 뿐이다. 술어논리로 옮기면 𝐺𝑎𝑏,𝐺𝑏𝑐∴𝐺𝑎𝑐 가 된다.
여기서 얻을 것이 둘이다. 첫째, 원자를 쪼개는 일과 한정사를 들이는 일은 서로 다른 두 가지 확장이고, 이 예는 앞엣것만 필요로 한다. 둘째, 술어가 자리를 여럿 가질 수 있어야 한다는 것 — 이것이 다음 절의 "항수"다.
덧붙여 두면 𝐺𝑎𝑏,𝐺𝑏𝑐∴𝐺𝑎𝑐 도 논리학의 뜻으로 타당하지는 않다. 𝐺 를 어떻게 해석해도 결론이 따라 나오려면 "크다"가 옮겨 간다는 사실이 전제로 적혀 있어야 한다. 그 사실을 적을 수단이 생기는 것이 이 장의 소득이고, 적어 넣은 뒤에 실제로 따라 나오는지는 10장과 11장이 판정한다.
어휘 — 술어논리의 언어에 있는 기호
5장에서 했던 대로 쓸 수 있는 기호를 남김없이 적는다. 술어논리의 어휘는 여섯 무리다.
개체상수(individual constant)𝑎,𝑏,𝑐,𝑎1,𝑎2,… — 정해진 대상 하나를 가리키는 이름이다. 무한히 많다. 짧게 이름이라고도 부른다.
변수(variable)𝑥,𝑦,𝑧,𝑥1,𝑥2,… — 혼자서는 무엇을 가리키는지 정해지지 않는다. 무한히 많다.
술어(predicate)𝐹,𝐺,𝐻,𝐹1,𝐹2,… — 각 술어에는 항수(arity)가 하나 정해져 있다. 항수는 그 술어가 받는 대상의 개수이고, 1 이상의 자연수다. 무한히 많다.
연결자¬,∧,∨,→,↔ — 5장에서 그대로 온다. 항수도 그대로다.
한정사(quantifier)∀ (전칭)와 ∃ (존재), 그리고 괄호( 와 ).
⊥ — 7장에서 명제논리의 어휘에 더한 그 기호다. 술어논리의 어휘도 그것을 물려받는다. 11장의 부정 규칙과 IP 가 술어논리 도출에서도 그대로 쓰이므로 여기서 빼면 그 규칙들이 적을 자리를 잃는다
여기서 세 가지를 못 박아 둔다.
첫째, 술어에 𝑃 를 쓰지 않는다.𝑃 는 명제논리의 문장문자였고, 5장·6장·7장 내내 그 뜻으로 쓰였다. 술어에 같은 글자를 쓰면 독자가 두 층을 겹쳐 읽게 된다. 이 문서에서 술어는 𝐹, 𝐺, 𝐻 로만 적는다. Mathematics for Computer Science 는 술어를 𝑃(𝑥) 로 적었는데, 같은 것을 다른 글자로 적은 것이다.
둘째, 문장문자는 술어논리의 어휘에서 빠졌다. 술어의 항수를 1 이상으로 정했으므로 "대상을 하나도 받지 않는 술어"는 없다. 5장의 언어가 이 언어의 부분이 아니라는 뜻이고, 그래도 손해가 없다. 연결자만으로 조립되는 논증은 이 언어 안에서도 그대로 조립된다.
셋째, ⊥ 은 그대로 온다. 7장이 "어휘를 늘리는 일은 정의에 조항 하나를 더하는 일"이라며 ⊥ 을 명제논리의 어휘에 더했다. 술어논리의 어휘는 그 결정을 물려받으므로 여기서 다시 정할 것이 없다. ⊥ 은 술어가 아니고 항수가 0 이며 어떤 대상도 받지 않는다는 것만 확인해 두면 된다.
<아래 상자를 눈여겨보라 — 함수기호를 쓰지 않기로 한 결정과 문장문자를 뺀 결정이 이 장의 나머지를 통째로 단순하게 만든다>[원본 보기]
함수기호는 쓰지 않는다
많은 교재가 어휘에 함수기호(function symbol)𝑓,𝑔 를 넣는다. 그러면 𝑓(𝑎) 나 𝑓(𝑔(𝑥)) 같은 표현이 다시 대상을 가리키게 되어, "𝑎 의 아버지"나 "𝑥 의 다음 수"를 한 덩어리로 적을 수 있다.
이 문서는 함수기호를 어휘에 넣지 않는다. 이유는 셋이다.
함수기호가 없으면 항이 개체상수 아니면 변수, 딱 두 가지다. 다음 절의 항 정의에서 재귀 조항이 비고, 대입과 변수 포획이 눈으로 좇을 수 있을 만큼 단순해진다. 이 장에서 가장 어려운 자리가 그 둘이므로 여기서 얻는 것이 크다.
함수기호로 적을 수 있는 것은 술어로도 적을 수 있다. "𝑎 의 아버지는 𝑏 다"는 2항 술어 𝐺𝑎𝑏 로 적으면 된다. 잃는 것은 간결함뿐이다.
12장에서 동일성 = 를 들이면 "𝑎 의 아버지"처럼 유일하게 정해지는 대상을 지목하는 표현을 술어와 한정사만으로 만들 수 있다. 함수기호의 몫이 그리로 넘어간다.
대가도 적어 둔다. 17장에서 산술의 언어를 다루려면 후계 함수와 덧셈·곱셈이 필요해진다. 그때는 어휘에 함수기호를 더하고 항의 정의에 재귀 조항을 하나 채운다. 5장에서 ⊥ 을 7장이 어휘에 더한 것과 같은 일이다. 언어가 무엇인지는 우리가 정하고, 정한 것을 바꾸려면 정의를 고친다.
예제 96
다음 각각이 술어논리의 어휘인지 판정하라. 어휘라면 어느 무리인지, 아니라면 왜 아닌지 밝혀라. (가) 𝑎12 (나) ∃ (다) 𝑃 (라) 𝑓 (마) 𝜑 (바) 쉼표
풀이 보기
판정 기준은 5장과 같다. 위의 여섯 무리 목록에 있는가뿐이다.
(가) 어휘다. 개체상수 무리에 속한다. 아래첨자에 어떤 자연수가 와도 된다.
(나) 어휘다. 한정사 둘 중 하나다.
(다) 어휘가 아니다. 문장문자는 이 언어에서 빠졌고, 술어에도 이 글자를 쓰지 않기로 했다. 이것은 취향이 아니라 이 문서 전체의 약속이다.
(라) 어휘가 아니다. 함수기호를 넣지 않기로 정했기 때문이다. 17장에서 어휘를 늘린 뒤에는 어휘가 된다.
(마) 어휘가 아니다. 5장과 같은 이유다. 𝜑 는 적형식 하나를 가리키는 메타언어의 변수이고, 논리식 안에 이 글자가 적히는 일은 없다. 술어논리에서 메타변수가 하나 더 필요해지는데, 그것은 다음 절에서 다룬다.
(바) 어휘가 아니다. 5장에서와 똑같다. 뒤에서 보듯 원자식은 𝐺𝑎𝑏 처럼 항을 나란히 붙여 적으므로, 논리식 안에 쉼표가 나타나는 일이 없다.
예제 97
개체상수와 변수를 한 무리로 합쳐 "대상을 가리키는 기호" 하나로 두면 무엇이 곤란해지는가.
풀이 보기
묻는 것은 두 무리를 나눠 둠으로써 얻는 것이고, 답을 찾는 방법은 둘을 합쳤다고 가정하고 한정사 조항을 적어 보는 것이다.
한정사 조항은 "∀ 뒤에 변수 하나를 적고 그 뒤에 적형식을 적는다"는 모양이다. 두 무리를 합치면 그 자리에 개체상수도 올 수 있게 되어 ∀𝑎𝐹𝑎 같은 기호열이 적형식이 된다. 이것을 무엇으로 읽어야 하는가. 𝑎 는 정해진 대상 하나를 가리키는 이름인데, 그것을 "모든"으로 훑는다는 말이 되어 뜻이 없다.
더 심각한 것은 뒤에 온다. 대입 𝜑[𝑎/𝑥] 는 변수를 이름으로 바꿔 넣는 연산이고, 11장의 한정사 규칙이 전부 그 연산 위에 선다. 두 무리를 합치면 무엇을 무엇으로 바꾸는지 말할 수가 없다.
답이 말이 되는가. 두 무리를 나누는 일은 낭비가 아니라 역할을 문법에 새겨 두는 일이다. 이름은 잡히지 않고 변수는 잡힌다 — 이 장의 절반이 그 차이에서 나온다.
항과 원자식
이제 정의를 세운다. 5장에서 그랬듯 재귀로 준다.
항(term)의 정의는 세 조항이다.
기저. 모든 개체상수는 항이다. 모든 변수는 항이다.
재귀. 지금은 비어 있다. 함수기호를 어휘에 넣지 않았기 때문이다.
폐포. 위 조항으로 얻어지는 것만이 항이다.
재귀 조항이 비었으므로 이 정의는 사실상 "항 = 개체상수 또는 변수"라는 목록이다. 그런데도 세 조항의 모양을 그대로 유지하는 이유가 둘 있다. 5장의 정의와 나란히 읽히게 하려는 것이 하나이고, 17장에서 함수기호를 더할 때 고칠 자리가 어디인지 미리 표시해 두려는 것이 하나다.
항 위에 원자식을 얹는다. 항수가 𝑛 인 술어 하나 뒤에 항 𝑛 개를 나란히 적은 기호열을 원자식(atomic formula)이라 한다. 𝐹 가 1항이면 𝐹𝑎 와 𝐹𝑥 가 원자식이고, 𝐺 가 2항이면 𝐺𝑎𝑏, 𝐺𝑥𝑦, 𝐺𝑎𝑥 가 원자식이다.
항수를 술어마다 미리 못 박아 둔 덕에 읽기가 기계적이다. 술어를 하나 읽고, 그 술어의 항수만큼 항을 세어 읽으면 끝난다. 쉼표도 괄호도 필요 없다.
<화살표가 아래에서 위로만 간다는 것이 이 그림의 전부다. 원자식은 항이 아니므로 다시 술어의 재료가 되지 못한다>[원본 보기]
여기서 이 절의 요점이 나온다. 항과 원자식은 다른 층에 있다. 항은 대상을 가리키고, 원자식은 그 대상에 대해 무언가를 말한다. 𝑎 는 무엇을 가리킬 뿐 무엇이라고 말하지 않으므로 적형식이 아니고, 𝐹𝑎 는 말을 하므로 항이 아니다.
메타언어도 하나 늘려 둔다. 5장의 𝜑,𝜓,𝜒 (적형식)와 Γ,Δ (적형식 집합)에 더해, 항 하나를 가리키는 메타변수 𝑡를 쓴다. 𝑠 도 함께 쓴다. 이 글자들도 어휘가 아니다.
예제 98
다음 각각이 항인지, 원자식인지, 둘 다 아닌지 판정하라. 𝐹 는 1항, 𝐺 는 2항이다. (가) 𝑏 (나) 𝑦 (다) 𝐹𝑏 (라) 𝐹 (마) 𝐹𝑎𝑏 (바) 𝐺𝑥
(라) 둘 다 아니다. 술어 하나만 적어 놓은 것이다. 항수가 1이므로 항 하나가 따라와야 하는데 없다.
(마) 둘 다 아니다.𝐹 는 항 하나만 받는데 둘이 왔다. 항수를 어긴 기호열이고, 어느 정의도 이것을 만들지 못한다.
(바) 둘 다 아니다.𝐺 는 항 둘을 받는데 하나만 왔다. (마)와 반대 방향의 같은 잘못이다.
요령을 정리해 두면 이렇다. 술어를 만나면 그 술어의 항수만큼 항을 세어라. 남거나 모자라면 원자식이 아니다.
예제 99
𝐹𝐹𝑎 는 왜 원자식이 아닌가. 𝐹 는 1항이다. 그리고 항수를 술어마다 고정하지 않고 "몇 개든 받는다"로 두면 무엇이 곤란해지는지 함께 답하라.
풀이 보기
𝐹𝐹𝑎 를 원자식으로 읽으려면 𝐹 뒤의 𝐹𝑎 가 항이어야 한다. 항 정의를 보자. 𝐹𝑎 는 개체상수도 변수도 아니고, 재귀 조항은 비어 있다. 폐포 조항에 의해 𝐹𝑎 는 항이 아니다. 따라서 𝐹𝐹𝑎 는 원자식이 아니다.
이것이 "1차"라는 이름의 뜻과 이어진다. 이 언어에서 한정사는 대상만 훑고, 술어를 훑지 않는다. ∀𝐹𝐹𝑎 같은 기호열은 적형식이 아니다. 술어까지 훑는 언어를 2차 논리라 하고, 15장과 17장의 결과들이 1차라는 조건 위에 서 있다.
둘째 물음. 항수를 고정하지 않으면 읽기가 갈린다. 𝐺𝑥𝑎 를 보자. 𝐺 가 2항이면 이것은 원자식 하나다. 𝐺 가 1항이면 𝐺𝑥 가 원자식이고 뒤의 𝑎 는 남는데, 남은 것을 어떻게 처리할지 정해진 바가 없다. 항수가 정해져 있지 않으면 같은 기호열을 두 가지로 읽을 수 있게 되어 5장에서 애써 확보한 유일 가독성이 원자식 층에서부터 무너진다.
답이 말이 되는가. 5장에서 괄호가 하던 일을 여기서는 항수가 한다. 둘 다 어디까지가 한 덩어리인지를 기계가 알 수 있게 만드는 장치다.
적형식 — 5장의 정의에 조항을 더한다
이제 적형식이다. 5장의 세 조항을 그대로 가져와 두 곳을 고친다.
기저. 모든 원자식은 적형식이다. 그리고 ⊥ 도 적형식이다 — 7장이 명제논리의 기저 조항에 더한 줄이 그대로 따라온다.
재귀.𝜑 가 적형식이면 ¬𝜑 도 적형식이다. 𝜑 와 𝜓 가 적형식이면 (𝜑∧𝜓), (𝜑∨𝜓), (𝜑→𝜓), (𝜑↔𝜓) 도 적형식이다. 그리고 𝜑 가 적형식이고 𝑥 가 변수이면 ∀𝑥𝜑 와 ∃𝑥𝜑 도 적형식이다.
폐포. 위 두 조항을 유한 번 적용해 얻어지는 기호열만이 적형식이다.
<폐포 조항이 글자 하나 바뀌지 않는다는 것을 확인하라 — 그래서 13장의 구조적 귀납법이 그대로 쓰이고, 확인할 갈래만 일곱에서 아홉이 된다>[원본 보기]
달라진 곳이 정확히 두 군데다. 기저의 "문장문자"가 "원자식"으로 바뀌었고, 재귀에 조항 하나가 붙었다. 기저의 ⊥ 과 폐포는 그대로다.
괄호가 붙는 자리를 확인해 두자. 한정사 조항은 ¬ 조항과 같은 모양이다.∀𝑥𝜑 이지 (∀𝑥𝜑) 가 아니다. 5장에서 봤듯 괄호가 필요한 것은 재료가 둘 이상일 때인데, 한정사도 적형식을 하나만 받으므로 경계를 표시할 일이 없다.
조항이 붙었으니 확인할 갈래가 일곱에서 아홉이 되었다. 일곱은 5장의 여섯에 7장이 ⊥ 을 더한 수이고, 거기에 한정사 둘이 붙어 아홉이다. 13장에서 "모든 적형식에 대하여" 꼴의 주장을 구조적 귀납법으로 증명할 때 이 아홉을 확인하게 된다. 늘어난 두 갈래가 곧 술어논리에서 새로 힘들어지는 부분이고, 14장의 완전성 증명이 명제논리 때보다 훨씬 길어지는 이유도 거기다.
한정사의 범위
낱말을 하나 먼저 갈라 둔다. 7장의 "가정의 범위"와 다른 것이다. 거기서 범위는 도출의 어느 줄까지 그 가정이 열려 있는가였고 — 세로 막대가 그것을 그렸다 — 여기서 범위는 식의 어느 부분까지를 그 한정사가 지배하는가다. 하나는 도출 위의 구간이고 하나는 기호열 안의 구간이다. 영어가 둘 다 scope 라 한국어도 둘 다 범위로 옮기는 것이 관례이므로, 어느 쪽 범위인지는 문맥으로 가른다.
∀𝑥𝜑 에서 재료로 쓰인 𝜑 를 그 한정사의 범위(scope)라 한다. ∃𝑥𝜑 도 마찬가지다. 범위는 정의가 이미 정해 놓았다 — 한정사 조항이 재료로 쓴 그 적형식이 범위이고, 그것이 전부다.
범위를 눈으로 찾는 법도 기계적이다. 한정사 바로 뒤가 여는 괄호이면 짝이 맞는 닫는 괄호까지가 범위이고, 여는 괄호가 아니면 그 뒤의 가장 짧은 적형식이 범위다. ∀𝑥(𝐹𝑥→𝐺𝑥) 에서는 괄호 안 전체가 범위이고, ∀𝑥𝐹𝑥∧𝐺𝑥 에서는 𝐹𝑥 만 범위다.
괄호 생략 규약도 5장에서 이어 쓰되 한 줄을 보탠다. 한정사는 ¬ 와 같은 세기로, 가장 세게 묶는다. 그러므로 ∀𝑥𝐹𝑥→𝐺𝑥 는 (∀𝑥𝐹𝑥→𝐺𝑥) 의 줄임말이고 주연결자는 → 다. ∀𝑥(𝐹𝑥→𝐺𝑥) 와 다른 식이다. 이것이 이 장에서 가장 자주 나는 사고다.
예제 100
다음 각 기호열이 적형식인지 판정하라. 적형식이면 구성열을 적고, 아니면 어느 조항도 그것을 만들지 못함을 보여라. 𝐹 는 1항, 𝐺 는 2항이다. (가) ∀𝑥(𝐹𝑥→∃𝑦𝐺𝑥𝑦) (나) ∀𝑥 (다) ∃𝐹𝑥 (라) ¬∀𝑥𝐹𝑥
풀이 보기
도구는 세 조항뿐이다. 적형식임을 보이려면 구성열을 내놓고, 아님을 보이려면 맨 바깥에서 쓰였을 조항의 갈래를 모두 막는다.
(가) 적형식이다. 구성열은 𝐺𝑥𝑦,∃𝑦𝐺𝑥𝑦,𝐹𝑥,(𝐹𝑥→∃𝑦𝐺𝑥𝑦),∀𝑥(𝐹𝑥→∃𝑦𝐺𝑥𝑦) 다. 첫 항과 셋째 항은 원자식이므로 기저 조항, 둘째 항은 첫 항에 ∃ 조항, 넷째 항은 셋째와 둘째에 → 조항, 다섯째 항은 넷째에 ∀ 조항이다.
(나) 적형식이 아니다. 한정사 조항은 ∀ 와 변수 뒤에 적형식이 따라와야 한다고 말한다. 여기에는 뒤가 없다. 원자식도 아니고 다른 조항의 결과도 아니다.
(다) 적형식이 아니다. 한정사 조항은 ∃ 뒤에 변수가 오라고 말하는데 여기서는 술어 𝐹 가 왔다. 𝐹 는 변수 무리에 속하지 않는다. 앞 절에서 본 "1차" 조건이 이 자리에서 문법으로 나타난 것이다.
(라) 적형식이다. 구성열은 𝐹𝑥,∀𝑥𝐹𝑥,¬∀𝑥𝐹𝑥 다. ¬ 조항과 한정사 조항은 둘 다 괄호를 두르지 않으므로 이 기호열에 괄호가 하나도 없는 것이 맞다.
예제 101
다음 줄임말이 가리키는 적형식을 괄호를 모두 채워 적고, 주연결자를 밝혀라. (가) ∀𝑥𝐹𝑥→𝐺𝑎𝑏 (나) ∃𝑥𝐹𝑥∧∀𝑦𝐺𝑦𝑦 (다) ¬∃𝑥(𝐹𝑥∧𝐺𝑥𝑎)
풀이 보기
요령은 5장과 같다. 가장 약하게 묶는 연결자가 주연결자이고, 한정사는 ¬ 와 함께 가장 세게 묶는다.
(가) 한정사가 𝐹𝑥 만 잡고 나서 → 가 전체를 묶는다. 채워 적으면 (∀𝑥𝐹𝑥→𝐺𝑎𝑏) 이고 주연결자는 → 다. ∀𝑥(𝐹𝑥→𝐺𝑎𝑏) 가 아니다. 두 기호열은 둘째 기호부터 다르다.
(나) 두 한정사가 각각 𝐹𝑥 와 𝐺𝑦𝑦 를 잡고, ∧ 가 전체를 묶는다. 결과는 (∃𝑥𝐹𝑥∧∀𝑦𝐺𝑦𝑦) 이고 주연결자는 ∧ 다.
(다) 괄호가 이미 있어 ∃𝑥 의 범위가 (𝐹𝑥∧𝐺𝑥𝑎) 로 정해져 있고, ¬ 가 그 전체를 받는다. 채울 괄호가 없다. 주연결자는 ¬ 다.
답이 말이 되는가. (가)와 (나)는 이항 조항이 마지막에 쓰였으므로 여는 괄호로 시작하고 닫는 괄호로 끝난다. (다)는 ¬ 조항이 마지막이므로 ¬ 로 시작한다. 5장에서 쓰던 점검이 그대로 통한다.
예제 102
∀𝑥𝐹𝑎 는 적형식인가. 𝑥 가 뒤에 한 번도 나오지 않는데도 그런가.
풀이 보기
정의를 글자 그대로 읽는다. 한정사 조항은 "𝜑 가 적형식이고 𝑥 가 변수이면 ∀𝑥𝜑 도 적형식이다"라고만 말한다. 𝐹𝑎 는 원자식이므로 적형식이고 𝑥 는 변수다. 두 조건이 충족되었다. 적형식이다.
정의에 "𝑥 가 𝜑 안에 나타나야 한다">는 단서가 없다는 것이 요점이다. 이런 한정을 공허한 한정(vacuous quantification)이라 한다.
왜 막지 않는가. 막으려면 조항에 단서를 붙여야 하고, 단서가 붙으면 13장에서 그 갈래를 확인할 때 경우가 둘로 갈린다(나타나는 경우와 나타나지 않는 경우). 정의를 넓게 두고 이상한 것을 몇 개 허용하는 편이, 정의를 좁히고 증명을 복잡하게 만드는 편보다 싸다. 이 선택은 형식 언어를 세울 때 거듭 나타난다.
덧붙이면 ∀𝑥𝐹𝑎 가 무엇을 말하는지는 10장에서 정해지고, 거기서 이 식이 𝐹𝑎 와 늘 같은 값을 갖는다는 것을 보게 된다. 지금은 모양만 본다.
자유 변수와 속박 변수
여기가 이 장에서 가장 걸리는 곳이다. 먼저 낱말 하나를 정확히 해 두어야 한다.
(∀𝑥𝐹𝑥∧𝐺𝑥) 라는 적형식에는 𝑥 라는 글자가 세 번 적혀 있다. 그 세 자리를 각각 𝑥 의 나타남(occurrence)이라 한다. 자유와 속박은 변수에 붙는 성질이 아니라 나타남 하나하나에 붙는 성질이다. 그래서 같은 변수가 한 식 안에서 어떤 자리에서는 속박이고 어떤 자리에서는 자유일 수 있다. 이 문장이 이 절의 전부다.
정의는 재귀로 준다. 5장에서 "정의가 재귀면 그 위에 얹는 개념도 재귀가 된다"고 예고한 것이 여기서 처음 현금화된다. 조항마다 규칙을 하나씩 붙인다.
원자식. 원자식 안의 변수 나타남은 모두 자유다.
¬𝜑.𝜑 의 자유 나타남이 그대로 자유다.
이항 조항. 두 재료의 자유 나타남이 그대로 자유다.
∀𝑥𝜑 와 ∃𝑥𝜑.𝜑 안에 있던 𝑥 의 자유 나타남이 전부 속박된다. 다른 변수의 자유 나타남은 그대로 자유다. 한정사에 붙어 있는 𝑥 자신도 속박된 나타남으로 센다.
속박된 나타남은 다시 자유가 되지 않는다. 한 번 잡히면 끝이다.
<가운데 줄을 보라 — 같은 변수 x 가 한 식 안에서 속박이기도 자유이기도 하다. 이것이 이 절에서 가장 자주 놓치는 자리다>[원본 보기]
손으로 판정하는 절차는 이렇다. 나타남 하나를 고르고, 그 자리를 감싸는 한정사들을 안쪽에서 바깥쪽으로 훑는다. 같은 변수를 쓴 한정사가 하나라도 있으면 속박이고, 하나도 없으면 자유다. 둘 이상 있으면 가장 가까운 것이 잡는다.
마지막 규칙이 필요한 경우가 ∀𝑥∃𝑥𝐹𝑥 같은 식이다. 𝐹𝑥 의 𝑥 는 안쪽 ∃𝑥 가 잡고, 바깥 ∀𝑥 는 잡을 것이 남아 있지 않아 공허한 한정이 된다.
문장 — 자유 변수가 없는 적형식
자유 나타남이 하나도 없는 적형식을 문장(sentence)이라 한다. 자유 나타남이 있는 적형식은 열린 식(open formula)이라 한다.
이 구분이 왜 필요한가. 10장에서 참·거짓이 붙는 것은 문장뿐이기 때문이다. 𝐹𝑥 를 두고 참이냐고 묻는 것은 한국어에서 "그는 죽는다"를 두고 참이냐고 묻는 것과 같다. "그"가 누구인지 정해지지 않았으므로 대답할 수 없다. 대답할 수 있게 만드는 길은 둘이다. 앞에 한정사를 붙여 ∀𝑥𝐹𝑥 로 닫거나, 자유 변수를 이름으로 바꿔 𝐹𝑎 로 만들거나. 뒤엣것이 다음 절의 대입이다.
이 문서에서 "문장"은 이 뜻으로만 쓴다. 자연어 문장을 가리킬 때는 "한국어 문장"처럼 밝혀 적는다.
예제 103
다음 각 식에서 변수의 나타남을 하나씩 짚어 자유인지 속박인지 판정하고, 그 식이 문장인지 말하라. (가) ∀𝑥(𝐹𝑥→𝐺𝑥𝑦) (나) (∃𝑥𝐺𝑥𝑎→𝐹𝑥) (다) ∀𝑥∀𝑦𝐺𝑥𝑦
풀이 보기
절차는 나타남마다 하나씩, 감싸는 한정사를 안에서 밖으로 훑는 것이다.
(가)𝑥 의 나타남이 셋이다. ∀𝑥 의 𝑥, 𝐹𝑥 의 𝑥, 𝐺𝑥𝑦 의 𝑥. 셋 다 ∀𝑥 가 잡으므로 속박이다. 𝑦 의 나타남은 하나이고, 그것을 잡는 한정사가 없으므로 자유다. 자유 나타남이 있으므로 문장이 아니다.
(나)∃𝑥 의 범위는 𝐺𝑥𝑎 까지다. 그러니 𝐺𝑥𝑎 의 𝑥 는 속박이고, → 오른쪽 𝐹𝑥 의 𝑥 는 범위 밖이라 자유다. 같은 변수가 두 성격으로 갈리는 예이고, 문장이 아니다.
(다)𝑥 의 나타남 둘은 ∀𝑥 가, 𝑦 의 나타남 둘은 ∀𝑦 가 잡는다. 자유 나타남이 하나도 없으므로 문장이다.
답이 말이 되는가. 셋 중 문장은 하나뿐이다. 자유 변수가 남기 쉽다는 것을 감각으로 익혀 두는 편이 좋다. 옮기기를 하고 나서 자유 변수가 남아 있지 않은지 확인하는 것이 마지막 절의 점검 항목이 된다.
예제 104
(∀𝑥𝐹𝑥→𝐹𝑥) 와 ∀𝑥(𝐹𝑥→𝐹𝑥) 를 견주어라. 어느 쪽이 문장인가.
풀이 보기
앞엣것부터. 한정사가 가장 세게 묶으므로 ∀𝑥 의 범위는 𝐹𝑥 하나다. 그러면 → 오른쪽의 𝐹𝑥 는 범위 밖이고 그 𝑥 는 자유다. 문장이 아니다.
뒤엣것은 괄호가 범위를 (𝐹𝑥→𝐹𝑥) 전체로 넓혔으므로 𝑥 의 나타남 셋이 모두 속박이다. 문장이다.
두 기호열은 괄호 위치만 다르다. 그런데 하나는 문장이고 하나는 아니다. 5장에서 "괄호가 뜻을 갖지 않고 구조를 표시한다"고 했는데, 그 구조가 여기서는 어느 나타남이 잡히는가를 정한다.
실전 요령을 하나 적어 둔다. 한정사 뒤에 괄호를 열지 않았다면 범위는 바로 다음 원자식 하나다. 의도가 그것이 아니라면 괄호를 열어라. 헷갈릴 때 괄호를 남겨 두는 편이 낫다는 5장의 조언이 여기서 더 절실하다.
예제 105
∃𝑦∀𝑥𝐺𝑥𝑦 에서 𝑥 와 𝑦 의 나타남을 각각 판정하라. 그리고 ∀𝑥 와 ∃𝑦 의 순서를 바꾸면 나타남 판정이 달라지는가.
풀이 보기
𝑦 의 나타남은 둘이다. ∃𝑦 의 𝑦 와 𝐺𝑥𝑦 의 𝑦. 𝐺𝑥𝑦 의 𝑦 를 감싸는 한정사는 안쪽부터 ∀𝑥, ∃𝑦 인데 같은 변수를 쓴 것은 ∃𝑦 이므로 속박이다. 𝑥 의 나타남 둘도 같은 방식으로 ∀𝑥 가 잡는다. 자유 나타남이 없으므로 문장이다.
순서를 바꾼 ∀𝑥∃𝑦𝐺𝑥𝑦 도 마찬가지로 모든 나타남이 속박이고 문장이다. 나타남 판정은 달라지지 않는다.
그렇다고 두 식이 같은 것은 아니다. Mathematics for Computer Science 가 보였듯 한정사의 순서를 바꾸면 말하는 바가 달라진다. 요점은 그 차이가 문법 층에서는 드러나지 않는다는 것이다. 두 기호열은 둘 다 멀쩡한 문장이고, 무엇이 다른지는 10장의 의미론이 말한다.
이 예가 이 문서의 설계를 보여 준다. 문법은 "무엇을 적을 수 있는가"만 정하고 "그것이 무엇을 말하는가"는 말하지 않는다. 층을 나눠 두었기 때문에 두 물음을 따로 물을 수 있다.
대입
열린 식의 자유 변수를 채워 문장으로 만드는 연산을 못 박는다. 11장의 한정사 규칙 넷이 전부 이 연산으로 진술되므로, 표기를 여기서 정확히 정해 두어야 한다.
정의.𝜑 가 적형식, 𝑥 가 변수, 𝑡 가 항일 때, 𝜑[𝑡/𝑥] 는 𝜑 안의 𝑥 의 자유 나타남을 전부𝑡 로 바꾼 결과다.
표기를 읽는 법을 정해 둔다. 대괄호 안은 "새것 / 옛것" 순서다. 위에 오는 𝑡 가 들어가는 것이고, 아래에 오는 𝑥 가 밀려나는 것이다. 다른 책은 𝜑(𝑡/𝑥) 나 𝜑[𝑥:=𝑡] 처럼 적고, 순서를 반대로 정한 책도 있다. 이 문서는 위의 약속만 쓴다.
정의에서 두 가지가 곧바로 따라 나온다.
속박된 나타남은 건드리지 않는다.(∀𝑥𝐹𝑥∧𝐺𝑥)[𝑎/𝑥] 는 (∀𝑥𝐹𝑥∧𝐺𝑎) 다. 앞의 두 𝑥 는 속박이라 그대로 있다.
𝑥 가 𝜑 에 자유로 나타나지 않으면 𝜑[𝑡/𝑥] 는 𝜑 자신이다. 바꿀 자리가 없기 때문이다. 특히 𝜑 가 문장이면 어떤 대입도 𝜑 를 바꾸지 못한다.
<위쪽에서 속박된 x 둘이 그대로 남아 있는 것과, 아래쪽에서 넣은 y 가 ∃y 에 잡혀 버리는 것 — 두 그림의 차이가 다음 소절의 주제다>[원본 보기]
이 문서가 실제로 쓰는 대입은 대부분 𝑡 가 개체상수인 경우, 곧 𝜑[𝑎/𝑥] 다. 자유 변수가 𝑥 하나뿐인 열린 식에 이 대입을 하면 결과는 문장이 된다. 10장의 만족 관계와 11장의 ∀E·∃I 가 정확히 이 모양을 쓴다.
변수 포획
𝑡 가 변수일 때 사고가 난다. ∃𝑦𝐺𝑥𝑦 를 보자. 𝑥 의 나타남 하나가 자유다. 여기에 𝑦 를 넣으면 어떻게 되는가.
(∃𝑦𝐺𝑥𝑦)[𝑦/𝑥]=∃𝑦𝐺𝑦𝑦
넣기 전의 𝑦 는 바깥에서 온 자유로운 것이었는데, 들어가고 나니 ∃𝑦 의 범위 안이라 속박되어 버렸다. 자유로 들어간 것이 잡혀 버리는 이 사고를 변수 포획(variable capture)이라 한다.
포획이 일어나지 않는 경우를 이름 붙여 둔다. 항 𝑡 가 𝜑 안의 𝑥 에 대해 자유롭다(free for)는 것은, 𝑥 의 자유 나타남 자리마다 𝑡 를 넣었을 때 𝑡 안의 변수가 어떤 한정사에도 새로 잡히지 않는다는 뜻이다.
여기서 앞 절의 결정이 값을 한다. 개체상수는 언제나 자유롭다. 개체상수 안에는 변수가 없어 잡힐 것이 없기 때문이다. 그래서 𝜑[𝑎/𝑥] 는 어떤 𝜑 에 대해서도 안전하다.
11장이 이 사실 위에 선다. 그 장의 한정사 규칙 넷은 대입을 개체상수로만 하도록 진술되어 있어 포획이 아예 일어나지 않는다. 대신 다른 종류의 조건이 붙는다 — ∀I 는 쓴 이름이 열린 가정에 나타나지 않을 것을, ∃E 는 거기에 더해 결론에도 나타나지 않을 것을 요구한다. 막으려는 것은 다르지만 목적은 같다. 대입한 결과가 원래 식이 말하지 않은 것을 말하게 두지 않는 것이다.
(가)𝑥 의 나타남이 셋인데 자유인 것은 𝐹𝑥 의 하나뿐이다. 나머지 둘은 ∃𝑥 가 잡는다. 결과는 (𝐹𝑏→∃𝑥𝐺𝑥𝑎) 다.
(나)𝑥 의 자유 나타남이 𝐺𝑥𝑦 에 하나 있고 ∀𝑦 는 𝑥 를 잡지 않는다. 결과는 ∀𝑦𝐺𝑎𝑦 다.
(다)𝑥 의 나타남 둘이 모두 속박이다. 바꿀 자리가 없으므로 결과는 ∀𝑥𝐹𝑥, 곧 원래 식 그대로다.
(라)𝑦 의 자유 나타남이 둘이고 둘 다 바뀐다. 결과는 (𝐺𝑥𝑥∧𝐹𝑥) 다. 여기서 조심할 것이 있다. 원래 식에서 𝑥 와 𝑦 는 서로 다른 자리를 가리킬 수 있었는데, 대입 뒤에는 두 자리가 같은 변수가 되었다. 대입은 자리들을 합칠 수 있다. 이것은 사고가 아니라 대입이 원래 하는 일이지만, 원래 식이 말하던 것보다 좁은 것을 말하게 된다는 점은 기억해 둘 만하다.
예제 107
어떤 적형식 𝜑 에 대해 𝜑[𝑎/𝑥] 를 계산했더니 𝜑 와 같았다. 여기서 무엇을 알 수 있는가.
풀이 보기
대입이 바꾸는 것은 𝑥 의 자유 나타남뿐이다. 결과가 원래 식과 같다면 바뀐 자리가 하나도 없다는 뜻이고, 그러려면 𝑥 의 자유 나타남이 하나도 없어야 한다.
주의할 것은 이것이 "𝜑 가 문장이다"를 뜻하지는 않는다는 점이다. 𝑥 말고 다른 변수가 자유로 남아 있을 수 있다. 𝜑 가 𝐹𝑦 라면 𝜑[𝑎/𝑥] 는 𝐹𝑦 그대로이지만 𝜑 는 열린 식이다.
정확히 말하면 이렇다. 𝜑[𝑎/𝑥]=𝜑 인 것과 𝑥 가 𝜑 에 자유로 나타나지 않는 것이 서로 필요충분이다. 이 사실은 11장에서 ∀I 를 쓸 때 "바꿀 것이 없는데 규칙을 쓴 것 아닌가"를 판정하는 데 쓰인다.
예제 108
다음 대입에서 포획이 일어나는지 판정하라. 일어난다면 무엇이 어디에 잡히는지 밝히고, 피하는 방법을 보여라. (가) (∃𝑦𝐺𝑥𝑦)[𝑧/𝑥] (나) (∀𝑦(𝐺𝑥𝑦→𝐹𝑦))[𝑦/𝑥] (다) (∃𝑦𝐺𝑥𝑦)[𝑏/𝑥]
풀이 보기
판정 기준은 하나다. 넣는 항 안의 변수가 들어간 자리에서 새로 잡히는가.
(가) 일어나지 않는다. 결과는 ∃𝑦𝐺𝑧𝑦 이고, 넣은 𝑧 를 잡는 한정사는 ∃𝑦 가 아니다. 𝑧 는 자유로 남는다.
(나) 일어난다. 결과는 ∀𝑦(𝐺𝑦𝑦→𝐹𝑦) 다. 넣은 𝑦 가 ∀𝑦 의 범위 안에 떨어져 잡혔다. 넣기 전의 𝑦 는 바깥의 무언가를 가리키는 자유로운 변수였는데, 넣고 나니 "모든 𝑦" 가 훑는 것 중 하나가 되어 버렸다.
(다) 일어나지 않는다.𝑏 는 개체상수라 변수가 없다. 잡힐 것이 없으므로 안전하다. 결과는 ∃𝑦𝐺𝑏𝑦 다.
피하는 방법. (나)에서 속박 변수의 이름을 먼저 바꾼다. ∀𝑦(𝐺𝑥𝑦→𝐹𝑦) 를 ∀𝑧(𝐺𝑥𝑧→𝐹𝑧) 로 고친 뒤 대입하면 ∀𝑧(𝐺𝑦𝑧→𝐹𝑧) 가 되고, 넣은 𝑦 는 자유로 남는다. 고칠 때 쓰는 새 변수는 원래 식에 나타나지 않는 것이라야 한다.
여기서 정직하게 밝혀 둘 것이 있다. "속박 변수의 이름을 바꿔도 같은 것을 말한다"는 주장은 지금 증명할 수 없다. 그것은 뜻에 대한 주장이고 이 장에는 뜻이 없다. 지금 말할 수 있는 것은 그런 문법적 조작이 가능하다는 것뿐이고, 두 식이 늘 같은 값을 갖는다는 것은 10장에서 확인한다.
자연어를 술어논리로 옮기기
4장의 옮기기 절차를 확장한다. 4장은 문장 → 논리 상항 표시 → 원자와 사전 → 뼈대 → 기호와 괄호 → 되읽기 여섯 단계였다. 술어논리에서는 앞쪽에 한 단계가 붙고 뒤쪽에 점검이 하나 붙는다.
영(0)단계. 무엇에 대해 말하는지, 곧 논의 영역을 정한다. mcs 의 낱말이고, 10장에서 정의역 𝐷로 형식화된다. 영역은 넓게 잡고 술어로 좁히는 편이 낫다. 영역 자체를 "사람"으로 좁혀 두면 사람 아닌 것에 대해 아무 말도 할 수 없게 된다.
사전에 술어와 이름을 적는다. 명제논리에서는 원자 문장과 문장문자를 짝지었는데, 여기서는 술어마다 항수와 읽는 법을, 개체상수마다 그것이 가리키는 대상을 적는다. 예를 들어 𝐹 는 1항이고 "… 는 사람이다", 𝑎 는 소크라테스.
마지막 점검 — 자유 변수가 남았는가. 한국어 문장을 옮긴 결과는 문장이어야 한다. 자유 변수가 남았다면 한정사를 빠뜨렸거나 범위를 좁게 잡은 것이다.
그리고 정형이 둘 있다. 이 둘만 확실히 익히면 나머지는 조립이다.
모든𝐹는𝐺다⟹∀𝑥(𝐹𝑥→𝐺𝑥)
어떤𝐹는𝐺다⟹∃𝑥(𝐹𝑥∧𝐺𝑥)
연결자가 서로 다르다는 것이 눈에 걸린다. 왜 하나는 → 이고 하나는 ∧ 인가.
왜 연결자가 다른가
이유는 한정사가 논의 영역 전체를 훑는다는 데 있다. ∀𝑥 는 영역의 모든 대상을 하나씩 집어 들고, ∃𝑥 는 영역에서 하나를 골라 온다. 둘 다 "𝐹 인 것만" 훑지는 않는다. 그러니 영역을 𝐹 인 것으로 좁히는 일을 괄호 안에서 따로 해 주어야 하고, 그 일을 하는 방법이 두 한정사에서 다르다.
∀ 쪽. 훑다가 𝐹 가 아닌 것을 만나면 아무 요구 없이 통과시켜야 한다. "모든 고양이는 잔다"는 고양이 아닌 것에 대해 아무 말도 하지 않는다. 통과시키는 일을 하는 연결자가 → 다. 전건이 거짓이면 조건문 전체가 참이 되므로(6장의 공허하게 참), 𝐹 가 아닌 대상은 자동으로 통과한다.
∃ 쪽. 골라 온 하나가 𝐹 이면서 동시에𝐺 이어야 한다. 두 요구를 한 대상에게 함께 거는 연결자가 ∧ 다.
바꿔 쓰면 어떻게 되는지 보면 더 분명하다.
<오른쪽 두 칸의 점 하나가 각각 무엇을 무너뜨리는지 보라 — 위는 요구가 너무 세서, 아래는 너무 약해서 옮김이 틀린다>[원본 보기]
∀𝑥(𝐹𝑥∧𝐺𝑥) 는 "영역의 모든 것이 𝐹 이면서 𝐺 다"라고 말한다. 고양이 아닌 것이 하나만 있어도 무너진다. "모든 것이 고양이다"까지 말해 버리는 것이 잘못이다.
∃𝑥(𝐹𝑥→𝐺𝑥) 는 반대로 너무 약하다. 𝐹 가 아닌 대상이 하나만 있어도 그 대상에서 전건이 거짓이 되어 식이 성립해 버린다. 𝐹 와 𝐺 에 대해 사실상 아무 말도 하지 않는 식이다.
정확한 진리조건은 10장에서 정의한다. 지금 한 말은 그때 형식적으로 다시 확인된다.
예제 109
논의 영역을 사람 전체가 아니라 모든 것으로 잡고 다음을 옮겨라. 사전은 𝐹 "… 는 학생이다"(1항), 𝐺 "… 는 성실하다"(1항), 𝑎 소크라테스. (가) 모든 학생은 성실하다 (나) 어떤 학생은 성실하다 (다) 성실한 학생은 없다 (라) 소크라테스는 성실한 학생이다
풀이 보기
정형 둘을 쓰고, 나머지는 조립한다.
(가) 정형 그대로다. ∀𝑥(𝐹𝑥→𝐺𝑥).
(나) 정형 그대로다. ∃𝑥(𝐹𝑥∧𝐺𝑥).
(다) "성실한 학생이 있다"의 부정이다. (나)에 ¬ 를 씌워 ¬∃𝑥(𝐹𝑥∧𝐺𝑥). mcs 의 한정사 부정 규칙을 쓰면 ∀𝑥¬(𝐹𝑥∧𝐺𝑥) 로도 적을 수 있고, 여기서 더 밀면 ∀𝑥(𝐹𝑥→¬𝐺𝑥) 가 된다. 세 식이 같은 값을 갖는다는 것은 10장에서 확인한다. 지금은 셋이 서로 다른 기호열이라는 점이 중요하다.
(라) 한정사가 필요 없다. 이름이 이미 대상을 지목하고 있으므로 (𝐹𝑎∧𝐺𝑎).
마지막 점검. 네 답 모두 자유 변수가 없다. 문장이므로 10장에서 참·거짓을 물을 수 있다.
예제 110
어떤 학생이 "모든 학생은 성실하다"를 ∀𝑥(𝐹𝑥∧𝐺𝑥) 로 옮겼다. 이 옮김이 틀렸음을 4장의 되읽기로 보여라.
풀이 보기
되읽기란 옮긴 식을 다시 한국어로 소리 내어 읽고, 원래 문장과 같은 말인지 견주는 것이다.
∀𝑥(𝐹𝑥∧𝐺𝑥) 를 그대로 읽으면 "무엇을 집어 들든 그것은 학생이고 또 성실하다"가 된다. 논의 영역이 모든 것이므로 여기에는 책상도 숫자도 소크라테스도 들어간다. 즉 이 식은 "세상의 모든 것이 학생이다"라고 말하고 있다.
원래 문장은 그런 말을 하지 않는다. 학생이 아닌 것에 대해서는 아무 말도 하지 않는다. 그러므로 옮김이 틀렸다.
어디서 틀렸는지 짚어 두자. 잘못은 ∧ 를 고른 데 있는 것이 아니라 영역을 좁히는 일과 무언가를 주장하는 일을 구분하지 못한 데 있다. 𝐹𝑥 는 좁히는 몫이고 𝐺𝑥 는 주장하는 몫인데, ∧ 로 묶으면 둘 다 주장이 된다. → 는 앞엣것을 조건으로 밀어내어 두 몫을 갈라 준다.
되읽기가 이런 잘못을 잘 잡아낸다. 옮긴 뒤 반드시 소리 내어 읽어 보라는 4장의 조언이 술어논리에서 더 유용하다.
예제 111
이 장을 연 논증을 옮겨라. 사전은 𝐹 "… 는 사람이다"(1항), 𝐺 "… 는 죽는다"(1항), 𝑎 소크라테스. 논의 영역은 모든 것이다. 그리고 옮긴 뒤에 아직 하지 못한 일이 무엇인지 밝혀라.
풀이 보기
첫 전제는 "모든 𝐹 는 𝐺 다"이므로 정형을 쓴다. ∀𝑥(𝐹𝑥→𝐺𝑥). 둘째 전제와 결론은 이름이 지목하므로 𝐹𝑎 와 𝐺𝑎 다. 사전에 𝐻 나 𝑀 을 쓰지 않은 것은 이 장이 앞에서 못 박은 대로 술어를 𝐹, 𝐺, 𝐻 로만 적기 때문이고, 여기서는 술어가 둘이라 앞의 둘로 충분하다. 논증 전체는
∀𝑥(𝐹𝑥→𝐺𝑥),𝐹𝑎∴𝐺𝑎
다. 세 식 모두 문장이다. 그리고 처음에 명제논리가 놓쳤던 것이 이제 보인다. 𝐹 가 첫 전제와 둘째 전제에, 𝐺 가 첫 전제와 결론에, 𝑎 가 둘째 전제와 결론에 되풀이된다.
아직 하지 못한 일. 이 논증이 타당하다는 것을 우리는 여전히 보이지 못했다. 이 장에서 한 일은 세 기호열이 이 언어의 문장이라는 것을 정한 것뿐이다. 타당성은 뜻에 대한 주장이므로 10장의 의미론이 필요하고, 증명으로 얻으려면 11장의 한정사 규칙이 필요하다.
11장에서 이 논증이 어떻게 처리되는지만 미리 말해 두면 이렇다. 첫 전제에 ∀E 를 써서 (𝐹𝑎→𝐺𝑎) 를 얻고, 둘째 전제와 함께 7장의 →E 를 쓰면 𝐺𝑎 가 나온다. 그 첫 걸음에 쓰이는 것이 이 장에서 정한 대입 (𝐹𝑥→𝐺𝑥)[𝑎/𝑥] 다. 이 장의 표기가 그대로 규칙의 진술이 된다. 11장이 실제로 적는 도출도 글자까지 이것과 같다.
이 장에서 새로 나온 것
용어 · 기호
뜻
술어논리(predicate logic) · 1차 논리
원자를 술어와 항으로 쪼갠 언어. 한정사가 대상만 훑고 술어는 훑지 않아 1차다
개체상수 𝑎,𝑏,𝑐,𝑎1,…
정해진 대상 하나를 가리키는 이름. 무한히 많다
변수 𝑥,𝑦,𝑧,𝑥1,…
혼자서는 무엇을 가리키는지 정해지지 않는다. 무한히 많다
술어 𝐹,𝐺,𝐻,𝐹1,…
항수를 하나씩 갖는다. 𝑃 는 쓰지 않는다 — 명제논리의 문장문자와 겹친다
항수(arity)
술어가 받는 항의 개수. 1 이상이고 술어마다 고정이다. 원자식의 유일 가독성이 여기에 달렸다
한정사 ∀𝑥 · ∃𝑥
전칭과 존재. 점이나 괄호를 붙이지 않는다
함수기호
이 문서는 어휘에 넣지 않는다. 17장에서 산술을 다룰 때 더한다
문장문자
술어논리의 어휘에서 빠졌다. 항수 0 인 술어를 두지 않기로 했기 때문이다
항(term)
개체상수 아니면 변수. 재귀 조항은 비어 있다. 대상을 가리키는 자리다
원자식(atomic formula)
술어 하나 뒤에 항수만큼 항을 나란히 적은 것. 𝐹𝑎, 𝐺𝑎𝑏, 𝐻𝑥𝑦𝑧. 쉼표도 괄호도 없다
적형식의 새 조항
𝜑 가 적형식이고 𝑥 가 변수이면 ∀𝑥𝜑 와 ∃𝑥𝜑 도 적형식이다. 괄호를 두르지 않는다
⊥
7장이 명제논리의 어휘에 더한 것을 물려받는다. 기저 조항의 한 줄이고 갈래를 하나 차지한다
범위(scope)
한정사 조항이 재료로 쓴 적형식. 괄호를 열지 않았으면 바로 다음 원자식 하나다. 7장의 가정의 범위와 다른 뜻이다
괄호 규약 보탬
한정사는 ¬ 와 같은 세기로 가장 세게 묶는다. ∀𝑥𝐹𝑥→𝐺𝑥 의 주연결자는 → 다
나타남(occurrence)
변수가 적혀 있는 자리 하나. 자유와 속박은 변수가 아니라 나타남에 붙는다
자유 · 속박
그 자리를 감싸는 한정사 중 같은 변수를 쓴 것이 있으면 속박, 없으면 자유. 둘이면 가장 가까운 것이 잡는다
문장(sentence)
자유 나타남이 하나도 없는 적형식. 10장에서 참·거짓이 붙는 것은 이것뿐이다
열린 식(open formula)
자유 나타남이 있는 적형식. 참·거짓을 물을 수 없다
공허한 한정
∀𝑥𝐹𝑎 처럼 잡을 것이 없는 한정. 적형식으로 인정한다
대입 𝜑[𝑡/𝑥]
𝜑 안 𝑥 의 자유 나타남을 전부 항 𝑡 로 바꾼 결과. 대괄호 안은 새것 / 옛것 순서다
변수 포획(variable capture)
넣은 항 안의 변수가 들어간 자리에서 새로 잡히는 사고
𝑡 가 𝑥 에 대해 자유롭다
넣어도 포획이 일어나지 않는다. 개체상수는 언제나 그렇다
메타변수 𝑡,𝑠
항 하나를 가리키는 메타언어의 변수. 어휘가 아니다
두 정형
모든 𝐹 는 𝐺 다 = ∀𝑥(𝐹𝑥→𝐺𝑥) · 어떤 𝐹 는 𝐺 다 = ∃𝑥(𝐹𝑥∧𝐺𝑥)
챙겨 갈 것은 넷이다.
정의는 여전히 세 조항이다. 기저의 원자가 문장문자에서 원자식으로 바뀌었고 재귀에 한정사 조항이 붙었을 뿐이다. 폐포는 그대로이므로 13장의 증명 방식도 그대로이고, 확인할 갈래만 일곱에서 아홉이 된다.
자유와 속박은 나타남에 붙는다. 같은 변수가 한 식 안에서 두 성격을 함께 가질 수 있다. 판정은 나타남마다 하나씩, 감싸는 한정사를 안에서 밖으로 훑어서 한다.
문장은 자유 나타남이 없는 적형식이다. 옮기기의 마지막 점검이 이것이고, 10장이 값을 붙이는 대상도 이것이다.
대입 𝜑[𝑡/𝑥] 는 자유 나타남만 바꾼다. 개체상수를 넣으면 언제나 안전하고, 변수를 넣으면 포획을 확인해야 한다. 11장의 규칙 넷이 이 표기로 적힌다.
다음 장에서는 이 기호열들에 뜻을 준다. 6장에서 문장문자마다 진리값을 배당했듯, 이번에는 정의역을 하나 정하고 개체상수마다 그 안의 대상 하나를, 술어마다 대상들의 모임을 배당한다. 그 배당을 모형이라 하고, 배당이 정해지면 문장의 값이 이 장의 아홉 조항을 따라 계산된다. 재귀적 정의를 세워 둔 값이 거기서 다시 나온다.
술어논리의 의미론
9장은 어떤 기호열이 술어논리의 논리식인지를 정했다. 문법만 정한 것이라 ∀𝑥(𝐹𝑥→𝐺𝑥) 는 아직 규칙에 맞게 조립된 모양일 뿐 참도 거짓도 아니다. 이 장이 그 모양에 뜻을 준다. 6장이 명제논리에 대해 한 일을 술어논리에 대해 다시 하는 것인데, 한 가지가 달라진다. 명제논리에서 상황 하나는 진리값 몇 개를 늘어놓은 것이었지만, 술어논리에서 상황 하나는 대상들의 세계다.
이 장에서 답할 질문은 넷이다.
술어논리의 식이 참이라는 말은 무엇에 대해 참이라는 뜻인가
𝐹𝑥 처럼 자유 변수가 든 식은 참인가 거짓인가. 물음 자체가 성립하는가
∀𝑥∃𝑦𝐺𝑥𝑦 와 ∃𝑦∀𝑥𝐺𝑥𝑦 가 다르다는 것을 증명할 수 있는가
명제논리에는 진리표가 있었다. 술어논리에는 무엇이 있는가
9장에서 가져오는 것은 다섯이다. 항(개체상수 𝑎,𝑏,𝑐 와 변수 𝑥,𝑦,𝑧. 함수기호를 어휘에 넣지 않았으므로 항은 이 둘뿐이다), 원자식(𝐹𝑎, 𝐺𝑥𝑦 처럼 술어 뒤에 항수만큼 항을 늘어놓은 것), 적형식의 아홉 갈래(원자식 · ⊥ · ¬ · ∧ · ∨ · → · ↔ · ∀ · ∃. ⊥ 은 7장이 어휘에 더한 것을 9장이 물려받은 것이다), 자유 나타남과 속박 나타남, 그리고 자유 나타남이 하나도 없는 식을 문장이라 부른다는 약속이다. 이 장의 정의는 아홉 갈래를 하나도 빠짐없이 따라간다. 술어의 항수는 언어마다 정하는 것이므로, 아래에서는 모형을 세울 때마다 어떤 술어를 몇 항으로 쓰는지 먼저 밝힌다.
Mathematics for Computer Science 5장이 논의 영역, 한정사 순서, 한정사의 부정, 반례 모형을 이미 다뤘다. 그것들을 다시 가르치지 않는다. mcs 는 반례 모형을 ‘이런 상황을 생각해 보라’는 말로 제시했고, 그것으로 충분했다. 이 장이 하는 일은 그 상황 자체를 수학적 대상으로 못 박는 것이다. 그러고 나면 ‘이 모형에서 이 식이 참이다’가 취향이 아니라 계산이 된다.
모형 — 상황을 대상으로 만든다
6장에서 상황 하나는 배당 𝑣 였다. 문장문자마다 T 나 F 를 골라 주면 끝이었다. 술어논리에서는 그렇게 되지 않는다. 𝐹𝑎 가 참인지 물으려면 먼저 𝑎 가 무엇인지 알아야 하고, ∀𝑥𝐹𝑥 가 참인지 물으려면 𝑥 가 무엇들을 훑는지 알아야 한다. 그러니 상황을 정하는 일은 두 걸음이다. 먼저 세계에 무엇이 있는지 정하고, 그다음에 기호가 그중 무엇을 가리키는지 정한다.
모형(model)이란 그 두 걸음을 짝지어 놓은 것이다. 기호로는 이렇게 적는다.
M=⟨𝐷,𝐼⟩
𝐷 는 정의역(domain), 𝐼 는 해석(interpretation)이다. 9장이 그림에서 "논의 영역"이라 부르며 상자 하나로만 두었던 것이 여기서 𝐷 라는 이름을 얻는다.
낱말 하나를 미리 정리해 둔다. 6장에서 함수의 정의역이라는 말을 썼다. 함수가 받는 것들의 모임이라는 뜻이었다. 여기서 모형의 정의역𝐷 는 그것과 다른 말이다. 𝐷 는 이 모형이 이야기하는 대상 전체의 모임이지 어떤 함수가 받는 것들이 아니다. 아래에서 𝐷 를 가리킬 때는 늘 모형의 정의역이라고 붙여 읽으면 헷갈리지 않는다.
정의역은 비어 있으면 안 된다
정의에 조건이 하나 붙는다. 𝐷 는 공집합이 아니어야 한다. 점이 적어도 하나는 있어야 한다는 뜻이다. 왜 그런 조건을 붙이는지는 어겨 보면 알 수 있다.
𝐷 가 비었다고 해 보자. 그러면 ∀𝑥𝐹𝑥 는 훑을 원소가 하나도 없으므로 공허하게 참이 되고, ∃𝑥𝐹𝑥 는 내놓을 원소가 하나도 없으므로 거짓이 된다. 그러면 ∀𝑥𝐹𝑥→∃𝑥𝐹𝑥 가 거짓이 된다. 이 식은 "모두가 𝐹 라면 𝐹 인 것이 하나는 있다"는 말인데, 이것이 깨지는 세계를 인정하고 싶지 않은 것이다. 게다가 개체상수는 반드시 무엇인가를 가리켜야 하는데, 빈 정의역에는 가리킬 것이 없다.
정직하게 말하면 이것은 정의로 고른 것이지 증명한 것이 아니다. 빈 정의역을 허용하는 논리도 있고 자유논리(free logic)라 부른다. 이 문서는 고전적인 쪽을 따르고, 그 대가로 11장의 한정사 규칙이 단순해진다. 20장에 갈라지는 길로 적어 둔다.
해석 — 상수는 점 하나, 술어는 점들의 모임
해석 𝐼 는 어휘의 비논리 기호마다 𝐷 안에서 무엇을 골라 줄지 정한다. 규칙은 둘뿐이다.
개체상수𝑎 에는 𝐷 의 원소 하나를 준다. 𝐼(𝑎)∈𝐷
𝑛 항 술어𝐹 에는 𝐷𝑛 의 부분집합을 준다. 𝐼(𝐹)⊆𝐷𝑛
둘째 줄에 나온 𝐷𝑛 을 여기서 세운다. 먼저 순서쌍(ordered pair)이란 두 대상을 순서를 지켜 묶은 것이고 ⟨1,3⟩ 처럼 적는다. 순서를 지킨다는 것이 요점이라 ⟨1,3⟩ 과 ⟨3,1⟩ 은 다른 것이다. 𝐷 의 원소로 만들 수 있는 순서쌍 전체의 모임을 𝐷×𝐷 또는 𝐷2 이라 적는다. 마찬가지로 𝐷𝑛 은 𝐷 의 원소를 𝑛 개 순서대로 늘어놓은 것 전체다. 𝐷1 은 그냥 𝐷 이라고 보면 된다. 그리고 관계(relation)란 𝐷𝑛 의 부분집합을 말한다. 이 문단이 원장이 10장에서 도입하기로 한 "함수와 관계" 가운데 관계 쪽이다.
그러니 1항 술어의 해석은 𝐷 에서 점 몇 개를 고른 것이고, 2항 술어의 해석은 점에서 점으로 가는 화살표 몇 개를 고른 것이다. 그림으로 그리면 그대로 보인다.
<왼쪽 그림과 오른쪽 목록이 같은 것이다 — 술어의 뜻은 D 에서 무엇을 고르는가로 끝나고, ‘F 는 빨갛다는 뜻’ 같은 설명은 모형 안 어디에도 없다>[원본 보기]
그림의 오른쪽이 이 절에서 가장 중요한 대목이다. 술어의 뜻은 고른 집합이 전부다.𝐼(𝐹)={1,2} 라고 정하고 나면 𝐹 에 대해 더 말할 것이 없다. 그것이 "빨갛다"를 뜻하는지 "소수다"를 뜻하는지는 모형이 대답하지 않고, 대답할 필요도 없다. 4장에서 사전을 만들며 자연어를 붙여 준 것은 우리가 읽기 위한 것이었지 의미론의 일부가 아니다.
예제 112
다음을 말로 적은 것을 모형으로 옮겨라. 언어에는 1항 술어 𝐹, 2항 술어 𝐺, 개체상수 𝑎 와 𝑏 가 있다. "세계에는 대상이 셋 있다. 𝑎 는 첫째, 𝑏 는 셋째다. 앞의 둘만 𝐹 다. 모든 대상이 셋째와 𝐺 관계에 있고, 다른 𝐺 관계는 없다."
풀이 보기
대상이 셋이므로 이름을 붙인다. 어떤 이름이든 상관없으니 𝐷={1,2,3} 로 잡는다. 정의역의 원소는 수일 필요가 없다. 사람이든 도형이든 상관없고, 셋을 서로 구별할 수만 있으면 된다. 수를 쓰는 것은 적기 편해서다.
상수는 원소 하나씩이다. 𝐼(𝑎)=1, 𝐼(𝑏)=3.
𝐹 는 1항이므로 해석은 𝐷 의 부분집합이다. 앞의 둘이므로 𝐼(𝐹)={1,2}.
𝐺 는 2항이므로 해석은 𝐷2 의 부분집합, 곧 순서쌍의 집합이다. "모든 대상이 셋째와"이므로 첫 자리에 셋을 다 넣고 둘째 자리는 3 으로 고정한다. 𝐼(𝐺)={⟨1,3⟩,⟨2,3⟩,⟨3,3⟩}.
다 적으면 M=⟨𝐷,𝐼⟩ 이 완성된다. 앞 그림의 모형이 바로 이것이다. 아래에서 이 모형을 계속 쓰므로 눈에 익혀 두면 좋다.
확인할 것이 하나 있다. ⟨3,3⟩ 처럼 두 자리가 같은 순서쌍도 순서쌍이다. 자기 자신과 관계를 맺는 것을 막을 이유가 없다.
답이 말이 되는가. 만든 모형을 정의에 도로 넣어 본다. 𝐼(𝑎) 와 𝐼(𝑏) 가 𝐷 의 원소인가, 1항 술어의 해석이 𝐷 의 부분집합인가, 2항 술어의 해석이 𝐷2 의 부분집합인가. 셋이 다 맞아야 해석이 완성된 것이고, 완성되지 않은 해석은 모형이 아니다. 말로 적힌 상황과 맞는지는 그다음에 볼 일이다.
예제 113
정의역이 비면 안 된다고 했다. 정말 그런지 따져 보자. 𝐷=∅ 을 허용한다면 (가) ∀𝑥𝐹𝑥→∃𝑥𝐹𝑥 는 그 모형에서 참인가 거짓인가. (나) 개체상수 𝑎 가 어휘에 있으면 무엇이 문제인가.
풀이 보기
(가) ∀𝑥𝐹𝑥 부터 본다. 이 식은 "𝐷 의 원소를 아무거나 잡아도 𝐹 다"를 요구하는데, 잡을 원소가 하나도 없으므로 요구를 어길 방법이 없다. 6장에서 공허하게 참이라 부른 것이다. 그러니 참이다.
∃𝑥𝐹𝑥 은 "𝐹 인 원소가 하나 있다"를 요구하는데, 원소가 하나도 없으므로 내놓을 수 없다. 거짓이다.
그러면 전건이 참이고 후건이 거짓이므로 → 조항에 따라 전체가 거짓이다. 어떤 술어 𝐹 를 잡아도 그렇다.
(나) 개체상수는 정의상 𝐷 의 원소 하나를 가리켜야 한다. 𝐷 가 비면 가리킬 것이 없으므로 𝐼(𝑎) 를 정할 수가 없다. 해석이 완성되지 않으니 모형이 아니다.
두 답을 합치면 이렇다. 빈 정의역을 허용하면 이름을 하나도 못 쓰게 되거나, 쓸 수 있게 고치더라도 당연해 보이는 식이 논리적 참에서 빠진다. 잃는 것에 견주어 얻는 것이 없으므로 정의에서 잘라 낸다.
변수 배정 — 왜 모형만으로는 부족한가
이 장에서 가장 걸리는 곳이다. 여기를 넘기면 나머지는 계산이다. 그러니 서두르지 말고, 무엇이 막히는지부터 보자.
모형을 세웠으니 이제 만족을 정의하면 될 것 같다. 6장에서 그랬듯 9장의 문법 조항마다 절을 하나씩 붙이면 된다. ∧ 조항은 "양쪽이 다 참이면 참", ¬ 조항은 "안이 거짓이면 참". 여기까지는 6장과 똑같다. 문제는 한정사 조항에서 생긴다.
∀𝑥(𝐹𝑥→𝐺𝑥) 의 값을 정하려 한다. 재귀적 정의이므로 부분식의 값에서 끌어와야 하고, 그 부분식은 𝐹𝑥→𝐺𝑥 다. 그런데 이 식은 자유 변수 𝑥 를 가진다. 모형은 상수 𝑎,𝑏,𝑐 에만 원소를 배정했지 변수에는 아무것도 배정하지 않았다. 그러니 "𝐹𝑥 가 참인가"라는 물음이 성립하지 않는다. 𝑥 가 무엇인지 모르는데 그것이 𝐹 인지 물을 수는 없다.
<재귀가 반드시 열린 식을 지나간다는 것이 요점이다 — 빠져나가려는 시도 둘이 서로 다른 이유로 막히고 나서야 변수 배정이 나온다. 배정은 편의가 아니라 강제된 장치다>[원본 보기]
그림이 보인 두 시도를 말로 옮긴다. 시도 하나는 "문장에만 참을 정의하면 되지 않는가"다. ∀𝑥(𝐹𝑥→𝐺𝑥) 는 자유 나타남이 없으니 문장이고, 우리가 참·거짓을 묻고 싶은 것도 문장뿐이다. 그러나 이 시도는 통하지 않는다. 문장의 값을 계산하는 길이 열린 식을 반드시 지나기 때문이다. 재귀적 정의는 부분식을 훑는데, 한정사를 벗기면 열린 식이 나온다. 결과만 문장이라고 해서 중간을 건너뛸 수는 없다.
시도 둘은 "𝑥 를 이름으로 갈아 끼우면 되지 않는가"다. 9장이 대입 𝜑[𝑎/𝑥] 를 이미 정의해 두었으니, ∀𝑥𝜑 가 참이라는 것을 "모든 개체상수 𝑎 에 대해 𝜑[𝑎/𝑥] 가 참"으로 읽자는 것이다. 이것은 그럴듯하고, 실제로 이름이 넉넉할 때는 맞는 답을 준다. 그러나 이름이 없는 원소가 있으면 무너진다. 아래 예제가 그 무너짐을 실제로 만든다.
그래서 장치를 하나 더 둔다. 변수 배정(variable assignment)이란 변수 전체를 정의역으로 하고 𝐷 를 공역으로 하는 함수다. 배정을 𝑔 로 적고, 𝑔 가 변수 𝑥 에 준 원소를 𝑔(𝑥) 로 적는다. 6장의 배당 𝑣 가 문장문자마다 진리값을 하나씩 골라 주었듯, 𝑔 는 변수마다 대상을 하나씩 골라 준다.
여기서도 낱말이 겹친다. 𝑔 는 함수이므로 함수의 정의역을 갖고, 그것은 변수 전체다. 모형의 정의역𝐷 는 𝑔 의 공역이다. 둘을 섞지 마라.
배정에는 짝이 되는 표기가 하나 더 필요하다. 배정 𝑔 에서 𝑥 자리만 원소 𝑑 로 갈아 끼운 배정을 이렇게 적는다.
𝑔[𝑥↦𝑑]
나머지 변수의 값은 𝑔 그대로다. 9장의 대입 표기 𝜑[𝑎/𝑥] 와 모양이 닮았지만 다른 것이다. 𝜑[𝑎/𝑥] 는 식을 고치는 일이고 𝑔[𝑥↦𝑑] 는 배정을 고치는 일이다. 화살표 ↦ 가 있는 쪽이 배정이라고 기억하면 된다.
<두 표가 x 행에서만 다르고 나머지 행은 글자 하나 같다 — 갈아 끼우는 자리가 하나뿐인 것이 한정사 조항을 안전하게 만든다>[원본 보기]
예제 114
이름으로 갈아 끼우는 방법이 실제로 틀리는 모형을 만들어라. 언어에는 1항 술어 𝐹 와 개체상수 𝑎 하나만 있다.
풀이 보기
이름은 하나뿐인데 대상은 둘로 잡으면 된다. 𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝐹)={1}.
먼저 이름으로 갈아 끼우는 쪽을 계산한다. 어휘의 개체상수는 𝑎 하나뿐이므로 확인할 것은 𝐹𝑎 하나다. 𝐼(𝑎)=1 이고 1∈𝐼(𝐹) 이므로 𝐹𝑎 는 참이다. 확인할 것이 다 참이므로 이 방법은 ∀𝑥𝐹𝑥 를 참이라고 판정한다.
이제 실제로 무엇이 성립하는지 본다. ∀𝑥𝐹𝑥 는 𝐷 의 모든 원소가 𝐹 라는 말인데, 2∉𝐼(𝐹) 다. 그러므로 거짓이어야 한다.
두 답이 다르므로 이름으로 갈아 끼우는 방법은 틀렸다. 무엇이 문제였는지 짚으면 이렇다. 원소 2 에는 이름이 없다. 이름을 훑는 것은 이름 붙은 원소만 훑는 것이고, 한정사가 훑어야 하는 것은 𝐷 전체다.
정의역이 크면 이 틈은 더 벌어진다. 𝐷 를 실수 전체로 잡고 상수를 열 개만 두면, 이름으로 훑는 방법은 열 개만 보고 "모두 그렇다"고 말한다. 그래서 한정사 조항은 이름이 아니라 원소를 직접 훑어야 한다. 그러려면 원소를 변수에 꽂아 넣을 장치가 있어야 하고, 그 장치가 배정이다.
예제 115
𝐷={1,2,3} 이고 배정 𝑔 가 𝑔(𝑥)=1, 𝑔(𝑦)=2, 𝑔(𝑧)=1 이라 하자. 다음 값을 구하라. (가) 𝑔[𝑥↦3](𝑥) 와 𝑔[𝑥↦3](𝑦). (나) 𝑔[𝑥↦3][𝑥↦2](𝑥). (다) 𝑔[𝑥↦3][𝑦↦1] 과 𝑔[𝑦↦1][𝑥↦3] 은 같은 배정인가.
풀이 보기
(가) 𝑔[𝑥↦3] 은 𝑥 자리만 3 으로 바꾼 배정이므로 𝑔[𝑥↦3](𝑥)=3 이다. 𝑦 는 손대지 않았으므로 𝑔[𝑥↦3](𝑦)=𝑔(𝑦)=2 다.
(나) 갈아 끼우기를 두 번 했고 두 번 다 같은 자리 𝑥 다. 나중에 한 것이 이긴다. 값은 2 다. 첫 번째 갈아 끼움의 흔적은 남지 않는다.
(다) 같다. 자리가 서로 다르므로 순서가 결과에 영향을 주지 않는다. 두 배정 모두 𝑥 에 3, 𝑦 에 1, 𝑧 에 1 을 준다.
(다)를 눈여겨봐 두라. 서로 다른 변수를 다루는 갈아 끼움은 순서를 바꿔도 되고, 이것이 ∀𝑥∀𝑦 와 ∀𝑦∀𝑥 가 같은 뜻인 이유다. 반면 (나)처럼 같은 자리를 두 번 건드리면 안쪽이 바깥쪽을 덮는다. 이것은 9장에서 "가장 가까운 한정사가 잡는다"고 한 규칙이 의미론에 나타난 모습이다.
만족 관계 — 9장의 조항마다 절 하나
이제 정의를 적을 준비가 됐다. 모형 M 과 배정 𝑔 를 함께 놓고, 𝜑 가 그 짝을 만족한다는 것을 이렇게 적는다.
M,𝑔⊨𝜑
6장의 𝑣⊨𝜑 와 같은 기호이고 왼쪽에 오는 것만 달라졌다. 왼쪽이 배당이면 6장의 뜻, 왼쪽이 모형과 배정의 짝이면 이 장의 뜻이다. ⊨ 는 여전히 메타언어의 기호이지 논리식 안에 들어가는 기호가 아니다.
먼저 항이 무엇을 가리키는지 정한다
만족을 정의하기 전에 작은 정의가 하나 필요하다. 원자식의 참을 따지려면 그 안에 든 항이 어느 원소를 가리키는지 알아야 한다. 항 𝑡 가 M 과 𝑔 아래에서 가리키는 원소를 𝑡 의 지시체라 부르고 𝑡M,𝑔 로 적는다. 9장이 항을 둘로만 정해 두었으므로 조항도 둘뿐이다.
𝑡 가 개체상수 𝑎 이면 𝑎M,𝑔=𝐼(𝑎) — 모형이 정한다. 배정은 관여하지 않는다
𝑡 가 변수 𝑥 이면 𝑥M,𝑔=𝑔(𝑥) — 배정이 정한다. 모형은 관여하지 않는다
9장이 함수기호를 어휘에 넣지 않은 덕이 여기서 돌아온다. 항의 문법에 재귀 조항이 없으므로 지시체의 정의에도 재귀 조항이 없다. 두 줄로 끝난다.
아홉 조항
9장의 적형식 정의는 아홉 갈래였다. 만족의 정의도 아홉 조항이다. 순서까지 그대로 맞춘다.
원자식 — M,𝑔⊨𝐹𝑡1…𝑡𝑛 인 것은 ⟨𝑡M,𝑔1,…,𝑡M,𝑔𝑛⟩∈𝐼(𝐹) 일 때다. 𝑛=1 이면 순서쌍이 아니라 원소 하나이므로 𝑡M,𝑔1∈𝐼(𝐹) 라고 읽는다
⊥ — 어떤 모형과 어떤 배정에 대해서도 M,𝑔⊭⊥ 이다. 곧 ⊥ 은 어디서도 만족되지 않는다. 6장이 ¯𝑣(⊥)=F 로 못 박은 것을 그대로 옮긴 것이고, 모형도 배정도 이 값에 손대지 못한다
¬ — M,𝑔⊨¬𝜑 인 것은 M,𝑔⊨𝜑 가 아닐 때다
∧ — M,𝑔⊨𝜑∧𝜓 인 것은 M,𝑔⊨𝜑 이고 M,𝑔⊨𝜓 일 때다
∨ — M,𝑔⊨𝜑∨𝜓 인 것은 둘 중 적어도 하나가 성립할 때다
→ — M,𝑔⊨𝜑→𝜓 인 것은 M,𝑔⊨𝜑 가 아니거나 M,𝑔⊨𝜓 일 때다
↔ — M,𝑔⊨𝜑↔𝜓 인 것은 두 쪽이 함께 성립하거나 함께 성립하지 않을 때다
∀ — M,𝑔⊨∀𝑥𝜑 인 것은 모든𝑑∈𝐷 에 대해 M,𝑔[𝑥↦𝑑]⊨𝜑 일 때다
∃ — M,𝑔⊨∃𝑥𝜑 인 것은 어떤𝑑∈𝐷 가 있어 M,𝑔[𝑥↦𝑑]⊨𝜑 일 때다
가운데 여섯 조항 — ⊥ 과 연결자 다섯 — 은 6장과 7장의 확장 배당 정의를 글자만 바꿔 옮긴 것이다. 연결자는 술어논리에서도 진리함수 그대로이고 ⊥ 은 거기서도 여기서도 값이 하나로 고정되어 있다. 새로운 것은 첫 조항과 마지막 두 조항이고, 그것이 정확히 9장이 문법에서 새로 얹은 자리다. 문법에서 늘어난 만큼 의미론에서도 늘어난다.
한정사 조항 — 훑는 것은 이름이 아니라 원소다
한정사 조항을 다시 읽어 보라. 훑는 것은 𝐷 의 원소 𝑑 이고, 원소마다 하는 일은 배정의 𝑥 자리를 그 원소로 갈아 끼우고 안쪽 식을 확인하는 것이다. 𝑑 는 논리식의 기호가 아니라 세계의 대상이다. 그러니 이름이 붙어 있든 없든 상관없이 훑린다. 앞 절의 예제가 막혔던 자리가 여기서 풀린다.
<같은 세 줄을 두 한정사가 다르게 읽는다 — ∀ 는 모든 줄이 ✓ 여야 하고 ∃ 는 한 줄이면 되며, 각각 내놓을 증거가 원소 하나라는 점은 같다>[원본 보기]
그림이 보여 주는 비대칭을 챙겨 두면 나중에 편하다. ∀𝑥𝜑 가 거짓임을 보이려면 어긋나는 원소 하나를 내놓으면 되고, 참임을 보이려면 모든 원소를 확인해야 한다. ∃𝑥𝜑 는 그 반대다. 11장의 네 한정사 규칙이 이 비대칭을 그대로 물려받는다.
예제 116
앞 절에서 세운 모형을 쓴다. 𝐷={1,2,3}, 𝐼(𝑎)=1, 𝐼(𝑏)=3, 𝐼(𝐹)={1,2}, 𝐼(𝐺)={⟨1,3⟩,⟨2,3⟩,⟨3,3⟩}. 다음이 이 모형에서 참인지 정의에 따라 판정하라. (가) 𝐹𝑎 (나) 𝐺𝑎𝑏 (다) 𝐺𝑏𝑎 (라) ∀𝑥𝐺𝑥𝑏
(나) 항 둘의 지시체는 각각 1 과 3 이다. 순서를 지켜 묶으면 ⟨1,3⟩ 이고, 이것이 𝐼(𝐺) 에 있다. 참이다.
(다) 이번에는 순서가 반대다. 지시체는 3 과 1 이므로 확인할 것은 ⟨3,1⟩ 인데, 𝐼(𝐺) 에는 ⟨1,3⟩,⟨2,3⟩,⟨3,3⟩ 셋뿐이다. 거짓이다. 순서쌍의 순서가 여기서 값을 가른다.
(라) ∀ 조항이므로 𝐷 의 원소 셋을 훑는다. 𝑏 의 지시체는 어느 배정에서나 3 이다. 𝑑=1 이면 확인할 것이 ⟨1,3⟩∈𝐼(𝐺) — 성립. 𝑑=2 이면 ⟨2,3⟩∈𝐼(𝐺) — 성립. 𝑑=3 이면 ⟨3,3⟩∈𝐼(𝐺) — 성립. 셋 다 성립하므로 참이다.
(라)에서 한 일이 한정사 조항의 전부다. 원소를 하나 잡고, 배정의 𝑥 자리에 꽂고, 안쪽 식을 원자식 조항으로 확인한다. 그것을 정의역의 크기만큼 되풀이한다.
답이 말이 되는가. 판정마다 짝이 되는 증거를 손에 쥐었는지 확인한다. ∀ 을 참이라 했으면 훑은 목록이 정의역 전체여야 하고, 거짓이라 했으면 어긋나는 원소 하나를 댈 수 있어야 한다. (라)에서 훑은 것이 1,2,3 셋이고 정의역이 그 셋이므로 빠진 것이 없다. 원자식 판정 셋도 각각 확인할 것 하나를 — (가)는 원소 하나를, (나)와 (다)는 순서쌍 하나를 — 실제로 대고 있다.
예제 117
같은 모형에서 ¬∀𝑥𝐹𝑥 와 ∀𝑥¬𝐹𝑥 를 각각 판정하라. 두 식이 왜 다른지 정의로 설명하라.
풀이 보기
먼저 ∀𝑥𝐹𝑥 를 본다. 𝑑=1 은 1∈𝐼(𝐹) 이라 성립, 𝑑=2 도 성립, 𝑑=3 은 3∉𝐼(𝐹) 이라 성립하지 않는다. 모든 원소를 요구하는데 하나가 어긋났으므로 ∀𝑥𝐹𝑥 는 거짓이다. 따라서 ¬∀𝑥𝐹𝑥 는 참이다.
이제 ∀𝑥¬𝐹𝑥 를 본다. 훑는 것은 같은 세 원소이지만 확인할 식이 ¬𝐹𝑥 다. 𝑑=1 이면 1∈𝐼(𝐹) 이므로 ¬𝐹𝑥 가 성립하지 않는다. 여기서 이미 어긋났으므로 거짓이다.
왜 다른가. 조항이 붙는 순서가 다르기 때문이다. ¬∀𝑥𝐹𝑥 는 훑기를 먼저 끝내고 그 결과를 뒤집는다. ∀𝑥¬𝐹𝑥 는 원소마다 뒤집은 뒤 그것들을 모두 요구한다. 앞은 "하나라도 𝐹 가 아니다", 뒤는 "하나도 𝐹 가 아니다"로 세기가 다르다.
mcs 5장이 한정사와 부정의 관계를 규칙으로 정리해 두었다. 여기서 달라진 것은 그 규칙을 외우는 대신 정의에서 다시 끌어냈다는 점이다. 실제로 성립하는 짝은 ¬∀𝑥𝜑 와 ∃𝑥¬𝜑 이고, 아래 절에서 이 짝이 모든 모형에서 값이 같음을 확인한다.
예제 118
같은 모형에서 ∃𝑦∀𝑥𝐺𝑥𝑦 를 판정하라. 배정이 어떻게 두 번 갈아 끼워지는지 다 적어라.
풀이 보기
바깥이 ∃𝑦 이므로 조항은 "어떤 𝑒∈𝐷 가 있어 M,𝑔[𝑦↦𝑒]⊨∀𝑥𝐺𝑥𝑦"다. 후보를 하나씩 시험한다.
𝑒=1 — 배정은 𝑔[𝑦↦1] 이다. 안쪽 ∀𝑥𝐺𝑥𝑦 를 확인하려면 다시 𝑥 를 훑는다. 𝑑=1 이면 배정이 𝑔[𝑦↦1][𝑥↦1] 이고 확인할 것은 ⟨1,1⟩∈𝐼(𝐺) 인데 아니다. 첫 원소에서 막혔으므로 𝑒=1 은 실패다.
𝑒=2 — 확인할 것 가운데 𝑑=1 에서 ⟨1,2⟩∈𝐼(𝐺) 를 요구하는데 아니다. 실패다.
𝑒=3 — 𝑑=1 이면 ⟨1,3⟩, 𝑑=2 이면 ⟨2,3⟩, 𝑑=3 이면 ⟨3,3⟩ 이고 셋 다 𝐼(𝐺) 에 있다. 성립한다.
후보 하나가 성공했으므로 ∃𝑦∀𝑥𝐺𝑥𝑦 는 참이다. 증거는 원소 3 이다.
갈아 끼움이 어떻게 쌓였는지 보라. 바깥 한정사가 𝑦 를 고정한 채 안쪽 한정사가 𝑥 를 훑었다. 자리가 서로 다르므로 안쪽 훑기가 바깥 값을 흔들지 않는다. 이것이 한정사 조항이 안전하게 겹쳐지는 이유다. 그리고 이 모형에서는 "모두를 받는 원소" 3 이 있어서 참이 되었다는 점을 기억해 두라. 그런 원소가 없으면 어떻게 되는지가 아래 절의 주제다.
문장의 참 — 배정을 지운다
만족은 M 과 𝑔 의 짝에 대해 정의했다. 그런데 우리가 정말 알고 싶은 것은 "이 식이 이 모형에서 참인가"이지 배정까지 딸린 물음이 아니다. 배정을 지울 수 있는가?
자유 변수가 있으면 지울 수 없다. 앞 모형에서 𝐹𝑥 는 𝑔(𝑥)=1 인 배정에서 만족되고 𝑔(𝑥)=3 인 배정에서는 만족되지 않는다. 값이 배정에 달려 있으므로 "𝐹𝑥 가 참이다"는 말이 성립하지 않는다.
그러나 자유 변수가 없으면 사정이 다르다. 다음이 성립한다.
관련성 보조정리 — 𝜑 에 자유롭게 나타나는 모든 변수에 대해 두 배정 𝑔 와 ℎ 가 같은 값을 준다면, M,𝑔⊨𝜑 인 것과 M,ℎ⊨𝜑 인 것이 같다.
그럴듯하게 들리고 실제로 참이지만 증명이 필요한 주장이다. 증명은 식의 구조를 따라가는 귀납이고 그 도구는 13장에서 세운다. 6장에서도 똑같은 빚을 졌다 — 거기서 미룬 것은 "식의 값은 그 식에 나오는 문장문자에만 달려 있다"였다. 둘은 같은 주장의 두 판본이고 13장에서 함께 갚는다.
이 보조정리에서 곧바로 따라 나오는 것이 있다. 𝜑 가 문장이면 자유롭게 나타나는 변수가 하나도 없으므로 조건이 저절로 채워지고, 따라서 어느 배정을 잡든 결과가 같다. 그러면 배정을 적을 이유가 없다. 그래서 문장에 대해서만 이렇게 줄여 쓴다.
M⊨𝜑
읽기는 "𝜑 는 M 에서 참이다" 또는 "M 은 𝜑 의 모형이다"다. 참과 거짓이라는 말은 문장에만 쓴다. 자유 변수가 든 식에 대해서는 만족한다·만족하지 않는다고만 말한다. 9장이 "10장에서 참·거짓이 붙는 것은 문장뿐"이라고 예고한 것이 이 자리다.
예제 119
앞 모형에서 다음 셋을 견주어라. (가) 𝐹𝑥 (나) ∀𝑥𝐹𝑥 (다) (∀𝑥𝐹𝑥∧𝐺𝑥𝑏). 각각 문장인가? 배정에 값이 달려 있는가?
풀이 보기
(가) 𝐹𝑥 는 𝑥 의 자유 나타남이 있으므로 문장이 아니다. 𝑔(𝑥)=1 이면 만족하고 𝑔(𝑥)=3 이면 만족하지 않는다. 배정에 달려 있다. 그러므로 M⊨𝐹𝑥 라고 적을 수 없다.
(나) ∀𝑥𝐹𝑥 는 자유 나타남이 없으므로 문장이다. 값을 계산하면 앞에서 본 대로 거짓이고, 어느 배정에서 계산해도 거짓이다. 한정사 조항이 𝑥 자리를 어차피 갈아 끼우므로 원래 값이 무엇이었든 지워진다.
(다) 괄호를 잘 보라. 9장의 규약대로 ∀𝑥 의 범위는 𝐹𝑥 까지이고 𝐺𝑥𝑏 의 𝑥 는 범위 밖이다. 그러므로 이 식은 문장이 아니다. 왼쪽 부분은 배정과 무관하게 거짓이고, 오른쪽 부분은 𝑔(𝑥) 에 달려 있다. 다만 ∧ 이므로 왼쪽이 거짓인 것만으로 전체가 만족되지 않는다.
(다)가 이 절의 요점을 잘 보여 준다. 문장인가 아닌가는 괄호가 정한다.∀𝑥(𝐹𝑥∧𝐺𝑥𝑏) 로 괄호를 옮기면 문장이 되고, 그때는 M⊨ 를 쓸 수 있다. 참고로 그 식은 이 모형에서 거짓이다 — 𝑑=3 에서 𝐹𝑥 가 어긋난다.
예제 120
M⊨𝜑 도 아니고 M⊨¬𝜑 도 아닌 문장 𝜑 와 모형 M 이 있을 수 있는가?
풀이 보기
없다. ¬ 조항이 그것을 막는다. M,𝑔⊨¬𝜑 는 정의상 "M,𝑔⊨𝜑 가 아니다"이므로, 배정 𝑔 하나를 잡으면 둘 중 정확히 하나가 성립한다.
𝜑 가 문장이므로 배정을 무엇으로 잡든 결과가 같고, 따라서 모형 하나에 대해 정확히 하나가 성립한다. 값이 없는 문장도, 값이 둘인 문장도 없다.
이 성질이 당연해 보이지만 공짜가 아니다. 정의역이 비어 있지 않기로 한 것과 배정이 변수 전체에 값을 주기로 한 것이 함께 떠받치고 있다. 배정이 일부 변수에만 값을 준다면 항의 지시체가 없는 경우가 생기고, 그러면 원자식 조항이 참도 거짓도 말하지 못한다.
19장에서 이 성질을 일부러 버리는 논리를 본다. 참과 거짓 말고 셋째 값을 두는 다치 논리가 그것이다. 여기서는 두 값만 쓴다.
의미론적 귀결과 타당성 — 6장의 정의를 넓힌다
6장에서 Γ⊨𝜑 는 "Γ 를 모두 참으로 만드는 배당이 전부 𝜑 도 참으로 만든다"였다. 정의의 모양을 하나도 바꾸지 않고 배당을 모형으로 갈아 끼우면 술어논리의 정의가 된다.
Γ⊨𝜑 — Γ 의 문장을 모두 참으로 만드는 모든 모형이 𝜑 도 참으로 만든다. 여기서 Γ 와 𝜑 는 문장이다.
나머지 낱말도 같은 방식으로 옮겨진다. 이름만 하나 갈아 끼운다.
6장 (명제논리)
10장 (술어논리)
무엇이 달라졌는가
배당 𝑣
모형 M=⟨𝐷,𝐼⟩
진리값 대신 대상들의 세계를 고른다
확장 배당 ¯𝑣
만족 관계 M,𝑔⊨𝜑
계산하는 동안 배정 𝑔 가 따라다닌다
𝑣⊨𝜑
M⊨𝜑
문장에만 쓴다. 배정은 지워진다
항진명제
논리적 참(logical truth) ⊨𝜑
모든 배당에서 참 → 모든 모형에서 참
모순
모든 모형에서 거짓인 문장
반대쪽 끝도 같이 옮겨진다
만족가능한 집합
모형을 갖는 문장 집합
만족시키는 배당 → 만족시키는 모형
Γ⊨𝜑
Γ⊨𝜑
기호도 뜻도 같다. 훑는 대상만 바뀐다
반례 배당
반례 모형(countermodel)
전제를 참으로, 결론을 거짓으로 만드는 모형
배당은 2𝑛 개 — 유한하다
모형은 무한히 많고 크기도 무한할 수 있다
이 줄만 옮겨지지 않는다. 마지막 절의 주제
표의 마지막 줄을 뺀 나머지가 그대로 옮겨진다는 것이 이 절의 요점이다. 그래서 6장에서 배운 것이 버려지지 않는다. 예를 들어 명제논리의 항진명제에 술어논리 식을 대입한 것은 논리적 참이다.𝑃∨¬𝑃 가 항진명제이므로 ∀𝑥𝐹𝑥∨¬∀𝑥𝐹𝑥 는 어떤 모형에서도 참이다. 6장의 의미론적 연역정리 Γ∪{𝜑}⊨𝜓 ⟺ Γ⊨𝜑→𝜓 도 그대로 살아남는다. 증명이 배당의 성질을 쓴 것이 아니라 → 조항만 썼기 때문이다.
낱말 하나를 못 박아 둔다. 3장 이래로 "타당"은 이 문서에서 논증에만 쓴다. 모든 모형에서 참인 식은 논리적 참이라 부른다. mcs 는 그런 식을 "타당한 식"이라 부르고 다른 책도 대개 그렇게 부르므로, 다른 글을 읽을 때 옮겨 읽어야 한다. 6장에서 항진명제와 타당의 관계를 정리한 것과 같은 처리다.
(가) 성립한다. M⊨∀𝑥𝐹𝑥 인 모형을 아무거나 잡자. 𝐹𝑎 의 값을 보려면 항 𝑎 의 지시체 𝐼(𝑎) 가 𝐼(𝐹) 에 드는지 보면 된다. 그런데 𝐼(𝑎) 는 𝐷 의 원소이고, 전제가 𝐷 의 모든 원소에 대해 조건이 성립한다고 했으므로 𝐼(𝑎) 도 예외가 아니다. 성립한다.
(나) 성립하지 않는다. 반례 모형을 만든다. 𝐹𝑎 만 참이면 되고 ∀𝑥𝐹𝑥 는 거짓이어야 하므로, 이름이 가리키는 원소는 𝐹 이고 다른 원소 하나는 𝐹 가 아니면 된다. 구별해야 할 것이 둘이므로 점 둘이면 충분하다.
두 답의 짝이 11장을 예고한다. (가)가 성립하므로 "∀𝑥𝜑 에서 𝜑[𝑎/𝑥] 로 내려가도 된다"는 규칙을 만들 수 있고, 그것이 ∀ 제거다. (나)가 성립하지 않으므로 거꾸로 올라가는 규칙에는 조건이 붙어야 한다. 그 조건이 11장의 변수 조건이다.
반례 모형 만들기 — 작은 정의역으로 충분하다
6장에서 귀결이 아님을 보이는 방법은 반례 배당 하나를 내놓는 것이었다. 여기서도 같다. Γ⊨𝜑 가 아님을 보이려면 반례 모형 하나를 만들면 된다. Γ 의 문장을 모두 참으로 만들면서 𝜑 는 거짓으로 만드는 모형이다.
달라진 것은 만드는 방법이다. 배당은 문장문자에 값을 채우면 됐지만 모형은 정의역부터 정해야 한다. 겁먹을 것 없다. 필요한 구별의 수만큼만 점을 놓으면 되고, 그 수는 대개 셋을 넘지 않는다.
<점을 하나씩 늘릴 때마다 새로 말할 수 있게 되는 구별이 있다 — 큰 정의역이 필요해 보이면 대개 구별을 잘못 센 것이다>[원본 보기]
절차로 적으면 넷이다.
하나 — 무엇이 어긋나야 하는지 적는다. 전제는 모두 참, 결론은 거짓. 특히 결론이 거짓이 되는 방법이 무엇인지 먼저 본다
둘 — 구별할 것을 센다. "𝐹 인 것과 아닌 것"이 필요하면 점 둘, "이어져 있지만 건너뛰지 못하는 것"이 필요하면 점 셋
셋 — 술어의 해석을 정한다. 1항이면 어느 점을 고를지, 2항이면 어느 화살표를 그릴지
넷 — 확인한다. 만든 모형에서 전제와 결론을 정의에 따라 하나씩 계산한다. 이 단계를 건너뛰면 틀린 반례를 내놓게 된다
예제 123
{∀𝑥(𝐹𝑥→𝐺𝑥),∃𝑥𝐺𝑥}⊨∃𝑥𝐹𝑥 인가? 𝐹 와 𝐺 는 1항이다.
풀이 보기
결론 ∃𝑥𝐹𝑥 가 거짓이 되려면 𝐹 인 원소가 하나도 없어야 한다. 즉 𝐼(𝐹)=∅.
그러면 첫 전제 ∀𝑥(𝐹𝑥→𝐺𝑥) 는 저절로 참이 된다. 어느 원소를 잡아도 𝐹𝑥 가 성립하지 않으므로 → 조항의 전건이 거짓이고, 조건문이 공허하게 참이 된다.
남은 것은 둘째 전제 ∃𝑥𝐺𝑥 를 참으로 만드는 일이다. 𝐺 인 원소가 하나 있으면 된다. 그러니 점 하나로 충분하다.
𝐷={1}, 𝐼(𝐹)=∅, 𝐼(𝐺)={1}.
확인한다. ∀𝑥(𝐹𝑥→𝐺𝑥) — 𝑑=1 에서 1∉𝐼(𝐹) 이므로 전건이 거짓, 조건문은 참. 훑을 원소가 그것뿐이므로 참. ∃𝑥𝐺𝑥 — 𝑑=1 에서 1∈𝐼(𝐺) 이므로 참. ∃𝑥𝐹𝑥 — 1∉𝐼(𝐹) 이므로 거짓.
전제가 모두 참이고 결론이 거짓이므로 귀결이 아니다. 자연어로 옮기면 "모든 𝐹 는 𝐺 이고 𝐺 인 것이 있다"에서 "𝐹 인 것이 있다"가 따라 나오지 않는다는 말이고, 𝐹 인 것이 아예 없는 세계가 그 반례다. 4장에서 전칭 문장을 → 로 옮긴 대가가 여기서 눈에 보인다 — ∀𝑥(𝐹𝑥→𝐺𝑥) 는 𝐹 인 것이 있다고 말하지 않는다.
예제 124
{∃𝑥𝐹𝑥,∃𝑥𝐺𝑥}⊨∃𝑥(𝐹𝑥∧𝐺𝑥) 인가? 앞 예제의 정의역 하나짜리 모형으로도 반례를 만들 수 있는가?
풀이 보기
결론이 거짓이려면 𝐹 이면서 동시에 𝐺 인 원소가 하나도 없어야 한다. 전제는 𝐹 인 것이 있고 𝐺 인 것도 있어야 한다고 요구한다. 그러니 𝐹 인 것과 𝐺 인 것이 서로 달라야 하고, 구별할 것이 둘이므로 점 둘이 필요하다.
𝐷={1,2}, 𝐼(𝐹)={1}, 𝐼(𝐺)={2}.
확인한다. ∃𝑥𝐹𝑥 — 𝑑=1 이 증거이므로 참. ∃𝑥𝐺𝑥 — 𝑑=2 이 증거이므로 참. ∃𝑥(𝐹𝑥∧𝐺𝑥) — 𝑑=1 은 𝐺𝑥 에서 막히고 𝑑=2 은 𝐹𝑥 에서 막히므로 거짓. 귀결이 아니다.
점 하나로는 안 된다. 정의역이 {1} 이면 ∃𝑥𝐹𝑥 가 참이려면 1∈𝐼(𝐹) 이어야 하고 ∃𝑥𝐺𝑥 가 참이려면 1∈𝐼(𝐺) 이어야 하는데, 그러면 1 이 결론의 증거가 되어 결론까지 참이 된다. 구별이 하나 모자라면 반례가 만들어지지 않는다.
이 예제가 "구별을 세라"는 지침의 뜻이다. 정의역의 크기는 취향이 아니라 어긋나야 하는 것의 개수가 정한다. 그림의 셋째 칸이 보인 추이성 반례는 같은 이유로 점 셋을 요구한다.
한정사 순서 — 모형으로 증명한다
mcs 5장이 한정사 순서를 바꾸면 뜻이 달라진다고 했다. 흔히 드는 예가 "모두에게는 각자의 무엇이 있다"와 "모두의 것인 무엇이 하나 있다"다. mcs 는 예를 들어 설득했다. 이제 우리는 증명할 수 있다. 두 식을 가르는 모형을 실제로 내놓으면 된다.
견줄 두 식은 이것이다. 𝐺 는 2항 술어다.
∀𝑥∃𝑦𝐺𝑥𝑦 그리고 ∃𝑦∀𝑥𝐺𝑥𝑦
<두 모형의 차이는 ‘모든 화살표를 받는 점이 있는가’ 하나뿐이다 — 왼쪽에는 없고 오른쪽에는 있으며, 그 차이가 두 식을 가른다>[원본 보기]
왼쪽 모형이 반례다. 𝐷={1,2} 이고 𝐼(𝐺)={⟨1,1⟩,⟨2,2⟩} 이다. 화살표가 제자리로만 돌아온다.
예제 125
위 모형 M1 에서 두 식을 각각 판정하여 ∀𝑥∃𝑦𝐺𝑥𝑦⊨∃𝑦∀𝑥𝐺𝑥𝑦 가 아님을 보여라.
풀이 보기
먼저 ∀𝑥∃𝑦𝐺𝑥𝑦. 바깥이 ∀𝑥 이므로 𝐷 의 원소를 훑는다.
𝑑=1 — 안쪽 ∃𝑦𝐺𝑥𝑦 를 확인한다. 𝑒=1 로 잡으면 ⟨1,1⟩∈𝐼(𝐺) 이므로 성립. 증거를 찾았으니 이 원소는 통과다.
𝑑=2 — 𝑒=2 로 잡으면 ⟨2,2⟩∈𝐼(𝐺) 이므로 성립. 통과다.
두 원소가 모두 통과했으므로 이 식은 참이다. 눈여겨볼 것은 𝑑 마다 고른 𝑒 가 달랐다는 점이다. 안쪽 ∃ 는 바깥 ∀ 이 고른 원소를 이미 알고 있으므로 그것에 맞춰 고를 수 있다.
이제 ∃𝑦∀𝑥𝐺𝑥𝑦. 바깥이 ∃𝑦 이므로 후보 둘을 시험한다.
𝑒=1 — 안쪽 ∀𝑥𝐺𝑥𝑦 는 모든 𝑑 를 요구한다. 𝑑=2 에서 ⟨2,1⟩∈𝐼(𝐺) 를 요구하는데 아니다. 실패.
𝑒=2 — 𝑑=1 에서 ⟨1,2⟩∈𝐼(𝐺) 를 요구하는데 아니다. 실패.
후보가 다 실패했으므로 이 식은 거짓이다. 전제가 참이고 결론이 거짓인 모형을 실제로 내놓았으므로 귀결이 아니다.
무엇이 갈랐는지 정확히 짚으면 이렇다. ∃𝑦 가 바깥에 있으면 𝑦 를 먼저 고정해야 하고, 고정한 뒤에 모든 𝑥 를 견뎌야 한다. ∃𝑦 가 안에 있으면 𝑥 를 보고 나서 고르면 된다. 배정으로 말하면 갈아 끼우는 순서가 다르다 — 앞은 𝑔[𝑦↦𝑒][𝑥↦𝑑] 를, 뒤는 𝑔[𝑥↦𝑑][𝑦↦𝑒] 를 만드는데, 𝑒 를 고를 때 𝑑 를 알고 있는지가 다르다.
예제 126
반대 방향은 어떤가. ∃𝑦∀𝑥𝐺𝑥𝑦⊨∀𝑥∃𝑦𝐺𝑥𝑦 임을 보여라. 그리고 두 식이 함께 참인 모형이 있는지 답하라.
풀이 보기
모형 M 을 아무거나 잡고 M⊨∃𝑦∀𝑥𝐺𝑥𝑦 라 하자. ∃ 조항에 따라 어떤 원소 𝑒0∈𝐷 가 있어서, 모든 𝑑∈𝐷 에 대해 ⟨𝑑,𝑒0⟩∈𝐼(𝐺) 이다.
이제 결론을 보인다. ∀𝑥∃𝑦𝐺𝑥𝑦 를 보이려면 원소 𝑑 를 아무거나 잡고 그것에 맞는 𝑒 를 하나 내놓으면 된다. 그런데 𝑒0 가 모든𝑑 에 대해 이미 통하므로 그냥 𝑒=𝑒0 로 잡으면 된다.
어느 모형을 잡았든 그랬으므로 귀결이 성립한다. 논증의 모양이 요점이다 — 먼저 고른 하나는 나중에 고르는 데에도 쓸 수 있다. 거꾸로 나중에 고른 것들이 하나로 모인다는 보장은 없고, 그래서 반대 방향이 깨진다.
두 식이 함께 참인 모형은 있다. 그림의 오른쪽 모형이 그것이다. 𝐷={1,2}, 𝐼(𝐺)={⟨1,1⟩,⟨2,1⟩} 로 두면 원소 1 이 모든 화살표를 받으므로 ∃𝑦∀𝑥𝐺𝑥𝑦 가 참이고, 방금 보인 귀결에 따라 ∀𝑥∃𝑦𝐺𝑥𝑦 도 참이다.
챙길 것은 이것이다. 한 모형에서 두 식이 함께 참인 것은 두 식이 같다는 증거가 못 된다. 다름을 확정하는 것은 둘을 가르는 모형 하나이고, 그 하나를 찾는 것이 앞 예제가 한 일이다.
명제논리와 무엇이 다른가 — 진리표가 없다
6장에서 명제논리는 결정 가능하다고 했다. 배당이 2𝑛 개로 유한하므로 전부 훑으면 어떤 물음이든 답이 나온다는 뜻이었다. 느리기는 해도 되기는 됐다. 술어논리에서는 그 마지막 위안이 사라진다.
<왼쪽 기둥은 유한에서 끝나고 오른쪽 기둥은 어디서도 끝나지 않는다 — 빠져나갈 두 길을 닫고 나면 남는 것은 물음 하나이고, 그것이 16장의 제목이다>[원본 보기]
왜 사라지는지는 모형의 정의를 보면 곧바로 나온다. 상황 하나를 정하려면 먼저 정의역을 골라야 하는데, 정의역의 크기에 상한이 없다. 크기를 하나로 고정해도 그 위의 해석이 또 여럿이다. 모형 전체를 늘어놓는 표 같은 것은 만들 수 없다.
빠져나갈 길을 둘 생각해 볼 수 있고 둘 다 막힌다.
유한한 정의역만 보면 되지 않는가. 안 된다. 유한 모형은 하나도 없고 무한 모형만 갖는 문장 집합이 있다. 아래 예제가 그런 집합을 실제로 만든다
크기 𝑘 까지만 보면 되지 않는가. 안 된다. 어떤 𝑘 를 정해도 크기 𝑘 이하의 모형에서는 모두 참인데 더 큰 모형에서 거짓이 되는 문장을 만들 수 있다. 12장에서 = 를 얻고 나면 "정의역에 적어도 𝑘+1 개가 있다"는 문장을 직접 적을 수 있고, 그것이 곧 그런 예다
그러면 남는 물음은 하나다. 모형을 훑는 것 말고 다른 방법으로, 어떤 식이 논리적 참인지 유한 단계에 답하는 절차가 있는가? 이 물음이 16장의 제목이고 답은 없다는 쪽이다. 다만 절반은 된다 — 논리적 참인 것은 언제나 유한 단계에 찾아낼 수 있다. 그 절반을 만드는 것이 11장의 증명 체계이고, 그것이 정말 의미론과 어긋나지 않는지가 13장, 의미론이 인정하는 것을 빠짐없이 잡아내는지가 14장이다.
잃은 것만 있는 것은 아니다. 정의역이 생기면서 얻은 것도 있다. 무한을 이야기하는 문장을 적을 수 있게 되었고, 그래서 15장의 컴팩트성과 비표준 모형 같은 물음이 생긴다. 명제논리에서는 물을 수조차 없던 것들이다.
예제 127
정의역의 크기가 3 으로 정해져 있고 언어에 2항 술어 𝐺 하나와 개체상수 𝑎 하나만 있다고 하자. 서로 다른 해석은 몇 개인가?
풀이 보기
𝐼(𝐺) 부터 센다. 𝐺 는 2항이므로 해석은 𝐷2 의 부분집합이다. 𝐷2 의 원소는 순서쌍이고, 첫 자리에 3 가지 둘째 자리에 3 가지이므로 3×3=9 개다.
부분집합을 고르는 일은 원소마다 "넣는다 / 안 넣는다"를 정하는 일이므로 29=512 가지다.
𝐼(𝑎) 는 𝐷 의 원소 하나이므로 3 가지다. 두 선택이 서로 얽히지 않으므로 곱한다. 3×512=1536 개다.
크기를 고정해도 이만큼이라는 것이 요점이다. 크기를 4 로 늘리면 순서쌍이 16 개가 되어 해석이 4×216=262144 개다. 술어를 하나 더 얹으면 다시 그만큼 곱해진다. 그리고 크기 자체에 상한이 없다. 진리표에 해당하는 표를 그릴 수 없다는 말이 이런 뜻이다.
답이 말이 되는가. 세는 방식이 맞는지 보려면 작은 경우로 줄여 손으로 세어 본다. 정의역이 원소 하나뿐이면 순서쌍도 하나이므로 1×21=2 개가 나와야 하는데, 실제로 𝐼(𝐺) 가 비었거나 그 하나를 담았거나 둘뿐이고 𝐼(𝑎) 는 고를 것이 없다. 맞는다. 일반식은 작은 경우에서 손으로 센 값과 맞춰 보는 것이 가장 값싼 검산이다.
예제 128
다음 세 문장을 모두 참으로 만드는 모형은 정의역이 반드시 무한함을 보여라. 𝐺 는 2항이다.
∀𝑥¬𝐺𝑥𝑥, ∀𝑥∀𝑦∀𝑧(𝐺𝑥𝑦∧𝐺𝑦𝑧→𝐺𝑥𝑧), ∀𝑥∃𝑦𝐺𝑥𝑦
풀이 보기
세 문장을 말로 옮기면 이렇다. 첫째, 어느 것도 자기 자신과 𝐺 관계에 있지 않다. 둘째, 관계가 이어지면 건너뛸 수 있다(추이성). 셋째, 어느 것에서 출발해도 나가는 화살표가 있다.
정의역이 유한하다고 해 보고 모순을 끌어낸다. 원소 하나를 잡아 𝑑1 이라 하자. 셋째 문장에 따라 ⟨𝑑1,𝑑2⟩∈𝐼(𝐺) 인 𝑑2 가 있다. 다시 셋째 문장을 𝑑2 에 쓰면 ⟨𝑑2,𝑑3⟩∈𝐼(𝐺) 인 𝑑3 가 있다. 이렇게 끝없이 이어 갈 수 있다.
정의역이 유한하면 이 줄에서 같은 원소가 두 번 나온다. 자리가 유한한데 뽑는 횟수가 무한하기 때문이다. 즉 𝑑𝑖 와 𝑑𝑗 가 같은 원소인 𝑖<𝑗 가 있다.
그 사이 구간을 추이성으로 압축한다. ⟨𝑑𝑖,𝑑𝑖+1⟩ 부터 ⟨𝑑𝑗−1,𝑑𝑗⟩ 까지 이어져 있으므로 둘째 문장을 되풀이 적용하면 ⟨𝑑𝑖,𝑑𝑗⟩∈𝐼(𝐺) 다. 그런데 𝑑𝑖 와 𝑑𝑗 가 같은 원소이므로 이것은 ⟨𝑑𝑖,𝑑𝑖⟩∈𝐼(𝐺) 를 뜻하고, 첫째 문장에 어긋난다.
모순이므로 정의역은 유한할 수 없다. 예를 들어 정의역을 1,2,3,… 로 잡고 𝐼(𝐺) 를 "앞의 것에서 뒤의 것으로"라 두면 세 문장이 모두 참이 되므로, 모형이 아예 없는 것도 아니다.
이 예제가 앞의 첫째 막다른 길을 닫는다. 유한 모형만 훑는 절차는 이 집합을 보고 "모형이 없다"고 잘못 말할 것이다. 그리고 이 예제는 15장을 미리 건드린다 — 유한으로는 닿을 수 없는 크기의 모형이 논리 안에 이미 들어와 있다는 사실이 컴팩트성과 뢰벤하임-스콜렘 정리가 다루는 것이다.
이 장에서 새로 나온 것
기호 · 용어
뜻
모형 M=⟨𝐷,𝐼⟩
술어논리에서 상황 하나. 정의역과 해석의 짝
정의역 𝐷
이 모형이 이야기하는 대상 전체. 비어 있으면 안 된다. 함수의 정의역과 다른 말이다
해석 𝐼
비논리 기호마다 𝐷 안에서 무엇을 고를지 정하는 것
𝐼(𝑎)∈𝐷
개체상수는 𝐷 의 원소 하나를 가리킨다
𝐼(𝐹)⊆𝐷𝑛
𝑛 항 술어는 𝐷𝑛 의 부분집합. 고른 집합이 곧 뜻이다
순서쌍 ⟨𝑑1,𝑑2⟩
순서를 지켜 묶은 둘. ⟨1,3⟩ 과 ⟨3,1⟩ 은 다르다
𝐷𝑛 · 𝐷×𝐷
𝐷 의 원소를 𝑛 개 순서대로 늘어놓은 것 전체
관계(relation)
𝐷𝑛 의 부분집합. 원장이 10장에 맡긴 도구가 이것이다
변수 배정 𝑔
변수 전체에서 𝐷 로 가는 함수. 모형이 하지 못하는 일을 맡는다
𝑔[𝑥↦𝑑]
𝑥 자리만 𝑑 로 갈아 낀 배정. 나머지는 그대로. 9장의 𝜑[𝑎/𝑥] 와 다른 것이다
지시체 𝑡M,𝑔
항 𝑡 가 가리키는 원소. 상수는 𝐼 가, 변수는 𝑔 가 정한다
만족 M,𝑔⊨𝜑
모형과 배정의 짝이 𝜑 를 만족한다. 9장의 아홉 갈래마다 조항 하나
한정사 조항
∀ 은 모든 𝑑∈𝐷 에 대해, ∃ 는 어떤 𝑑∈𝐷 가 있어 𝑔[𝑥↦𝑑] 에서 성립
관련성 보조정리
자유 변수에 같은 값을 주는 배정은 같은 값을 낸다. 증명은 13장
문장의 참 M⊨𝜑
문장에만 쓴다. 배정이 지워진다. M 은 𝜑 의 모형이다
논리적 참 ⊨𝜑
모든 모형에서 참. 6장의 항진명제에 해당한다. mcs 는 타당한 식이라 부른다
의미론적 귀결 Γ⊨𝜑
Γ 를 모두 참으로 만드는 모든 모형이 𝜑 도 참으로 만든다
만족가능한 집합
모형을 갖는 문장 집합
반례 모형(countermodel)
전제를 모두 참으로 결론을 거짓으로 만드는 모형. 하나면 귀결이 아님이 확정된다
챙겨 갈 것은 다섯이다.
모형은 정의역과 해석의 짝이고 정의역은 비어 있으면 안 된다. 상수는 점 하나, 𝑛 항 술어는 𝐷𝑛 의 부분집합을 받는다. 술어의 뜻은 고른 집합이 전부다
변수 배정은 편의가 아니라 강제된 장치다. 재귀적 정의가 열린 식을 반드시 지나가고, 이름으로 갈아 끼우는 방법은 이름 없는 원소 앞에서 무너진다
한정사 조항은 이름이 아니라 𝐷 의 원소를 훑는다. 원소마다 배정을 한 자리씩 갈아 끼운다. 자리가 하나뿐이라 한정사를 겹쳐도 서로 흔들지 않는다
Γ⊨𝜑 는 6장의 정의에서 배당을 모형으로 갈아 끼운 것이다. 귀결이 아님은 반례 모형 하나로 끝나고, 그 모형의 정의역은 대개 점 셋을 넘지 않는다
진리표에 해당하는 것이 없다. 모형은 무한히 많고 크기에 상한이 없으며, 유한만 보거나 크기를 잘라 보는 우회로는 둘 다 막힌다
11장은 6장 다음에 7장이 온 것과 같은 이유로 온다. 모형을 훑지 않고 규칙을 이어 붙여 결론에 이르는 길을 만든다. 이 장이 밝힌 두 비대칭 — ∀ 은 거짓임을 원소 하나로, ∃ 는 참임을 원소 하나로 보인다는 것 — 이 그대로 네 규칙의 모양이 되고, 이 장 마지막 예제에서 "𝐹𝑎 에서 ∀𝑥𝐹𝑥 로 올라갈 수 없다"고 확인한 것이 그 규칙에 붙는 변수 조건이 된다.
자연연역 — 술어논리
10장은 술어논리의 문장에 뜻을 주고 Γ⊨𝜑 를 정의했다. 그런데 그 정의로 무언가를 확정하려면 모형 전부를 훑어야 한다. 6장에서는 그 훑기가 끝나기는 했다 — 배당이 2𝑛 개뿐이라 느릴 뿐이었다. 10장에서는 끝나지 않는다. 정의역의 크기에 상한이 없고, 크기를 고정해도 그 위의 해석이 또 여럿이다. 진리표에 해당하는 것이 아예 없다.
그러니 7장에서 증명 체계를 세운 이유가 여기서는 더 세다. 명제논리에서 증명 체계는 진리표보다 빠르고 남에게 건넬 수 있다는 이점이 있었다. 술어논리에서는 손에 쥘 것이 그것밖에 없다.
이 장이 하는 일은 짧게 적힌다. 7장의 규칙 열셋에 한정사 규칙 넷을 더한다. 도출이 무엇인지, 범위와 방출이 무엇인지, Γ⊢𝜑 가 무슨 뜻인지는 한 글자도 바뀌지 않는다. 늘어나는 것은 규칙 목록뿐이다.
이 장에서 답할 질문은 넷이다.
한정사가 붙은 식을 쓰는 규칙과 만드는 규칙은 어떤 모양인가
왜 어떤 규칙에는 "이 이름을 써도 되는가"라는 조건이 붙는가. 명제논리에는 그런 조건이 없었다
그 조건을 어기면 정확히 무엇이 무너지는가
⊢ 의 정의는 그대로인데 무엇이 달라졌는가
10장에서 가져오는 것은 셋이다. 첫째, ∀ 과 ∃ 의 비대칭 — ∀𝑥𝜑 는 거짓임을 원소 하나로 보이고 ∃𝑥𝜑 는 참임을 원소 하나로 보인다. 이것이 그대로 네 규칙의 모양이 된다. 둘째, 정의역은 비어 있으면 안 된다는 약속. 이 장의 정리 하나가 여기에 기댄다. 셋째, 반례 모형을 만드는 법. 조건을 어긴 도출이 무엇을 망치는지 확인할 때 쓴다.
9장에서 가져오는 것은 대입 표기 𝜑[𝑎/𝑥] 하나다. 네 규칙이 전부 이 표기로 적힌다. 대괄호 안은 새것 / 옛것 순서이고, 바뀌는 것은 𝑥 의 자유 나타남뿐이다. 개체상수를 넣으므로 변수 포획은 일어나지 않는다.
왜 규칙 넷을 더하는가
7장의 규칙 열셋으로는 한정사가 붙은 식을 다룰 수 없다. 규칙마다 "주연결자가 이것이면"이라는 모양이 정해져 있는데, ∀𝑥𝐹𝑥 의 주연결자는 그 열셋 어디에도 없다. 9장에서 적형식의 갈래가 일곱에서 아홉으로 늘었으니 규칙도 그만큼 늘어야 한다.
<왼쪽 기둥과 오른쪽 기둥의 가운데 상자를 견주라 — 같은 걸음인데 오른쪽에서는 돌아갈 곳이 없다. 증명 체계가 편의에서 유일한 도구로 바뀌는 자리다>[원본 보기]
늘리는 방식은 7장 그대로다. 한정사마다 도입 규칙 하나와 제거 규칙 하나. 도입 규칙은 결론에 그 한정사가 있고, 제거 규칙은 전제에 그 한정사가 있다. 규칙을 고르는 기준도 그대로 주연결자다.
다만 새로 생기는 것이 하나 있다. 명제논리의 규칙 열셋은 줄에 적힌 기호열의 모양만 보면 적용 여부가 판정됐다. 한정사 규칙 넷 가운데 둘은 그것으로 부족하다. 그 줄만 보아서는 안 되고 도출의 다른 부분까지 살펴야 한다. 그 살핌의 이름이 변수 조건이고, 이 장에서 가장 자주 틀리는 자리다.
예제 129
10장의 방법으로 {∀𝑥(𝐹𝑥→𝐺𝑥),𝐹𝑎}⊨𝐺𝑎 를 확정하려면 무엇을 해야 하는가. 그 논증이 왜 종이 한 장으로 남지 않는지 말하라.
풀이 보기
정의를 그대로 펴 보면 이렇다. 두 전제를 참으로 만드는 모형을 아무거나 잡고 그 모형에서 𝐺𝑎 가 참임을 보여야 한다. 실제로 보일 수 있다 — 𝐼(𝑎)∈𝐷 이고 첫 전제가 𝐷 의 모든 원소에 대해 조건을 걸었으므로 𝐼(𝑎) 도 예외가 아니고, 둘째 전제가 𝐼(𝑎)∈𝐼(𝐹) 을 주므로 𝐼(𝑎)∈𝐼(𝐺) 이다.
그러면 왜 종이로 남지 않는가. 남기는 남는다. 문제는 이 논증이 모형 전체를 말로 훑는다는 데 있다. "모형을 아무거나 잡고"라는 첫 문장이 이미 무한히 많은 대상을 한꺼번에 다룬다. 그것을 규칙 목록으로 기계가 검사할 수 있게 옮기려면, 검사하는 쪽도 같은 무한을 다뤄야 한다.
답이 말이 되는가. 이 장의 규칙으로 적으면 같은 논증이 네 줄이 된다. 그리고 그 네 줄은 𝐷 가 무엇인지 몰라도, 𝐼 가 무엇을 골랐는지 몰라도 검사된다. 무한을 다루는 논증을 유한한 검사로 바꾸는 것이 증명 체계가 하는 일이다.
예제 130
6장의 진리표는 "귀결이다"와 "귀결이 아니다"를 둘 다 확정해 주었다. 10장에는 그런 것이 없다. 이 차이가 증명 체계에 어떤 부담을 지우는가.
풀이 보기
명제논리에서는 도출을 못 찾아도 손해가 크지 않았다. 진리표를 그리면 "귀결이 아니다"까지 확정됐기 때문이다. 두 방법이 서로를 보충했다.
술어논리에서는 그 보충이 없다. 모형이 무한히 많으므로 "모든 모형에서 참"을 훑어서 확정할 수 없다. 반례 모형 하나를 찾으면 귀결이 아님은 확정되지만, 찾지 못했다고 귀결인 것은 아니다.
그래서 증명 체계에 지워지는 부담은 이것이다. 귀결인 것은 모두 도출로 잡아내야 한다. 하나라도 놓치면 그 하나는 어느 방법으로도 확정되지 않는다. 이 요구를 정리로 적은 것이 14장의 완전성이고, 반대 방향인 "도출된 것은 모두 귀결이다"가 13장의 건전성이다.
두 정리가 이 문서의 중심에 있는 이유가 여기서 보인다. 명제논리에서 둘은 "두 방법이 일치한다"는 깔끔한 사실이었지만, 술어논리에서는 증명 체계가 유일한 방법이어도 되는가라는 물음이다.
∀E 와 ∃I — 조건이 없는 두 규칙
넷 가운데 쉬운 둘부터 세운다. 이 둘은 이름을 내가 골라 쓰고, 골라 쓴 이름에 대해 무엇을 알고 있든 상관없다. 그래서 조건이 붙지 않는다.
∀E — 전칭 예화
∀𝑥𝜑 를 손에 쥐었다면 무엇을 할 수 있는가. 그것이 말하는 것은 "정의역의 모든 원소가 그렇다"이므로, 어느 이름을 골라도 그 이름에 대해 성립한다고 적을 수 있다.
∀𝑥𝜑𝜑[𝑎/𝑥]∀E
𝑎 는 아무 개체상수나 된다. 이미 도출에 나온 이름이어도 되고 새 이름이어도 된다. 이 규칙을 전칭 예화(universal instantiation)라 부르기도 한다. 하나에서 여럿을 뽑아 쓸 수 있으므로 한 줄에서 이 규칙을 여러 번 써서 𝜑[𝑎/𝑥] 와 𝜑[𝑏/𝑥] 를 모두 얻어도 된다.
왜 조건이 없는지 짚어 두자. 이 규칙은 이미 있는 주장을 좁히기만 한다. 모두에 대해 성립한다는 말에서 하나를 골라 꺼내는 것이므로, 고른 이름에 대해 우리가 무엇을 알고 있든 결과가 흔들리지 않는다.
∃I — 존재 일반화
반대쪽이다. 𝜑[𝑎/𝑥] 를 손에 쥐었다면 ∃𝑥𝜑 를 적을 수 있다. 𝑎 가 증거이기 때문이다.
𝜑[𝑎/𝑥]∃𝑥𝜑∃I
이것도 조건이 없다. 증거를 하나 갖고 있으면 "있다"고 말할 수 있고, 그 증거가 어떤 이름이든 상관없다. 10장의 ∃ 조항이 "어떤 원소 하나가 있어"를 요구한 것이 그대로 규칙이 되었다.
조심할 것이 하나 있다. 이 규칙은 거꾸로 읽을 자리가 여럿이다. 𝐹𝑎∧𝐺𝑎 를 손에 들고 있을 때, 𝜑 를 무엇으로 보느냐에 따라 결과가 갈린다. 𝜑=𝐹𝑥∧𝐺𝑥 로 보면 ∃𝑥(𝐹𝑥∧𝐺𝑥) 를, 𝜑=𝐹𝑥∧𝐺𝑎 로 보면 ∃𝑥(𝐹𝑥∧𝐺𝑎) 를, 𝜑=𝐹𝑎∧𝐺𝑥 로 보면 ∃𝑥(𝐹𝑎∧𝐺𝑥) 를 얻는다. 규칙이 요구하는 것은 손에 든 줄이 𝜑[𝑎/𝑥] 와 같기만 하면 된다는 것뿐이므로 셋 다 합법이다. 어느 것을 쓸지는 목표가 정한다.
예제 131
{∀𝑥(𝐹𝑥→𝐺𝑥),𝐹𝑎}⊢𝐺𝑎 를 보이는 도출을 적어라. 그리고 3번 줄에서 𝐹𝑏→𝐺𝑏 를 적었어도 되는지 답하라.
풀이 보기
손에 든 식 가운데 주연결자가 ∀ 인 것이 있으므로 제거 규칙을 쓸 자리다.
줄
논리식
근거
1
∀𝑥(𝐹𝑥→𝐺𝑥)
전제
2
𝐹𝑎
전제
3
𝐹𝑎→𝐺𝑎
1 ∀E
4
𝐺𝑎
2, 3 →E
3번 줄을 계산해 보자. 𝜑=𝐹𝑥→𝐺𝑥 이고 𝜑[𝑎/𝑥]=𝐹𝑎→𝐺𝑎 다. 대입은 𝑥 의 자유 나타남 둘을 모두 바꾼다. 한쪽만 바꿔 𝐹𝑎→𝐺𝑥 를 적으면 규칙 위반이다.
𝐹𝑏→𝐺𝑏 도 적어도 된다.∀E 는 어느 개체상수를 골라도 좋다. 다만 그 줄은 이 도출에 쓸모가 없다 — 2번 줄이 𝐹𝑎 이므로 →E 의 짝이 맞지 않는다. 규칙이 허락하는 것과 목표에 쓸모 있는 것은 다른 문제다.
답이 말이 되는가. 이 도출은 4장에서 "모든 𝐹 는 𝐺 다"를 → 로 옮긴 결정이 값을 하는 자리다. 옮김이 조건문이었기 때문에 ∀E 뒤에 곧바로 →E 가 이어졌다. 옮김의 정형과 규칙의 짝이 맞물려 있다.
예제 132
(가) {∀𝑥𝐹𝑥}⊢∃𝑥𝐹𝑥 를 보이는 도출을 적어라. (나) 이 도출이 10장의 어떤 결정에 기대고 있는지 밝혀라.
풀이 보기
(가) 두 규칙을 이어 붙이면 된다. 이름은 아무것이나 골라도 되므로 𝑎 를 쓴다.
줄
논리식
근거
1
∀𝑥𝐹𝑥
전제
2
𝐹𝑎
1 ∀E
3
∃𝑥𝐹𝑥
2 ∃I
(나) 10장이 정의역은 비어 있으면 안 된다고 못 박은 결정에 기댄다. 정의역이 비어도 된다면 ∀𝑥𝐹𝑥 는 훑을 원소가 없어 공허하게 참이 되는데 ∃𝑥𝐹𝑥 는 증거가 없어 거짓이 된다. 그러면 이 도출은 참에서 거짓으로 가는 도출이 되어 버린다.
규칙 쪽에서 보면 그 결정이 어디에 숨어 있는지도 보인다. 2번 줄에서 이름 𝑎 를 아무 대가 없이 쓸 수 있다는 것이 ∀E 의 내용인데, 이름이 가리킬 대상이 하나는 있어야 그 걸음이 뜻을 갖는다. 문법에는 개체상수가 무한히 많고 의미론은 그 하나하나에 𝐷 의 원소를 짝지어 주므로, 𝐷 가 비어 있으면 짝지을 것이 없다.
이런 논리를 자유 논리라 하여 정의역이 빌 수 있게 만든 체계도 있다. 거기서는 ∀E 와 ∃I 에 조건이 붙는다. 이 문서는 고전적 선택을 따르고, 그 대가로 이 정리를 얻었다.
∀I — 변수 조건이 필요한 첫 규칙
이제 어려운 쪽이다. ∀𝑥𝜑 를 만들려면 무엇이 있어야 하는가. 정의역의 원소를 하나씩 확인할 수는 없다. 무한할 수 있기 때문이다.
수학에서 실제로 쓰는 방법은 이것이다. "임의의 대상 하나를 잡자"고 하고, 그것에 대해 아무것도 특별한 것을 가정하지 않은 채 결론을 끌어낸 다음, 그 대상이 임의였으므로 모두에게 성립한다고 말한다. 이 동작을 규칙으로 옮긴 것이 ∀I 다.
𝜑[𝑐/𝑥]∀𝑥𝜑∀I
문제는 "아무것도 특별한 것을 가정하지 않았다"를 어떻게 확인하느냐다. 규칙은 모양만 보아야 하므로 "특별함" 같은 말을 쓸 수 없다. 그래서 문법으로 옮긴다.
변수 조건.𝑐 가 (가) 그 줄이 기대고 있는 열린 가정 어디에도 나타나지 않고, (나) 결과 ∀𝑥𝜑 에도 나타나지 않아야 한다.
왜 이 둘이 "특별한 것을 가정하지 않았다"를 붙잡는가. 열린 가정은 그 줄이 여전히 기대고 있는 것 전부다. 거기에 𝑐 가 적혀 있다면 우리는 𝑐 에 대해 무언가를 가정하고 있는 것이고, 그러면 𝑐 는 임의의 대상이 아니다.
<두 도출의 차이는 이름 하나다 — 오른쪽 c 는 도출 어디에도 없던 이름이라 우리가 그것에 대해 아는 것이 없고, 왼쪽 a 는 전제가 이미 지목한 이름이다>[원본 보기]
조건 (나)는 (가)보다 눈에 덜 띄지만 없으면 안 된다. ∀𝑥𝐺𝑥𝑐 를 결과로 쓰려는 경우를 생각해 보라. 재료는 𝐺𝑐𝑐 인데 이 줄에서 어느 자리가 "일반화할 자리"이고 어느 자리가 "원래 𝑐 였던 자리"인지 구별할 방법이 없다. 조건 (나)가 그 구별이 필요한 상황을 아예 막는다.
실전에서는 두 조건을 따로 챙길 필요가 없다. ∀I 를 쓸 때마다 도출 어디에도 없던 새 이름을 만들어 쓰면 둘 다 저절로 통과된다. 이 문서는 그 새 이름으로 𝑐 와 𝑐1 을 쓴다.
예제 133
다음 도출의 무엇이 틀렸는가. 보이려는 것은 {𝐹𝑎}⊢∀𝑥𝐹𝑥 다.
1. 𝐹𝑎 (전제) / 2. ∀𝑥𝐹𝑥 (1 ∀I)
풀이 보기
2번 줄이 기대고 있는 열린 가정은 1번 줄 𝐹𝑎 이고, 거기에 𝑎 가 들어 있다. 조건 (가) 위반이다.
위반이 왜 치명적인지는 말로 옮기면 곧바로 보인다. 전제가 말하는 것은 "𝑎 라는 특정 대상이 𝐹 다"이고, 그 대상은 임의로 잡은 것이 아니라 전제가 지목한 것이다. 지목된 하나에 성립하는 것을 모두에게 성립한다고 옮길 수는 없다.
이 도출은 실제로 거짓을 증명한다. 10장의 방식으로 모형을 하나 만들어 보자. 𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝐹)={1}. 이 모형에서 𝐹𝑎 는 참이고 ∀𝑥𝐹𝑥 는 𝑑=2 에서 막혀 거짓이다. 전제가 참인데 결론이 거짓이다.
답이 말이 되는가. 10장 마지막 절의 예제가 정확히 이 모형으로 {𝐹𝑎}⊨∀𝑥𝐹𝑥 가 아님을 보였다. 그때는 의미론의 사실이었던 것이 여기서는 규칙에 조건을 붙일 이유가 되었다. 두 층이 따로 서 있으면서도 이렇게 서로를 겨눈다.
예제 134
{∀𝑥𝐹𝑥,∀𝑥𝐺𝑥}⊢∀𝑥(𝐹𝑥∧𝐺𝑥) 를 보이고, ∀I 를 쓴 줄에서 조건 둘을 하나씩 확인하라.
풀이 보기
목표의 주연결자가 ∀ 이므로 마지막 수는 ∀I 다. 그 앞에 𝐹𝑐∧𝐺𝑐 를 얻어 두면 된다.
줄
논리식
근거
1
∀𝑥𝐹𝑥
전제
2
∀𝑥𝐺𝑥
전제
3
𝐹𝑐
1 ∀E
4
𝐺𝑐
2 ∀E
5
𝐹𝑐∧𝐺𝑐
3, 4 ∧I
6
∀𝑥(𝐹𝑥∧𝐺𝑥)
5 ∀I
조건 (가) — 6번 줄이 기대고 있는 열린 가정은 전제 둘뿐이고 거기에 𝑐 가 없다. 통과.
조건 (나) — 결과 ∀𝑥(𝐹𝑥∧𝐺𝑥) 에 𝑐 가 없다. 통과.
3번과 4번 줄에서 같은 이름 𝑐 를 썼다는 점이 이 도출의 요령이다. ∀E 는 이름을 자유롭게 고르게 해 주므로, 뒤에서 ∧I 로 묶을 수 있도록 미리 맞춰 고른 것이다. 서로 다른 이름을 골랐다면 5번 줄을 적을 수 없다.
답이 말이 되는가. ∀E 로 벗기고, 벗긴 자리에서 명제논리 규칙으로 일하고, ∀I 로 다시 씌운다. 이 세 걸음이 술어논리 도출의 가장 흔한 뼈대다.
예제 135
{∀𝑥(𝐹𝑥→𝐺𝑥),∀𝑥(𝐺𝑥→𝐻𝑥)}⊢∀𝑥(𝐹𝑥→𝐻𝑥) 를 보여라. 도출 안에서 𝐹𝑐 를 가정으로 놓는데도 조건 (가)가 통과되는 이유를 밝혀라.
풀이 보기
목표가 ∀ 이므로 안쪽 𝐹𝑐→𝐻𝑐 를 먼저 얻고, 그것을 얻으려면 𝐹𝑐 를 가정해 𝐻𝑐 를 얻으면 된다.
줄
논리식
근거
1
∀𝑥(𝐹𝑥→𝐺𝑥)
전제
2
∀𝑥(𝐺𝑥→𝐻𝑥)
전제
3
𝐹𝑐→𝐺𝑐
1 ∀E
4
𝐺𝑐→𝐻𝑐
2 ∀E
5
│ 𝐹𝑐
가정
6
│ 𝐺𝑐
3, 5 →E
7
│ 𝐻𝑐
4, 6 →E
8
𝐹𝑐→𝐻𝑐
5–7 →I
9
∀𝑥(𝐹𝑥→𝐻𝑥)
8 ∀I
조건이 통과되는 이유는 조건의 낱말 하나에 걸려 있다. 조건이 말하는 것은 열린 가정이지 가정 전부가 아니다. 5번 줄의 가정 𝐹𝑐 에는 𝑐 가 있지만, 그 가정은 8번 줄에서 방출되었다. 9번 줄이 기대고 있는 것은 전제 둘뿐이고 거기에 𝑐 가 없다.
순서를 바꾸면 막힌다. 8번 줄과 9번 줄을 뒤바꿔 7번 줄에서 곧바로 ∀𝑥𝐻𝑥 를 적으려 하면, 그때는 5번 줄이 아직 열려 있으므로 조건 (가) 위반이다.
답이 말이 되는가. 7장에서 "줄 하나가 무엇에 기대고 있는지"를 따지는 훈련을 했다. 그것이 여기서 그대로 쓰인다. 변수 조건은 새로운 장치가 아니라 7장의 범위 장부를 이름의 눈으로 다시 읽는 일이다.
∃E — 임시 이름을 열고 닫는다
마지막 규칙이고 넷 가운데 가장 어렵다. ∃𝑥𝜑 를 손에 쥐었을 때 할 수 있는 일이 무엇인지 생각해 보라. 그것이 말하는 것은 "그런 것이 하나 있다"뿐이고 어느 것인지는 말해 주지 않는다. 그러니 이름을 붙여 꺼낼 수가 없다.
7장의 ∨E 와 같은 처지다. 𝜑∨𝜓 도 어느 쪽인지 말해 주지 않았고, 그때 한 일은 경우를 나누는 것이었다. 여기서도 똑같이 한다. 다만 경우가 둘이 아니라 정의역의 원소 수만큼이라 다 적을 수 없으므로, 갈래 하나로 전부를 대신하게 한다.
<두 기둥의 문장이 낱말만 다르고 짜임이 같다는 것을 확인하라 — 갈래를 다 적을 수 있는가 없는가 하나가 갈리고, 거기서 임시 이름과 변수 조건이 나온다>[원본 보기]
규칙은 이렇다. ∃𝑥𝜑 를 갖고 있고, 𝜑[𝑐/𝑥] 를 가정한 갈래에서 𝜓 에 이르렀다면, 그 가정을 방출하고 𝜓 를 적는다.
∃𝑥𝜑[𝜑[𝑐/𝑥]]1⋮𝜓𝜓∃E,1
여기서 𝑐 는 "그 무엇인지 모르는 것"에 임시로 붙인 이름이다. 붙였다가 결론에서 떼어 낸다. 갈래 하나가 모든 경우를 대신하려면 그 갈래가 𝑐 에 대해 특별한 것을 하나도 쓰지 않았어야 하고, 그 요구가 다시 변수 조건이 된다.
변수 조건.𝑐 가 (가) 열린 가정 어디에도, (나) 재료가 된 ∃𝑥𝜑 에도, (다) 결론 𝜓 에도 나타나지 않아야 한다. 갈래를 여는 가정 𝜑[𝑐/𝑥] 자신은 물론 예외다 — 거기에는 𝑐 가 있어야 한다.
∨E 와 견주면 규칙의 모양이 정확히 겹친다. 방출한 가정이 결론의 모양에 흔적을 남기지 않는 것도 같다. 다른 것은 갈래가 하나라는 것과, 그 하나가 전부를 대신하는 값으로 조건이 붙는다는 것뿐이다.
예제 136
{∃𝑥𝐹𝑥,∀𝑥(𝐹𝑥→𝐺𝑥)}⊢∃𝑥𝐺𝑥 를 보이고 조건 셋을 하나씩 확인하라.
풀이 보기
손에 든 것 가운데 주연결자가 ∃ 인 식이 있으므로 갈래를 열 자리다. 갈래 안에서 목표인 ∃𝑥𝐺𝑥 에 이르면 된다.
줄
논리식
근거
1
∃𝑥𝐹𝑥
전제
2
∀𝑥(𝐹𝑥→𝐺𝑥)
전제
3
│ 𝐹𝑐
가정
4
│ 𝐹𝑐→𝐺𝑐
2 ∀E
5
│ 𝐺𝑐
3, 4 →E
6
│ ∃𝑥𝐺𝑥
5 ∃I
7
∃𝑥𝐺𝑥
1, 3–6 ∃E
조건 (가) — 7번 줄이 기대는 열린 가정은 전제 둘이고 𝑐 가 없다. (나) — 재료 ∃𝑥𝐹𝑥 에 𝑐 가 없다. (다) — 결론 ∃𝑥𝐺𝑥 에 𝑐 가 없다. 셋 다 통과.
6번 줄이 이 도출의 급소다. 갈래 안에서 얻은 것은 𝐺𝑐 인데, 이것을 그대로 결론으로 삼을 수는 없다 — 조건 (다)에 걸린다. 그래서 ∃I 로 𝑐 를 먼저 지운 뒤 갈래를 닫는다.
답이 말이 되는가. 규칙의 재료가 둘이므로 7번 줄의 근거도 둘이다. 존재 문장이 적힌 1번 줄과 갈래 3–6이다. ∨E 가 셋을 인용했던 것과 같은 셈법이고, 갈래가 하나 적을 뿐이다.
예제 137
{∃𝑥(𝐹𝑥∧𝐺𝑥)}⊢∃𝑥𝐹𝑥∧∃𝑥𝐺𝑥 를 보여라.
풀이 보기
갈래를 열고, 그 안에서 목표 전체를 만든 뒤 닫는다. 갈래 안에서 목표를 통째로 완성해야 한다는 점이 요령이다.
줄
논리식
근거
1
∃𝑥(𝐹𝑥∧𝐺𝑥)
전제
2
│ 𝐹𝑐∧𝐺𝑐
가정
3
│ 𝐹𝑐
2 ∧E
4
│ 𝐺𝑐
2 ∧E
5
│ ∃𝑥𝐹𝑥
3 ∃I
6
│ ∃𝑥𝐺𝑥
4 ∃I
7
│ ∃𝑥𝐹𝑥∧∃𝑥𝐺𝑥
5, 6 ∧I
8
∃𝑥𝐹𝑥∧∃𝑥𝐺𝑥
1, 2–7 ∃E
2번 줄이 가정으로 놓은 것은 𝜑[𝑐/𝑥] 이고 여기서 𝜑=𝐹𝑥∧𝐺𝑥 다. 대입이 𝑥 의 자유 나타남 둘을 모두 바꾸므로 𝐹𝑐∧𝐺𝑐 가 된다.
조건은 셋 다 통과한다. 8번 줄이 기대는 것은 전제 하나뿐이고, 재료에도 결론에도 𝑐 가 없다.
답이 말이 되는가. 반대 방향은 도출되지 않는다. ∃𝑥𝐹𝑥∧∃𝑥𝐺𝑥 에서 ∃𝑥(𝐹𝑥∧𝐺𝑥) 로 갈 수 없다는 것을 10장이 점 둘짜리 반례 모형으로 보였다. 규칙 쪽에서 보면 갈래를 두 번 열어야 하는데 두 갈래의 임시 이름이 서로 달라야 하므로 ∧I 로 묶을 짝이 맞지 않는다. 두 층이 같은 곳에서 막힌다.
예제 138
{∀𝑥𝐹𝑥}⊢¬∃𝑥¬𝐹𝑥 를 보여라. 이 도출에서 ∃E 의 결론 𝜓 가 무엇인지 밝히고 조건을 확인하라.
풀이 보기
목표의 주연결자가 ¬ 이므로 ∃𝑥¬𝐹𝑥 를 가정하고 ⊥ 을 얻으면 된다. 그 안에서 손에 든 것의 주연결자가 ∃ 이므로 다시 갈래를 연다.
줄
논리식
근거
1
∀𝑥𝐹𝑥
전제
2
│ ∃𝑥¬𝐹𝑥
가정
3
│ │ ¬𝐹𝑐
가정
4
│ │ 𝐹𝑐
1 ∀E
5
│ │ ⊥
3, 4 ¬E
6
│ ⊥
2, 3–5 ∃E
7
¬∃𝑥¬𝐹𝑥
2–6 ¬I
∃E 의 결론은 𝜓=⊥ 이다. 규칙은 𝜓 가 어떤 식이어도 좋다고 했으므로 ⊥ 도 된다. 그리고 ⊥ 에는 이름이 하나도 없으니 조건 (다)가 공짜로 통과된다.
나머지도 확인한다. (가) 6번 줄이 기대는 열린 가정은 전제 1번과 가정 2번이고 둘 다 𝑐 가 없다. (나) 재료 ∃𝑥¬𝐹𝑥 에도 없다.
결론이 ⊥ 인 경우가 ∃E 를 쓰기 가장 편한 자리다. 조건 (다)를 신경 쓸 필요가 없기 때문이다. 목표가 다른 식일 때 갈래 안에서 먼저 ⊥ 으로 몰고 가는 것도 그래서 자주 통한다.
답이 말이 되는가. 이 도출과 그 역방향을 합치면 mcs 5장이 예로만 보여 준 한정사 부정 규칙 ¬∃𝑥¬𝜑 와 ∀𝑥𝜑 의 동치가 증명 체계 안에서 확정된다. 역방향에는 IP 가 필요하고, 그 사실이 19장에서 되돌아올 자리가 된다.
변수 조건을 한 표로
네 규칙을 다 세웠으니 한자리에 모은다. 이 표가 이 장의 핵심 산출물이다.
규칙
재료
결과
변수 조건
∀E
∀𝑥𝜑
𝜑[𝑎/𝑥]
없다. 𝑎 는 아무 개체상수나
∃I
𝜑[𝑎/𝑥]
∃𝑥𝜑
없다. 𝑎 는 아무 개체상수나
∀I
𝜑[𝑐/𝑥]
∀𝑥𝜑
𝑐 가 열린 가정에 없고 결과 ∀𝑥𝜑 에도 없다
∃E
∃𝑥𝜑, 그리고 𝜑[𝑐/𝑥] 를 가정해 𝜓 에 이르는 갈래
𝜓. 가정 𝜑[𝑐/𝑥] 를 방출한다
𝑐 가 열린 가정에 없고 ∃𝑥𝜑 에도 𝜓 에도 없다
<조건 칸이 비어 있는 둘과 차 있는 둘을 가르는 것은 규칙 이름이 아니라 이름을 내가 고르는가 아니면 아무 것이어도 되어야 하는가다>[원본 보기]
조건이 붙는 둘에는 공통점이 있다. 이름이 아무 것이어도 되어야 뜻이 통하는 규칙이라는 것이다. ∀I 는 "아무 것에 성립하니 모두에게"이고 ∃E 는 "무엇인지 모르는 하나를 임시로 𝑐 라 부르자"다. 둘 다 𝑐 에 대해 우리가 따로 아는 것이 하나도 없어야 말이 된다.
살펴볼 곳은 셋뿐이고 규칙마다 그중 몇을 본다.
<살펴볼 곳이 ①열린 가정 ②재료가 된 ∃x φ ③결론 ψ 셋뿐이라는 것 — 그리고 새 이름을 쓰면 셋이 한꺼번에 통과된다는 것이 아래 상자의 요지다>[원본 보기]
실전 요령은 하나다. ∀I 나 ∃E 를 쓸 때마다 도출 어디에도 없던 새 이름을 만들어 쓴다. 그러면 셋이 저절로 통과된다. 조건을 실제로 따지는 일이 남는 것은 남이 쓴 도출을 검사할 때다.
예제 139
다음 네 개의 규칙 적용 각각에 대해 합법인지 판정하라. 위법이면 어느 조건인지 밝혀라.
(가) 열린 가정이 {𝐺𝑎} 인 줄 𝐹𝑐 에서 ∀𝑥𝐹𝑥 (나) 열린 가정이 {𝐹𝑏} 인 줄 𝐹𝑏 에서 ∃𝑥𝐹𝑥 (다) 열린 가정이 {∀𝑥𝐺𝑥𝑎} 인 줄 𝐺𝑐𝑎 에서 ∀𝑥𝐺𝑥𝑎 (라) 열린 가정이 {𝐺𝑐𝑏} 인 줄 𝐺𝑐𝑏 에서 ∀𝑥𝐺𝑥𝑏
풀이 보기
(가) 합법이다.∀I 를 쓰는데 열린 가정 𝐺𝑎 에 𝑐 가 없고 결과 ∀𝑥𝐹𝑥 에도 없다. 열린 가정에 다른 이름이 있는 것은 아무 문제가 아니다. 조건이 묻는 것은 일반화하는 이름 하나뿐이다.
(나) 합법이다.∃I 에는 조건이 없다. 𝑏 가 열린 가정에 있어도 상관없다 — 오히려 그게 보통이다. 증거를 손에 쥐고 있으니 "있다"고 말하는 것이다.
(다) 합법이다. 여기서 𝜑=𝐺𝑥𝑎 이고 𝜑[𝑐/𝑥]=𝐺𝑐𝑎 다. 열린 가정 ∀𝑥𝐺𝑥𝑎 에 𝑐 가 없고 결과에도 𝑐 가 없다. 결과에 𝑎 가 남아 있는 것은 조건과 무관하다.
(라) 위법이다. 열린 가정 𝐺𝑐𝑏 에 𝑐 가 들어 있다. 조건 (가) 위반이다. 이 적용이 통한다면 "𝑐 가 𝑏 와 𝐺 관계에 있다"는 가정 하나에서 "모든 것이 𝑏 와 𝐺 관계에 있다"가 나온다.
∀I 를 쓴 셋은 모두 같은 물음 하나에 걸려 있다. 지금 일반화하려는 이름이 열린 가정에 적혀 있는가. 다른 이름이 몇 개 있든, 결과에 다른 이름이 남든 상관없다. 그리고 (나)가 보이듯 조건이 없는 규칙에는 이 물음 자체가 없다.
예제 140
다음 도출에서 한정사 규칙이 쓰인 줄을 모두 찾아 조건을 확인하라. 보이려는 것은 {∀𝑥𝐹𝑥,∃𝑥𝐺𝑥}⊢∃𝑥(𝐹𝑥∧𝐺𝑥) 다.
한정사 규칙이 쓰인 줄은 넷이다. 4번(∀E), 6번(∃I), 7번(∃E), 그리고 3번은 규칙이 아니라 ∃E 가 여는 가정이다.
4번 — ∀E 는 조건이 없다. 이미 갈래 안에서 쓰이고 있는 이름 𝑐 를 골랐는데 이것이 오히려 요령이다. 뒤에서 ∧I 로 묶으려면 두 줄의 이름이 같아야 한다.
6번 — ∃I 도 조건이 없다. 𝜑=𝐹𝑥∧𝐺𝑥 로 읽어 𝜑[𝑐/𝑥]=𝐹𝑐∧𝐺𝑐 이므로 5번 줄과 맞는다.
7번 — 조건 셋을 본다. (가) 열린 가정은 전제 둘이고 𝑐 가 없다. (나) 재료 ∃𝑥𝐺𝑥 에 𝑐 가 없다. (다) 결론 ∃𝑥(𝐹𝑥∧𝐺𝑥) 에 𝑐 가 없다. 통과.
이 도출이 앞 절 마지막 예제와 짝을 이룬다. 거기서는 ∃𝑥𝐹𝑥∧∃𝑥𝐺𝑥 에서 ∃𝑥(𝐹𝑥∧𝐺𝑥) 로 갈 수 없었는데, 여기서는 갈 수 있다. 전제 하나가 ∀ 로 바뀐 것이 차이의 전부다.∀ 는 갈래가 고른 이름에 맞춰 예화할 수 있어서 갈래 안으로 따라 들어간다.
조건을 어기면 무엇이 무너지는가
조건을 규칙에 붙였으니 그것이 정말 필요한지 확인해야 한다. 방법은 하나다. 조건을 뺀 도출로 거짓을 증명해 보이고, 10장의 모형으로 그 결론이 실제로 거짓임을 확인한다.
앞 절에서 𝐹𝑎 에서 ∀𝑥𝐹𝑥 로 가는 한 줄짜리 예를 보았다. 이번에는 더 무서운 것을 본다. 10장이 모형으로 갈라 놓은 두 식, ∀𝑥∃𝑦𝐺𝑥𝑦 와 ∃𝑦∀𝑥𝐺𝑥𝑦 다.
<왼쪽에서 무너진 줄은 하나뿐이고 나머지 다섯 줄은 옳다 — 그 하나가 오른쪽 모형에서 참을 거짓으로 바꾼다. 규칙 하나에 난 구멍이 체계 전체를 못 쓰게 만든다는 뜻이다>[원본 보기]
이것이 13장이 필요한 실제 이유다. 규칙 하나가 어긋나면 그 규칙을 쓴 도출 전부를 믿을 수 없고, 그 도출을 인용한 도출도 믿을 수 없다. 건전성이란 규칙 열일곱 개 하나하나에 대해 이 확인을 한 번씩 하는 일이고, 확인하는 내용이 방금 우리가 손으로 한 것과 같다.
예제 141
위 그림의 도출에서 조건을 어긴 줄을 짚고, 그 줄의 어느 조건이 어떻게 위반되었는지 정확히 적어라. 그리고 나머지 줄들은 왜 문제가 없는지 밝혀라.
앞 절의 옳은 도출과 견주면 무엇을 해야 했는지 보인다. 갈래 안에서 ∃I 를 한 번 써서 ∃𝑥𝐹𝑥 로 만들어 놓고 닫았어야 한다. 그러면 결론에 𝑐 가 없어 조건 (다)를 지킨다. 물론 그렇게 하면 결론이 전제와 같아져 얻은 것이 없는데, 얻은 것이 없는 것이 정직한 결과다.
답이 말이 되는가. 두 예제의 위반이 서로 다른 조건이었지만 무너지는 방식은 같다. 이름 하나가 자기 몫 이상을 말하게 된 것이다. 변수 조건이 하는 일은 처음부터 끝까지 그것 하나를 막는 것이다.
여러 한정사
한정사가 겹친 식도 규칙 넷으로 다룬다. 새 규칙은 필요 없다. 요령은 바깥부터 벗기고 안쪽부터 씌우는 것이다. ∀𝑥∀𝑦𝜑 를 벗기려면 ∀E 를 두 번 쓰고, 씌울 때는 ∀I 를 두 번 쓰되 순서가 반대가 된다.
여러 이름을 동시에 다뤄야 하므로 임시 이름도 여럿 필요하다. 이 문서는 𝑐 와 𝑐1 을 쓴다. 서로 다른 이름을 써야 한다는 것이 중요하다 — 같은 이름을 쓰면 서로 다른 두 자리가 하나로 합쳐져 원래 식이 말하지 않은 것을 말하게 된다.
예제 143
{∀𝑥∀𝑦𝐺𝑥𝑦}⊢∀𝑦∀𝑥𝐺𝑥𝑦 를 보여라. ∀I 두 번의 순서를 바꿔도 되는지 답하라.
풀이 보기
두 번 벗기고 두 번 씌운다.
줄
논리식
근거
1
∀𝑥∀𝑦𝐺𝑥𝑦
전제
2
∀𝑦𝐺𝑐𝑦
1 ∀E
3
𝐺𝑐𝑐1
2 ∀E
4
∀𝑥𝐺𝑥𝑐1
3 ∀I
5
∀𝑦∀𝑥𝐺𝑥𝑦
4 ∀I
4번 줄에서 𝜑=𝐺𝑥𝑐1 이고 𝜑[𝑐/𝑥]=𝐺𝑐𝑐1 이다. 조건 (가) — 열린 가정은 전제 하나뿐이고 𝑐 가 없다. 조건 (나) — 결과 ∀𝑥𝐺𝑥𝑐1 에 𝑐 가 없다. 통과.
5번 줄에서는 𝑐1 을 일반화한다. 열린 가정에 없고 결과에도 없다. 통과.
순서를 바꿀 수 없다. 4번 줄에서 먼저 𝑐1 을 일반화하려 하면 ∀𝑦𝐺𝑐𝑦 가 나오는데, 그다음 𝑐 를 일반화하면 ∀𝑥∀𝑦𝐺𝑥𝑦 가 되어 목표와 다르다. 씌우는 순서가 결과의 한정사 순서를 정하므로 목표에서 거꾸로 읽어 순서를 잡아야 한다. 목표의 바깥 한정사가 ∀𝑦 이므로 그것을 마지막에 씌운다.
3번 줄에서 𝑐 와 다른 이름 𝑐1 을 쓴 것도 필요했다. 같은 이름을 썼다면 3번 줄이 𝐺𝑐𝑐 가 되고, 그것을 일반화해 얻을 수 있는 것은 ∀𝑥𝐺𝑥𝑥 이지 우리가 원하던 것이 아니다.
예제 144
{∃𝑦∀𝑥𝐺𝑥𝑦}⊢∀𝑥∃𝑦𝐺𝑥𝑦 를 보여라. 앞 절에서 막혔던 반대 방향과 무엇이 다른지 밝혀라.
풀이 보기
손에 든 것의 주연결자가 ∃ 이므로 갈래를 연다. 갈래 안에서 목표 전체를 만든다.
줄
논리식
근거
1
∃𝑦∀𝑥𝐺𝑥𝑦
전제
2
│ ∀𝑥𝐺𝑥𝑐1
가정
3
│ 𝐺𝑐𝑐1
2 ∀E
4
│ ∃𝑦𝐺𝑐𝑦
3 ∃I
5
│ ∀𝑥∃𝑦𝐺𝑥𝑦
4 ∀I
6
∀𝑥∃𝑦𝐺𝑥𝑦
1, 2–5 ∃E
5번 줄의 조건을 확인한다. 열린 가정은 전제 1번과 가정 2번이고 둘 다 𝑐 가 없다. 결과에도 없다. 통과.
앞 절에서 막힌 도출과 견주라. 거기서 갈래를 여는 가정은 𝐺𝑐𝑐1 이라 임시 이름 둘이 한 가정에 함께 들어 있었다. 여기서는 가정이 ∀𝑥𝐺𝑥𝑐1 이라 𝑐1 만 있고 𝑐 가 없다.
왜 가정의 모양이 달랐는가. 이쪽은 전제의 바깥 한정사가 ∃𝑦 라 갈래를 열 때 꺼내지는 것이 ∀𝑥 가 아직 붙은 식이다. 저쪽은 바깥이 ∀𝑥 라 ∀E 로 𝑐 를 먼저 고정한 뒤에야 갈래를 연다. 어느 것이 먼저 고정되는가가 갈랐다.
답이 말이 되는가. 10장은 ∃𝑦 가 바깥이면 𝑒 를 먼저 고정하고 모든 𝑑 를 견뎌야 하고, 안쪽이면 𝑑 를 보고 나서 고를 수 있다고 했다. 증명 체계에서 "먼저 고정한다"에 해당하는 것이 갈래를 여는 가정에 그 이름이 들어가는 일이고, 들어간 이름은 가정이 닫힐 때까지 일반화할 수 없다.
<두 도출의 줄 수와 규칙 이름이 똑같다는 것을 먼저 보라 — 갈라지는 것은 ∀I 를 쓰는 줄에서 일반화하려는 이름이 열린 가정에 들어 있는가 하나다>[원본 보기]
두 층이 서로를 참조하지 않고 각자의 방식으로 같은 구별을 잡아냈다는 점을 눈여겨보라. 10장은 배정을 갈아 끼우는 순서로, 이 장은 이름이 가정에 들어가는 순서로 같은 것을 붙잡았다. 13장과 14장이 성립하리라는 첫 조짐이 이런 우연 아닌 일치들이다.
Γ⊢𝜑 가 술어논리로 확장됐다
규칙이 열일곱 개가 되었다. 이제 ⊢ 의 정의가 어떻게 되는지 물을 차례인데, 답은 짧다. 한 글자도 바뀌지 않는다.
7장의 정의를 그대로 옮기면 이렇다. 마지막 줄이 𝜑 이고 열린 가정이 전부 Γ 의 원소인 도출이 있으면 Γ⊢𝜑 라 적는다. 여기서 "논리식"이 5장의 것에서 9장의 것으로 바뀌었고 "규칙"이 열셋에서 열일곱으로 늘었을 뿐, 정의의 문장은 그대로다.
따라 나오는 것들도 그대로다. ⊢𝜑 이면 𝜑 를 정리라 한다. Γ⊢⊥ 이면 비일관적이라 한다. 단조성이 성립하고, 도출이 유한한 목록이므로 Γ⊢𝜑 이면 Γ 의 어떤 유한한 부분집합에서도 도출된다는 것도 성립한다. 증명이 필요 없다 — 7장에서 한 논증이 규칙 넷을 더해도 글자 하나 바뀌지 않기 때문이다.
그러면 무엇이 달라졌는가. 셋이다. 첫째, 정리의 목록이 늘었다. 둘째, 13장에서 건전성을 증명할 때 확인할 규칙이 열셋에서 열일곱으로 늘었고, 늘어난 넷 가운데 둘은 변수 조건까지 함께 확인해야 한다. 셋째, 그리고 이것이 가장 크다 — 7장에서 ⊢ 는 진리표라는 대안이 있는 상태에서의 선택지였지만, 여기서는 대안이 없다.
예제 145
⊢∀𝑥𝐹𝑥→∃𝑥𝐹𝑥 를 보여라. 이 식이 정리라는 것이 무슨 뜻인지 정의로 풀어 적어라.
풀이 보기
목표의 주연결자가 → 이므로 전건을 가정하고 후건을 얻는다.
줄
논리식
근거
1
│ ∀𝑥𝐹𝑥
가정
2
│ 𝐹𝑎
1 ∀E
3
│ ∃𝑥𝐹𝑥
2 ∃I
4
∀𝑥𝐹𝑥→∃𝑥𝐹𝑥
1–3 →I
정의로 풀면 이렇다. 열린 가정이 하나도 없는 도출로 이 식을 얻는다. 4번 줄에서 가정 1이 방출되었으므로 기대는 것이 없다. 전제도 없었다. 그러므로 아무것도 주어지지 않아도 이 식을 손에 넣을 수 있다.
2번 줄에서 쓴 이름 𝑎 는 아무것이나 된다. ∀E 와 ∃I 둘 다 조건이 없으므로 새 이름을 만들 필요도 없다.
눈여겨볼 것이 있다. 이 식은 논리적 참이기도 하다 — 모든 모형에서 참이다. 그런데 그것이 참인 이유가 "정의역이 비어 있지 않다"는 약속이었다. 규칙 쪽에서는 그 약속이 어디에도 적혀 있지 않은데도 같은 결과가 나왔다. 의미론의 약속 하나가 규칙의 모양에 스며 있다는 뜻이고, 이런 대응을 하나씩 확인하는 것이 13장이다.
예제 146
(가) {∀𝑥(𝐹𝑥→𝐺𝑥)}⊢∀𝑥𝐹𝑥→∀𝑥𝐺𝑥 를 보여라. (나) 그 역인 {∀𝑥𝐹𝑥→∀𝑥𝐺𝑥}⊢∀𝑥(𝐹𝑥→𝐺𝑥) 를 이 장의 도구로 확정할 수 있는가?
풀이 보기
(가) 목표의 주연결자가 → 이므로 ∀𝑥𝐹𝑥 를 가정한다.
줄
논리식
근거
1
∀𝑥(𝐹𝑥→𝐺𝑥)
전제
2
│ ∀𝑥𝐹𝑥
가정
3
│ 𝐹𝑐
2 ∀E
4
│ 𝐹𝑐→𝐺𝑐
1 ∀E
5
│ 𝐺𝑐
3, 4 →E
6
│ ∀𝑥𝐺𝑥
5 ∀I
7
∀𝑥𝐹𝑥→∀𝑥𝐺𝑥
2–6 →I
6번 줄이 급소다. 그 줄이 기대는 열린 가정은 전제 1번과 아직 열려 있는 가정 2번이다. 둘 다 𝑐 가 없으므로 통과한다. 가정이 열려 있어도 그 안에 문제의 이름이 없으면 상관없다는 것을 여기서 다시 확인한다.
(나) 확정할 수 없다. 도출을 아무리 시도해 실패해도 "아직 못 찾았다"일 뿐이다. 7장에서 짚은 구멍이 그대로 남아 있다 — 증명 체계는 "있다"에는 값싸고 "없다"에는 아무 도움이 안 된다.
다만 어느 쪽이 답인지는 짐작할 수 있다. 10장의 방식으로 반례 모형을 만들어 보면 된다. 𝐷={1,2}, 𝐼(𝐹)={1}, 𝐼(𝐺)=∅ 로 두면 ∀𝑥𝐹𝑥 가 거짓이라 전제의 조건문이 공허하게 참이고, 결론 ∀𝑥(𝐹𝑥→𝐺𝑥) 는 𝑑=1 에서 1∈𝐼(𝐹) 이고 1∉𝐼(𝐺) 이라 조건문이 거짓이 되므로 거짓이다. 그러니 귀결이 아니다.
그런데 이것으로 (나)가 확정되지는 않는다. 방금 보인 것은 ⊨ 에 대한 사실이고 물은 것은 ⊢ 이다. 둘을 잇는 화살표가 13장의 건전성이다. 건전성이 "⊢ 이면 ⊨"를 주면, 대우를 취해 "⊨ 가 아니면 ⊢ 도 아니다"가 되어 반례 모형 하나로 도출의 없음이 확정된다. 두 층을 이어야 비로소 되는 일이 여기 또 있다.
이 장에서 새로 나온 것
규칙 · 용어
뜻
∀E · 전칭 예화
∀𝑥𝜑 에서 𝜑[𝑎/𝑥]. 𝑎 는 아무 개체상수나. 변수 조건 없음
∃I · 존재 일반화
𝜑[𝑎/𝑥] 에서 ∃𝑥𝜑. 𝑎 는 아무 개체상수나. 변수 조건 없음
∀I · 전칭 일반화
𝜑[𝑐/𝑥] 에서 ∀𝑥𝜑. 𝑐 가 열린 가정에 없고 결과에도 없어야 한다
∃E · 존재 예화
∃𝑥𝜑 와, 𝜑[𝑐/𝑥] 를 가정해 𝜓 에 이르는 갈래에서 𝜓. 가정을 방출한다
변수 조건
규칙이 줄의 모양 말고 도출의 다른 부분까지 살피게 하는 조건. 명제논리에는 없던 종류다
살펴볼 세 곳
① 열린 가정 ② 재료가 된 ∃𝑥𝜑 ③ 결론 𝜓. ∀I 는 ①과 결과를, ∃E 는 셋 다 본다
임시 이름
∃E 가 여는 갈래에서 ‘그 무엇인지 모르는 것’ 에 붙이는 이름. 갈래를 닫을 때 떼어 낸다
새 이름 𝑐, 𝑐1
이 문서가 ∀I 와 ∃E 에 쓰는 이름. 새것을 쓰면 조건이 저절로 통과된다
방출 규칙이 다섯이 됐다
→I, ¬I, ∨E, IP 에 ∃E 가 더해진다. 장치는 7장과 같다
규칙 열일곱
명제논리 열셋 + 한정사 넷. 13장이 확인할 갈래가 그만큼 늘었다
Γ⊢𝜑
정의가 7장 그대로다. 논리식이 9장의 것이 되고 규칙이 넷 늘었을 뿐
정리 · 일관성 · 단조성 · 유한성
전부 7장 그대로 성립한다. 논증에 규칙 목록이 들어가지 않기 때문
챙겨 갈 것은 넷이다.
규칙 넷 가운데 둘에만 조건이 붙는다. 이름을 내가 고르는 ∀E·∃I 는 조건이 없고, 이름이 아무 것이어도 되어야 하는 ∀I·∃E 에만 붙는다. 조건이 확인하는 것은 하나다 — 그 이름에 대해 우리가 따로 아는 것이 없는가
∃E 는 ∨E 와 같은 모양이다. 둘 다 "있기는 한데 어느 것인지 모른다"를 경우 나누기로 쓴다. 갈래를 다 적을 수 없다는 것 하나가 임시 이름과 변수 조건을 낳는다
조건을 빼면 거짓이 증명된다.𝐹𝑎∴∀𝑥𝐹𝑥 와 한정사 순서 뒤바꾸기가 그 예이고, 10장의 모형이 결론의 거짓을 확인해 준다. 이 확인을 규칙 열일곱 개에 대해 한 번씩 하는 것이 13장이다
⊢ 의 정의는 그대로다. 규칙 목록만 늘었고 도출·범위·방출·정리·일관성은 글자 하나 바뀌지 않았다. 정의를 규칙 목록과 분리해 세워 둔 값이 여기서 돌아온다
12장은 여기에 규칙 둘을 더한다. 동일성 기호 = 와 그 도입·제거 규칙이다. 그것이 있어야 "적어도 둘", "정확히 하나" 같은 것을 적을 수 있고, 10장이 "12장에서 = 를 얻고 나면 정의역 크기를 세는 문장을 직접 적을 수 있다"고 미뤄 둔 약속도 거기서 지켜진다.
그리고 규칙 목록은 12장에서 끝난다. 13장부터는 규칙을 더하지 않고 지금까지 만든 것을 대상으로 삼는다. 이 체계로 얻은 것이 전부 참인가(13장), 참인 것을 전부 얻을 수 있는가(14장), 그리고 얻을 수 있는지를 기계가 판정할 수 있는가(16장). 이 장에서 세운 규칙 넷과 그 변수 조건이 그 세 물음의 재료가 된다.
동일성과 수 세기
술어논리는 문장 안을 들여다볼 수 있게 해 주었다. 그런데 아직 옮기지 못하는 한국어 문장이 남아 있다. "샛별은 개밥바라기다"가 그것이다.
이 문장은 두 이름이 같은 대상을 가리킨다고 말한다. 샛별은 새벽에 보이는 밝은 별이고 개밥바라기는 저녁에 보이는 밝은 별인데, 알고 보니 둘 다 금성이었다. 이것은 발견이지 말장난이 아니다. 그런데 9장의 어휘로는 이 문장을 적을 수가 없다. 술어가 하나도 없기 때문이다.
이 장에서 답할 것은 셋이다. "같다"를 논리 상항으로 삼는다는 것이 무슨 뜻이고 무엇을 치러야 하는가. 그러고 나면 왜 갑자기 수를 셀 수 있게 되는가. "그 왕" 같은 표현의 논리적 형태는 무엇인가.
11장에서 가져오는 것은 한정사 규칙 넷(∀I, ∀E, ∃I, ∃E)과 거기 붙은 변수 조건이다. 7장의 명제 규칙 열셋도 그대로 쓴다. 9장의 대입 표기 𝜑[𝑎/𝑥] 가 이 장의 제거 규칙을 진술하는 데 다시 쓰이고, 10장의 모형 M=⟨𝐷,𝐼⟩ 과 만족 조항에는 예외가 하나 생긴다. 그 예외가 이 장의 값이자 대가다.
이 장은 3부의 마지막 장이다. 끝에서 지금까지 세운 것을 한 번 정리하고 13장이 무엇을 다르게 하는지 예고한다.
왜 동일성을 논리에 넣는가
먼저 넣지 않고 버텨 보자. = 를 어휘에 더하지 않고, 대신 2항 술어𝐻 를 하나 잡아 "… 는 … 와 같다"로 읽기로 한다. 그러면 "샛별은 개밥바라기다"는 𝐻𝑎𝑏 가 된다. 적기는 적었다.
문제는 이 식으로 추론을 할 수 없다는 데 있다. 동일성이 하는 일의 핵심은 이것이다.
𝐻𝑎𝑏,𝐹𝑎∴𝐹𝑏
샛별과 개밥바라기가 같은 것이라면, 샛별에 대해 참인 것은 개밥바라기에 대해서도 참이어야 한다. 그런데 이 논증은 10장의 뜻으로 타당하지 않다. 반례 모형이 있다.
𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝑏)=2, 𝐼(𝐻)={⟨1,2⟩}, 𝐼(𝐹)={1} 로 잡아 보라. 𝐻𝑎𝑏 는 ⟨1,2⟩∈𝐼(𝐻) 이므로 참이고, 𝐹𝑎 도 1∈𝐼(𝐹) 이므로 참이다. 그런데 𝐹𝑏 는 2∉𝐼(𝐹) 이라 거짓이다. 전제가 모두 참이고 결론이 거짓이니 귀결이 아니다.
왜 이렇게 되는가. 𝐻 는 비논리 상항이고, 비논리 상항의 해석은 모형이 마음대로 정한다. 우리가 𝐻 를 "같다"로 읽기로 했다는 것은 우리 머릿속의 약속일 뿐이고, 10장의 의미론에는 그런 약속이 들어갈 자리가 없다. 술어의 뜻은 고른 집합이 전부라고 그 장이 못 박았다.
공리로 흉내 낼 수 있는가
다음 시도는 이렇다. 𝐻 가 동일성처럼 굴도록 공리를 전제로 얹으면 되지 않는가. 반사성 ∀𝑥𝐻𝑥𝑥, 대칭성 ∀𝑥∀𝑦(𝐻𝑥𝑦→𝐻𝑦𝑥), 추이성, 그리고 술어마다 "𝐻𝑥𝑦 이면 𝐹𝑥↔𝐹𝑦" 같은 것들을 다 적는다.
이 방법은 절반쯤 통한다. 어긋나는 데가 둘이다.
목록이 언어에 따라 달라진다. 술어를 하나 더 들이면 공리를 하나 더 적어야 한다. 논리 규칙이라면 언어가 무엇이든 그대로여야 하는데 그렇지 못하다.
공리를 다 얹어도 진짜 동일성이 되지 않는다. 서로 다른 두 원소가 모든 술어에 대해 똑같이 굴면, 𝐻 가 그 둘을 잇도록 해석해도 공리가 하나도 깨지지 않는다. 그런 모형에서 𝐻 는 "같다"가 아니라 "구별할 수 없다"를 뜻한다. 그러면 ¬𝐻𝑎𝑏 로 "둘이 서로 다르다"를 말하려는 시도도 함께 무너진다.
그래서 결정한다. = 를 논리 상항으로 어휘에 넣고, 해석을 모형에 맡기지 않는다. 4장이 논리 상항의 기준을 "갈아끼우면 타당성이 변할 수 있어 고정해 두는 낱말"이라고 정했는데, 지금 우리가 보인 것이 정확히 그 기준을 만족한다는 사실이다.
대가도 정직하게 적어 둔다. 넷이다.
10장의 의미론에 예외 조항이 하나 생긴다. 해석 𝐼 가 비논리 기호 전부를 다룬다는 깔끔함이 깨진다
논리적 참의 목록이 늘어난다.∀𝑥𝑥=𝑥 같은 문장이 모든 모형에서 참이 된다
논리가 세계의 크기에 대해 말할 수 있게 된다. 이 장의 절반이 그 이야기이고, 15장에서 그 대가가 돌아온다
13·14장의 증명이 조항 하나와 규칙 둘만큼 길어진다
이 결정을 한 논리를 동일성을 가진 1차 논리라 부른다. 넣지 않은 판본도 쓰이지만 이 문서는 넣는 쪽이다.
예제 147
앞의 반례 모형을 손으로 확인하라. 그리고 그 모형에서 𝐻𝑏𝑎 와 𝐻𝑎𝑎 의 값을 구하라. 𝐻 를 "같다"로 읽으려던 사람에게 이 값들이 왜 문제인가.
풀이 보기
모형은 𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝑏)=2, 𝐼(𝐻)={⟨1,2⟩}, 𝐼(𝐹)={1} 이다.
𝐻𝑏𝑎 — 항의 지시체는 2 와 1 이므로 확인할 것은 ⟨2,1⟩∈𝐼(𝐻) 인데 아니다. 거짓이다.
𝐻𝑎𝑎 — 확인할 것은 ⟨1,1⟩∈𝐼(𝐻) 인데 아니다. 거짓이다.
문제는 이렇다. "같다"라면 𝐻𝑎𝑏 가 참일 때 𝐻𝑏𝑎 도 참이어야 하고, 무엇이든 자기 자신과는 같으므로 𝐻𝑎𝑎 는 반드시 참이어야 한다. 이 모형은 둘 다 어긴다. 어긴 것이 아니라 어길 수 있다는 것이 요점이다. 모형은 𝐼(𝐻) 로 아무 순서쌍 집합이나 고를 수 있고, 그것을 막을 장치가 의미론에 없다.
여기서 배울 것은 "읽는 법을 정한다"와 "뜻을 정한다"가 다르다는 것이다. 4장의 사전은 앞엣것이었고, 10장의 해석이 뒤엣것이다. 논리 상항으로 삼는다는 말은 뜻을 사전이 아니라 의미론에 박아 넣는다는 뜻이다.
예제 148
다음 셋 가운데 = 없이 술어와 한정사만으로 옮길 수 있는 것은 어느 것인가. 사전은 𝐹 "… 는 철학자다", 𝑎 소크라테스다. (가) 철학자가 있다 (나) 철학자가 없다 (다) 철학자가 적어도 둘 있다
풀이 보기
(가) ∃𝑥𝐹𝑥. = 가 필요 없다.
(나) ¬∃𝑥𝐹𝑥. 역시 필요 없다.
(다)가 걸린다. 그럴듯한 후보는 ∃𝑥∃𝑦(𝐹𝑥∧𝐹𝑦) 인데, 이것은 "둘"을 말하지 않는다. 아래 절에서 정확히 따지겠지만 이유만 미리 말하면, 10장의 한정사 조항은 원소를 두 번 갈아 끼울 뿐 두 번 고른 원소가 달라야 한다고 요구하지 않는다. 철학자가 하나뿐인 모형에서도 이 식은 참이 된다.
그러니 답은 (가)와 (나)다. 0과 1은 셀 수 있고 2부터 못 센다. 이 경계가 이 장의 절반을 설명한다.
문법과 의미론 — 해석에 예외가 하나 생긴다
어휘에 기호 하나를 더한다. 5장에서 7장이 ⊥ 을 어휘에 더했을 때와 같은 종류의 일이다. 언어가 무엇인지는 우리가 정하고, 정한 것을 바꾸려면 정의를 고친다.
문법 — 원자식의 새 조항.𝑡1 과 𝑡2 가 항이면 𝑡1=𝑡2 는 원자식이다.
모양이 9장의 원자식과 다르다는 점을 짚어 두자. 9장은 원자식을 "술어 하나 뒤에 항을 나란히 적은 것"으로 정했으므로 그 모양을 지킨다면 =𝑎𝑏 로 적어야 한다. 그러나 관례를 따라 기호를 가운데에 적는다. 항은 글자 하나이고 = 는 항 둘 사이에만 오므로 이렇게 적어도 읽기에 애매함이 생기지 않는다. 조항을 하나 더한다는 점은 그대로다.
줄임말도 하나 정한다. 𝑡1≠𝑡2 는 ¬𝑡1=𝑡2 의 줄임이다. 새 기호가 아니라 적는 방식이다.
의미론 — 만족의 새 조항.M,𝑔⊨𝑡1=𝑡2 인 것은 𝑡M,𝑔1 와 𝑡M,𝑔2 가 𝐷 의 같은 원소일 때다.
이 한 줄에 이 장의 결정이 다 들어 있다. 조항의 왼쪽에 있는 = 는 대상언어의 기호이고 오른쪽의 "같은 원소"는 메타언어의 말이다. 5장이 나눠 둔 두 층이 여기서 다시 값을 한다. 순환처럼 보이지만 순환이 아니다 — 6장에서 ¬ 조항을 "… 가 아닐 때다"로 적었을 때와 똑같이, 이미 이해하고 있는 메타언어의 낱말을 써서 기호에 뜻을 붙이는 것이다.
무엇이 예외인가
10장에서 해석 𝐼 는 비논리 기호마다 𝐷 안에서 무엇을 고를지 정했다. 𝑛 항 술어에는 𝐷𝑛 의 부분집합을 아무거나 줄 수 있었다. = 는 2항이지만 모형이 아무것도 고르지 못한다. 위 조항이 값을 이미 결정해 버렸기 때문이다.
<왼쪽 표의 맨 아랫줄만 색이 다르다 — 위 세 줄은 모형이 채우는 칸이고 아랫줄은 채울 수 없는 칸이다. 오른쪽 그림은 그때 강제되는 화살표 모양이다>[원본 보기]
굳이 𝐼(=) 를 적는다면 모든 모형에서 이렇게 된다.
𝐼(=)={⟨𝑑,𝑑⟩:𝑑∈𝐷}
각 점에서 자기 자신으로 가는 화살표만 있고 다른 화살표는 하나도 없는 관계다. 이것을 𝐷 위의 대각선이라 한다. 이 문서는 𝐼 의 정의를 건드리지 않고 = 를 아예 𝐼 의 몫에서 빼는 쪽을 쓴다. 논리 상항이므로 해석이 필요 없고, 만족 조항이 직접 처리한다.
한 가지를 못 박아 두자. 이 조항은 "두 이름이 같은 기호일 때 참"이라고 말하지 않는다. 지시체가 같은지를 묻지 기호가 같은지를 묻지 않는다. 그래서 서로 다른 이름 𝑎 와 𝑏 에 대해 𝑎=𝑏 가 참인 모형이 얼마든지 있고, 바로 그 덕분에 "샛별은 개밥바라기다"가 뜻 있는 발견이 된다.
예제 149
모형을 𝐷={1,2,3}, 𝐼(𝑎)=1, 𝐼(𝑏)=1, 𝐼(𝑐)=3, 𝐼(𝐹)={1,2} 로 잡는다. 다음을 조항에 따라 판정하라. (가) 𝑎=𝑏 (나) 𝑎≠𝑐 (다) ∃𝑥𝑥=𝑎 (라) ∀𝑥𝑥=𝑎
풀이 보기
(가) 두 항의 지시체가 모두 1 이다. 같은 원소이므로 참이다. 이름이 둘이고 대상이 하나인 경우다.
(나) 𝑎≠𝑐 는 ¬𝑎=𝑐 의 줄임이다. 안쪽부터 보면 지시체가 1 과 3 이라 다르므로 𝑎=𝑐 는 거짓이고, 따라서 𝑎≠𝑐 는 참이다.
(다) ∃ 조항이므로 원소 하나를 찾으면 된다. 𝑑=1 로 잡으면 𝑔[𝑥↦1] 아래에서 두 지시체가 모두 1 이다. 참이다.
(라) ∀ 조항이므로 셋을 다 훑는다. 𝑑=2 에서 지시체가 2 와 1 이라 어긋난다. 거짓이다.
답이 말이 되는가. (다)는 이 모형만의 성질이 아니다. 정의역이 비어 있지 않고 𝑎 가 반드시 무언가를 가리키므로 ∃𝑥𝑥=𝑎 는 모든 모형에서 참이다. (라)가 참이 되는 모형은 정의역에 점이 하나뿐인 모형뿐이다. 벌써 크기에 대한 이야기가 시작된 셈이다.
예제 150
사전을 𝐹 "… 는 철학자다", 𝑎 소크라테스, 𝑏 플라톤으로 잡고 옮겨라. (가) 소크라테스는 플라톤이 아니다 (나) 소크라테스 말고 다른 철학자가 있다 (다) 소크라테스만 철학자다
풀이 보기
(가) 두 이름이 다른 것을 가리킨다는 말이다. 𝑎≠𝑏.
(나) "철학자인 것이 있는데 그것이 소크라테스는 아니다"로 풀어 읽는다. ∃𝑥(𝐹𝑥∧𝑥≠𝑎).
(다) 두 몫으로 나뉜다. 소크라테스가 철학자라는 것과, 철학자인 것은 모두 소크라테스라는 것. 𝐹𝑎∧∀𝑥(𝐹𝑥→𝑥=𝑎).
(나)에서 흔한 잘못은 ∃𝑥(𝐹𝑥∧¬𝐹𝑎) 처럼 적는 것이다. 되읽으면 "철학자가 있고 소크라테스는 철학자가 아니다"가 되어 원문과 다른 말이 된다. "다른"은 술어가 아니라 ≠ 로 옮긴다.
(다)의 뒷부분이 다음다음 절에서 다룰 유일성의 모양이다. 눈에 익혀 두면 좋다.
규칙 두 개 — =I 와 =E
증명 체계에도 조항을 더한다. 규칙은 둘뿐이고 7장의 규칙성을 그대로 따른다 — 도입 하나, 제거 하나.
=I. 아무 전제 없이, 어떤 개체상수 𝑎 에 대해서든 𝑎=𝑎 를 적을 수 있다.
𝑎=𝑎=I
가로줄 위가 비어 있는 것을 눈여겨보라. 재료를 하나도 요구하지 않는 규칙은 이것뿐이다. 7장의 열세 규칙은 모두 앞선 줄을 인용했다. 이것이 이상해 보이지 않아야 한다 — 𝑎=𝑎 는 어떤 모형에서도 참이므로, 아무 대가 없이 적어도 손해 볼 일이 없다.
=E.𝑎=𝑏 와 𝜑[𝑎/𝑥] 를 얻었으면 𝜑[𝑏/𝑥] 를 적을 수 있다.
𝑎=𝑏𝜑[𝑎/𝑥]𝜑[𝑏/𝑥]=E
말로 하면 "같은 것에 대해 참인 것은 서로 바꿔 넣어도 참이다"이고, 이 원리를 라이프니츠 법칙이라 부른다.
9장의 대입 표기를 쓴 것이 여기서 값을 한다. 어느 자리를 바꿀지를 𝜑 를 고르는 일이 정한다.𝐺𝑎𝑎 의 첫 자리만 바꾸고 싶으면 𝜑 를 𝐺𝑥𝑎 로 잡는다. 그러면 𝜑[𝑎/𝑥] 가 𝐺𝑎𝑎 이고 𝜑[𝑏/𝑥] 가 𝐺𝑏𝑎 다. 둘 다 바꾸고 싶으면 𝜑 를 𝐺𝑥𝑥 로 잡는다. 일부만 바꾸는 것도 전부 바꾸는 것도 규칙 하나로 처리된다.
포획 걱정은 없다. 넣는 것이 개체상수이므로 9장이 확인한 대로 언제나 안전하다. 11장의 한정사 규칙 넷이 개체상수 대입으로만 진술된 것과 같은 이유다.
규칙을 방향 하나로만 적어 두었다는 점을 주의하라. 𝑎=𝑏 에서 𝑎 를 𝑏 로 바꾸는 것만 허용한다. 반대 방향이 필요하면 먼저 𝑏=𝑎 를 도출해야 한다. 그 도출이 아래 첫 예제다.
예제 151
다음 둘을 도출하라. (가) 𝑎=𝑏⊢𝑏=𝑎 (대칭성) (나) 𝑎=𝑏,𝑏=𝑐⊢𝑎=𝑐 (추이성)
풀이 보기
(가) 규칙이 둘뿐이므로 =I 로 재료를 만드는 수밖에 없다.
줄
논리식
근거
1
𝑎=𝑏
전제
2
𝑎=𝑎
=I
3
𝑏=𝑎
1, 2 =E
3번 줄에서 무슨 일이 일어났는지 짚어 보자. 𝜑 를 𝑥=𝑎 로 잡는다. 그러면 𝜑[𝑎/𝑥] 는 𝑎=𝑎 이고 이것이 2번 줄이다. 규칙이 내놓는 것은 𝜑[𝑏/𝑥], 곧 𝑏=𝑎 다. 바꾼 것은 왼쪽 자리 하나뿐이고 오른쪽 𝑎 는 그대로 두었다.𝜑 를 그렇게 골랐기 때문이다.
(나) 이번에는 재료가 다 주어져 있다.
줄
논리식
근거
1
𝑎=𝑏
전제
2
𝑏=𝑐
전제
3
𝑎=𝑐
2, 1 =E
규칙의 동일성 자리에 놓는 것은 2번 줄이다. 곧 규칙에 적힌 𝑎 가 여기서는 𝑏 이고 규칙의 𝑏 가 여기서는 𝑐 인 셈이다. 그러면 바꿀 줄은 𝑏 가 든 식이라야 하는데 1번 줄 𝑎=𝑏 가 그렇다. 𝜑 를 𝑎=𝑥 로 잡으면 𝜑[𝑏/𝑥] 가 1번 줄이고, 규칙이 내놓는 𝜑[𝑐/𝑥] 가 𝑎=𝑐 다.
두 도출이 알려 주는 것이 있다. 대칭성과 추이성은 규칙이 아니라 정리다. 앞 절에서 "공리로 흉내 내기"를 할 때 손으로 적어야 했던 것들이, 규칙 둘을 넣고 나니 도출된다. 규칙을 늘리지 않고 힘을 얻는 방식이 자연연역의 방식이다.
예제 152
𝐹𝑎,¬𝐹𝑏⊢𝑎≠𝑏 를 도출하라.
풀이 보기
결론의 주연결자를 본다. 𝑎≠𝑏 는 ¬𝑎=𝑏 의 줄임이므로 주연결자가 ¬ 이고, 8장의 전략대로 ¬I 를 쓴다. 𝑎=𝑏 를 가정하고 ⊥ 을 얻으면 된다.
줄
논리식
근거
1
𝐹𝑎
전제
2
¬𝐹𝑏
전제
3
│ 𝑎=𝑏
가정
4
│ 𝐹𝑏
3, 1 =E
5
│ ⊥
4, 2 ¬E
6
𝑎≠𝑏
3–5 ¬I
4번 줄에서 𝜑 는 𝐹𝑥 다. 𝜑[𝑎/𝑥] 가 1번 줄의 𝐹𝑎 이고, 3번 줄의 동일성으로 바꾸면 𝐹𝑏 가 나온다.
이 도출이 앞 절의 반례 모형과 짝을 이룬다. 거기서는 𝐻 를 "같다"로 읽기만 했기 때문에 𝐹𝑎 에서 𝐹𝑏 로 갈 수 없었다. 여기서는 규칙이 그 걸음을 허락한다. 같지 않음을 보이는 표준 수법이 이것이다 — 한쪽에만 참인 성질을 하나 찾아 대면 된다.
예제 153
다음 셋에서 잘못을 찾아라. (가) 𝑎=𝑏 와 𝐹𝑏 에서 한 걸음에 𝐹𝑎 를 얻고 근거를 "=E"라 적었다. (나) 𝑎 와 𝑏 가 둘 다 이름이라는 이유로 =I 로 𝑎=𝑏 를 적었다. (다) 전제가 하나도 없는 도출에서 =I 로 𝑎=𝑎 를 얻고, ∀I 로 ∀𝑥𝑥=𝑥 를 얻었다.
풀이 보기
(가) 방향이 반대다. 규칙은 𝑎=𝑏 에서 𝑎 를 𝑏 로 바꾸도록 적혀 있다. 𝑏 를 𝑎 로 바꾸려면 앞 예제처럼 𝑏=𝑎 를 먼저 도출해야 하고, 그 도출이 두 줄 더 든다. 결론 자체는 옳지만 한 걸음이 빠졌다.
(나) 규칙을 잘못 읽었다.=I 가 내놓는 것은 𝑎=𝑎, 곧 같은 이름이 양쪽에 온 식뿐이다. 𝑎=𝑏 를 공짜로 적을 수 있다면 아무 두 이름이나 같은 것을 가리키게 되어 버린다.
(다) 잘못이 없다.∀I 의 변수 조건은 쓴 이름이 열린 가정에 나타나지 않을 것을 요구하는데, 이 도출에는 전제도 열린 가정도 없으므로 조건이 저절로 채워진다. 그래서 ⊢∀𝑥𝑥=𝑥 다. 전제 없이 얻었으므로 7장의 낱말로 정리이고, 이 장이 "논리적 참의 목록이 늘어난다"고 말한 것의 첫 사례다.
셋을 견주면 규칙을 읽는 법이 보인다. 규칙에 적힌 모양을 글자 그대로 맞춰 보고, 붙은 조건을 따로 확인한다. 모양이 어긋나면 (가)·(나)처럼 틀리고, 모양이 맞으면 조건만 남는다.
수 세기 — 한정사만으로는 셀 수 없다
앞에서 미뤄 둔 물음으로 돌아간다. ‘𝐹 인 것이 적어도 둘 있다’를 어떻게 적는가. Mathematics for Computer Science 가 한정사를 다루면서도 수 세기를 다루지 않은 이유가 여기 있다 — 동일성 없이는 할 수 없는 일이다.
자연스러운 후보는 ∃𝑥∃𝑦(𝐹𝑥∧𝐹𝑦) 다. 그리고 이것은 틀렸다.
<왼쪽에서 화살표 둘이 같은 점에 꽂히는 것을 보라 — 10장의 조항은 두 번 갈아 끼우는 원소가 서로 달라야 한다고 요구하지 않는다>[원본 보기]
이유는 10장의 조항에 있다. ∃𝑥 조항은 "어떤 𝑑∈𝐷 가 있어"라 하고 ∃𝑦 조항은 "어떤 𝑒∈𝐷 가 있어"라 한다. 𝑑 와 𝑒 를 같은 원소로 잡아도 조항을 어기지 않는다. 그래서 𝐷={1}, 𝐼(𝐹)={1} 인 모형에서도 이 식은 참이 된다.
한정사를 더 쌓아도 소용없다. ∃𝑥1⋯∃𝑥𝑛(𝐹𝑥1∧⋯∧𝐹𝑥𝑛) 도 점이 하나뿐인 그 모형에서 참이다. 이 방향으로는 길이 없다.
필요한 것은 "고른 둘이 서로 다르다" 는 말인데, 술어로는 이 말을 할 수 없다. 술어는 비논리 상항이라 해석이 자유롭고, 어떤 술어를 잡아도 그것이 구별을 해 준다고 기댈 수 없기 때문이다. 앞 절에서 𝐻 를 두고 확인한 것과 같은 사정이다.
정말 못 세는가
위의 이야기는 후보 몇 개가 무너지는 것을 보였을 뿐이다. 조금 더 밀면 완전한 논증이 나온다. 모형 둘을 잡는다.
두 모형 모두 모든 술어의 해석을 꽉 채운다. 곧 𝑛 항 술어마다 𝐼(𝐹)=𝐷𝑛 으로 놓고, 개체상수는 전부 같은 원소를 가리키게 한다. 하나는 𝐷={1}, 다른 하나는 𝐷={1,2} 로 잡는다.
<두 모형은 크기만 다르고 나머지는 똑같이 꽉 차 있다. 아래 두 줄이 이 절의 결론이다 — 동일성 없는 문장은 둘을 구별하지 못하고, ≠ 하나가 든 문장은 구별한다>[원본 보기]
= 가 없는 언어에서는 두 모형 모두 원자식이 전부 참이다. 해석이 꽉 찼으므로 어떤 항을 넣어도 순서쌍이 𝐼(𝐹) 에 들어 있기 때문이다. 그러면 만족의 나머지 여덟 조항을 따라 올라가면서 문장의 값이 식의 모양만으로 정해지고, 두 모형에서 같은 값이 나온다. 크기가 값에 관여할 자리가 없다.
그러므로 = 없는 언어의 어떤 문장도 "정의역에 원소가 적어도 둘 있다"를 말할 수 없다. 그런 문장이 있다면 큰 모형에서 참이고 작은 모형에서 거짓이어야 하는데, 방금 두 모형에서 값이 같다고 했으니 그럴 수 없다.
정직하게 밝혀 둘 것이 있다. "조항을 따라 올라가면 값이 같다"는 대목은 식의 구조를 따라가는 귀납이고, 그 도구는 13장에서 세운다. 6장과 10장이 진 빚과 같은 종류의 빚이다. 다만 미리 밝혀 두면, 13장은 도구를 세우고 이 빚에 대해서는 뼈대까지만 적고 갈래를 돌리지 않는다. 여기서도 거기서도 이 주장은 확인된 것이 아니라 확인할 수 있는 것으로 남는다.
반면 = 를 넣으면 문장 하나로 끝난다. ∃𝑥∃𝑦𝑥≠𝑦 는 큰 모형에서 참이고 작은 모형에서 거짓이다.
세 가지 문장
이제 실제로 세어 보자. 규칙성은 단순하다.
<가운데 칸의 세 줄에서 ≠ 와 = 가 하는 일이 서로 반대라는 것을 확인하라. 아래 칸은 F 를 지웠을 때 남는 것이고, 그 문장들이 15장에서 다시 쓰인다>[원본 보기]
적어도 둘.∃ 를 둘 쌓고 고른 것들이 서로 다르다고 못 박는다.
∃𝑥∃𝑦(𝐹𝑥∧𝐹𝑦∧𝑥≠𝑦)
많아야 둘. 하나 더 많게 ∀ 를 쌓아 셋을 집어 오고, 셋 중 어딘가는 겹친다고 요구한다.
∀𝑥∀𝑦∀𝑧((𝐹𝑥∧𝐹𝑦∧𝐹𝑧)→(𝑥=𝑦∨𝑥=𝑧∨𝑦=𝑧))
정확히 둘. 새 모양이 아니라 위 둘을 ∧ 로 묶은 것이다.
술어 𝐹 를 빼면 정의역의 크기를 세는 문장이 된다. 이 문장에 이름을 붙여 두자. 𝜆𝑛 은 "정의역에 원소가 적어도 𝑛 개 있다"를 말하는 문장이다. 𝜆2 는 ∃𝑥∃𝑦𝑥≠𝑦 이고, 𝜆3 은 ∃𝑥∃𝑦∃𝑧(𝑥≠𝑦∧𝑥≠𝑧∧𝑦≠𝑧) 다. 𝜆𝑛 에 드는 ≠ 의 개수는 𝑛 개에서 둘을 고르는 방법의 수, 곧 (𝑛2)=𝑛(𝑛−1)/2 다.
예제 154
사전을 𝐹 "… 는 고양이다"로 잡고 옮겨라. 논의 영역은 모든 것이다. (가) 고양이가 많아야 하나 있다 (나) 고양이가 정확히 하나 있다 (다) 고양이가 적어도 셋 있다
풀이 보기
(가) 규칙성대로 하나 더 많게, 곧 ∀ 를 둘 쌓는다. ∀𝑥∀𝑦((𝐹𝑥∧𝐹𝑦)→𝑥=𝑦). 되읽으면 "고양이 둘을 집어 왔다면 그 둘은 같은 것이다"이고, 고양이가 하나도 없어도 참이다. "많아야"가 그런 말이다.
(나) 적어도 하나와 많아야 하나를 묶는다. ∃𝑥𝐹𝑥∧∀𝑥∀𝑦((𝐹𝑥∧𝐹𝑦)→𝑥=𝑦).
(다)∃ 셋을 쌓고 서로 다르다고 못 박는다. 짝이 셋이므로 ≠ 도 셋이다.
∃𝑥∃𝑦∃𝑧(𝐹𝑥∧𝐹𝑦∧𝐹𝑧∧𝑥≠𝑦∧𝑥≠𝑧∧𝑦≠𝑧)
(다)에서 가장 흔한 잘못을 짚어 두자. 𝑥≠𝑦∧𝑦≠𝑧 두 개만 적는 것이다. 그러면 𝑥 와 𝑧 가 같아도 된다. 원소 둘뿐인 모형에서 𝑥 와 𝑧 를 첫째 원소로, 𝑦 를 둘째 원소로 잡으면 조건이 다 채워진다. 서로 다르다는 것은 짝마다 요구해야 한다.
예제 155
10장이 "크기 𝑘 까지만 보면 되지 않는가"라는 우회로를 닫을 때, 어떤 𝑘 를 정해도 크기 𝑘 이하의 모형에서는 모두 참인데 더 큰 모형에서 거짓이 되는 문장이 있다고 했다. 그런 문장을 실제로 적어라.
풀이 보기
𝜆𝑘+1 은 "원소가 적어도 𝑘+1 개 있다"이므로, 크기 𝑘 이하의 모형에서는 모두 거짓이고 크기 𝑘+1 이상의 모형에서는 모두 참이다. 우리가 원하는 것은 그 반대이므로 부정을 씌운다.
¬𝜆𝑘+1
이 문장은 "원소가 많아야 𝑘 개 있다"를 말한다. 크기 𝑘 이하의 모든 모형에서 참이고, 크기가 𝑘+1 이상인 모든 모형에서 거짓이다. 정확히 요구한 모양이다.
10장이 이 문장을 그때 적지 못한 이유가 이제 분명하다. 𝜆𝑘+1 에는 ≠ 가 (𝑘+12) 개 들어 있고, ≠ 는 이 장에서야 생겼다.
갚은 빚 하나를 적어 둔다. 10장이 "모형을 크기로 잘라 보는 우회로가 막힌다"고 한 주장이 여기서 실제 문장으로 확인되었다. 같은 문장 무리 𝜆2,𝜆3,𝜆4,… 가 15장에서 무한한 정의역을 강제하는 데 쓰인다.
예제 156
𝜆2 는 어떤 모형에서 참인가. 그리고 𝜆2 가 이 문서에 들여온 "불편한 것"은 무엇인가.
풀이 보기
𝜆2 곧 ∃𝑥∃𝑦𝑥≠𝑦 는 정의역에 서로 다른 원소가 적어도 둘 있는 모형에서 참이고, 원소가 하나뿐인 모형에서 거짓이다. 정의역은 비어 있을 수 없으므로 남은 경우는 이 둘뿐이다.
불편한 것은 이렇다. 논리는 형식만 다루고 세계가 어떻게 생겼는지에 대해서는 아무 말도 하지 않는다고들 한다. 그런데 ¬𝜆2 는 "세상에 것이 하나뿐이다"라는 주장이고, 이것이 어엿한 논리식이다. 논리의 언어가 세계의 크기를 이야기할 수 있게 되어 버렸다.
이것을 대가로 볼 것인가 능력으로 볼 것인가는 취향이 아니라 쓰임에 달렸다. 15장에서는 이 능력이 뜻밖의 결과를 낳는다 — 어떤 이론도 자기 모형의 크기를 원하는 만큼 좁히지 못한다는 것이다. 지금은 동일성을 논리 상항으로 삼은 대가 가운데 하나로 적어 두면 된다.
유일성 — 줄임말 하나
"𝐹 인 것이 정확히 하나 있다"는 앞 절에서 이미 적을 수 있다. 자주 쓰이므로 짧은 이름을 준다.
∃!𝑥𝐹𝑥
이것은 어휘에 더한 새 기호가 아니라 줄임말이다.≠ 와 같은 종류이고, 도식이라는 5장의 낱말이 여기에 해당한다. 풀어 쓰면 아래와 같고, 둘 중 어느 쪽을 써도 좋다.
∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥))
∃𝑥𝐹𝑥∧∀𝑥∀𝑦((𝐹𝑥∧𝐹𝑦)→𝑥=𝑦)
앞엣것은 "𝐹 인 것이 있고, 𝐹 인 것은 모두 그것이다"로 읽는다. 뒤엣것은 "적어도 하나"와 "많아야 하나"를 나란히 놓은 것이다. 앞엣것이 짧고 뒤엣것이 두 몫을 눈에 보이게 갈라 준다.
줄임말이라는 점을 잊으면 사고가 난다. 규칙에 ∃! 를 위한 조항이 없으므로, 도출에서 쓰려면 먼저 풀어 써야 한다. 의미론에도 조항이 없다. 판정할 때도 풀어 쓴 형태로 계산한다.
예제 157
위의 두 형태가 모든 모형에서 같은 값을 갖는지 확인하라. 정의에 따라 따지면 된다.
풀이 보기
어느 모형 M 을 잡아도 좋다. 𝐼(𝐹) 의 크기로 경우를 나눈다.
𝐼(𝐹) 가 비었을 때. 첫째 형태는 𝐹𝑥 를 만족하는 원소가 없으므로 거짓이다. 둘째 형태는 왼쪽 ∃𝑥𝐹𝑥 가 거짓이라 전체가 거짓이다. 같다.
𝐼(𝐹) 의 원소가 하나일 때. 그 원소를 𝑑 라 하자. 첫째 형태는 𝑥 를 𝑑 로 잡으면 𝐹𝑥 가 성립하고, 𝐹𝑦 를 만족하는 𝑦 는 𝑑 뿐이므로 안쪽 ∀ 도 성립한다. 참이다. 둘째 형태도 왼쪽이 참이고, 𝐹 인 것을 둘 집어 와야 둘 다 𝑑 이므로 오른쪽도 참이다. 같다.
𝐼(𝐹) 의 원소가 둘 이상일 때. 서로 다른 𝑑 와 𝑒 가 𝐹 다. 첫째 형태에서 어떤 원소를 𝑥 로 잡든 𝐹 인 다른 원소가 남아 안쪽 ∀ 이 깨진다. 거짓이다. 둘째 형태는 오른쪽에서 𝑥 를 𝑑 로 𝑦 를 𝑒 로 잡으면 전건이 참인데 후건이 거짓이라 깨진다. 거짓이다. 같다.
세 경우가 정의역의 모든 가능성을 덮으므로 두 형태는 어느 모형에서나 값이 같다. 경우를 𝐼(𝐹) 의 크기로 나눈 것이 요령이다. 두 형태가 하는 말이 "그 크기가 정확히 1이다"이기 때문이다.
예제 158
다음도 유일성을 말하는가. ∃𝑥∀𝑦(𝐹𝑦↔𝑦=𝑥). 그리고 ∃!𝑥𝐹𝑥 에서 ∃𝑥𝐹𝑥 가 따라 나오는가. 그 역은 어떤가.
풀이 보기
앞엣것은 유일성을 말한다. 읽어 보면 "어떤 𝑥 가 있어, 𝐹 인 것과 그 𝑥 인 것이 정확히 겹친다"다. ↔ 의 오른쪽 방향은 𝐹𝑥 자신을 주고, 왼쪽 방향은 𝐹 인 것이 모두 𝑥 임을 준다. 두 몫이 다 들어 있다. 세 번째 형태로 써도 된다.
∃𝑥𝐹𝑥 는 따라 나온다. 유일성 문장의 첫 몫이 바로 존재이기 때문이다. 풀어 쓴 형태에서 ∧ 의 한쪽을 떼면 되고, 도출로 적으면 ∃E 와 ∧E 를 쓴다.
역은 따라 나오지 않는다. 반례 모형은 𝐷={1,2}, 𝐼(𝐹)={1,2} 다. ∃𝑥𝐹𝑥 는 참이고 ∃!𝑥𝐹𝑥 는 거짓이다.
챙겨 둘 것은 "유일하다"가 존재를 함축한다는 점이다. 일상에서 "유일한 답"이라고 하면 답이 있다는 말도 함께 하는 것과 같다. 다음 절의 확정기술이 이 함축 위에 선다.
확정기술 — '그 왕' 의 논리적 형태
이 절이 이 문서에서 철학과 만나는 유일한 자리다.
한국어의 '그 왕', 영어의 the king 처럼 대상 하나를 특정해 지목하는 표현을 확정기술(definite description)이라 한다. 겉보기에는 이름과 같은 자리에 온다. "소크라테스는 대머리다"와 "그 왕은 대머리다"는 같은 모양이다. 그래서 개체상수 하나로 옮기고 싶어진다.
그런데 그렇게 하면 무너지는 자리가 있다. 러셀이 1905년에 든 예가 이것이다.
"현재 프랑스의 왕은 대머리다."
프랑스에는 왕이 없다. 이 문장은 참인가 거짓인가. 참이라 하기 어렵다. 그렇다고 거짓이라 하면 "현재 프랑스의 왕은 대머리가 아니다"가 참이어야 할 것 같은데 그것도 이상하다.
개체상수로 옮기는 길은 애초에 막혀 있다. 10장에서 개체상수는 반드시 𝐷 의 원소 하나를 가리켜야 한다. 가리킬 것이 없으면 𝐼(𝑎) 를 정할 수 없고, 해석이 완성되지 않으니 모형이 아니다. 이름으로 옮기면 이 문장이 든 논증은 다룰 모형이 아예 없어진다.
러셀의 분석
러셀의 답은 이렇다. 확정기술은 이름이 아니다. 한정사 뭉치다. "그 𝐹 는 𝐺 다"는 겉모습과 달리 주어와 술어로 되어 있지 않고, 세 조각의 논리곱이다.
∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥)∧𝐺𝑥)
<왼쪽 첫 조각이 존재 주장이라는 것과, 그것이 한국어 표면에는 어디에도 적혀 있지 않다는 것이 이 분석의 요점이다. 아래 두 갈래는 부정이 그 조각을 삼키느냐 아니냐다>[원본 보기]
세 조각은 각각 존재(𝐹 인 것이 있다), 유일성(𝐹 인 것은 그것 하나뿐이다), 원래 하려던 주장(그것이 𝐺 다)이다. 앞의 두 조각을 합치면 앞 절의 유일성이므로, 확정기술은 "유일하게 𝐹 인 것이 있고 그것이 𝐺 다"로 풀린다.
그러면 물음에 답이 나온다. 왕이 없으면 첫 조각이 거짓이고 논리곱이므로 전체가 거짓이다. 참도 거짓도 아닌 것이 아니라 거짓이다.
이 분석이 값을 하는 대목은 그다음이다. 존재 주장이 문장 안에 숨어 있었다. 한국어 표면에는 '있다'는 말이 어디에도 적혀 있지 않은데, 옮기고 보니 논리곱의 첫 자리에 있다. 형식화의 몫이 이런 것이다 — 4장에서 옮기기가 무엇을 드러내는지 말했는데, 여기서 드러나는 것이 주장 하나다.
부정을 붙이면 두 갈래로 갈라진다는 것도 이 분석이 설명해 준다. ¬ 를 ∃ 앞에 붙이면 존재 주장까지 부정되어 왕이 없을 때 참이 되고, 𝐺𝑥 에만 붙이면 존재 주장이 남아 왕이 없을 때 거짓이 된다. 한국어 "현재 프랑스의 왕은 대머리가 아니다"가 두 가지로 읽히는 까닭이 이것이고, 술어논리에서는 그 애매함이 괄호 자리의 차이로 드러난다.
반론도 있다. 스트로슨은 이런 문장이 왕이 있다는 것을 주장하는 것이 아니라 전제하는 것이며, 전제가 어긋나면 문장은 참도 거짓도 아니라고 보았다. 그 길을 택하면 값이 둘뿐이라는 이 문서의 전제를 버려야 하고, 그런 논리를 19장에서 본다. 이 문서는 러셀 쪽을 택한다. 정의로 고른 것이지 증명한 것이 아니다.
예제 159
사전을 𝐹 "… 는 현재 프랑스의 왕이다", 𝐺 "… 는 대머리다"로 잡는다. (가) "현재 프랑스의 왕은 대머리다"를 옮겨라. (나) 왕이 없는 모형을 하나 만들고 그 모형에서 값을 계산하라. (다) 같은 모형에서 부정 두 갈래의 값을 각각 구하라.
풀이 보기
(가)∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥)∧𝐺𝑥).
(나) 왕이 없다는 것은 𝐼(𝐹)=∅ 이라는 뜻이다. 𝐷={1,2}, 𝐼(𝐹)=∅, 𝐼(𝐺)={1} 로 잡는다. ∃ 조항에 따라 원소를 하나씩 시험하는데, 어느 원소를 잡아도 첫 조각 𝐹𝑥 가 성립하지 않는다. 논리곱이 깨지므로 거짓이다. 𝐼(𝐺) 를 무엇으로 바꾸어도 마찬가지다.
(다) 넓게 부정한 ¬∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥)∧𝐺𝑥) 은 (나)의 부정이므로 참이다. 좁게 부정한 ∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥)∧¬𝐺𝑥) 은 여전히 첫 조각에서 막히므로 거짓이다.
두 값이 갈리는 것이 요점이다. 한국어 문장 하나가 두 값을 갖는 것이 아니라, 한국어 문장 하나가 서로 다른 두 논리식으로 옮겨질 수 있다. 4장의 낱말로 하면 원문이 애매하고 옮김이 그 애매함을 없앤다.
예제 160
9장은 함수기호를 어휘에 넣지 않으면서 "𝑎 의 아버지" 같은 표현의 몫을 12장으로 넘겼다. 그 빚을 갚아라. 사전은 𝐺 "… 는 … 의 아버지다"(2항), 𝐻 "… 는 철학자다", 𝑎 소크라테스다. "소크라테스의 아버지는 철학자다"를 옮겨라.
풀이 보기
"소크라테스의 아버지"가 확정기술이다. "그 𝐹" 자리에 "소크라테스의 아버지인 것"이 들어가므로, 위 정형의 𝐹𝑥 자리에 𝐺𝑥𝑎 를 넣고 𝐹𝑦 자리에 𝐺𝑦𝑎 를 넣는다.
∃𝑥(𝐺𝑥𝑎∧∀𝑦(𝐺𝑦𝑎→𝑦=𝑥)∧𝐻𝑥)
되읽으면 "소크라테스의 아버지인 것이 있고, 소크라테스의 아버지인 것은 그것 하나뿐이며, 그것이 철학자다"다.
여기서 눈여겨볼 것이 있다. "아버지는 하나뿐이다"라는 주장이 옮김 안에 들어와 있다. 함수기호를 어휘에 두었다면 𝑓(𝑎) 라고 적었을 것이고, 그 유일성은 "함수는 값이 하나"라는 문법 규정에 붙박여 눈에 보이지 않았을 것이다. 9장이 함수기호를 빼면서 잃은 것은 간결함이고, 얻은 것이 이 드러남이다.
그래서 함수의 유일성은 이 언어에서 = 로 진술된다. "𝐺 는 함수처럼 군다"는 것을 ∀𝑥∃𝑦(𝐺𝑦𝑥∧∀𝑧(𝐺𝑧𝑥→𝑧=𝑦)) 로 적을 수 있고, 이것이 바로 "누구에게나 아버지가 정확히 하나 있다"는 문장이다. 17장에서 산술을 다루며 함수기호를 어휘에 더할 때, 그 결정이 무엇을 대신하는지가 이 문장이다.
3부를 닫는다
여기서 3부가 끝난다. 무엇을 세웠는지 한 번에 보자.
<위 격자에 빈 칸이 없다는 것과, 세로줄 셋이 아직 서로 만난 적이 없다는 것 — 13장부터 하는 일은 칸을 더 채우는 것이 아니라 세로줄 사이에 다리를 놓는 것이다>[원본 보기]
격자의 가로줄은 언어이고 세로줄은 층이다. 명제논리와 술어논리와 동일성 각각에 대해, 무엇을 적을 수 있는가(문법)와 그것이 무엇을 말하는가(의미론)와 어떻게 이어 붙이는가(증명 체계)를 다 정했다. 아홉 칸에 빈 곳이 없다.
그런데 세로줄 셋은 아직 서로 만난 적이 없다. 5장과 9장의 문법은 뜻을 한마디도 쓰지 않았고, 7장과 11장의 규칙은 진리값을 한 번도 보지 않았다. 도출을 검사하는 절차에 배당도 모형도 나오지 않는다고 7장이 못 박아 두었다. 그것이 설계였다.
그래서 한 번도 묻지 않은 물음이 남아 있다. Γ⊢𝜑 와 Γ⊨𝜑 는 같은 것인가. 규칙을 이어 붙여 얻은 것이 정말 모든 모형에서 참인가. 모든 모형에서 참인 것은 정말 규칙으로 얻어지는가. 규칙을 고를 때 우리가 "이 규칙은 뜻에 맞다"고 여기며 골랐던 것은 사실이지만, 그것은 느낌이었지 증명이 아니었다.
13장부터 층이 바뀐다. 지금까지 우리는 체계 안에서 일했다 — 식을 적고, 모형을 만들고, 도출을 찾았다. 13장부터는 체계 밖에 서서 체계 자체를 대상으로 삼는다. 증명 체계와 의미론을 각각 하나의 수학적 대상으로 놓고 그 둘의 관계를 증명한다. 그렇게 얻는 주장을 5장의 낱말로 메타정리라 불렀다.
두 다리가 13장과 14장이다. Γ⊢𝜑 이면 Γ⊨𝜑 이라는 것이 건전성이고, 그 역이 완전성이다. 다리가 놓이고 나면 15·16·17장이 그 대가를 센다.
미리 밝혀 둘 것이 있다. 13장이 세우는 도구는 구조적 귀납법이고, 그것은 5장이 적형식의 정의에 폐포 조항을 둘 때부터 예고된 것이다. 그 도구가 서면 이 문서가 지금까지 진 빚이 한꺼번에 갚아진다.
예제 161
다음 주장은 각각 문법·의미론·증명 체계 가운데 어느 층의 주장인가. (가) ∀𝑥𝑥=𝑥 는 문장이다 (나) ⊨∀𝑥𝑥=𝑥 (다) ⊢∀𝑥𝑥=𝑥 (라) Γ⊢𝜑 이면 Γ⊨𝜑 이다
풀이 보기
(가) 문법. 자유 나타남이 하나도 없는 적형식이라는 주장이다. 뜻도 규칙도 관여하지 않는다.
(나) 의미론. 모든 모형에서 참이라는 주장이다. 이 장의 새 만족 조항으로 확인한다 — 어느 모형을 잡아도 원소 하나하나가 자기 자신과 같으니 성립한다.
(다) 증명 체계. 전제 없이 도출된다는 주장이다. 앞의 예제에서 두 줄로 도출했다. 모형이라는 말이 그 도출 어디에도 나오지 않았다.
(라) 셋 다 걸친다. 왼쪽은 증명 체계의 말이고 오른쪽은 의미론의 말이며, 둘 다 문법이 정한 식에 대한 것이다. 이런 주장은 세 층 어디에도 속하지 않고 그 위에서 한다. 이것이 13장의 건전성 정리다.
원장이 이 문서 고유의 함정으로 "→ 와 ⊢ 와 ⊨ 를 섞지 마라"를 든 이유가 여기 있다. 앞으로 다섯 장은 이 구분이 무너지면 한 줄도 읽히지 않는다.
10장 — 관련성 보조정리. 자유 변수에 같은 값을 주는 배정은 같은 값을 낸다는 것. 6장의 것과 같은 주장의 두 판본이다
여기에 이 장이 하나를 더했다. 꽉 찬 두 모형에서 동일성 없는 문장의 값이 같다는 것을 뼈대만 보이고 증명하지 않았다.
공통점은 분명하다. 다섯 다 "모든 적형식에 대해 …" 꼴의 주장이다. 적형식은 무한히 많으므로 하나씩 확인할 수 없고, 정의가 재귀적이므로 정의의 조항을 따라 올라가는 증명법이 필요하다. 그것이 구조적 귀납법이고 13장의 첫 절이다.
미룬 것들이 쌓여 있다는 사실 자체가 이 문서의 짜임을 보여 준다. 도구 하나가 서면 다섯이 한꺼번에 처리되므로, 도구를 세우는 자리를 뒤로 미루는 편이 낫다. 그 자리가 다음 장이다. 다만 다섯 가운데 방금 적은 두 모형 이야기 하나는 13장도 뼈대까지만 적고 증명을 끝내지 않는다.
이 장에서 새로 나온 것
기호 · 용어
뜻
=
동일성. 어휘에 더한 논리 상항이다. 술어처럼 2항이지만 해석이 고정된다
원자식의 새 조항
𝑡1 과 𝑡2 가 항이면 𝑡1=𝑡2 는 원자식이다. 가운데에 적는 것이 모양의 예외다
𝑡1≠𝑡2
¬𝑡1=𝑡2 의 줄임. 새 기호가 아니다
만족의 새 조항
M,𝑔⊨𝑡1=𝑡2 인 것은 두 지시체가 𝐷 의 같은 원소일 때다
해석의 예외
= 는 𝐼 의 몫에서 빠진다. 굳이 적으면 모든 모형에서 𝐼(=)={⟨𝑑,𝑑⟩:𝑑∈𝐷}
대각선
𝐷 의 각 점에서 자기 자신으로 가는 순서쌍만 모은 관계
=I
전제 없이 𝑎=𝑎 를 적는다. 재료를 요구하지 않는 유일한 규칙이다
=E
𝑎=𝑏 와 𝜑[𝑎/𝑥] 에서 𝜑[𝑏/𝑥]. 방향은 왼쪽에서 오른쪽 하나뿐이다
라이프니츠 법칙
=E 가 형식화한 원리. 같은 것에 대해 참인 것은 서로 바꿔 넣어도 참이다
대칭성 · 추이성
규칙이 아니라 정리다. =I 와 =E 로 도출된다
적어도 𝑛 개
∃ 를 𝑛 개 쌓고 짝마다 ≠ 를 붙인다. ≠ 의 개수는 (𝑛2)
많아야 𝑛 개
∀ 를 𝑛+1 개 쌓고 어딘가는 = 라고 요구한다
정확히 𝑛 개
위 둘의 논리곱. 새 모양이 아니다
𝜆𝑛
정의역에 원소가 적어도 𝑛 개 있다는 문장. 술어가 하나도 들어가지 않는다. 15장에서 다시 쓴다
유일 존재 ∃!𝑥𝐹𝑥
줄임말이다. 규칙에도 만족 조항에도 자리가 없으므로 쓰기 전에 풀어 쓴다
확정기술
‘그 𝐹’ 처럼 대상 하나를 지목하는 표현. 이름이 아니라 한정사 뭉치다
러셀의 분석
‘그 𝐹 는 𝐺 다’ = ∃𝑥(𝐹𝑥∧∀𝑦(𝐹𝑦→𝑦=𝑥)∧𝐺𝑥). 존재 · 유일성 · 원래 주장 세 조각
부정의 두 갈래
¬ 를 ∃ 앞에 붙이면 존재 주장까지 삼키고, 𝐺𝑥 에만 붙이면 남는다
챙겨 갈 것은 넷이다.
= 는 2항 기호이지만 해석이 고정된다. 모형이 고를 수 없다는 것이 논리 상항이라는 말의 뜻이고, 그 덕분에 𝐹𝑎 에서 𝐹𝑏 로 가는 걸음이 규칙이 된다
규칙 둘로 끝난다. 도입은 전제 없이 𝑎=𝑎, 제거는 대입이다. 대칭성·추이성 같은 것은 도출해 쓴다
수 세기는 ≠ 가 있어야 시작된다. 0과 1은 한정사만으로 되지만 2부터는 두 자리가 다르다고 말해야 하고, 그 말을 할 수 있는 것은 = 뿐이다
확정기술에는 존재 주장이 숨어 있다. 한국어 표면에 없던 주장이 옮김에서 드러나는 것이 형식화가 갚아 주는 값이다
13장부터는 지금까지 세운 체계를 대상으로 삼는다. 첫 물음은 "우리가 고른 규칙들이 정말 뜻에 맞는가"이고, 이 장이 더한 =I 와 =E 도 그 검사를 함께 받는다.
건전성
12장이 3부를 닫으면서 격자를 하나 보여 주었다. 가로줄은 언어이고 세로줄은 층이었다. 아홉 칸이 다 찼는데도 세로줄 셋은 아직 서로 만난 적이 없다고 적어 두었다. 이 장이 그중 두 줄 사이에 첫 다리를 놓는다.
이 장에서 답할 질문.Γ⊢𝜑 이면 Γ⊨𝜑 인가. 규칙을 이어 붙여 종이에 적은 것이 정말 모든 배당에서, 모든 모형에서 참인가. 줄이면 이렇다 — 증명한 것이 정말 참인가.
12장에서 가져오는 것.⊢ 의 정의(7장), ⊨ 의 정의(6장과 10장), 규칙 열일곱 개와 변수 조건(7장·11장), =I 와 =E(12장), 그리고 5장의 적형식 세 조항이다. 마지막 것이 뜻밖의 주역이다. 폐포 조항이 이 장의 도구를 낳는다.
이 장의 증명은 앞의 열 장과 성격이 다르다. 지금까지 증명이라 부른 것은 도출을 적거나 모형을 만드는 일이었다. 이 장의 증명은 도출로 적을 수 있는 것이 아니다. 무엇이 달라지는지부터 밝히고 시작한다.
층이 바뀐다 — 이제 체계가 대상이다
5장이 갈라 놓은 두 언어를 다시 꺼낸다. 대상언어는 우리가 연구하는 언어이고, 그 어휘는 문장문자·연결자·괄호·⊥ 에 9장이 더한 술어와 항과 한정사, 12장이 더한 = 가 전부다. 메타언어는 그 언어에 대해 말하는 언어이고, 여기서는 한국어에 메타변수 몇 개를 보탠 것이다.
이 장의 정리를 그 구분에 비추어 읽어 보자.
건전성 정리. 모든 논리식 집합 Γ 와 모든 논리식 𝜑 에 대하여, Γ⊢𝜑 이면 Γ⊨𝜑 이다.
이 문장에 대상언어의 기호가 몇 개나 있는가. 하나도 없다.Γ 와 𝜑 는 메타변수이고, ⊢ 와 ⊨ 는 5장이 못 박은 대로 메타언어의 기호다. "모든 … 에 대하여"와 "이면"은 한국어다. 이 정리는 대상언어로는 한 글자도 적을 수 없고, 그래서 5장이 이런 것을 메타정리라 불렀다.
<맨 위 정리의 문장 안에 아래 왼쪽 상자의 어휘가 하나도 섞여 있지 않다는 것 — 그리고 이 장의 증명 수단이 규칙 열일곱 개가 아니라 평범한 수학의 논법이라는 것 두 가지를 확인하라>[원본 보기]
실질적으로 무엇이 달라지는가. 셋이다.
도출이 대상이 된다. 지금까지 도출은 우리가 만드는 물건이었다. 이제 도출은 "줄의 유한한 목록"이라는 하나의 수학적 대상이고, 우리는 그것에 대해 "모든 도출은 …" 꼴의 주장을 한다
증명 수단이 규칙 목록이 아니다. 이 장에서 쓰는 것은 경우 나누기와 귀류법과 귀납법이다. 열일곱 개의 규칙으로는 이 장의 정리를 진술할 수조차 없다
두 기호를 처음으로 한 문장에 넣는다. 7장은 두 기호를 섞지 말라고 했다. 그 금지는 그대로 유효하되, 여기서는 둘의 관계 자체가 주장의 내용이다. 논증 중간에 몰래 갈아타는 것과 관계를 정리로 진술하는 것은 다른 일이다
낱말이 겹친다 — 규칙의 건전성과 체계의 건전성
3장이 '건전'이라는 낱말이 세 곳에 붙는다는 표를 만들어 두었다. 그 표의 셋째 줄이 이 장이다. 표를 다시 적고 각 줄이 이 장에서 하는 구실을 얹는다.
무엇에 붙는가
무슨 뜻인가
이 장에서의 구실
논증 하나 (3장)
타당하고 전제가 실제로 모두 참이다
쓰지 않는다. 전제가 사실인지는 논리학의 물음이 아니다
추론 규칙 하나 (mcs 3장)
전제를 참으로 만드는 배정이면 결론도 참으로 만든다
이 장이 열일곱 번 확인할 부품. 3장의 낱말로 옮기면 타당이다
증명 체계 전체 (이 장)
Γ⊢𝜑 이면 Γ⊨𝜑
이 장이 증명할 정리
가운데 줄과 아래 줄의 관계가 이 장의 설계도다. Mathematics for Computer Science 3장은 규칙 하나를 두고 건전하다고 말한다. 이 장은 그것을 체계 전체로 넓힌다. 넓히는 방법은 짐작할 수 있다 — 규칙 하나하나에 대해 mcs 가 한 확인을 하고, 그 확인들을 이어 붙인다. 이어 붙이는 장치가 귀납법이다.
다만 mcs 의 정의를 그대로 옮겨 쓸 수는 없다. mcs 가 이름 붙인 규칙은 전건 긍정 하나뿐이고 그것은 가정을 열지 않는 규칙이다. →I 나 ¬I 처럼 재료가 줄 하나가 아니라 도출 한 토막인 규칙에는 "전제를 참으로 만드는 배당"이라는 말이 그대로 통하지 않는다. 그래서 이 장은 규칙의 건전성을 다시 정의한다. 그 정의는 아래에서 준다.
예제 163
다음 각 주장이 대상언어의 문장인지 메타언어의 문장인지 판정하고, 메타언어의 것이면 그 주장을 확인하는 데 무엇이 필요한지 한 줄로 적어라. (가) (𝑃→𝑄)→(¬𝑄→¬𝑃) (나) ⊢(𝑃→𝑄)→(¬𝑄→¬𝑃) (다) ⊨(𝑃→𝑄)→(¬𝑄→¬𝑃) (라) "⊢𝜑 이면 ⊨𝜑 이다"
풀이 보기
판정 기준은 5장 그대로다. 어휘 목록에 있는 기호만으로 적혀 있는가.
(가) 대상언어. 문장문자와 연결자와 괄호뿐이다. 적형식이고, 그 자체로는 아무 주장도 하지 않는다 — 기호열 하나일 뿐이다.
(나) 메타언어.⊢ 가 어휘 밖이다. 확인하려면 도출 한 벌을 내놓으면 된다. 실제로 7장의 규칙만으로 여덟 줄 남짓이면 적을 수 있다.
(다) 메타언어.⊨ 가 어휘 밖이다. 확인하려면 배당 넷을 훑거나 정의를 따라 논증하면 된다.
(라) 메타언어. 그런데 앞의 셋과 등급이 다르다. (나)와 (다)는 식 하나에 대한 주장이라 그 식 하나만 다루면 끝나지만, (라)는 모든 식에 대한 주장이다. 확인하려면 도출 한 벌로도, 배당 훑기로도 안 되고 무한히 많은 경우를 한꺼번에 덮는 논법이 필요하다. 그 논법이 이 장의 귀납법이다.
답이 말이 되는가. (나)와 (다)는 각각 한 층 안의 주장이고 (라)만 두 층을 걸친다. 층을 걸치는 주장은 층 안의 도구로 확인할 수 없다. 그것이 이 장이 새 도구를 세우는 이유다.
예제 164
mcs 3장은 전건 긍정 규칙이 건전하다는 것을 "𝜑 와 𝜑→𝜓 를 참으로 만드는 배정은 𝜓 도 참으로 만든다"로 확인한다. (가) 이 확인을 이 문서의 기호로 다시 적어라. (나) 같은 문장으로 →I 의 건전성을 적으려 하면 어디서 막히는가.
풀이 보기
(가) 이 문서의 기호로는 {𝜑,𝜑→𝜓}⊨𝜓 다. 6장의 귀결 정의 그대로이고, 확인도 6장에서 이미 했다 — 두 전제를 참으로 만드는 배당에서 → 조항이 후건의 참을 강제한다.
(나)→I 의 재료는 줄 하나가 아니다. 재료는 "𝜑 를 가정으로 열고 그 범위 안에서 𝜓 에 이른 도출 토막"이고, 그런 것을 "참으로 만드는 배당"이라고 말할 수가 없다. 배당은 논리식에 값을 주지 도출 토막에 값을 주지 않는다.
고치는 방법은 재료를 논리식이 아니라 귀결 주장으로 보는 것이다. 재료 쪽이 Δ∪{𝜑}⊨𝜓 이면 결과 쪽이 Δ⊨𝜑→𝜓 라고 적으면 된다. 이 모양이면 방출 규칙도 적힌다.
답이 말이 되는가. 고쳐 적은 문장이 6장의 의미론적 연역정리와 글자까지 같다. 6장이 그 정리를 증명해 둔 것이 여기서 값을 한다. 그리고 이 예제가 아래에서 세울 "줄의 불변량"이 왜 가정 집합을 함께 끌고 다녀야 하는지를 미리 말해 준다.
구조적 귀납법 — 폐포 조항이 주는 증명법
5장이 적형식을 세 조항으로 정의하면서 폐포 조항의 진짜 값어치는 배제가 아니라 증명에 있다고 예고했다. 그 예고를 여기서 갚는다.
익숙한 쪽부터 본다. 자연수에 대한 수학적 귀납법은 성질 하나에 대해 두 가지를 보이면 모든 자연수에서 성립한다고 결론짓는 방법이다.
기저 단계 — 0 이 그 성질을 갖는다
귀납 단계 — 𝑛 이 그 성질을 가지면 𝑛+1 도 갖는다
왜 이 둘로 충분한가. 자연수의 정의가 그 모양이기 때문이다. 자연수란 0 에서 출발해 "하나 더하기"를 유한 번 적용해 얻어지는 것 전부다. 그러니 어떤 자연수를 가져오든 0 에서 거기까지 가는 유한한 사다리가 있고, 기저 단계가 첫 칸을 놓고 귀납 단계가 칸에서 칸으로 올라가게 해 준다.
요점은 이것이다. 귀납법이 정당한 까닭은 산수가 아니라 정의의 모양이다. 그렇다면 같은 모양의 정의를 가진 것에는 무엇이든 같은 방법을 쓸 수 있다. 적형식의 정의가 정확히 그 모양이다.
구조적 귀납법. 논리식에 대한 성질 하나를 잡자. 아래 갈래를 모두 보이면 그 성질은 모든 적형식에서 성립한다.
기저 — 모든 문장문자가 그 성질을 갖는다. 그리고 ⊥ 도 갖는다
¬ 갈래 — 𝜑 가 그 성질을 가지면 ¬𝜑 도 갖는다
이항 갈래 넷 — 𝜑 와 𝜓 가 그 성질을 가지면 (𝜑∧𝜓), (𝜑∨𝜓), (𝜑→𝜓), (𝜑↔𝜓) 도 갖는다
갈래가 일곱인 것은 정의의 조항이 일곱이기 때문이다 — 5장의 여섯에 7장이 ⊥ 을 더했다. 확인할 것의 개수를 정하는 것은 우리가 아니라 정의다. 술어논리로 넘어가면 9장의 정의가 아홉 갈래이므로 확인할 것도 아홉이 되고, 12장의 = 를 넣으면 열이 된다.
정당한 까닭도 자연수와 같다. 폐포 조항이 "조항을 유한 번 적용해 얻어지는 것만"이라고 못 박았으므로 어떤 적형식이든 문장문자에서 거기까지 가는 유한한 구성열이 있다. 기저 갈래가 구성열의 첫 항들을 덮고, 나머지 갈래가 항에서 항으로 성질을 물려준다.
<두 사다리의 칸이 하나씩 대응한다는 것 — 자연수의 0 자리에 문장문자와 ⊥ 가 오고, 하나 더하기 자리에 조항 여섯이 온다. 다른 것은 사다리가 한 줄이 아니라 나무라는 점뿐이다>[원본 보기]
같은 일을 다른 말로 할 수도 있다. 5장이 식의 복잡도를 파스 트리의 높이로 정의해 두었다. 그러면 "복잡도가 𝑛 보다 작은 모든 식에서 성립하면 복잡도가 𝑛 인 식에서도 성립한다"를 보이는 길이 있고, 이것은 자연수의 귀납법을 복잡도라는 수에 건 것이다. 두 방법은 같은 것을 다르게 적은 것이다. 재귀 조항이 만드는 식의 복잡도는 재료보다 반드시 크므로 "재료에서 결과로"와 "작은 수에서 큰 수로"가 같은 방향을 가리킨다. 이 문서는 조항 이름을 대는 편이 읽기 쉬우므로 앞의 방식을 기본으로 쓰고, 기호열의 길이를 세야 할 때만 뒤의 방식으로 갈아탄다.
구조적 귀납법으로 다음을 증명하라. 모든 적형식에서 여는 괄호의 개수와 닫는 괄호의 개수가 같다.
풀이 보기
성질을 이름 붙여 두자. 𝜑 가 성질 𝖡 를 갖는다는 것은 𝜑 안의 여는 괄호 개수와 닫는 괄호 개수가 같다는 뜻이다. 갈래 일곱을 하나씩 본다.
기저. 문장문자에는 괄호가 없으므로 0 과 0 으로 같다. ⊥ 도 마찬가지다.
¬ 갈래.𝜑 가 𝖡 를 갖는다고 하자(귀납 가설). ¬𝜑 는 𝜑 앞에 괄호가 아닌 기호 하나를 붙인 것이므로 두 개수가 그대로다. 따라서 ¬𝜑 도 𝖡 를 갖는다.
이항 갈래.𝜑 와 𝜓 가 𝖡 를 갖는다고 하자. (𝜑∧𝜓) 의 여는 괄호는 두 재료의 여는 괄호에 하나를 더한 것이고 닫는 괄호도 그렇다. 같은 수에 같은 수를 더했으니 여전히 같다. 나머지 셋도 연결자 이름만 바꾸면 같은 글이다.
일곱 갈래가 모두 확인되었으므로 폐포 조항에 의해 모든 적형식이 𝖡 를 갖는다.
증명의 모양을 눈여겨보라. 어느 갈래에서도 특정한 식을 들여다보지 않았다. 본 것은 조항이 기호를 어떻게 붙이는가 하나뿐이다. 무한히 많은 식을 일곱 문단으로 덮는 방법이 이것이다.
예제 166
(가) 폐포 조항이 없다면 위 증명의 어느 문장이 성립하지 않는가. (나) 7장이 ⊥ 을 어휘에 더하기 전이라면 "모든 적형식에는 문장문자가 적어도 하나 나온다"가 참이었다. 지금은 어떤가. 구조적 귀납법의 어느 갈래가 깨지는지 짚어라.
풀이 보기
(가) 깨지는 것은 마지막 문장이다. 일곱 갈래를 확인하는 데까지는 폐포 조항이 필요 없다. 필요한 것은 "그러므로 모든 적형식이 성질을 갖는다"로 넘어가는 걸음이다. 폐포 조항이 없으면 두 조항 바깥에 적형식이 더 있을 수 있고, 그런 것에는 확인이 미치지 않는다. 5장이 𝑃∧∨𝑄 를 두고 "적형식이 아니라고 말할 근거가 폐포 조항뿐"이라고 했던 것과 같은 자리다.
뒤집어 말하면 구조적 귀납법은 폐포 조항을 증명 방법으로 옮겨 적은 것이다. 정의가 "조항으로 만들어진 것만"이라고 말했기 때문에 "조항마다 확인하면 전부"가 성립한다.
(나) 지금은 거짓이다. ⊥ 자신이 반례이고 ¬⊥ 도 그렇다. 깨지는 갈래는 기저다. 기저 갈래가 이제 둘로 갈라졌는데 그중 ⊥ 쪽에서 성질이 성립하지 않는다.
여기서 챙길 규율이 하나 있다. 어휘에 기호를 더하면 지금까지 구조적 귀납법으로 증명한 것을 전부 다시 확인해야 한다. 갈래가 하나 늘었기 때문이다. 7장이 "기호 하나를 더하는 일은 공짜가 아니다"라고 적은 값이 이것이다. 다행히 대부분의 성질은 새 갈래에서도 곧바로 통과한다 — 앞 예제의 𝖡 가 그랬다.
미뤄 둔 빚을 갚는다
도구가 섰으니 곧바로 쓴다. 5장부터 12장까지 "증명은 13장에서"라고 미뤄 둔 것이 다섯 있었고, 그중 셋을 여기서 끝까지 적는다. 건전성 증명이 실제로 쓰는 것도 그 안에 있다.
넷째 — 10장의 관련성 보조정리 — 는 아래 첫째 정리와 같은 주장의 다른 판본이라 그 자리에서 함께 처리한다. 다섯째 — 12장이 남긴 "꽉 찬 두 모형에서 동일성 없는 문장의 값이 같다" — 는 이 문서가 증명하지 않는다. 도구는 여기 있고 새로 필요한 생각도 없지만 갈래를 실제로 돌리지는 않는다. 이 절의 마지막 소절에서 뼈대를 적고 거기까지가 전부라는 것을 밝힌다. 미룬 것과 갚은 것을 섞어 세지 않는 편이 낫다.
6장의 빚 하나 — 값은 나오는 문자에만 달려 있다
6장은 배당이 문장문자 전체에 값을 준다고 정의했다. 문장문자는 무한히 많으므로 배당 하나가 정하는 값도 무한히 많다. 그런데 진리표는 몇 줄로 끝난다. 6장은 이것이 모순이 아닌 까닭을 말했지만 증명하지는 않았다.
정리(관련성). 두 배당 𝑣 와 𝑤 가 𝜑 에 나오는 모든 문장문자에 같은 값을 준다면 ¯𝑣(𝜑)=¯𝑤(𝜑) 이다.
뼈대를 말로 먼저.𝜑 의 값은 파스 트리의 잎에서 뿌리로 올라가며 계산된다. 잎에 놓이는 것은 𝜑 에 나오는 문장문자의 값뿐이고, 그 값들이 두 배당에서 같다면 위로 올라가는 계산도 단계마다 같은 값을 낸다. 이 이야기를 조항별로 나눠 적으면 증명이 된다.
증명.𝜑 에 대한 구조적 귀납법이다.
기저(문장문자).𝜑 가 문장문자 𝑃 이면 𝑃 는 자기 자신에 나오는 문장문자이므로 가정에 의해 𝑣(𝑃)=𝑤(𝑃) 다. 확장 배당의 기저 조항에 의해 ¯𝑣(𝑃)=¯𝑤(𝑃)
기저(⊥). 어떤 배당에서나 값이 F 이므로 같다. 가정을 쓸 일조차 없다
¬ 갈래.¬𝜑 에 나오는 문장문자는 𝜑 에 나오는 것과 같다. 그러니 귀납 가설의 조건이 𝜑 에 대해서도 채워져 ¯𝑣(𝜑)=¯𝑤(𝜑) 이고, ¬ 조항은 그 값 하나만 보므로 결과도 같다
이항 갈래.(𝜑∧𝜓) 에 나오는 문장문자는 𝜑 에 나오는 것과 𝜓 에 나오는 것을 합한 것이다. 그러니 조건이 두 재료 각각에 대해 채워지고, 귀납 가설이 ¯𝑣(𝜑)=¯𝑤(𝜑) 와 ¯𝑣(𝜓)=¯𝑤(𝜓) 를 준다. ∧ 조항은 그 두 값만 보므로 결과도 같다. 나머지 셋도 조항 이름만 바꾸면 같은 글이다
일곱 갈래가 모두 확인되었으므로 정리가 성립한다.
따름.𝜑 에 나오는 문장문자가 𝑛 개면 𝜑 의 값은 그 𝑛 개에 값을 주는 2𝑛 가지 방식으로 전부 결정된다. 나머지 무한히 많은 문자를 어떻게 정하든 값이 흔들리지 않는다. 진리표가 2𝑛 줄로 끝나는 근거가 이것이다. 6장이 첫 절에서 진 빚이 갚아졌다.
10장이 진 빚도 같은 정리의 다른 판본이다. 10장의 관련성 보조정리는 "𝜑 에 자유롭게 나타나는 모든 변수에 같은 값을 주는 두 배정은 같은 결과를 낸다"였다. 증명은 위와 같은 모양이고 갈래가 아홉으로 늘 뿐이다. 다만 한정사 갈래에서 한 걸음이 더 필요하다 — ∀𝑥𝜑 를 다룰 때 두 배정을 𝑔[𝑥↦𝑑] 와 ℎ[𝑥↦𝑑] 로 갈아 끼우고 나면 𝑥 에 대해서도 두 배정이 같아지므로 귀납 가설의 조건이 채워진다. 갈아 끼움이 조건을 넓혀 준다는 것이 그 갈래의 요령이다.
6장의 빚 둘 — 진리함수적 완전성
6장은 {¬,∧} 만으로 모든 진리함수를 표현할 수 있다고 하고 걸음 셋의 개요만 냈다. 그러면서 "'그 줄에서만 참'이라는 주장을 확인하려면 식의 구조에 대한 귀납이 필요하고 그 도구는 13장에서 세운다"고 적어 두었다. 여기서 적는다.
먼저 진술을 정확히 한다. 𝑛 항 진리함수란 진리값 𝑛 개를 받아 진리값 하나를 내놓는 함수다. 𝜑 가 문장문자 𝑃1,…,𝑃𝑛 만 쓴다면 방금 갚은 관련성 정리에 의해 𝜑 의 값은 그 𝑛 개의 값만으로 정해지므로, 식 하나가 𝑛 항 진리함수 하나를 정한다. 정리는 그 반대 방향이다.
정리(진리함수적 완전성).𝑛≥1 이라 하자. 모든 𝑛 항 진리함수 𝑓 에 대하여, 𝑃1,…,𝑃𝑛 과 ¬ 와 ∧ 만으로 이루어진 적형식 𝜑𝑓 가 있어 모든 배당 𝑣 에 대해 ¯𝑣(𝜑𝑓)=𝑓(𝑣(𝑃1),…,𝑣(𝑃𝑛)) 이다.
뼈대를 말로 먼저. 진리표에서 값이 T 인 줄을 하나 잡으면 그 줄을 꼭 집어내는 식을 적을 수 있다 — 그 줄에서 T 인 문자는 그대로, F 인 문자는 ¬ 을 붙여 전부 ∧ 로 묶는 것이다. 그런 식들을 "또는"으로 이으면 원하던 함수가 된다. 확인할 것은 둘이다. 줄 하나를 정말 꼭 집어내는가, 그리고 "또는"으로 잇는 일을 ¬ 와 ∧ 만으로 할 수 있는가.
걸음 하나 — 줄 하나를 꼭 집어내는 식. 진리표의 한 줄은 𝑃1,…,𝑃𝑛 에 값을 주는 방식이므로 함수 𝑟 하나로 볼 수 있다. 각 𝑖 에 대해 𝑟(𝑃𝑖)=T 이면 𝐿𝑖=𝑃𝑖, 아니면 𝐿𝑖=¬𝑃𝑖 로 놓고
𝛿𝑟=𝐿1∧𝐿2∧⋯∧𝐿𝑛
이라 하자. 괄호 규약에 따라 ∧ 는 왼쪽으로 묶인다. 주장. 모든 배당 𝑣 에 대해, ¯𝑣(𝛿𝑟)=T 인 것과 𝑣 가 𝑃1,…,𝑃𝑛 에서 𝑟 와 같은 값을 주는 것이 같다.
증명. 문자의 개수 𝑛 에 대한 자연수 귀납이다. 𝑛=1 이면 𝛿𝑟 은 𝑃1 이거나 ¬𝑃1 이고, 확장 배당의 문장문자 조항과 ¬ 조항이 곧바로 주장을 준다. 𝑛 에서 𝑛+1 로 갈 때는 𝛿𝑟=𝛿′∧𝐿𝑛+1 이다. 여기서 𝛿′ 은 앞의 𝑛 개로 만든 것이다. ∧ 조항은 두 재료가 모두 T 일 때만 T 이므로, ¯𝑣(𝛿𝑟)=T 인 것은 ¯𝑣(𝛿′)=T 이고 동시에 ¯𝑣(𝐿𝑛+1)=T 일 때다. 앞엣것은 귀납 가설에 의해 "앞의 𝑛 개에서 일치"이고, 뒤엣것은 𝑛=1 때와 같은 확인으로 "𝑃𝑛+1 에서 일치"다. 둘을 합치면 𝑛+1 개 전부에서 일치다.
걸음 둘 — 조립.𝑓 가 T 를 주는 줄을 𝑟1,…,𝑟𝑘 라 하자. 𝑘=0 이면, 곧 𝑓 가 어느 줄에서도 T 가 아니면 𝜑𝑓=𝑃1∧¬𝑃1 로 놓는다. ∧ 조항과 ¬ 조항에 의해 어떤 배당에서도 값이 F 이므로 요구가 채워진다. 𝑘≥1 이면 이렇게 놓는다.
𝜑𝑓=¬(¬𝛿𝑟1∧¬𝛿𝑟2∧⋯∧¬𝛿𝑟𝑘)
이 식에는 ¬ 와 ∧ 밖에 없다. 값을 확인한다. 괄호 안의 논리곱은 — 걸음 하나에서 쓴 것과 똑같은 자연수 귀납으로 — ¬𝛿𝑟1,…,¬𝛿𝑟𝑘 가 전부T 일 때만 T 다. 곧 어느 𝛿𝑟𝑗 도 T 가 아닐 때만 T 다. 바깥 ¬ 가 이것을 뒤집으므로 𝜑𝑓 는 어느 하나라도𝛿𝑟𝑗 가 T 일 때 T 다. 걸음 하나에 의해 그것은 𝑣 가 𝑟1,…,𝑟𝑘 가운데 하나와 일치한다는 것이고, 그 줄들이 바로 𝑓 가 T 를 주는 줄이므로 𝑓(𝑣(𝑃1),…,𝑣(𝑃𝑛))=T 라는 것과 같다. 두 조건이 같으므로 값이 같다.
따름.{¬,∧} 는 진리함수적으로 완전하다. 그러므로 이것을 담는 모임 — {¬,∧,∨} 도, 연결자 다섯 전부도 — 은 모두 완전하다. 6장이 둘째 걸음으로 둔 "∨ 를 드모르간으로 지운다"가 여기서는 따로 필요하지 않았다. 처음부터 그 꼴로 조립했기 때문이고, 왜 그 편이 나은지는 아래 예제가 따진다.
관련성 정리가 어디에 쓰였는지도 짚어 두자. 정리의 진술은 𝑛 개의 값을 받는 함수를 말하는데 배당은 문장문자 전체에 값을 준다. 그 둘을 잇는 것이 앞 소절의 정리다 — 𝜑𝑓 에 나오는 문장문자가 𝑃1,…,𝑃𝑛 뿐이므로 나머지 무한히 많은 문자를 어떻게 정하든 값이 흔들리지 않는다. 빚 하나가 다른 빚을 갚는 데 쓰였다.
예제 167
위 증명은 ∨ 를 한 번도 쓰지 않았다. 6장의 개요는 ∨ 로 이어 붙인 뒤 드모르간으로 하나씩 지우는 두 걸음이었다. (가) 두 길이 같은 기호열을 내놓는가. (나) 순서를 바꿔 얻은 것이 무엇인가.
풀이 보기
묻는 것은 두 길의 결과와 값어치이고, 확인하는 방법은 작은 경우를 실제로 밀어 보는 것이다.
(가) 아니다.𝑘=3 으로 해 보자. 괄호 규약에 따라 𝛿1∨𝛿2∨𝛿3 은 ((𝛿1∨𝛿2)∨𝛿3) 이다. 바깥 ∨ 부터 바꾸면 ¬(¬(𝛿1∨𝛿2)∧¬𝛿3) 이 되고, 안에 남은 ∨ 를 다시 바꾸면 ¬(¬¬(¬𝛿1∧¬𝛿2)∧¬𝛿3) 이 된다. 위에서 적은 ¬(¬𝛿1∧¬𝛿2∧¬𝛿3) 과 기호열로는 다르다. 값은 모든 배당에서 같지만 5장의 뜻으로 같은 식은 아니다.
(나) 문제는 안쪽 ∨ 를 바꾸는 걸음이다. 그 걸음은 식 안쪽에 있는 부분식 하나를 값이 같은 다른 식으로 갈아 끼우고 전체의 값이 그대로라고 주장한다. 그 주장 자체가 정리이고, 증명하려면 갈래 일곱을 도는 구조적 귀납이 또 한 번 필요하다 — "재료의 값이 같으면 결과의 값도 같다"를 조항마다 확인해야 한다. 처음부터 드모르간 꼴로 조립하면 그 정리를 쓸 일이 없다.
답이 말이 되는가. 증명이 짧아진 것은 요령이 아니라 빚을 새로 지지 않는 길을 고른 것이다. 6장의 순서를 그대로 따랐다면 갚아야 할 것이 하나 더 생겼을 것이고, 이 절은 빚을 갚는 절이지 늘리는 절이 아니다.
5장의 빚 — 유일 가독성
5장은 "모든 적형식은 정확히 한 가지 방식으로 만들어진다"를 정리라고만 적고 넘어갔다. 이 정리가 없으면 6장의 확장 배당 정의부터 무너진다. 조항마다 규칙을 하나씩 붙였는데 어느 조항이 쓰였는지가 하나로 정해지지 않으면 같은 식에 값이 둘 붙을 수 있기 때문이다.
뼈대를 말로 먼저. 식 하나를 손에 들고 맨 앞 기호를 본다. 문장문자나 ⊥ 이면 기저, ¬ 이면 ¬ 조항, 여는 괄호면 이항 조항이다. 세 갈래가 서로 겹치지 않으므로 마지막에 쓰인 조항은 첫 기호가 정한다. 남는 문제는 이항 조항일 때 두 재료를 어디서 끊느냐 하나뿐이고, 끊는 자리가 하나뿐임을 보이면 끝난다.
끊는 자리가 하나뿐인 까닭이 아래 보조정리다. 여기서 진부분 앞토막이란 비어 있지도 않고 전체도 아닌 앞부분을 말한다.
앞토막 보조정리. 어떤 적형식도 다른 적형식의 진부분 앞토막이 될 수 없다.
증명. 이번에는 기호열의 길이에 대한 귀납을 쓴다. 더 짧은 식들에 대해 성립한다고 가정하고, 적형식 𝜑 가 적형식 𝜓 의 진부분 앞토막이라 하여 모순을 끌어낸다. 둘은 첫 기호가 같다.
첫 기호가 문장문자나 ⊥ 이면 두 식 모두 그 기호 하나로 끝난다. 다른 조항의 결과는 ¬ 나 여는 괄호로 시작하기 때문이다. 그러면 𝜑=𝜓 라 진부분이 아니다
첫 기호가 ¬ 이면 𝜑=¬𝜑′ 이고 𝜓=¬𝜓′ 이며 𝜑′ 가 𝜓′ 의 진부분 앞토막이 된다. 둘 다 더 짧으므로 귀납 가설에 어긋난다
첫 기호가 여는 괄호이면 𝜑=(𝜑1∘𝜑2), 𝜓=(𝜓1∙𝜓2) 꼴이다. 𝜑1 과 𝜓1 은 둘 다 둘째 기호에서 시작하므로 한쪽이 다른 쪽의 앞토막이고, 귀납 가설이 진부분을 막으므로 𝜑1=𝜓1 이다. 그러면 연결자 자리가 겹쳐 ∘ 와 ∙ 가 같고, 남은 부분에 같은 논법을 되풀이하면 𝜑2=𝜓2 다. 결국 𝜑=𝜓 라 진부분이 아니다
세 갈래가 모두 막혔으므로 그런 𝜑 와 𝜓 는 없다.
이제 유일 가독성이 따라 나온다. 같은 기호열이 (𝜑1∘𝜑2) 로도 (𝜓1∙𝜓2) 로도 읽힌다고 하자. 𝜑1 과 𝜓1 중 하나가 다른 쪽의 앞토막인데 보조정리가 진부분을 막았으므로 둘이 같고, 이어서 연결자도 나머지 재료도 같아진다. 첫 기호가 조항을 정하고 보조정리가 재료를 정하므로 읽는 방법이 하나뿐이다. 5장이 "이 정리가 성립하는 이유가 괄호"라고 한 것이 위 논증의 셋째 갈래다.
예제 168
유일 가독성이 줄임말에는 성립하지 않는다는 것을 앞토막 보조정리로 설명하라. 5장이 "규약은 문법이 아니다"라고 못 박은 것과 무슨 관계인가.
풀이 보기
줄임말의 세계에서는 바깥 괄호가 없다. 그러면 𝑃 가 𝑃∧𝑄 의 진부분 앞토막이 되고, 𝑃∧𝑄 는 𝑃∧𝑄∨𝑅 의 진부분 앞토막이 된다. 보조정리가 곧바로 깨진다.
깨지면 무슨 일이 생기는가. 𝑃∧𝑄∨𝑅 를 이항 조항의 결과로 읽으려 할 때 왼쪽 재료를 𝑃 로 끊어도 되고 𝑃∧𝑄 로 끊어도 된다. 읽는 방법이 둘이고, 5장의 그림이 보인 두 파스 트리가 정확히 그 둘이다. 두 트리는 값도 다를 수 있다.
그래서 규약이 필요했다. 우선순위와 결합 방향은 여러 읽기 가운데 하나를 고르는 규칙이지, 읽기가 하나뿐임을 보장하는 규칙이 아니다. 보장은 괄호가 한다.
답이 말이 되는가. 5장은 "𝑃∧𝑄 는 적형식이 아니라 줄임말이다"라고 했고 왜 그 구분을 흐리면 안 되는지는 "13장에서 비싼 값을 치른다"고만 적었다. 값이 바로 이것이다. 줄임말을 적형식으로 인정하면 유일 가독성이 거짓이 되고, 유일 가독성이 없으면 확장 배당이 함수가 아니게 되며, 그러면 이 장의 정리를 진술할 대상 자체가 없다.
예제 169
관련성 정리의 증명에서 "잎에 놓이는 값이 같으니 당연하다"는 한 줄로 끝내면 왜 증명이 아닌가. 그리고 기저 갈래만 확인하고 나머지를 건너뛰면 실제로 무엇을 놓치는지 말하라.
풀이 보기
"당연하다"가 부족한 까닭은 그 문장이 올라가는 각 단계에 대해 아무 근거도 대지 않기 때문이다. 잎의 값이 같다는 것에서 뿌리의 값이 같다는 것으로 가려면 단계마다 "이 조항은 재료의 값만 보고 결과를 정한다"는 사실이 필요하고, 그 사실은 조항마다 따로 확인해야 한다. 확인해 보면 실제로 전부 통과하지만, 통과한다는 것과 통과함을 보였다는 것은 다르다.
기저만 확인하면 무엇을 놓치는가. 기저는 "문장문자 하나짜리 식"에 대한 주장일 뿐이다. ¬𝑃 에 대해서도, (𝑃∧𝑄) 에 대해서도 아무 말을 하지 않는다. 적형식의 대다수가 기저 바깥에 있다.
이것이 위험한 이유는 기저만 보면 성립하는데 갈래에서 깨지는 성질이 실제로 있다는 데 있다. 예를 들어 "식의 기호 수는 홀수다"는 문장문자에서 참이지만 (𝑃∧𝑄) 에서 거짓이다. 기저에서 참인 것과 모든 식에서 참인 것 사이에는 갈래 여섯만큼의 거리가 있다.
답이 말이 되는가. 구조적 귀납법이 값싼 방법으로 보이는 것은 확인할 것이 일곱뿐이기 때문인데, 그 일곱을 다 확인해야 값이 치러진다. 하나라도 건너뛰면 증명이 아니라 짐작이다.
갚지 않은 빚 — 12장의 꽉 찬 두 모형
다섯째 빚은 갚지 않는다. 그것을 감추지 않고 적어 둔다.
12장 "수 세기" 절은 술어의 해석을 모두 꽉 채운 두 모형 — 하나는 𝐷={1}, 다른 하나는 𝐷={1,2} — 을 놓고 = 가 없는 언어의 어떤 문장도 두 모형에서 값이 같다고 했다. 그리고 그 대목이 식의 구조를 따라가는 귀납이며 도구는 13장에서 세운다고 밝혔다. 도구는 섰다. 그러나 이 절은 그 귀납을 실제로 돌리지 않는다. 아래는 뼈대이고, 뼈대는 증명이 아니다.
먼저 진술을 고쳐 잡아야 한다. 문장에 대한 주장으로 두면 귀납이 돌지 않는다. 부분식에는 자유 변수가 있어 문장이 아니기 때문이다. 10장이 만족을 배정과 함께 정의한 이유가 여기서 다시 나온다. 그러니 이렇게 넓힌다 — = 가 나오지 않는 모든 적형식𝜑 와, M1 위의 임의의 배정 𝑔 와 M2 위의 임의의 배정 ℎ 에 대해, M1,𝑔⊨𝜑 인 것과 M2,ℎ⊨𝜑 인 것이 같다. 배정을 아무거나 잡아도 된다고 해 두는 것이 요점이고, 그래야 한정사 갈래가 통과한다.
갈래는 아홉이다. 원자식 갈래에서는 두 모형 모두 해석이 꽉 차 있으므로 어떤 항을 넣어도 참이다 — 양쪽이 참이니 같다. ⊥ 갈래는 양쪽에서 거짓이라 같다. 연결자 다섯 갈래는 조항이 재료의 참·거짓만 보므로 귀납 가설이 그대로 옮겨 준다. 생각할 곳은 한정사 둘뿐인데, 진술을 "임의의 배정에 대해"로 잡아 두었으므로 𝑔[𝑥↦𝑑] 도 ℎ[𝑥↦𝑒] 도 다시 임의의 배정이고, 두 정의역이 모두 비어 있지 않으므로 "어떤 원소가 있어"를 요구할 때 내놓을 것이 양쪽에 다 있다. 그래서 양쪽이 함께 성립하거나 함께 성립하지 않는다.
왜 여기서 멈추는가. 남은 일은 이 아홉 갈래를 앞의 세 정리처럼 한 줄씩 적어 내려가는 것이고 새로 필요한 생각은 없다. 그러나 적지 않은 것은 적은 것이 아니다. 이 문서는 이 정리를 뼈대까지만 둔 것으로 셈한다. 12장의 그 절을 읽을 때 "확인했다"가 아니라 "확인할 수 있다"로 읽어야 하고, 실제로 확인해 보고 싶다면 위의 아홉 갈래가 그 목록이다.
도출의 길이에 대한 귀납 — 건전성 증명의 틀
구조적 귀납법은 식에 대한 방법이다. 그런데 건전성이 말하는 것은 식이 아니라 도출에 대한 것이다. 그러니 귀납을 도출에 걸어야 한다.
도출은 줄의 유한한 목록이고 목록에는 길이가 있다. 그러면 자연수의 귀납법을 그 길이에 걸 수 있다. 실무에서는 같은 말을 이렇게 쓴다. 도출을 위에서 아래로 훑으며 줄마다 하나씩 확인한다. 각 줄은 자기보다 앞선 줄만 인용하므로, 앞선 줄들에 대해 성립한다고 가정하고 이 줄을 보이면 된다.
무엇을 확인하는가. 여기서 진술을 정확히 잡는 것이 이 절에서 가장 중요한 일이다. 도출의 각 줄에는 논리식이 하나씩 있고, 7장이 말한 대로 그 줄이 기대고 있는 것의 목록도 있다. 𝑖 번째 줄의 식을 𝜑𝑖 라 하고, 그 줄이 기대는 전제와 열린 가정을 모은 집합을 Γ𝑖 라 하자.
줄의 불변량. 도출의 모든 줄 𝑖 에 대하여 Γ𝑖⊨𝜑𝑖 이다.
<왼쪽 도출표의 세로 막대가 오른쪽 열의 Γ 를 정한다는 것 — 막대가 하나 늘면 Γ 에 식이 하나 들어가고, 막대가 끝나면 빠진다. 마지막 줄의 Γ 가 빈 것이 정리가 된다>[원본 보기]
이 불변량이 왜 정리를 주는지 먼저 확인하자. Γ⊢𝜑 라 하자. 정의에 의해 마지막 줄이 𝜑 이고 열린 가정이 전부 Γ 의 원소인 도출이 있다. 마지막 줄을 𝑛 번이라 하면 불변량이 Γ𝑛⊨𝜑 를 준다. 그리고 Γ𝑛⊆Γ 이므로 Γ 를 모두 참으로 만드는 배당은 그 부분인 Γ𝑛 도 모두 참으로 만들고, 따라서 𝜑 도 참으로 만든다. 즉 Γ⊨𝜑 다. 정리는 불변량의 마지막 줄일 뿐이다.
그리고 귀납이 확인할 것이 규칙 하나하나가 된다. 어떤 줄이든 근거는 셋 중 하나이기 때문이다.
전제이거나 가정인 줄. 그 줄의 𝜑𝑖 자신이 Γ𝑖 의 원소다. Γ𝑖 를 모두 참으로 만드는 배당은 당연히 𝜑𝑖 도 참으로 만들므로 Γ𝑖⊨𝜑𝑖 가 곧바로 성립한다. 확인 끝
규칙을 쓴 줄. 그 규칙이 인용한 줄은 모두 앞선 줄이므로 귀납 가설이 적용된다. 거기서 이 줄의 Γ𝑖⊨𝜑𝑖 를 끌어내야 한다. 이것이 규칙 열일곱 개로 갈라진다
그러므로 규칙 하나가 건전하다는 말의 뜻도 여기서 정해진다. 어떤 규칙이 건전하다는 것은 그 규칙이 인용한 줄들에 불변량이 성립할 때 결과 줄에도 불변량이 성립한다는 뜻이다. mcs 의 정의와 견주어 보라. mcs 는 "전제가 참이면 결론도 참"이라 했는데 여기서는 줄마다 딸린 가정 집합이 함께 움직인다. 그 차이가 방출 규칙 때문에 생긴다.
예제 170
아래 도출의 줄마다 Γ𝑖 를 적고 불변량 Γ𝑖⊨𝜑𝑖 를 손으로 확인하라.
줄
논리식
근거
1
│ 𝑃
가정
2
│ │ 𝑄
가정
3
│ │ 𝑃
1 R
4
│ 𝑄→𝑃
2–3 →I
5
𝑃→(𝑄→𝑃)
1–4 →I
풀이 보기
Γ𝑖 는 세로 막대가 정한다. 그 줄을 감싸는 막대가 연 가정을 모으면 된다.
1번 — Γ1={𝑃} 이고 𝜑1=𝑃 다. {𝑃}⊨𝑃 는 자명하다. 가정인 줄이므로 위 목록의 첫째 경우다.
2번 — Γ2={𝑃,𝑄}, 𝜑2=𝑄. 같은 이유로 성립한다.
3번 — Γ3={𝑃,𝑄}, 𝜑3=𝑃. R 규칙은 식도 가정 집합도 그대로 옮기므로 1번의 불변량이 그대로 통한다. {𝑃,𝑄}⊨𝑃 다.
4번 — 가정 𝑄 가 방출되어 Γ4={𝑃}, 𝜑4=𝑄→𝑃 다. {𝑃}⊨𝑄→𝑃 인가. 𝑣(𝑃)=T 인 배당을 잡으면 𝑄→𝑃 는 후건이 참이라 참이다. 성립한다.
5번 — 가정 𝑃 도 방출되어 Γ5=∅, 𝜑5=𝑃→(𝑄→𝑃) 다. ⊨𝑃→(𝑄→𝑃) 는 6장에서 항진명제로 확인한 식이다.
눈여겨볼 것은 Γ𝑖 가 줄어드는 지점이 정확히 방출이 일어나는 지점이라는 것이다. 그리고 줄어드는 만큼 식이 무거워진다 — 4번에서 𝑄 가 빠지는 대신 식에 𝑄→ 가 붙었다. 그 거래가 값을 바꾸지 않는다는 것이 다음 절에서 확인할 내용이다.
예제 171
(가) 불변량을 "마지막 줄에 대해서만" 진술하면 왜 귀납이 돌아가지 않는가. (나) Γ𝑖 를 "그때까지 열었던 모든 가정"으로 잡으면 어디서 틀리는가. 앞 예제의 5번 줄로 확인하라.
풀이 보기
(가) 귀납이 쓰는 것은 앞선 줄에 대한 가설이다. 마지막 줄에 대해서만 진술하면 중간 줄에 대해서는 아무것도 가정할 수 없고, 그러면 규칙을 확인할 때 재료 쪽에서 꺼내 쓸 것이 없다. 귀납으로 증명할 때는 증명하려는 것보다 넓은 진술을 세워야 가설이 쓸모를 갖는 경우가 많고 이것이 그 대표적인 예다.
(나) 앞 예제의 5번 줄에서 확인해 보자. 그때까지 열었던 가정은 𝑃 와 𝑄 둘이므로 그 방식으로는 Γ5={𝑃,𝑄} 가 된다. 그러면 불변량이 주장하는 것은 {𝑃,𝑄}⊨𝑃→(𝑄→𝑃) 이고, 이것도 참이기는 하다. 그러나 마지막 줄에서 정리를 끌어낼 때 문제가 생긴다. ⊢𝜑 를 보이려면 Γ𝑛 이 비어 있어야 하는데 방출된 가정이 계속 남아 있으므로 비는 일이 없다. 얻어지는 결론이 늘 "가정 몇 개에서"가 되어 정리를 하나도 얻지 못한다.
답이 말이 되는가. 두 물음이 같은 것을 다른 쪽에서 짚는다. 불변량은 너무 좁아도 안 되고 너무 헐거워도 안 된다. 줄 전부에 걸어야 귀납이 돌고, 열린 가정만 세어야 마지막 줄이 정리를 준다. 7장이 만들어 둔 "열린 가정" 장부가 여기에 정확히 들어맞는 것은 우연이 아니다 — 그 장부가 처음부터 이 일을 하라고 있는 것이다.
규칙별 확인 — 대표 넷
이제 실제로 확인한다. 전부 적으면 같은 글을 열일곱 번 쓰게 되므로 성격이 다른 넷만 제대로 하고 나머지는 표로 요약한다. 고른 넷은 →E(방출이 없는 규칙의 본), →I(방출), ¬I(⊥ 이 걸린 방출), IP(고전 논리가 걸린 자리)다.
→E — 방출이 없는 규칙의 본
상황.𝑖 번 줄이 𝜑→𝜓, 𝑗 번 줄이 𝜑 이고 𝑘 번 줄에 𝜓 를 적었다. 이 줄이 기대는 것은 두 재료가 기대던 것을 합친 것이므로 Γ𝑘=Γ𝑖∪Γ𝑗 다.
말로 먼저.Γ𝑘 를 참으로 만드는 배당은 Γ𝑖 도 Γ𝑗 도 참으로 만든다. 귀납 가설이 두 재료의 참을 주고, → 조항이 "전건이 참이고 후건이 거짓인 경우만 거짓"이었으니 후건이 참일 수밖에 없다.
확인. 배당 𝑣 가 Γ𝑘 의 원소를 모두 참으로 만든다고 하자. Γ𝑖⊆Γ𝑘 이므로 𝑣 는 Γ𝑖 도 모두 참으로 만들고, 귀납 가설 Γ𝑖⊨𝜑→𝜓 에 의해 ¯𝑣(𝜑→𝜓)=T 다. 같은 이유로 ¯𝑣(𝜑)=T 다. 6장의 → 조항은 전건이 T 이고 후건이 F 인 경우에만 F 를 주므로, 전건이 T 이고 전체가 T 이면 ¯𝑣(𝜓)=F 일 수 없다. 따라서 ¯𝑣(𝜓)=T 이고 Γ𝑘⊨𝜓 다.
이 확인이 mcs 3장이 전건 긍정에 대해 한 것과 같은 것이다. 달라진 것은 가정 집합 둘을 함께 끌고 다녔다는 점 하나뿐이다.
→I — 방출이 무엇을 하는가
상황.𝑖 번 줄에서 𝜑 를 가정으로 열었고 𝑗 번 줄에서 𝜓 를 얻은 뒤 𝑘 번 줄에 𝜑→𝜓 를 적었다. 방출이 일어났으므로 Γ𝑗⊆Γ𝑘∪{𝜑} 다.
말로 먼저. 귀납 가설이 주는 것은 "𝜑 를 함께 놓으면 𝜓 가 따라 나온다"이고, 보여야 할 것은 "𝜑 없이도 𝜑→𝜓 가 따라 나온다"이다. 이 둘이 같은 말이라는 것을 6장이 의미론적 연역정리로 이미 증명해 두었다. 7장이 "같은 문장이 두 번 나온 것이지 한 번 증명된 것이 아니다"라고 적어 둔 자리가 여기서 만난다.
확인. 배당 𝑣 가 Γ𝑘 를 모두 참으로 만든다고 하자. 두 경우로 나눈다.
¯𝑣(𝜑)=F 이면 → 조항에 의해 ¯𝑣(𝜑→𝜓)=T 다. 귀납 가설을 쓸 일도 없다
¯𝑣(𝜑)=T 이면 𝑣 는 Γ𝑘∪{𝜑} 를 모두 참으로 만든다. Γ𝑗 가 그 집합에 들어 있으므로 귀납 가설 Γ𝑗⊨𝜓 에 의해 ¯𝑣(𝜓)=T 이고, 그러면 ¯𝑣(𝜑→𝜓)=T 다
어느 경우든 참이므로 Γ𝑘⊨𝜑→𝜓 다.
<왼쪽 목록에서 빠진 식이 오른쪽 화살표의 앞자리에 그대로 나타난다는 것 — 방출은 무언가를 버리는 일이 아니라 같은 것을 다른 자리에 적는 일이고, 그 옮김이 값을 바꾸지 않는다는 보장이 6장의 연역정리다>[원본 보기]
¬I 와 IP — 마지막 한 걸음이 갈린다
두 규칙은 재료의 모양이 같다. 가정 하나를 열고 그 안에서 ⊥ 을 얻는 것. 다른 것은 마지막 한 걸음이고, 건전성 확인에서도 정확히 그 한 걸음만 갈린다.
¬I 의 확인.𝜑 를 가정해 ⊥ 을 얻고 ¬𝜑 를 적었으므로 Γ𝑗⊆Γ𝑘∪{𝜑} 다. 배당 𝑣 가 Γ𝑘 를 모두 참으로 만든다고 하자. 만약 ¯𝑣(𝜑)=T 이면 𝑣 는 Γ𝑘∪{𝜑} 를 모두 참으로 만들고, 귀납 가설 Γ𝑗⊨⊥ 에 의해 ¯𝑣(⊥)=T 여야 한다. 그런데 7장이 ¯𝑣(⊥)=F 를 정의로 못 박았다. 어긋난다. 그러므로 ¯𝑣(𝜑)=T 일 수 없고, 배당은 값을 하나 주므로 ¯𝑣(𝜑)=F 이며 ¬ 조항에 의해 ¯𝑣(¬𝜑)=T 다.
IP 의 확인.¬𝜑 를 가정해 ⊥ 을 얻고 𝜑 를 적었으므로 Γ𝑗⊆Γ𝑘∪{¬𝜑} 다. 배당 𝑣 가 Γ𝑘 를 모두 참으로 만든다고 하자. 만약 ¯𝑣(𝜑)=F 이면 ¬ 조항에 의해 ¯𝑣(¬𝜑)=T 이므로 𝑣 는 Γ𝑘∪{¬𝜑} 를 모두 참으로 만들고, 귀납 가설에 의해 ¯𝑣(⊥)=T 여야 한다. 어긋난다. 그러므로 ¯𝑣(𝜑)=F 가 아니고, 값이 둘뿐이므로¯𝑣(𝜑)=T 다.
마지막 문장에 밑줄을 긋자. IP 가 건전한 것은 배당이 원소 둘짜리 집합으로 가는 함수이기 때문이다. 값이 셋이었다면 "거짓이 아니다"에서 "참이다"로 갈 수 없다. 7장은 IP 만 성격이 다르다고 하면서 그 까닭을 "참과 거짓 말고 다른 것은 없다"는 전제에서 찾았다. 그 전제가 의미론의 어느 낱말인지가 여기서 드러난다 — 공역이 {T,F} 라는 것. 19장이 값을 셋으로 늘리면 이 확인이 막히고, 그래서 IP 가 가장 먼저 버려진다.
하나 더 짚는다. 위의 두 확인은 "만약 …이면 어긋난다, 그러므로 아니다" 꼴이었다. 메타언어에서 귀류법을 썼다. 대상언어의 IP 가 건전함을 보이는 데 메타언어의 같은 논법을 쓴 것이다. 그러므로 건전성 증명은 증명 체계를 정당화하지 않는다. 같은 종류의 추론을 이미 쓰면서, 그것을 형식화한 체계가 어긋나지 않았음을 확인할 뿐이다. 이 한계가 17장에서 다시 문제가 된다.
예제 172
∨E 의 건전성을 확인하라. 재료가 셋이고 방출이 둘이므로 →I 보다 한 겹 복잡하다.
풀이 보기
상황.ℎ 번 줄이 𝜑∨𝜓 이고, 𝜑 를 가정한 갈래가 𝑖 번 줄에서 𝜒 에 이르고, 𝜓 를 가정한 갈래가 𝑗 번 줄에서 𝜒 에 이르렀다. 결과 줄 𝑘 에 𝜒 를 적는다. 두 가정이 방출되므로 Γ𝑖⊆Γ𝑘∪{𝜑} 이고 Γ𝑗⊆Γ𝑘∪{𝜓} 이며 Γℎ⊆Γ𝑘 다.
말로 먼저. 논리합이 참이면 두 조각 중 적어도 하나가 참이다. 어느 쪽이 참이든 그 쪽 갈래의 귀납 가설이 𝜒 를 준다. 경우 나누기가 규칙의 모양에도 확인의 모양에도 그대로 나타난다.
확인. 배당 𝑣 가 Γ𝑘 를 모두 참으로 만든다고 하자. Γℎ⊆Γ𝑘 이므로 귀납 가설에 의해 ¯𝑣(𝜑∨𝜓)=T 이고, ∨ 조항에 의해 ¯𝑣(𝜑)=T 이거나 ¯𝑣(𝜓)=T 이다.
앞 경우라면 𝑣 가 Γ𝑘∪{𝜑} 를 모두 참으로 만들고 Γ𝑖 가 그 안에 있으므로 귀납 가설이 ¯𝑣(𝜒)=T 를 준다. 뒤 경우도 Γ𝑗 로 같은 논증을 하면 된다. 어느 경우든 ¯𝑣(𝜒)=T 이므로 Γ𝑘⊨𝜒 다.
답이 말이 되는가. →I 의 확인도 경우 둘로 나뉘었고 이번에도 둘이었다. 다만 갈라지는 근거가 다르다 — 거기서는 우리가¯𝑣(𝜑) 의 두 값으로 나눴고, 여기서는 ∨ 조항이 두 갈래를 준다. 규칙의 모양이 확인의 모양을 정한다는 것이 이 절 내내 되풀이되는 관찰이다.
예제 173
(가) ⊥E 의 건전성을 확인하라. (나) 누군가 "𝜑∨𝜓 에서 𝜑"라는 규칙을 체계에 넣자고 한다. 건전성 확인이 정확히 어디서 막히는지 보여라.
풀이 보기
(가)𝑗 번 줄이 ⊥ 이고 𝑘 번 줄에 아무 식 𝜓 를 적었다. 방출이 없으므로 Γ𝑘=Γ𝑗 다. 귀납 가설은 Γ𝑗⊨⊥ 이다. 그런데 ¯𝑣(⊥)=F 이 정의이므로 Γ𝑗 를 모두 참으로 만드는 배당이 하나도 없다. 그러면 "그런 배당은 전부 𝜓 도 참으로 만든다"는 요구를 어길 배당이 없으므로 Γ𝑘⊨𝜓 가 공허하게 성립한다.
6장의 폭발이 그대로 돌아왔다. 6장은 만족가능하지 않은 집합이 무엇이든 귀결로 갖는다고 했고, 7장은 그것을 규칙으로 못 박았다. 그 규칙이 건전한 근거가 6장의 그 사실이다.
(나) 확인을 시작해 보면 된다. Γ𝑘=Γ𝑗 이고 귀납 가설은 Γ𝑗⊨𝜑∨𝜓 다. 배당 𝑣 가 Γ𝑘 를 모두 참으로 만든다고 하자. 그러면 ¯𝑣(𝜑∨𝜓)=T 이고, ∨ 조항에 의해 둘 중 적어도 하나가 T 다. 여기서 ¯𝑣(𝜑)=T 를 끌어내야 하는데 조항은 어느 쪽인지 말해 주지 않는다. 막히는 자리가 정확히 여기다.
막힌 곳이 반례를 만드는 자리이기도 하다. 𝑣(𝑃)=F,𝑣(𝑄)=T 로 두면 𝑃∨𝑄 는 참이고 𝑃 는 거짓이다. 즉 {𝑃∨𝑄}⊨𝑃 가 아니므로 이 규칙은 건전하지 않다.
답이 말이 되는가. 7장이 "논리합에서 한쪽을 떼어내는 규칙은 없고 있어서도 안 된다"고 적었을 때 근거로 든 것은 "𝑃∨𝑄 가 성립한다고 𝑃 가 성립하는 것은 아니다"였다. 그 직관이 확인 절차의 어느 줄에서 걸리는지를 이제 정확히 말할 수 있다. 규칙이 건전한지 아닌지를 느낌이 아니라 절차로 가릴 수 있게 된 것이 이 절의 소득이다.
한정사 둘 — 변수 조건이 무슨 일을 하는지 여기서 밝혀진다
술어논리로 넘어가면 의미론 쪽이 배당에서 모형으로 바뀐다. 불변량도 따라 바뀐다 — Γ𝑖 를 모두 참으로 만드는 모든 모형이 𝜑𝑖 도 참으로 만든다는 것. 연결자 규칙의 확인은 앞 절의 글에서 "배당"을 "모형"으로 바꾸면 그대로다. 10장이 연결자 조항을 6장에서 글자만 바꿔 옮겼기 때문이다. ⊥ 조항도 함께 옮겨 두었으므로 — 어떤 모형과 배정에서도 ⊥ 은 만족되지 않는다 — ¬I, ⊥E, IP 의 확인도 기댈 자리를 그대로 갖는다.
새로운 것은 한정사 규칙 넷이고, 그중 조건이 붙은 둘이 이 절의 몫이다. 11장이 문법으로만 적어 둔 변수 조건이 여기서 비로소 이유를 얻는다.
확인을 시작하기 전에 도구가 둘 필요하다. 둘 다 구조적 귀납으로 확인하는 사실이고, 확인의 모양이 앞 절의 관련성 정리와 같으므로 여기서는 진술만 두고 쓴다.
이름 바꾸기 보조정리. 개체상수 𝑐 가 𝜑 에 나타나지 않으면, 𝑐 의 해석만 다른 두 모형에서 𝜑 의 값이 같다. 관련성 정리의 개체상수 판본이다 — 값을 계산할 때 실제로 쓰이는 것은 식에 나오는 기호의 해석뿐이다
대입 보조정리. 모형 M∗ 에서 𝑐 의 해석이 𝑑 라면, M∗⊨𝜑[𝑐/𝑥] 인 것과 M∗,𝑔[𝑥↦𝑑]⊨𝜑 인 것이 같다. 9장의 대입은 𝑥 의 자유 나타남을 𝑐 로 바꾸는 일이고 10장의 갈아 끼움은 𝑥 자리에 𝑑 를 꽂는 일이므로, 𝑐 가 𝑑 를 가리키면 둘이 같은 결과를 낸다
∀I — 조건 둘이 각각 한 걸음씩 맡는다
상황.𝑗 번 줄이 𝜑[𝑐/𝑥] 이고 𝑘 번 줄에 ∀𝑥𝜑 를 적었다. 방출이 없으므로 Γ𝑘=Γ𝑗 다. 조건은 둘 — 𝑐 가 (가) Γ𝑘 의 어느 식에도 없고 (나) 결과 ∀𝑥𝜑 에도 없다.
말로 먼저. 보여야 할 것은 "정의역의 모든 원소가 그렇다"인데 손에 든 것은 "이름 𝑐 가 가리키는 하나가 그렇다"뿐이다. 다리를 놓는 방법은 이렇다. 원소를 아무거나 하나 잡고 𝑐 가 그것을 가리키도록 해석을 바꾼 모형을 만든다. 조건 (가)가 그렇게 바꿔도 전제가 여전히 참임을 보장하고, 조건 (나)가 그렇게 얻은 결과를 원래 모형으로 되돌리게 해 준다.
확인. 모형 M=⟨𝐷,𝐼⟩ 이 Γ𝑘 의 문장을 모두 참으로 만든다고 하자. 정의역의 원소 𝑑 를 아무거나 잡는다.
M∗ 를 M 과 똑같되 𝐼∗(𝑐)=𝑑 인 모형이라 하자. 여기서 조건 (가)가 일한다.𝑐 가 Γ𝑘 의 어느 식에도 없으므로 이름 바꾸기 보조정리에 의해 M∗ 도 Γ𝑘 를 모두 참으로 만든다
귀납 가설 Γ𝑘⊨𝜑[𝑐/𝑥] 에 의해 M∗⊨𝜑[𝑐/𝑥] 다
대입 보조정리에 의해 M∗,𝑔[𝑥↦𝑑]⊨𝜑 다
여기서 조건 (나)가 일한다.𝑐 가 ∀𝑥𝜑 에 없으므로 𝜑 에도 없다. 이름 바꾸기 보조정리를 반대 방향으로 쓰면 M,𝑔[𝑥↦𝑑]⊨𝜑 다
𝑑 를 아무거나 잡았는데 결론이 나왔으므로 모든 𝑑∈𝐷 에 대해 성립하고, 10장의 ∀ 조항에 의해 M⊨∀𝑥𝜑 다.
<가운데 모형 ℳ* 를 거쳐 갔다가 되돌아오는 길이라는 것 — 갈 때 쓰는 것이 조건 (가)이고 올 때 쓰는 것이 조건 (나)다. 조건 하나에 걸음 하나가 대응한다>[원본 보기]
11장은 조건 둘을 적어 두고 왜 그래야 하는지는 예로만 보였다. 이유가 위의 네 걸음이다. 조건 (가)가 없으면 첫 걸음이 막히고 조건 (나)가 없으면 넷째 걸음이 막힌다.
∃E — 조건 셋에 걸음 셋
같은 요령이고 조건이 하나 더 있다. ∃𝑥𝜑 가 주는 것은 "그런 원소가 하나 있다"이므로 그 원소를 𝑑 라 하고, 𝑐 가 𝑑 를 가리키도록 해석을 바꾼 M∗ 를 만든다. 그다음은 ∀I 와 같다. 조건 셋이 각각 한 걸음을 맡는다.
조건
확인의 어느 걸음에서 쓰이는가
𝑐 가 열린 가정에 없다
해석을 바꾼 M∗ 도 Γ𝑘 를 여전히 참으로 만든다
𝑐 가 재료 ∃𝑥𝜑 에 없다
증거 원소 𝑑 를 뽑을 때 쓴 𝜑 가 M∗ 에서도 같은 뜻이다. 그래야 M∗⊨𝜑[𝑐/𝑥] 를 얻는다
𝑐 가 결론 𝜓 에 없다
갈래에서 얻은 M∗⊨𝜓 를 원래 모형 M 으로 되돌린다
세 줄이 모두 이름 바꾸기 보조정리를 쓰고 쓰는 자리만 다르다. 변수 조건이란 결국 "이 이름의 해석을 마음대로 바꿔도 지금 붙잡고 있는 것들이 흔들리지 않는다"는 요구였다는 것이 이 표의 요지다. 11장이 "문법으로 옮긴다"고 한 그 말의 원본이 여기 있다.
나머지는 같은 방식이다
남은 규칙도 모두 같은 방식으로 확인된다. 재료 줄들에 귀납 가설을 적용하고, 그 규칙에 대응하는 의미론 조항을 한 번 쓴다. 규칙과 조항이 하나씩 짝지어져 있다는 것이 자연연역의 설계에서 오는 이득이다.
규칙
무엇을 쓰는가
∧I · ∧E
∧ 조항. 방출 없음. →E 와 같은 글이다
∨I
∨ 조항. 한쪽이 참이면 전체가 참이라는 절반만 쓴다
∨E
∨ 조항이 주는 두 갈래. 방출이 둘이라 →I 의 요령을 두 번 쓴다
↔I · ↔E
↔ 조항. 두 값이 같은지만 보므로 확인이 짧다
¬E
¬ 조항과 ⊥ 의 값. 𝜑 와 ¬𝜑 를 함께 참으로 만드는 배당이 없으므로 공허하게 성립한다
⊥E
¯𝑣(⊥)=F. 재료 쪽 집합을 만족하는 배당이 없어 공허하게 성립한다
R
식도 가정 집합도 그대로다. 확인할 것이 없다
∀E
∀ 조항과 대입 보조정리. 모든 원소가 그러하니 𝐼(𝑎) 도 그러하다. 조건 없음
∃I
∃ 조항과 대입 보조정리. 증거로 내놓는 원소가 𝐼(𝑎) 다. 조건 없음
=I
12장의 = 조항. 어느 모형에서나 𝑎 의 지시체는 자기 자신과 같다. 재료가 없으므로 귀납 가설도 쓰지 않는다
=E
= 조항. 두 지시체가 같은 원소이면 그 자리를 바꿔도 값이 같다는 것을 다시 구조적 귀납으로 확인한다
열일곱 개와 = 규칙 둘이 모두 확인되었다. 불변량이 모든 줄에서 성립하고, 마지막 줄이 정리를 준다. 건전성 정리가 증명되었다.
예제 174
∀I 의 조건 (가)를 어긴 한 줄짜리 도출 — 𝐹𝑎 (전제) / ∀𝑥𝐹𝑥 (∀I) — 을 놓고, 위의 확인 절차가 정확히 어느 걸음에서 막히는지 적어라.
풀이 보기
여기서 일반화하려는 이름은 𝑎 이고 Γ𝑘={𝐹𝑎} 다.
확인의 첫 걸음은 "M 이 Γ𝑘 를 참으로 만든다고 하고, 𝑎 의 해석만 𝑑 로 바꾼 M∗ 도 Γ𝑘 를 참으로 만든다"였다. 그 근거가 이름 바꾸기 보조정리인데, 보조정리가 요구하는 것은 𝑎 가 Γ𝑘 의 식에 나타나지 않을 것이다. 여기서는 Γ𝑘={𝐹𝑎} 에 𝑎 가 버젓이 들어 있다. 첫 걸음에서 막힌다.
막힌 것이 아니라 실제로 거짓이 된다는 것도 확인할 수 있다. 𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝐹)={1} 인 M 은 𝐹𝑎 를 참으로 만든다. 여기서 𝐼∗(𝑎)=2 로 바꾼 M∗ 는 𝐹𝑎 를 거짓으로 만든다. 해석을 바꾸자 전제가 무너졌으니 그다음 걸음에서 쓸 귀납 가설이 없다.
답이 말이 되는가. 11장은 이 도출을 두고 "전제가 지목한 대상을 임의의 대상인 양 일반화했다"고 말했다. 그 말을 확인 절차의 낱말로 옮기면 "그 이름의 해석을 바꾸면 전제가 참이기를 그친다"가 된다. 11장의 설명과 이 장의 걸음이 같은 것을 두 가지 말로 하고 있다.
예제 175
11장이 보인 여섯 줄짜리 위법 도출을 다시 본다. 1. ∀𝑥∃𝑦𝐺𝑥𝑦 (전제) / 2. ∃𝑦𝐺𝑐𝑦 (1 ∀E) / 3. |𝐺𝑐𝑐1 (가정) / 4. |∀𝑥𝐺𝑥𝑐1 (3 ∀I) / 5. |∃𝑦∀𝑥𝐺𝑥𝑦 (4 ∃I) / 6. ∃𝑦∀𝑥𝐺𝑥𝑦 (2, 3–5 ∃E). 줄의 불변량이 어느 줄에서 처음 깨지는지 짚고, 그것이 마지막 줄에 어떻게 번지는지 설명하라.
풀이 보기
줄마다 Γ𝑖 를 적고 불변량을 확인한다.
1번 — Γ1={∀𝑥∃𝑦𝐺𝑥𝑦} 이고 식이 자기 자신이므로 성립한다. 2번 — Γ2 도 같고 ∀E 는 건전하므로 성립한다. 3번 — Γ3={∀𝑥∃𝑦𝐺𝑥𝑦,𝐺𝑐𝑐1} 이고 가정인 줄이므로 성립한다.
4번에서 처음 깨진다. 주장하는 것은 Γ3⊨∀𝑥𝐺𝑥𝑐1 인데, 열린 가정에 있는 것은 "𝑐 가 𝑐1 과 𝐺 관계에 있다"뿐이므로 다른 원소에 대해서는 아무것도 말해 주지 않는다. 반례 모형은 곧바로 만들어진다. 𝐷={1,2}, 𝐼(𝑐)=1, 𝐼(𝑐1)=1, 𝐼(𝐺)={⟨1,1⟩,⟨2,2⟩} 로 두면 Γ3 의 두 문장이 모두 참인데 ∀𝑥𝐺𝑥𝑐1 은 𝑑=2 에서 어긋나 거짓이다.
어떻게 번지는가. 5번 줄은 4번을 인용하므로 재료가 이미 틀린 상태에서 규칙을 쓴다.∃I 자체는 건전하지만, 건전하다는 것은 "재료가 옳으면 결과도 옳다"일 뿐이지 틀린 재료를 고쳐 주지는 않는다. 6번 줄의 ∃E 도 마찬가지다. 그래서 마지막 줄이 주장하는 {∀𝑥∃𝑦𝐺𝑥𝑦}⊨∃𝑦∀𝑥𝐺𝑥𝑦 는 10장이 모형으로 이미 부정한 것이 된다.
답이 말이 되는가. 11장이 "규칙 하나에 난 구멍이 체계 전체를 못 쓰게 만든다"고 한 것을 이제 정확히 말할 수 있다. 불변량은 줄마다 이어 붙는 사슬이고, 사슬은 가장 약한 고리에서 끊어진다. 건전성 증명이 규칙 하나도 빼놓지 않고 확인해야 하는 까닭이 이것이다.
따름정리 — 건전성으로 무엇을 하는가
정리를 얻었으니 그것으로 무엇을 할 수 있는지 챙긴다. 쓸모는 대부분 대우에 있다.
따름 하나(일관성).Γ 가 만족가능하면 Γ⊢⊥ 이 아니다. 즉 만족가능한 집합은 일관적이다.
증명은 두 줄이다. Γ⊢⊥ 이라 하자. 건전성에 의해 Γ⊨⊥ 이다. 그런데 ¯𝑣(⊥)=F 이 정의이므로 ⊥ 을 참으로 만드는 배당은 없고, 따라서 Γ 를 모두 참으로 만드는 배당도 없다. 즉 Γ 는 만족가능하지 않다. 대우를 취하면 주장이 나온다.
6장과 7장이 각각 정의해 두고 "같은 집합을 가려내는지는 나중에"라고 미뤄 둔 두 성질이 여기서 한쪽 방향으로 이어졌다. 반대 방향 — 일관적이면 만족가능하다 — 은 14장의 몫이고, 그것이 완전성 증명의 핵심 보조정리가 된다.
따름 둘(증명할 수 없음).Γ⊨𝜑 가 아니면 Γ⊢𝜑 도 아니다.
이것이 건전성의 실제 쓸모다. 7장이 이 문서의 가장 큰 구멍으로 "증명 체계는 있음에는 값싸지만 없음에는 아무 도움이 안 된다"를 들었다. 도출을 아무리 시도해 실패해도 "아직 못 찾았다"일 뿐이었다. 이제 다르다. 반례 배당 하나 또는 반례 모형 하나를 내놓으면 도출이 없음이 확정된다.
<왼쪽 길에는 끝이 없고 오른쪽 길은 세 걸음에 끝난다는 것 — 반례를 하나 만드는 유한한 작업이 도출 전체의 부재라는 무한한 주장을 확정한다>[원본 보기]
절차로 적으면 세 걸음이다. 첫째, Γ 를 모두 참으로 만들면서 𝜑 는 거짓으로 만드는 배당(또는 모형)을 하나 만든다. 둘째, 그것으로 Γ⊨𝜑 가 아님을 확정한다. 셋째, 건전성의 대우로 Γ⊢𝜑 가 아님을 결론짓는다.
따름 셋. 이 체계에서 ⊢⊥ 이 아니다. 즉 체계 자체가 일관적이다. 빈 집합은 만족가능하므로 — 어떤 배당이든 빈 집합의 원소를 모두 참으로 만든다 — 따름 하나가 곧바로 준다. 규칙 열일곱 개가 서로 부딪혀 아무것이나 다 증명해 버리는 사태는 일어나지 않는다.
마지막 따름에 단서를 하나 달아 둔다. 이 일관성 증명은 의미론을 쓴다. 배당이라는 것이 있고 모든 논리식에 값이 하나씩 정해진다는 것을 밑에 깔고 있다. 17장이 문제 삼는 것은 다른 물음이다 — 체계가 자기 안에서 자기의 일관성을 증명할 수 있는가. 그 물음의 답은 여기서 얻은 것과 성격이 전혀 다르다.
예제 176
11장이 확정하지 못하고 남긴 물음을 여기서 닫아라. {∀𝑥𝐹𝑥→∀𝑥𝐺𝑥}⊢∀𝑥(𝐹𝑥→𝐺𝑥) 인가?
풀이 보기
11장은 도출을 못 찾았다고만 했고, 대신 반례 모형을 하나 만들어 두었다. 그것을 그대로 쓴다.
𝐷={1,2}, 𝐼(𝐹)={1}, 𝐼(𝐺)=∅ 로 두자. 전제를 본다. ∀𝑥𝐹𝑥 는 𝑑=2 에서 어긋나 거짓이므로 조건문 전체가 공허하게 참이다. 결론을 본다. ∀𝑥(𝐹𝑥→𝐺𝑥) 는 𝑑=1 에서 𝐹𝑥 가 참이고 𝐺𝑥 가 거짓이라 조건문이 거짓이므로 전체가 거짓이다.
전제가 참이고 결론이 거짓인 모형을 찾았으므로 {∀𝑥𝐹𝑥→∀𝑥𝐺𝑥}⊨∀𝑥(𝐹𝑥→𝐺𝑥) 가 아니다. 건전성의 대우에 의해 {∀𝑥𝐹𝑥→∀𝑥𝐺𝑥}⊢∀𝑥(𝐹𝑥→𝐺𝑥) 도 아니다.
두 줄 사이가 이 장이 놓은 다리다. 앞줄은 의미론의 사실이고 뒷줄은 증명 체계의 사실이며, 11장에서는 앞줄에서 뒷줄로 건너갈 수단이 없었다.
답이 말이 되는가. 얻은 것의 크기를 재어 보자. 도출은 무한히 많고 "그중 하나도 목표에 이르지 않는다"는 주장을 도출을 하나씩 살펴 확인할 방법은 없다. 그런데 원소 둘짜리 모형 하나가 그 주장을 확정했다. 두 층을 이었을 때 생기는 이득이 이 크기다.
예제 177
규칙을 하나도 두지 않은 체계, 즉 어떤 줄도 규칙으로는 얻을 수 없고 전제와 가정만 적을 수 있는 체계를 생각하자. (가) 이 체계는 건전한가. (나) 그렇다면 건전성은 좋은 체계임을 얼마나 보장하는가.
풀이 보기
(가) 건전하다. 이 체계에서 Γ⊢𝜑 가 성립하는 것은 𝜑 가 Γ 의 원소일 때뿐이고, 그때 Γ⊨𝜑 는 자명하게 성립한다. 불변량을 확인할 줄이 전제와 가정뿐이라 이 장의 증명 가운데 첫 경우 하나로 끝난다.
(나) 거의 보장하지 않는다. 건전성이 말하는 것은 거짓을 증명하지 않는다뿐이고, 아무것도 증명하지 않는 체계가 그 조건을 가장 쉽게 통과한다. 규칙을 줄일수록 건전하기는 쉬워진다.
그러니 건전성은 절반이다. 나머지 절반은 "참인 것을 빠뜨리지 않는가"이고 그것이 14장의 완전성이다. 두 정리가 함께 있어야 ⊢ 와 ⊨ 가 같은 것을 가려낸다고 말할 수 있다.
답이 말이 되는가. 두 정리의 방향이 서로를 견제한다는 점을 보라. 건전성은 규칙을 늘리는 것을 막고 완전성은 규칙을 줄이는 것을 막는다. 7장에서 규칙 열세 개를 고를 때 "이만하면 되겠다"고 여기며 골랐던 그 감각의 두 쪽이 이제 정리 두 개가 되었다.
이 장에서 새로 나온 것
용어 · 기호
뜻
건전성 정리
Γ⊢𝜑 이면 Γ⊨𝜑. 증명 체계로 얻는 것은 의미론이 인정하는 것이다
규칙의 건전성
그 규칙이 인용한 줄들에 불변량이 성립하면 결과 줄에도 성립한다. mcs 3장의 정의를 방출 규칙까지 넓힌 것
체계의 건전성
규칙의 건전성 열일곱 개를 귀납으로 이어 붙인 것. 3장이 예고한 셋째 뜻
구조적 귀납법
기저 갈래와 조항 갈래를 모두 확인하면 모든 적형식에서 성립한다. 폐포 조항을 증명 방법으로 옮긴 것
갈래의 개수
정의의 조항 수가 정한다. 명제논리 일곱, 술어논리 아홉, = 를 넣으면 열
복잡도에 대한 귀납
파스 트리 높이에 자연수 귀납법을 건 것. 구조적 귀납법과 같은 것을 다르게 적은 것
길이에 대한 귀납
기호열의 길이나 도출의 줄 수에 자연수 귀납법을 건 것. 앞토막 보조정리와 건전성 증명이 쓴다
줄의 불변량
도출의 모든 줄 𝑖 에 대해 Γ𝑖⊨𝜑𝑖. 건전성 증명이 실제로 증명하는 것
Γ𝑖
𝑖 번 줄이 기대고 있는 전제와 열린 가정의 집합. 방출이 일어나면 줄어든다
관련성 정리
식의 값은 그 식에 나오는 문장문자에만 달려 있다. 6장의 빚을 갚았다
진리함수적 완전성
{¬,∧} 만으로 모든 진리함수를 표현할 수 있다. 6장의 빚을 갚았다
앞토막 보조정리
어떤 적형식도 다른 적형식의 진부분 앞토막이 아니다. 유일 가독성의 바탕
유일 가독성
적형식마다 읽는 방법이 하나다. 5장의 빚을 갚았다
이름 바꾸기 보조정리
식에 나오지 않는 개체상수의 해석을 바꿔도 값이 같다. 변수 조건이 쓰는 도구
대입 보조정리
𝑐 의 해석이 𝑑 이면 𝜑[𝑐/𝑥] 의 참과 𝑥 자리에 𝑑 를 꽂은 𝜑 의 참이 같다
만족가능하면 일관적
건전성의 따름. 반대 방향은 14장
증명할 수 없음의 확정
Γ⊨𝜑 가 아니면 Γ⊢𝜑 도 아니다. 반례 하나로 도출의 부재가 확정된다
체계의 일관성
⊢⊥ 이 아니다. 다만 이 증명은 의미론을 쓴다 — 17장의 물음과 다르다
챙겨 갈 것은 넷이다.
층이 바뀌었다. 정리의 문장에 대상언어의 기호가 하나도 없고, 증명 수단도 규칙 열일곱 개가 아니라 평범한 수학의 논법이다. 이런 주장을 5장이 메타정리라 불렀다
도구는 하나이고 거는 자리만 다르다. 식에 걸면 구조적 귀납법, 도출에 걸면 줄에 대한 귀납이다. 둘 다 "유한 번 만들어졌다"는 정의의 조항에서 정당성을 얻는다
변수 조건은 해석을 바꿀 자유를 요구한다.∀I 의 조건 둘과 ∃E 의 조건 셋이 확인 절차의 걸음 하나씩에 정확히 대응한다. 11장이 문법으로 적어 둔 것의 이유가 이것이다
건전성의 쓸모는 대우에 있다. 반례 하나로 "증명할 수 없다"가 확정된다. 그러나 건전성만으로는 좋은 체계임이 보장되지 않는다 — 아무것도 증명하지 않는 체계도 건전하다
14장이 나머지 절반을 맡는다. Γ⊨𝜑 이면 Γ⊢𝜑 인가. 방향이 뒤집히면 증명의 성격도 뒤집힌다. 이 장은 손에 든 도출을 따라가며 확인하면 됐지만, 14장은 아무것도 손에 없는 상태에서 도출을 만들어 내야 한다. 그래서 방법이 완전히 다르다 — 도출을 직접 만드는 대신 모형을 만든다. 일관적인 집합에서 모형을 지어 올리는 헨킨 구성이 그것이고, 이 장이 갚은 관련성 정리와 이름 바꾸기 보조정리가 거기서 다시 쓰인다.
완전성
13장이 다리 하나를 놓았다. Γ⊢𝜑 이면 Γ⊨𝜑 이다. 규칙을 이어 붙여 얻은 것은 모든 모형에서 참이다. 증명한 것은 참이다.
이 장은 그 화살표를 거꾸로 놓으려 한다. Γ⊨𝜑 이면 Γ⊢𝜑 인가. 말로 하면 참인데 증명할 수 없는 것이 있는가. 없다는 것이 이 장의 정리이고 이름이 완전성(completeness)이다.
이 장에서 답할 질문은 다섯이다.
규칙 열일곱 개가 무한히 많은 모형을 전부 따라잡는다는 것이 어떻게 가능한가. 먼저 그럴 리 없어 보이는 이유부터
손댈 곳이 없어 보이는 이 주장을 어떻게 손댈 수 있는 모양으로 바꾸는가
일관된 집합 하나를 받아 모형 하나를 지어내는 방법
술어논리에서는 무엇이 더 필요한가. 어디가 어렵고 어떻게 넘는가
두 다리가 다 놓이면 무엇이 따라 나오고, 무엇은 따라 나오지 않는가
13장에서 가져오는 것은 넷이다. 첫째, 건전성 정리 그 자체 — 이 장의 결과와 짝을 이뤄야 뜻이 생긴다. 둘째, 13장이 따름정리로 적어 둔 만족가능하면 일관적이다 — 이 장이 증명할 것이 정확히 그 역이다. 셋째, 구조적 귀납법과 그 사촌인 복잡도에 대한 귀납. 넷째, 술어논리 쪽에서 쓸 도구 둘 — 식의 값은 그 식에 나오는 기호에만 달려 있다는 관련성 정리와, 𝑐 의 해석이 𝑑 이면 𝜑[𝑐/𝑥] 의 참이 𝑥 자리에 𝑑 를 꽂은 것의 참과 같다는 대입 보조정리다. 13장이 이 둘을 갚아 두지 않았으면 이 장의 마지막 절이 굴러가지 않는다.
앞 장들에서도 셋을 가져온다. 5장의 가산성(적형식 전체에 번호를 붙일 수 있다), 7장의 도출의 유한성(Γ⊢𝜑 이면 유한한 부분집합에서도 도출된다), 그리고 11장의 변수 조건이다. 셋 다 이 장에서 결정적인 자리에 한 번씩 쓰인다.
왜 이것이 놀라운 주장인가
건전성은 놀랍지 않았다. 규칙을 고를 때 우리는 이미 뜻을 보고 골랐고, 13장이 한 일은 그 고름이 정말 맞았는지 규칙 열일곱 개를 하나씩 확인한 것이다. 확인할 목록이 있었다.
완전성에는 목록이 없다. 이 주장은 "우리가 빠뜨린 규칙이 하나도 없다"는 말인데, 빠뜨린 것이 없음을 보이려면 빠질 수 있었던 것 전체를 훑어야 한다. 그 전체가 무엇인지 우리는 모른다.
그리고 저울 양쪽에 놓인 것의 크기가 너무 다르다.
<왼쪽 기둥에 적힌 것은 유한하거나 셀 수 있고 오른쪽 기둥에 적힌 것은 끝이 없다. 그런데도 완전성은 둘이 정확히 같은 것을 가려낸다고 주장한다>[원본 보기]
세 갈래로 의심해 볼 수 있다.
세는 것이 어긋난다. 도출은 유한한 기호열이므로 도출 전체에 번호를 붙일 수 있다 — 5장이 적형식에 대해 한 논법이 그대로 통한다. 모형은 그렇지 않다. 정의역 크기마다 모형이 있고 무한한 정의역도 있다. 셀 수 있는 것이 셀 수 없는 것을 전부 따라잡는다는 말로 들린다
규칙은 국소적인데 주장은 전역적이다.∧I 는 ∧ 하나만 보고 ∀E 는 한정사 하나만 본다. 그런 조각들을 이어 붙여 "모든 모형에서"라는 주장에 닿는다는 것이 이상하다
확인 비용이 다르다.⊢ 는 있음의 주장이라 종이 한 장이면 확인이 끝나고, ⊨ 는 전부에 대한 주장이라 확인이 끝나지 않는다. 값이 이렇게 다른 둘이 같은 것을 가려낸다는 것도 이상하다
의심이 풀리는 자리를 미리 적어 둔다. 완전성 증명은 모형을 세지 않는다. 일관된 집합 하나를 받아 모형 하나를 지어낼 뿐이고, 지어낸 모형은 언제나 가산이다. 셀 수 없는 것은 증명 어디에도 나오지 않는다. 첫째 의심은 그래서 헛다리이고, 그 사실이 뒤에서 대가로 돌아온다 — 15장이 그 대가를 센다.
예제 178
규칙 목록을 손댄다고 해 보자. (가) ∨E 를 목록에서 빼면 건전성과 완전성 가운데 어느 쪽이 위태로워지는가. (나) "어떤 𝜑 에서든 𝜓 를 적어도 된다"는 규칙을 새로 더하면 어느 쪽이 위태로워지는가. (다) 두 답에서 무엇을 읽어낼 수 있는가.
풀이 보기
먼저 규칙을 손대면 ⊢ 가 어느 쪽으로 움직이는지 보자. 규칙을 빼면 도출이 줄고 ⊢ 로 얻는 쌍이 줄어든다. 규칙을 더하면 늘어난다.⊨ 는 규칙과 무관하므로 꿈쩍도 하지 않는다.
(가) 완전성이 위태로워진다. 남은 규칙은 여전히 뜻에 맞으므로 13장의 확인이 그대로 통과한다. 건전성은 안전하다. 그런데 ⊢ 가 줄었으므로 ⊨ 는 성립하는데 ⊢ 는 안 되는 쌍이 생길 수 있다.
(나) 건전성이 위태로워진다.⊢ 가 늘기만 했으므로 완전성은 안전하다. 그러나 새 규칙은 뜻에 맞지 않는다 — 𝑃⊢𝑄 가 되어 버리는데 𝑃⊨𝑄 는 성립하지 않는다.
(다) 두 정리가 규칙 목록을 위아래에서 조인다. 건전성은 "규칙이 너무 많지 않다"고 말하고 완전성은 "규칙이 너무 적지 않다"고 말한다. 둘을 합치면 목록이 정확히 맞다는 뜻이 된다. 어느 한쪽만으로는 아무 말도 되지 않는다 — 규칙을 전부 없애면 건전성만은 공짜로 성립하고, 아무 식이나 적게 하면 완전성만은 공짜로 성립한다.
예제 179
앞에서 도출 전체에는 번호를 붙일 수 있고 모형 전체에는 붙일 수 없다고 했다. 그런데도 완전성이 성립한다. 어디가 모순이 아닌가?
풀이 보기
모순이 아닌 까닭은 완전성이 도출과 모형을 짝지어 준다고 말한 적이 없기 때문이다.
완전성이 말하는 것은 두 관계가 같다는 것이다. ⊢ 도 ⊨ 도 "집합 Γ 와 식 𝜑 의 쌍"을 받아 성립하거나 안 하거나를 답하는 관계이고, 완전성은 두 관계가 같은 쌍에서 성립한다고 말한다. 모형은 ⊨ 의 정의 안에서 조건을 훑는 데 쓰일 뿐 세어야 할 대상이 아니다.
실제로 증명이 하는 일을 보면 더 분명하다. 뒤에서 우리는 모형을 하나만 만든다. 게다가 그 모형은 늘 가산이다. 셀 수 없는 모형은 증명 안에 한 번도 등장하지 않는다.
답이 말이 되는가. 여기서 짚어 둘 것이 하나 있다. 증명이 늘 가산 모형만 만든다는 것은 다르게 읽으면 일관적인 집합은 언제나 가산 모형을 갖는다는 주장이다. 실수 전체에 대해 이야기하려고 아무리 많은 문장을 적어도 가산 모형 하나가 따라붙는다는 뜻이고, 이것이 15장에서 대가로 청구된다.
대우로 바꾼다 — 완전성은 모형을 짓는 일이다
원래 형태 "Γ⊨𝜑 이면 Γ⊢𝜑"에는 손댈 곳이 없다. 전제로 받는 것이 "반례 모형이 없다"인데, 없다는 사실에서 도출을 만들어 내려면 어디서 첫 줄을 적어야 할지 알 수 없다.
이 장에서 가장 중요한 전환이 여기다. 주장을 세 번 고쳐 적으면 할 일이 생긴다.
<오른쪽 칸이 어떻게 달라지는지를 보라 — ‘ 없음을 보여라 ’ 가 ‘ 만들어라 ’ 로 바뀐다. 마지막 형태에는 φ 가 아예 없다>[원본 보기]
걸음을 하나씩 확인한다.
대우.Γ⊢𝜑 가 아니면 Γ⊨𝜑 도 아니다. 이제 만들 것이 반례 모형으로 정해졌다
짐을 왼쪽으로.Γ⊢𝜑 가 아닌 것과 Γ∪{¬𝜑} 가 일관적인 것은 같은 말이다. 그리고 Γ⊨𝜑 가 아닌 것과 Γ∪{¬𝜑} 가 모형을 갖는 것도 같은 말이다
𝜑 를 지운다. 그러면 남는 것은 집합 하나에 대한 주장뿐이다
그렇게 도착하는 것이 이 장이 실제로 증명할 정리다.
모형 존재 정리. 일관적인 논리식 집합은 모형을 갖는다.
말로 옮기면 "모순을 끌어낼 수 없는 이야기에는 그 이야기가 참이 되는 세계가 있다"이다. 이제 할 일이 분명하다. 집합 하나를 받아 모형 하나를 지어라. 남은 절 넷이 그 일을 한다.
예제 180
Γ⊢𝜑 가 아닌 것과 Γ∪{¬𝜑} 가 일관적인 것이 같은 말임을 두 방향 다 보여라. 어느 방향에서 IP 를 쓰는가?
풀이 보기
뼈대. 한쪽은 "𝜑 를 얻었으면 ¬𝜑 와 부딪힌다"이고 다른 쪽은 "¬𝜑 에서 모순이 나면 𝜑 를 적어도 된다"이다. 둘 다 규칙 하나씩이다.
Γ⊢𝜑 이면 Γ∪{¬𝜑} 는 비일관적이다.𝜑 를 얻는 도출을 적은 뒤 열린 가정으로 놓인 ¬𝜑 와 함께 ¬E 를 쓰면 ⊥ 이 나온다. 열린 가정은 전부 Γ∪{¬𝜑} 안에 있으므로 정의 그대로 비일관적이다. 대우를 취하면 일관적이면 Γ⊢𝜑 가 아니다.
Γ∪{¬𝜑} 가 비일관적이면 Γ⊢𝜑 이다.⊥ 에 이르는 도출이 있다. 그 도출에서 ¬𝜑 를 전제로 쓰는 대신 가정으로 열어 같은 줄들을 적고, 마지막에 IP 로 그 가정을 방출하면 𝜑 가 나온다. 열린 가정은 이제 Γ 뿐이다.
줄
논리식
근거
1
│ ¬𝜑
가정
⋮
│ ⋮
Γ 와 가정 1 에서
k
│ ⊥
k+1
𝜑
1–k IP
IP 는 둘째 방향에서 쓴다. 이것을 기억해 둘 값어치가 있다. 이 장 전체가 둘째 방향 위에 서 있고, 따라서 완전성 증명은 IP 없이는 지금 모습으로 굴러가지 않는다. 7장에서 IP 만 성격이 다르다고 못 박고 19장에서 그것을 빼면 직관주의가 된다고 예고했는데, 그때 완전성 증명도 통째로 다시 써야 하는 이유가 여기 있다.
예제 181
모형 존재 정리와 완전성 정리가 서로에게서 따라 나옴을 보여라.
풀이 보기
뼈대. 한 방향은 반례 모형을 만들어 Γ⊨𝜑 에 부딪히게 하는 것이고, 다른 방향은 모형이 없는 집합에 폭발을 적용하는 것이다.
모형 존재 정리에서 완전성으로.Γ⊨𝜑 라 하고 Γ⊢𝜑 가 아니라고 해 보자. 앞 예제로 Γ∪{¬𝜑} 가 일관적이다. 모형 존재 정리가 그 집합에 모형 M 을 준다. M 은 Γ 를 전부 참으로 만들면서 ¬𝜑 도 참으로 만들므로 𝜑 를 거짓으로 만든다. Γ⊨𝜑 에 어긋난다. 그러므로 Γ⊢𝜑 다.
완전성에서 모형 존재 정리로.Γ 가 모형을 갖지 않는다고 하자. 그러면 Γ 를 전부 참으로 만드는 모형이 하나도 없으므로 Γ⊨⊥ 이 공허하게 성립한다 — 6장의 폭발이다. 완전성으로 Γ⊢⊥ 이고, 이는 Γ 가 비일관적이라는 뜻이다. 대우를 취하면 일관적인 집합은 모형을 갖는다.
답이 말이 되는가. 두 방향 어디에도 새 아이디어가 없다는 것이 요점이다. 고쳐 적는 일만 했다. 그런데도 증명할 수 있는 모양과 없는 모양이 갈렸다. 논리학에서 흔히 있는 일이고, 이 장에서는 특히 극적이다.
극대 일관 집합 — 값이 다 정해질 때까지 키운다
명제논리부터 완주한다. 지어야 할 모형은 배당 하나다.
그런데 배당은 문장문자 전체에 값을 주는 함수인데 Γ 는 그만큼을 정해 주지 않는다. Γ={𝑃→𝑄} 를 보자. 𝑃 의 값을 무엇으로 해야 하는가. Γ 는 말해 주지 않는다. 𝑅 은 아예 나오지도 않는다.
그래서 먼저 Γ 를 키운다. 값이 정해지지 않은 자리가 남지 않을 때까지, 그러나 일관성은 잃지 않으면서.
정의. 논리식 집합 Γ∗ 가 극대 일관 집합이라는 것은 다음 둘이 성립한다는 뜻이다.
Γ∗ 는 일관적이다. 즉 Γ∗⊢⊥ 이 아니다
𝜑∉Γ∗ 인 어떤 𝜑 에 대해서도 Γ∗∪{𝜑} 는 비일관적이다
둘째 조항이 "극대"다. 하나라도 더 넣으면 일관성이 깨진다는 뜻이고, 다르게 말하면 넣을 수 있는 것은 이미 다 넣었다는 뜻이다. 이 집합이 갖는 성질이 아래 표인데, 표를 보는 순간 눈치챌 것이 있다.
성질
내용
증명에 쓰는 규칙
연역적 닫힘
Γ∗⊢𝜑 이면 𝜑∈Γ∗
도출 이어 붙이기
부정
𝜑∈Γ∗ 이거나 ¬𝜑∈Γ∗ 이고 둘 다는 아니다
¬I, ¬E
모순
⊥∉Γ∗
정의 그대로
논리곱
𝜑∧𝜓∈Γ∗ 인 것은 둘 다 들어 있을 때
∧I, ∧E
논리합
𝜑∨𝜓∈Γ∗ 인 것은 적어도 하나가 들어 있을 때
∨I, ∨E
함의
𝜑→𝜓∈Γ∗ 인 것은 𝜑 가 없거나 𝜓 가 있을 때
→I, →E, ⊥E
동치
𝜑↔𝜓∈Γ∗ 인 것은 둘 다 있거나 둘 다 없을 때
↔I, ↔E
눈치챌 것은 이것이다. 오른쪽 내용 칸이 6장의 진리표 조항과 한 줄씩 같다.¬ 의 진리표는 "𝜑 가 거짓일 때 참"이었고 여기서는 "𝜑 가 없을 때 있다"다. ∧ 의 진리표는 "둘 다 참일 때 참"이었고 여기서는 "둘 다 있을 때 있다"다. "참"을 "Γ∗ 에 들어 있다"로 바꿔 읽으면 표 두 개가 겹친다. 이 겹침이 완전성 증명의 전부다.
연역적 닫힘부터 확인하자. 뼈대는 도출 두 벌을 이어 붙이는 것이다.Γ∗⊢𝜑 인데 𝜑∉Γ∗ 이라 하자. 극대성으로 Γ∗∪{𝜑} 는 비일관적이므로 거기서 ⊥ 에 이르는 도출이 있다. 그 도출이 𝜑 를 열린 가정으로 쓰는데, 우리는 𝜑 를 Γ∗ 에서 도출할 수 있다. 그러니 앞에 그 도출을 붙여 𝜑 를 줄 하나로 만들면 열린 가정이 Γ∗ 안으로만 남고 마지막 줄은 여전히 ⊥ 이다. Γ∗⊢⊥ 이 되어 일관성에 어긋난다.
예제 182
문장문자가 𝑃 와 𝑄 둘뿐인 축소판 언어를 생각하자. Γ={𝑃→𝑄} 를 확장하는 극대 일관 집합은 몇 개인가? 각각을 무엇으로 알아볼 수 있는가?
풀이 보기
뼈대. 극대 일관 집합은 모든 식에 대해 그 식이 들었는지 아닌지를 정해야 한다. 부정 성질에 따라 𝑃 와 𝑄 각각에 대해 "들었다"와 "¬ 가 들었다" 가운데 정확히 하나가 정해지므로, 그 두 선택이 나머지를 전부 결정한다.
선택은 넷이다. 그중 𝑃 는 들고 𝑄 는 안 든 경우는 탈락한다 — 그러면 ¬𝑄 가 들고, 함의 성질에 따라 𝑃→𝑄 가 들 수 없는데 Γ 의 원소이므로 반드시 들어야 한다.
남는 것은 셋이다. 𝑃 와 𝑄 둘 다 든 것, ¬𝑃 와 𝑄 가 든 것, ¬𝑃 와 ¬𝑄 가 든 것.
알아보는 방법이 요점이다. 셋은 각각 𝑣(𝑃)=𝑣(𝑄)=T, 𝑣(𝑃)=F,𝑣(𝑄)=T, 𝑣(𝑃)=𝑣(𝑄)=F 인 배당에 대응하고, 그 배당은 정확히 𝑃→𝑄 의 진리표에서 참이 나온 세 줄이다.
답이 말이 되는가. 극대 일관 집합이 배당과 일대일로 짝지어지는 것처럼 보인다. 실제로 그렇고, 그것이 다음다음 절의 진리 보조정리다. 다만 여기서 보인 것은 문장문자가 둘뿐인 유한한 경우이고, 문장문자가 무한히 많으면 "선택이 넷" 같은 셈이 통하지 않는다. 그래서 확장이 존재한다는 것부터 따로 증명해야 한다.
예제 183
Γ∗ 가 극대 일관 집합일 때 다음을 증명하라. (가) 𝜑∈Γ∗ 이거나 ¬𝜑∈Γ∗ 이고 둘 다는 아니다. (나) 𝜑∨𝜓∈Γ∗ 이면 𝜑 나 𝜓 가운데 적어도 하나가 Γ∗ 에 있다.
풀이 보기
(가) 뼈대. 둘 다 들면 ¬E 로 곧장 ⊥ 이다. 하나도 안 들면 극대성이 ¬𝜑 를 도출해 주고 닫힘이 그것을 집어넣는다.
둘 다는 아니다 — 𝜑 와 ¬𝜑 가 모두 Γ∗ 에 있으면 두 줄을 전제로 적고 ¬E 를 쓰면 ⊥ 이다. 일관성에 어긋난다.
적어도 하나는 든다 — 𝜑∉Γ∗ 라 하자. 극대성으로 Γ∗∪{𝜑} 가 비일관적이므로 𝜑 를 가정으로 열어 ⊥ 에 이를 수 있고, ¬I 로 그 가정을 방출하면 Γ∗⊢¬𝜑 다. 연역적 닫힘으로 ¬𝜑∈Γ∗.
(나) 뼈대. 둘 다 없다고 해 보고 경우 나누기로 모순을 끌어낸다. (가)가 여기서 쓰인다.
𝜑∉Γ∗ 이고 𝜓∉Γ∗ 라 하자. (가)에 의해 ¬𝜑∈Γ∗ 이고 ¬𝜓∈Γ∗ 다. 그러면 Γ∗ 안에 𝜑∨𝜓, ¬𝜑, ¬𝜓 셋이 다 있다.
줄
논리식
근거
1
𝜑∨𝜓
전제
2
¬𝜑
전제
3
¬𝜓
전제
4
│ 𝜑
가정
5
│ ⊥
4, 2 ¬E
6
│ 𝜓
가정
7
│ ⊥
6, 3 ¬E
8
⊥
1, 4–5, 6–7 ∨E
Γ∗⊢⊥ 이므로 일관성에 어긋난다. 그러므로 적어도 하나는 들어 있다.
답이 말이 되는가. 두 성질의 성격 차이를 보자. (가)는 극대성이 없으면 성립하지 않는다 — 그냥 일관적인 집합은 𝜑 도 ¬𝜑 도 안 가질 수 있다. (나)의 어려운 방향도 (가)를 거치므로 극대성에 기댄다. 반대로 (나)의 쉬운 방향과 논리곱 성질은 연역적 닫힘만 있으면 된다. 극대성이 정확히 어디에 필요한지 알아 두면 뒤에서 헷갈리지 않는다.
린덴바움 보조정리 — 확장은 반드시 존재한다
앞 절은 극대 일관 집합이 무엇인지 말했을 뿐 그런 것이 있다고 말하지 않았다. 이 절이 그것을 보인다.
린덴바움 보조정리. 일관적인 집합 Γ 는 어떤 극대 일관 집합 Γ∗ 에 포함된다.
뼈대는 하나다. 논리식을 한 줄로 세워 놓고 앞에서부터 하나씩 "넣어도 일관적인가"를 물어 넣거나 건너뛴다. 끝까지 물은 뒤 지금까지 넣은 것을 전부 합친다.
한 줄로 세울 수 있다는 것이 5장의 가산성이다. 적형식 전체에 1,2,3,… 을 빠짐없이 붙일 수 있으므로 𝜑1,𝜑2,𝜑3,… 로 늘어놓을 수 있다. 여기서 그 사실이 처음으로 일을 한다.
<계단이 오른쪽으로만 자라고 왼쪽으로는 결코 줄지 않는다는 것, 그리고 건너뛴 칸이 있어도 그 부정이 이미 들어 있다는 것>[원본 보기]
구성.Γ0=Γ 로 놓고, 𝑛≥0 에 대해
Γ𝑛+1={Γ𝑛∪{𝜑𝑛+1}Γ𝑛∪{𝜑𝑛+1}이일관적이면Γ𝑛그렇지않으면
로 정하고 Γ∗=Γ0∪Γ1∪Γ2∪⋯ 로 둔다. 확인할 것이 셋이다.
Γ⊆Γ∗.Γ0 이 합집합에 들어 있다
Γ∗ 는 일관적이다. 여기가 급소다. 아래에서 따로 본다
Γ∗ 는 극대다.𝜑∉Γ∗ 라 하자. 𝜑 는 어떤 번호 𝑛+1 을 가지므로 그 단계에서 넣지 않은 것이고, 그것은 Γ𝑛∪{𝜑} 가 비일관적이었다는 뜻이다. 단조성으로 더 큰 Γ∗∪{𝜑} 도 비일관적이다
급소를 본다. Γ∗ 는 무한 집합이고 각 단계마다 일관성을 지켰다는 것만으로는 합집합의 일관성이 따라 나오지 않는다. 무한히 많은 조각이 각각 괜찮아도 다 모으면 나빠질 수 있기 때문이다. 이 걱정을 없애는 것이 7장의 도출의 유한성이다.
예제 184
Γ∗ 가 일관적임을 증명하라. 어느 사실을 어디서 쓰는가?
풀이 보기
뼈대. 비일관적이라고 해 보면 ⊥ 에 이르는 도출이 하나 있다. 도출은 유한하므로 그것이 인용한 가정도 유한하고, 유한 개의 원소는 어느 한 단계에 이미 다 들어와 있다. 그러면 그 단계가 이미 비일관적이었다는 말이 된다.
증명.Γ∗⊢⊥ 이라 하자. 7장에서 못 박은 대로 도출은 줄의 유한한 목록이므로 열린 가정으로 인용된 식도 유한 개다. 그것들을 모은 유한 집합을 Δ 라 하면 Δ⊆Γ∗ 이고 Δ⊢⊥ 이다.
Δ 의 원소는 각각 어느 단계에서 Γ∗ 에 들어왔다. 원소가 유한 개이므로 그 단계 번호 가운데 가장 큰 것이 있다. 그것을 𝑁 이라 하면 Δ⊆Γ𝑁 이다. 사슬이 커지기만 하므로 앞 단계의 원소도 Γ𝑁 에 그대로 있다.
단조성에 의해 Γ𝑁⊢⊥ 이다. 그런데 구성 방식상 Γ𝑁 은 일관적이다 — Γ0=Γ 가 일관적이고, 각 단계는 일관적일 때만 원소를 더했다. 모순이다. 따라서 Γ∗⊢⊥ 이 아니다.
"가장 큰 번호가 있다"가 유한성을 쓰는 자리다.Δ 가 무한하면 번호에 최댓값이 없을 수 있고 논증이 그 자리에서 무너진다. 15장의 컴팩트성 정리가 여기서 미리 얼굴을 내민다 — 무한한 것에 대한 주장을 유한한 조각으로 되돌리는 이 동작이 컴팩트성의 내용 그 자체다.
예제 185
(가) 적형식이 가산이 아니었다면 위 구성의 어디가 무너지는가. (나) 이 구성은 Γ∗ 를 실제로 계산해 주는 절차인가?
풀이 보기
(가) 구성은 𝜑1,𝜑2,… 라는 줄 세우기 위에 서 있다. 그것이 있어야 "𝑛 번째 단계"라는 말이 뜻을 갖고, 모든 식이 언젠가 한 번은 물어진다는 것이 보장된다. 가산이 아니면 자연수로 번호를 다 붙일 수 없으므로 어떤 식은 영원히 물어지지 않고, 그러면 극대성이 깨진다.
덧붙이면 이 경우에도 확장은 존재한다. 다만 자연수 대신 초한 순서를 따라 같은 일을 하거나 초른 보조정리를 써야 하고, 그것은 이 문서가 세운 도구 밖이다. 우리가 가산으로 끝낼 수 있는 것은 5장이 어휘를 그렇게 정해 두었기 때문이다.
(나) 절차가 아니다. 단계마다 "Γ𝑛∪{𝜑𝑛+1} 이 일관적인가"를 판정해야 하는데, 그 판정은 "⊥ 에 이르는 도출이 하나도 없다"를 확인하는 일이다. 7장이 짚은 대로 없음은 시도해 보아서는 확정되지 않는다. 게다가 단계가 무한히 많아 끝나지도 않는다.
답이 말이 되는가. 이것이 이 장 전체의 성격을 미리 보여 준다. 완전성 증명은 존재를 보이는 논증이지 무엇을 만들어 내는 방법이 아니다. 증명이 끝나도 손에 쥐는 도출은 하나도 없다. 마지막 절에서 이 점을 다시 다룬다.
집합에서 배당을 읽어낸다 — 명제논리 완주
극대 일관 집합 Γ∗ 가 손에 있다. 이제 배당을 만든다. 방법은 눈에 보이는 대로다.
정의. 배당 𝑣 를 이렇게 정한다. 문장문자 𝑃 에 대해 𝑣(𝑃)=T 인 것은 𝑃∈Γ∗ 일 때, 그리고 그때뿐이다.
이것이 함수로 잘 정의되는지 확인해 두자. 문장문자 하나하나에 대해 "Γ∗ 에 들어 있다"는 성립하거나 안 하거나 둘 중 하나이므로 값이 정확히 하나씩 정해진다. 6장이 요구한 대로 문장문자 전체에 값이 주어진다.
이제 이 배당이 Γ∗ 를 정말 참으로 만드는지 보아야 한다. 문장문자에 대해서는 정의로 맞춰 놓았지만 𝑃→(𝑄∧𝑅) 같은 복잡한 식은 어떤가.
진리 보조정리. 모든 적형식 𝜑 에 대해, ¯𝑣(𝜑)=T 인 것과 𝜑∈Γ∗ 인 것이 같다.
뼈대는 한 문장이다. 6장의 진리표 조항과 앞 절의 극대 일관 집합 성질이 한 줄씩 짝을 이루므로, 밑에서 맞으면 위에서도 맞는다.
<왼쪽 사다리는 의미론이 세웠고 오른쪽 사다리는 규칙 열일곱 개가 세웠는데 가로대가 하나도 어긋나지 않는다는 것>[원본 보기]
증명. 13장의 구조적 귀납법을 식의 구조에 대해 돌린다. 확인할 갈래는 5장의 조항 여섯에 7장이 더한 ⊥ 을 합쳐 일곱이다.
문장문자 — ¯𝑣(𝑃)=𝑣(𝑃) 이고 배당의 정의가 곧 주장이다
⊥ — ¯𝑣(⊥)=F 이고 ⊥∉Γ∗ 이다. 양쪽 다 성립하지 않으므로 "같다"가 참이다
¬𝜑 — ¯𝑣(¬𝜑)=T 는 ¯𝑣(𝜑)=F 와 같고, 귀납 가정으로 𝜑∉Γ∗ 와 같고, 부정 성질로 ¬𝜑∈Γ∗ 와 같다
나머지 넷 — ∧,∨,→,↔ 각각에서 왼쪽은 6장의 조항, 가운데는 귀납 가정, 오른쪽은 앞 절의 성질이다. 걸음이 똑같다
보조정리가 서면 나머지는 짧다. Γ⊆Γ∗ 이므로 Γ 의 원소는 전부 Γ∗ 에 있고, 보조정리에 의해 𝑣 에서 전부 참이다. 𝑣 가 Γ 의 모형이다. 명제논리의 모형 존재 정리가 증명되었고, 앞 절의 고쳐 적기를 되짚어 올라가면 완전성이 나온다.
mcs 가 증명 없이 지나간 자리
이 절이 방금 증명한 것에는 이음매가 하나 있다. Mathematics for Computer Science 의 논리식 장은 명제 대수의 규칙 열두 개를 세운 뒤 그 규칙만으로 모든 동치를 증명할 수 있다는 것이 알려져 있다고 한 문장으로 적고 넘어간다. 표준형이 같은 것과 동치인 것이 서로 필요충분이라는 논법을 스케치했을 뿐 증명은 하지 않았다.
그 주장의 이름이 완전성이고, 증명하는 자리가 여기다. 다만 체계가 달라 옮겨 읽어야 한다. mcs 의 체계는 식을 식으로 다시 쓰는 등식 계산이고 이 문서의 체계는 자연연역이다. 그러나 묻는 것은 같다 — 규칙 목록이 의미론이 인정하는 동치를 전부 잡는가. 이 절이 증명한 것을 그 물음에 맞춰 적으면 이렇다. ⊨𝜑↔𝜓 이면 ⊢𝜑↔𝜓 이다. 두 식이 모든 배당에서 값이 같으면 규칙만으로 한쪽에서 다른 쪽으로 갈 수 있다. 완전성 정리에서 Γ 를 비우고 𝜑↔𝜓 를 넣은 특별한 경우일 뿐이다.
왜 mcs 가 증명하지 않고 지나갔는지도 이제 보인다. 증명하려면 증명 체계를 형식적으로 세워야 하고 ⊢ 를 정의해야 하는데, 원장이 적어 둔 대로 mcs 는 그것을 하지 않는다. 이 문서 7장이 그 자리를 채웠고 이 장이 그 위에서 값을 치렀다.
예제 186
진리 보조정리의 ∨ 갈래를 처음부터 끝까지 적어라. 귀납 가정을 어디서 쓰는지 밝혀라.
풀이 보기
보일 것은 "¯𝑣(𝜑∨𝜓)=T 인 것과 𝜑∨𝜓∈Γ∗ 인 것이 같다"이고, 귀납 가정으로 쓸 수 있는 것은 𝜑 와 𝜓 각각에 대한 같은 주장이다.
¯𝑣(𝜑∨𝜓)=T 는 6장의 ∨ 조항에 의해 "¯𝑣(𝜑)=T 이거나 ¯𝑣(𝜓)=T"와 같다.
여기에 귀납 가정을 두 번 쓴다. 앞쪽은 𝜑∈Γ∗ 와 같고 뒤쪽은 𝜓∈Γ∗ 와 같다. 그러므로 위 조건은 "𝜑∈Γ∗ 이거나 𝜓∈Γ∗"와 같다.
마지막으로 앞 절의 논리합 성질이 그것을 𝜑∨𝜓∈Γ∗ 와 잇는다. 세 걸음을 이으면 주장이 나온다.
걸음의 정체를 확인해 두자. 첫 걸음은 의미론이 준 것이고, 둘째는 귀납이 준 것이고, 셋째는 증명 체계가 준 것이다. 두 층이 만나는 자리가 정확히 셋째 걸음이고, 그 걸음이 성립하는지가 앞 절에서 ∨E 로 ⊥ 을 끌어낸 도출에 달려 있었다. 규칙 하나가 빠지면 사다리의 가로대 하나가 부러진다.
예제 187
명제논리 완전성 증명 전체를 다섯 걸음으로 요약하고, 각 걸음이 어느 절과 어느 장의 결과를 쓰는지 밝혀라.
풀이 보기
①Γ⊨𝜑 인데 Γ⊢𝜑 가 아니라고 해 보자. 그러면 Γ∪{¬𝜑} 가 일관적이다. — 대우로 바꾼 절, IP 를 쓴다.
② 린덴바움으로 그것을 극대 일관 집합 Γ∗ 로 키운다. — 5장의 가산성과 7장의 도출의 유한성.
③𝑣(𝑃)=T 를 𝑃∈Γ∗ 로 정해 배당을 읽어낸다. — 이 절.
④ 진리 보조정리로 𝑣 가 Γ∗ 의 모든 원소를 참으로 만든다. — 극대 일관 집합의 성질과 13장의 구조적 귀납법.
⑤ 그러면 𝑣 는 Γ 를 만족시키면서 ¬𝜑 도 참으로 만들므로 𝜑 를 거짓으로 만든다. Γ⊨𝜑 에 어긋난다. 그러므로 Γ⊢𝜑 다.
다섯 걸음 가운데 새로 만든 것은 ②③④ 뿐이고 ①과 ⑤는 고쳐 적기다. 그리고 ②③④를 관통하는 생각은 하나다 — 증명 체계가 만든 집합을 의미론의 세계로 읽는다. 술어논리로 넘어갈 때 ①과 ⑤는 글자 하나 바뀌지 않고 ②③④만 손봐야 한다.
술어논리로 — 이름이 모자란다
다섯 걸음 가운데 셋을 다시 본다. 술어논리에서 무엇이 그대로이고 무엇이 아닌가.
그대로인 것이 많다. 극대 일관 집합의 정의와 성질 일곱 개는 글자 하나 바뀌지 않는다 — 증명에 쓴 규칙이 전부 명제논리 규칙이기 때문이다. 린덴바움도 그대로다 — 9장의 언어에서도 적형식이 가산이고 도출은 여전히 유한하다.
무너지는 것은 ③이다. 명제논리에서 Γ∗ 는 배당을 그대로 주었다. 술어논리에서 지어야 할 것은 모형 M=⟨𝐷,𝐼⟩ 인데, Γ∗ 는 문장의 집합일 뿐 정의역을 주지 않는다.
<명제논리에서 없던 것은 하나뿐이다 — 집합이 ‘ 있다 ’ 고 말할 때 그것을 가리킬 이름이 정의역 안에 있어야 한다>[원본 보기]
헨킨의 착상은 정의역을 언어에서 꺼내는 것이다. 세계에 무엇이 있는지 모르니 우리가 가진 이름들을 대상으로 삼는다.
𝐷 를 개체상수 전체의 집합으로 잡는다. 9장이 함수기호를 넣지 않았으므로 변수가 없는 항은 상수뿐이고, 그래서 이 잡기가 단순해진다
𝐼(𝑎)=𝑎 — 각 상수는 자기 자신을 가리킨다
𝑛 항 술어 𝐹 에 대해 𝐼(𝐹)={⟨𝑎1,…,𝑎𝑛⟩:𝐹𝑎1⋯𝑎𝑛∈Γ∗}
상수가 하나도 없는 언어라면 하나를 더한다. 10장이 정의역은 비어 있으면 안 된다고 못 박았기 때문이다.
이렇게 지은 모형을 항 모형(term model)이라 한다. 문장문자를 배당으로 읽던 일을 원자식을 해석으로 읽는 일로 옮긴 것뿐이라 여기까지는 새로운 것이 없다. 그런데 진리 보조정리를 한정사 갈래에서 확인하려는 순간 막힌다.
∃𝑥𝐹𝑥∈Γ∗ 라 하자. 10장의 ∃ 조항이 요구하는 것은 𝐷 의 어떤 원소가 𝐹 라는 것이고, 𝐷 가 상수들이므로 어떤 상수 𝑎 에 대해 𝐹𝑎∈Γ∗ 여야 한다. 그런 보장이 없다. 집합은 무엇인가가 있다고 말하는데 그것을 가리킬 이름이 없을 수 있다.
넘는 방법은 없는 이름을 만들어 주는 것이다. 걸음이 넷이다.
상수를 더한다. 새 개체상수 𝑐0,𝑐1,𝑐2,… 를 가산 개 더해 언어를 넓힌다. 넓혀도 적형식은 여전히 가산이므로 린덴바움이 그대로 통한다. 그리고 넓힌 언어에서 얻은 모형을 원래 언어로 좁혀도 원래 문장들의 값이 그대로라는 것은 13장의 관련성 정리가 보장한다 — 식의 값은 그 식에 나오는 기호에만 달려 있다
증인 공리를 더한다.∃𝑥𝜑 꼴의 식마다 새 상수 𝑐 를 하나씩 배정하고 ∃𝑥𝜑→𝜑[𝑐/𝑥] 를 집합에 더한다. 이 식을 증인 공리라 하고, 그런 공리를 다 갖춘 집합이 증인 성질(witness property)을 가졌다고 한다
일관성이 깨지지 않음을 보인다. 여기가 이 절에서 손이 가장 많이 가는 곳이고, 아래 예제에서 다룬다
층을 쌓는다. 새 상수가 새 식을 만들고 그 식에도 증인이 필요하므로 한 번으로 끝나지 않는다. 위 둘을 무한히 되풀이한 뒤 합집합을 잡고, 그다음에 린덴바움으로 극대화한다. 순서가 중요하다 — 먼저 극대화하면 증인 공리를 더할 자리가 남지 않는다. 반대로 극대화가 증인 성질을 깨지는 않는다. 원소를 빼지 않기 때문이다
이렇게 얻은 Γ∗ 는 극대 일관이면서 증인 성질을 가진다. 그러면 항 모형에서 한정사 갈래가 통과한다. ∃ 는 증인 상수가 처리하고, ∀ 는 그 부정을 통해 처리된다 — ∀𝑥𝜑∉Γ∗ 이면 ¬∀𝑥𝜑∈Γ∗ 이고 거기서 ∃𝑥¬𝜑 가 도출되므로 증인 𝑐 가 있어 ¬𝜑[𝑐/𝑥] 가 들어 있고, 그 상수가 반례가 된다.
한정사 갈래를 확인할 때 쓰는 도구가 하나 더 있다. 항 모형에서 ∀𝑥𝜑 의 만족 조항은 정의역의 원소를 하나씩 꽂아 보라고 하는데 우리가 손에 든 것은 상수𝜑[𝑐/𝑥] 다. 그 둘이 같은 값을 낸다는 것이 13장의 대입 보조정리이고, 항 모형에서는 𝐼(𝑐)=𝑐 이므로 조건이 저절로 채워진다. 정의역을 언어에서 꺼낸 값이 여기서 돌아온다.
귀납을 돌리는 방식도 손봐야 한다. 𝜑[𝑐/𝑥] 는 ∀𝑥𝜑 의 부분식이 아니다. 13장은 구조적 귀납법과 복잡도에 대한 귀납이 같은 것을 다르게 적은 것이라 했는데, 여기서 그 둘이 갈라진다. 부분식 관계는 끊어졌지만 재는 값은 여전히 줄어들기 때문이다. 그러니 복잡도에 대한 귀납 쪽을 쓴다. 여기서는 한정사와 연결자의 개수를 세면 편하다. 대입은 이름 하나를 갈아 끼울 뿐 개수를 늘리지 않고, ∀𝑥 가 떨어져 나갔으므로 개수가 하나 줄어든다. 이것이 술어논리 쪽에서 증명이 실제로 까다로워지는 두 자리 가운데 하나다.
다른 하나는 동일성이다. 𝑎=𝑏∈Γ∗ 인데 항 모형에서 𝑎 와 𝑏 는 서로 다른 점이다. 12장의 만족 조항은 두 지시체가 같은 원소일 것을 요구하므로 그대로는 어긋난다. 고치는 방법은 Γ∗ 가 같다고 말하는 상수끼리 묶어 한 점으로 만들고 그 묶음들을 정의역으로 쓰는 것이다. 묶기가 앞뒤가 맞으려면 "같음"이 반사적·대칭적·추이적이어야 하는데, 12장이 =I 와 =E 에서 대칭성과 추이성을 정리로 도출해 두었다. 그 빚을 여기서 받는다.
정리하면 이렇다. 술어논리에서 더 필요한 것은 하나다 — 집합이 있다고 말하는 것마다 이름이 있어야 한다. 나머지는 명제논리에서 한 일의 되풀이다.
역사를 한 줄 적어 둔다. 이 정리를 처음 증명한 사람은 괴델이고 1929년의 박사학위 논문이다. 지금 우리가 따라온 길은 헨킨이 1949년에 낸 훨씬 짧은 증명이다. 그리고 이름 때문에 반드시 짚어야 할 것이 있다. 17장의 불완전성 정리는 이 정리의 반대가 아니다. 완전성은 "논리의 규칙이 논리적 귀결을 전부 잡는다"는 주장이고, 불완전성은 "산술의 공리 체계가 산술의 참을 전부 잡지 못한다"는 주장이다. 대상이 다르다. 두 정리를 같은 사람이 몇 해 사이에 증명했다는 사실이 그 차이를 더 헷갈리게 만든다.
예제 188
증인이 없는 경우를 실제로 만들어라. 그리고 항 모형에서 무엇이 깨지는지 보여라.
풀이 보기
언어를 좁게 잡는다. 개체상수는 𝑎 하나, 1항 술어는 𝐹 하나뿐이라 하자. Γ={∃𝑥𝐹𝑥,¬𝐹𝑎} 로 둔다.
먼저 Γ 가 일관적이다. 실제로 모형이 있다 — 𝐷={1,2}, 𝐼(𝑎)=1, 𝐼(𝐹)={2} 로 두면 두 문장이 다 참이다. 13장의 건전성 따름정리로 모형을 갖는 집합은 일관적이므로 Γ 는 일관적이다.
이제 Γ 를 극대 일관 집합 Γ∗ 로 키운다. ∃𝑥𝐹𝑥∈Γ∗ 이고 ¬𝐹𝑎∈Γ∗ 이므로 부정 성질에 의해 𝐹𝑎∉Γ∗ 다.
항 모형을 지어 보자. 상수가 𝑎 뿐이므로 𝐷={𝑎} 이고, 𝐹𝑎∉Γ∗ 이므로 𝐼(𝐹)=∅ 이다. 그러면 M⊨∃𝑥𝐹𝑥 가 아니다. 그런데 ∃𝑥𝐹𝑥∈Γ∗ 이다. 진리 보조정리가 이 한 식에서 깨진다.
어디가 잘못이었는지 정확히 짚자. Γ 도 Γ∗ 도 잘못이 없다. 잘못은 정의역을 상수 목록에서 꺼냈는데 그 목록이 모자랐다는 것이다. 위의 진짜 모형에는 점이 둘 있었고 그중 하나에 이름이 없었다. 그러니 이름을 더해 주면 된다 — 증인 공리 ∃𝑥𝐹𝑥→𝐹𝑐 를 새 상수 𝑐 와 함께 더하면, 극대화 뒤에 𝐹𝑐∈Γ∗ 가 되고 𝑐 가 그 점을 맡는다.
예제 189
Γ 가 일관적이고 상수 𝑐 가 Γ 에도 ∃𝑥𝜑 에도 나오지 않는다고 하자. Γ∪{∃𝑥𝜑→𝜑[𝑐/𝑥]} 도 일관적임을 보여라. 11장의 어느 조건이 쓰이는가?
풀이 보기
뼈대. 비일관적이라고 해 보면 Γ 에서 "있기는 한데 𝑐 는 아니다"가 도출된다. 그런데 𝑐 는 Γ 가 한 번도 언급한 적 없는 이름이므로 그 말은 "어느 것도 아니다"로 일반화되고, "있다"와 부딪힌다.
증명.Γ∪{∃𝑥𝜑→𝜑[𝑐/𝑥]} 가 비일관적이라 하자. 그 증인 공리를 전제 대신 가정으로 열어⊥ 까지 적고 ¬I 로 방출하면 Γ⊢¬(∃𝑥𝜑→𝜑[𝑐/𝑥]) 다. 조건문의 부정에서는 전건과 후건의 부정이 각각 도출되므로(둘 다 7장의 규칙으로 되고 앞쪽에 IP 가 쓰인다)
Γ⊢∃𝑥𝜑 이고 Γ⊢¬𝜑[𝑐/𝑥]
를 얻는다. 둘째를 보자. 𝑐 는 Γ 어디에도 나타나지 않으므로 이 도출의 열린 가정에 𝑐 가 없고, 결과 ∀𝑥¬𝜑 에도 𝑐 가 없다. 원장이 정정해 둔 ∀I 의 조건이 정확히 그 둘이므로 규칙을 쓸 수 있다.
Γ⊢∀𝑥¬𝜑
이제 첫째와 부딪힌다. ∃𝑥𝜑 에 ∃E 를 쓰면 임시 이름 𝑐1 에 대해 𝜑[𝑐1/𝑥] 를 가정할 수 있고, ∀𝑥¬𝜑 에 ∀E 를 쓰면 ¬𝜑[𝑐1/𝑥] 를 얻으므로 ¬E 로 ⊥ 이다. 갈래 안에서 얻은 ⊥ 은 𝑐1 을 담고 있지 않으므로 ∃E 의 조건도 통과한다. 즉 Γ⊢⊥ 이 되어 Γ 의 일관성에 어긋난다.
쓰인 조건은 ∀I 의 변수 조건이다. 11장이 그 조건에 붙여 둔 말은 "그 이름에 대해 우리가 따로 아는 것이 없는가"였다. 여기서 그 말이 값을 치른다 — 새 상수는 아무 새 정보를 주지 않으므로 증인 공리를 공짜로 더할 수 있다. 조건이 있어서 규칙이 약해진 것이 아니라, 조건이 있어서 이 걸음이 가능해진 것이다.
두 층이 만난다
다리 둘이 다 놓였다. 4부의 결론을 적는다.
정리. 논리식 집합 Γ 와 논리식 𝜑 에 대해 Γ⊢𝜑 인 것과 Γ⊨𝜑 인 것은 같다. 명제논리에서도 술어논리에서도 그렇고, 동일성을 더해도 그렇다.
<위 상자 둘 사이에 화살표가 양쪽으로 놓였다는 것과, 그런데도 아래 상자가 여전히 비어 있다는 것>[원본 보기]
곧바로 따라 나오는 것이 셋이다.
일관적인 것과 만족가능한 것이 같다. 7장이 도출로 정의한 성질과 6장이 배당으로 정의한 성질이 같은 집합을 가려낸다. 두 낱말이 사실은 하나였다
정리와 논리적 참이 같다.⊢𝜑 인 것과 ⊨𝜑 인 것이 같다. 아무것도 주어지지 않아도 얻을 수 있는 식이 곧 어떤 세계에서도 참인 식이다
컴팩트성. 아래 예제에서 끌어낸다. 15장이 여기서 시작한다
첫째 줄이 이 장의 몫이라는 점을 짚어 두자. 13장은 만족가능하면 일관적임을 주었고 이 장이 그 역을 주었다. 두 방향이 다 있어야 "같다"가 된다. 셋째 줄도 마찬가지로 두 정리를 다 쓴다.
쓰는 방식도 정리해 둔다. 13장이 준 방향은 "도출이 없음"을 반례 하나로 확정하게 해 주었다. 이 장이 준 방향은 반대다 — 배당이나 모형으로 귀결을 확인해 놓고 도출이 존재한다고 말할 수 있게 한다. 두 방향이 다 있으니 이제 어느 층에서 일할지 편한 쪽을 골라 쓸 수 있다.
다만 낱말은 합치지 않는다. ⊢ 와 ⊨ 를 앞으로도 구분해 적는다. 일치는 정리이지 정의가 아니고, 19장에서 규칙을 하나 빼면 둘이 다시 갈라지기 때문이다.
예제 190
컴팩트성 정리 — Γ 의 모든 유한 부분집합이 모형을 가지면 Γ 도 모형을 갖는다. 두 정리에서 이것을 끌어내라.
풀이 보기
뼈대. 대우로 간다. 모형이 없으면 비일관적이고, 비일관성은 유한한 도출 하나에 담기므로 유한 부분집합으로 옮겨 간다.
증명.Γ 가 모형을 갖지 않는다고 하자. 완전성의 대우 형태, 곧 모형 존재 정리의 대우로 Γ 는 비일관적이다. 즉 Γ⊢⊥ 이다.
7장의 도출의 유한성으로 어떤 유한 부분집합 Δ⊆Γ 에 대해 Δ⊢⊥ 이다.
13장의 건전성으로 Δ⊨⊥ 이고, ⊥ 은 어떤 모형에서도 참이 아니므로 Δ 를 만족시키는 모형이 하나도 없다. 즉 모형을 갖지 않는 유한 부분집합이 있다.
대우를 취하면 주장이 나온다.
두 정리가 각각 어디에 쓰였는지 보자. 완전성은 "모형이 없다"를 "도출이 있다"로 옮기는 데 쓰였고, 건전성은 그 도출을 다시 "모형이 없다"로 돌려보내는 데 쓰였다. 그 사이에 끼어 있는 것이 도출의 유한성이고, 그것 하나가 무한한 집합에 대한 주장을 유한한 조각으로 옮긴다. 컴팩트성이라는 이름은 이 옮김을 가리킨다.
예제 191
다음 넷을 확정하려면 건전성이 필요한가, 완전성이 필요한가, 둘 다인가. (가) {∀𝑥𝐹𝑥→∀𝑥𝐺𝑥}⊢∀𝑥(𝐹𝑥→𝐺𝑥) 가 아니다. (나) {𝐹𝑎→𝐺𝑏}⊢¬𝐺𝑏→¬𝐹𝑎. (다) {𝜆2} 는 일관적이다. (라) 이 체계에서 ⊢⊥ 이 아니다.
풀이 보기
요령은 하나다. 어느 층에서 확인이 값싼지 보고 그 층에서 반대 층으로 건너가는 화살표를 고른다.
(가) 건전성. 11장이 만든 반례 모형 𝐷={1,2}, 𝐼(𝐹)={1}, 𝐼(𝐺)=∅ 이 ⊨ 가 아님을 보여 준다. 건전성의 대우가 그것을 ⊢ 가 아님으로 옮긴다. 13장이 이미 한 일이고 이 장은 필요하지 않다.
(나) 어느 쪽도 필요 없다. 도출을 직접 적으면 끝난다 — ¬𝐺𝑏 와 𝐹𝑎 를 차례로 가정하고 →E 로 𝐺𝑏 를 얻어 ¬E 로 ⊥, ¬I 와 →I 로 닫으면 된다. 다리를 건널 일이 없다.
(다) 완전성은 필요 없고 건전성이면 된다. 12장의 𝜆2 는 원소가 적어도 둘이라는 문장이므로 점 둘짜리 모형이 그것을 참으로 만든다. 모형이 있으니 13장의 따름정리로 일관적이다. 만약 반대로 모형이 있음을 보이고 싶은데 일관성만 손에 있다면 그때가 이 장이 필요한 자리다.
(라) 건전성.⊢⊥ 이면 ⊨⊥ 인데 ⊥ 은 어느 모형에서도 참이 아니고 모형은 존재하므로 어긋난다. 13장이 체계의 일관성이라 부른 것이다.
넷 가운데 어디에도 완전성이 쓰이지 않았다는 것이 이 예제의 요점이다. 완전성이 필요한 자리는 의미론 쪽 사실에서 도출의 존재로 건너갈 때다. 앞의 컴팩트성 증명에서 "모형이 없다"를 "⊢⊥"으로 옮긴 걸음이 그것이고, 그런 걸음은 실제 문제 풀이보다 메타이론에서 훨씬 자주 나온다. 15장이 그 예를 잔뜩 낸다.
그런데 "같다"가 무엇을 뜻하지 않는가
두 기호가 같은 것을 가리킨다는 말이 무엇을 주지 않는지 분명히 해 두어야 한다. 여기서 착각하면 16장과 17장이 통째로 안 읽힌다.
첫째, 판정 절차가 생기는 것이 아니다. 완전성은 "한쪽이 성립하면 다른 쪽도 성립한다"고 말할 뿐 "어느 쪽이 성립하는지 알아내는 방법"은 주지 않는다.
얻는 것이 아주 없지는 않다. 도출은 유한한 기호열이므로 도출 전체에 번호를 붙일 수 있고, 도출인지 아닌지는 7장이 못 박은 대로 모양만 보아 값싸게 검사할 수 있다. 그러니 이런 절차를 적을 수 있다 — 도출을 번호 순으로 하나씩 꺼내 검사하다가 Γ 에서 𝜑 를 얻는 것이 나오면 멈춘다.Γ⊨𝜑 이면 완전성에 의해 그런 도출이 있으므로 이 절차는 언젠가 반드시 찾는다. 이 성질을 반결정 가능(semi-decidable)하다고 한다. 책에 따라 반열거 가능이라고도 하는데 같은 것을 가리킨다. 이 문서는 반결정 가능으로 통일하고, 16장이 이 성질을 결정 가능성과 나란히 놓아 정식으로 정의한다.
얻지 못하는 것이 문제다. Γ⊨𝜑 가 아니면 이 절차는 영원히 멈추지 않는다. 그리고 밖에서 보는 사람은 아직 못 찾은 것인지 앞으로도 못 찾을 것인지 구별할 방법이 없다. 명제논리는 사정이 다르다 — 6장의 진리표가 유한한 절차를 주므로 "아니오"도 답할 수 있다. 술어논리에는 그런 절차가 없고, 없다는 것 자체가 정리다. 그것이 16장이다.
둘째, 증명을 찾아 주는 것이 아니다. 이 장의 증명은 어디서도 도출을 만들지 않았다. 린덴바움의 사슬은 매 단계에서 일관성을 판정해야 하는데 그 판정을 실제로 할 수 있다는 보장이 없다. 완전성 정리는 도출이 있다고만 말하고 어떤 도출인지는 말하지 않는다. 8장의 전략이 여전히 필요한 이유다.
셋째, 얻는 모형이 우리가 생각하던 모형이 아닐 수 있다. 항 모형의 정의역은 상수들의 묶음이므로 늘 가산이다. 그러니 어떤 문장을 아무리 많이 적어도 가산 모형 하나가 따라붙는다. 이 사실이 15장에서 비표준 모형이라는 이름으로 돌아온다.
예제 192
위의 "도출을 하나씩 꺼내 검사한다"는 절차를 명제논리와 술어논리에 각각 적용해 보자. 두 경우에 무엇이 다른가?
풀이 보기
절차 자체는 두 경우에 똑같다. 다른 것은 곁에 무엇이 있는가다.
명제논리. 이 절차 말고도 6장의 진리표가 있다. 식과 전제에 나오는 문장문자가 𝑛 개면 배당이 2𝑛 개이고 유한하므로 다 훑으면 예든 아니오든 답이 나온다. 두 절차를 나란히 돌리면 어느 쪽이든 반드시 멈춘다. 그래서 명제논리는 결정 가능하다.
술어논리. 곁에 아무것도 없다. 10장이 적어 둔 대로 모형은 무한히 많고 크기도 무한할 수 있어 "다 훑는다"가 불가능하다. 반례 모형을 찾는 쪽도 절차가 되지 못한다 — 정의역 크기를 하나씩 키워 가며 찾아도, 모든 유한 크기에서 반례가 없다는 것이 무한 모형에도 없다는 뜻은 아니다.
그러므로 손에 남는 것은 한쪽으로만 답하는 절차 하나뿐이다. 답이 "예"일 때는 언젠가 알려 주고 "아니오"일 때는 아무 말도 하지 않는다.
답이 말이 되는가. 이 비대칭이 알고리즘 문서의 정지 문제와 같은 모양이라는 점을 눈여겨보자. 완전성은 두 기호를 같게 만들었지만 계산의 어려움까지 없애지는 못했다. 오히려 어려움이 어디에 있는지를 또렷하게 만들었다 — 도출을 찾는 일과 없음을 확인하는 일 사이에 놓인 벽이다.
예제 193
어떤 사람이 이렇게 말한다. "완전성 정리는 참인 것이 전부 증명된다는 뜻이고 불완전성 정리는 참인데 증명되지 않는 것이 있다는 뜻이다. 둘은 모순이다." 어디가 틀렸는가?
풀이 보기
두 정리가 "참"과 "증명"이라는 낱말을 다른 대상에 대해 쓰고 있다는 것을 놓쳤다.
완전성이 말하는 참은 논리적 참이다. 정확히는 Γ⊨𝜑, 곧 "Γ 를 참으로 만드는 모든 모형에서 𝜑 도 참"이다. 이때 증명은 우리 규칙 열일곱 개로 하는 도출이다. 완전성은 이 둘이 같다고 말한다.
불완전성이 말하는 참은 한 모형에서의 참이다. 자연수라는 특정한 구조 하나에서 참인 산술 문장을 가리킨다. 그리고 증명은 산술의 공리 몇 개에서 출발하는 도출이다. 불완전성은 어떤 공리 목록을 골라도 그 구조에서 참인 문장 가운데 도출되지 않는 것이 남는다고 말한다.
둘을 이어 붙이면 모순이 아니라 하나의 그림이 된다. 완전성에 의해 그 문장이 도출되지 않는다는 것은 그것을 거짓으로 만드는 모형이 있다는 뜻이다. 그 모형은 산술의 공리를 다 만족시키면서 자연수와는 다른 구조이고, 15장이 그것을 비표준 모형이라 부른다.
그러니 정확히 말하면 이렇다. 논리는 완전하다. 부족한 것은 공리 목록이 구조 하나를 콕 집어내지 못한다는 것이다. 낱말이 겹쳐 있을 뿐 두 정리는 서로 다른 것을 재고 있다.
이 장에서 새로 나온 것
기호 · 용어
뜻
완전성(completeness)
Γ⊨𝜑 이면 Γ⊢𝜑. 참인 것은 빠짐없이 증명된다
모형 존재 정리
일관적인 집합은 모형을 갖는다. 완전성과 같은 주장을 고쳐 적은 것
네 형태의 동치
완전성 ⟺ 대우 ⟺ Γ∪{¬𝜑} 판본 ⟺ 모형 존재 정리. 옮겨 가는 데 IP 와 폭발을 쓴다
극대 일관 집합 Γ∗
일관적이면서 무엇을 더 넣어도 비일관적이 되는 집합
연역적 닫힘
Γ∗⊢𝜑 이면 𝜑∈Γ∗. 도출 두 벌을 이어 붙여 보인다
부정 성질
𝜑 와 ¬𝜑 가운데 정확히 하나가 Γ∗ 에 든다. 극대성이 여기 쓰인다
연결자별 성질
∧∨→↔ 각각에 대한 소속 조건. 6장의 진리표 조항과 한 줄씩 같다
린덴바움 보조정리
일관적인 집합은 극대 일관 집합으로 확장된다. 5장의 가산성과 7장의 유한성을 쓴다
사슬과 합집합
Γ0⊆Γ1⊆⋯ 를 만들고 합집합을 잡는다. 합집합의 일관성이 급소다
진리 보조정리
¯𝑣(𝜑)=T 인 것과 𝜑∈Γ∗ 인 것이 같다. 구조적 귀납법으로 보인다
헨킨 구성
증명 체계가 만든 집합을 그대로 읽어 모형을 짓는 방법. 1949년
항 모형(term model)
정의역을 개체상수들로 잡고 𝐼(𝑎)=𝑎 로 두는 모형
증인 문제
∃𝑥𝜑∈Γ∗ 인데 그것을 가리킬 상수가 없을 수 있다
증인 공리 · 증인 성질
∃𝑥𝜑→𝜑[𝑐/𝑥] 를 새 상수와 함께 더한다. 일관성 보존에 ∀I 의 변수 조건을 쓴다
복잡도에 대한 귀납
𝜑[𝑐/𝑥] 는 부분식이 아니므로 한정사와 연결자의 개수로 귀납을 돌린다
동일성 처리
Γ∗ 가 같다고 말하는 상수끼리 묶어 한 점으로 만든다. 12장의 대칭성 · 추이성을 쓴다
⊢ 와 ⊨ 의 일치
건전성과 완전성을 합친 것. 4부의 결론이다
컴팩트성 정리
모든 유한 부분집합이 모형을 가지면 전체도 모형을 갖는다. 15장의 출발점
반결정 가능(semi-decidable)
‘ 예 ’ 이면 언젠가 답하고 ‘ 아니오 ’ 이면 멈추지 않는 절차가 있다. 반열거 가능이라고도 한다
완전성과 불완전성
반대말이 아니다. 앞은 논리적 귀결에 대한 것, 뒤는 산술의 공리 목록에 대한 것
챙겨 갈 것은 넷이다.
고쳐 적기가 증명의 절반이다. 완전성을 "일관적인 집합은 모형을 갖는다"로 바꾸는 한 걸음이 "없음을 보여라"를 "만들어라"로 바꾼다. 그 걸음에 IP 가 쓰이고, 그래서 이 증명은 고전 논리에 매여 있다
모형은 집합에서 읽어낸다. 일관적인 집합을 극대 일관 집합으로 키우면 그 집합 자체가 배당이 된다. 극대 일관 집합의 성질 목록과 진리표 조항이 한 줄씩 같기 때문이고, 그 겹침이 완전성의 심장이다
술어논리에서 새로 필요한 것은 이름뿐이다. 집합이 있다고 말하는 것마다 증인 상수를 붙여 주면 나머지는 명제논리에서 한 일의 되풀이다. 증인을 붙이는 일이 공짜인 것은 11장의 변수 조건 덕이다
같아졌다는 것이 계산할 수 있다는 뜻은 아니다. 얻은 것은 반결정 가능성뿐이고, 판정 절차는 생기지 않는다. 게다가 얻는 모형은 늘 가산이다
15장은 셋째 줄과 넷째 줄의 대가를 센다. 컴팩트성에서 시작해 뢰벤하임-스콜렘 정리로 가고, "가산 모형이 반드시 따라붙는다"는 사실에서 비표준 모형이 나온다. 우리가 자연수에 대해 말하려고 적은 문장들이 자연수 아닌 것도 함께 붙잡는다는 이야기다. 16장은 첫째 줄의 대가를 센다 — 반결정은 되고 판정은 안 된다는 것을 정리로 만든다.
컴팩트성과 그 대가
13장과 14장이 다리 둘을 놓았다. Γ⊢𝜑 이면 Γ⊨𝜑 이고, Γ⊨𝜑 이면 Γ⊢𝜑 이다. 증명 체계와 의미론이 정확히 같은 것을 가려낸다. 두 장이 끝났을 때 남는 기분은 흡족함이다. 우리가 고른 규칙 열일곱 개가 모자라지도 넘치지도 않았다는 뜻이니까.
이 장은 그 흡족함에 값을 매긴다. 완전성이 성립한다는 것은 유한한 종이 한 장이 무한히 많은 모형에 대한 주장을 전부 따라잡는다는 뜻이다. 그런 일이 공짜일 리 없다. 무엇을 내주고 그것을 샀는지 세는 것이 이 장이다.
이 장에서 답할 질문은 넷이다.
무한한 문장 집합의 유한 부분집합만 살펴보고 전체에 대해 말할 수 있는가
그 정리의 증명이 왜 이렇게 짧은가. 짧다는 것이 왜 놀라운 일인가
"정의역이 유한하다"를 1차 논리로 말할 수 있는가
자연수를 1차 논리로 붙잡을 수 있는가
14장에서 가져오는 것은 셋이다. 첫째, 완전성 — Γ⊨𝜑 이면 Γ⊢𝜑. 둘째, 그 따름으로 얻은 "일관적인 집합은 만족가능하다". 셋째, 헨킨 구성이 지어 내는 모형은 항으로 만든 것이라 언제나 가산이라는 사실. 셋째 것은 14장에서는 부산물이었는데 이 장에서는 정리 하나가 된다.
13장에서는 건전성을, 7장에서는 도출의 유한성을 가져온다. 도출은 줄의 유한한 목록이므로 Γ⊢𝜑 이면 Γ 의 어떤 유한한 부분집합에서도 𝜑 가 도출된다는 그 사실이다. 12장에서는 문장 𝜆𝑛 을 가져온다 — "정의역에 원소가 적어도 𝑛 개 있다"를 말하는 문장이고, 12장이 이 장에 넘긴다고 적어 두었다.
컴팩트성 정리
정리부터 적는다. 두 형태가 있고 둘은 같은 것이다.
컴팩트성 정리(만족가능성 판). 문장 집합 Γ 의 모든 유한 부분집합이 모형을 가지면 Γ 자체가 모형을 갖는다.
컴팩트성 정리(귀결 판).Γ⊨𝜑 이면 Γ 의 어떤 유한한 부분집합 Δ 에 대해 Δ⊨𝜑 이다.
첫째 형태가 왜 놀라운지 먼저 느껴 두는 편이 낫다. Γ 가 무한할 때, 유한 부분집합마다 모형이 있다는 것은 서로 다른 모형이 무한히 많이 있다는 말일 뿐이다. 그 모형들이 서로 아무 관계가 없어도 된다. 하나는 정의역이 점 셋이고 다음 것은 점 백 개이고 그다음은 또 전혀 다른 것이어도 된다. 그런데도 정리는 그 전부를 한꺼번에 참으로 만드는 모형 하나가 있다고 주장한다. 조각을 이어 붙일 방법은 아무도 알려 주지 않았는데 말이다.
증명은 네 걸음이다
그런 주장치고 증명이 어이없이 짧다. 곧바로는 손댈 데가 없으니 대우로 뒤집는다.
<네 걸음 가운데 새로 만든 것이 하나도 없다는 것을 확인하라. 무한한 Γ 를 유한한 Δ 로 줄이는 일은 3번 한 걸음이 혼자 한다>[원본 보기]
Γ 에 모형이 하나도 없다고 하자. 보일 것은 "모형이 없는 유한 부분집합이 하나 있다"이다.
1.Γ 를 참으로 만드는 모형이 하나도 없으므로 Γ⊨⊥ 이 공허하게 성립한다. 10장의 정의가 "Γ 를 모두 참으로 만드는 모든 모형이 …" 꼴이었고, 그런 모형이 없으니 조건이 저절로 채워진다
2. 14장의 완전성에 따라 Γ⊢⊥
3. 7장에 따라 도출은 줄의 유한한 목록이다. 그러니 그 도출이 실제로 전제로 인용한 식은 유한 개뿐이다. 그것들을 모아 Δ 라 하면 Δ⊆Γ 이고 Δ 는 유한하며 Δ⊢⊥
4. 13장의 건전성에 따라 Δ⊨⊥. 곧 Δ 를 참으로 만드는 모형이 없다
유한 부분집합 Δ 를 실제로 손에 넣었다. 대우가 증명되었으므로 정리도 증명되었다.
이 짧음이 이 절의 요점이다. 네 걸음 가운데 일을 하는 것은 3번 하나뿐이고, 그 걸음이 하는 말은 "도출은 종이에 적히니까 유한하다"가 전부다. 무한을 유한으로 바꾸는 마법은 거기서 일어난다. 나머지 셋은 13장과 14장이 놓아 둔 다리를 왔다 갔다 한 것뿐이다. 정리가 짧게 증명되는 것은 요행이 아니라 앞의 세 장이 미리 값을 치러 두었기 때문이다.
정직하게 덧붙일 것이 있다. 컴팩트성은 증명 체계를 한 번도 쓰지 않고 의미론만으로도 증명할 수 있다. 다만 그 길은 이 네 걸음보다 훨씬 길다. 우리가 이 길을 택할 수 있는 것은 완전성을 이미 가지고 있기 때문이고, 이 장의 나머지가 세는 대가도 결국 그 완전성의 값이다.
이름의 유래는 배경 설명이라 넘어가도 좋다. 위상수학에서 어떤 공간이 컴팩트하다는 것은 "전체를 덮는 방법이 주어지면 그중 유한 개만 골라도 덮인다"는 뜻이다. 유한 개로 줄어든다는 모양이 같아서 같은 이름이 붙었다.
쓰는 요령은 언제나 같다
이 장에서 컴팩트성을 세 번 쓴다. 세 번 다 걸음이 똑같으므로 여기서 한 번 적어 두면 나머지는 읽기만 하면 된다.
① 있었으면 하는 모형이 만족해야 할 조건을 문장 집합으로 적는다. 조건이 "끝없이 많은 요구"여도 좋다. 오히려 그럴 때 쓰는 도구다
② 그 집합의 유한 부분집합을 아무거나 잡고 모형을 하나 만들어 보인다. 유한 개의 요구만 채우면 되므로 대개 쉽다. 요구 가운데 가장 센 것 하나를 찾아 거기에 맞추면 끝난다
③ 컴팩트성을 부른다. 전체의 모형이 있다고 결론짓는다. 그 모형이 어떻게 생겼는지는 끝내 모른다
③에서 모형의 정체를 모른다는 것이 약점처럼 보이지만 사실은 반대다. 우리가 만들 줄 아는 모형만 존재를 주장할 수 있다면 이 장의 결과는 하나도 얻지 못한다. 만들 줄 모르는 것의 존재를 보증받는 것이 이 도구의 값이다.
예제 194
위의 두 형태가 서로에게서 따라 나오는지 확인하라. 만족가능성 판에서 귀결 판을 끌어내면 된다.
풀이 보기
Γ⊨𝜑 라 하자. 목표는 유한한 Δ⊆Γ 로 Δ⊨𝜑 인 것을 찾는 일이다.
완전성에서 Γ⊢𝜑 를 얻는다. 도출의 유한성에서 유한한 Δ⊆Γ 가 있어 Δ⊢𝜑 이다. 건전성에서 Δ⊨𝜑.
걸음이 앞의 증명과 똑같다. 실제로 두 형태는 같은 사실의 두 얼굴이다. 𝜑 자리에 ⊥ 을 넣으면 귀결 판이 만족가능성 판의 대우가 되고, 거꾸로 Γ∪{¬𝜑} 에 만족가능성 판을 쓰면 귀결 판이 나온다.
어느 쪽을 쓸지는 상황이 정한다. 모형을 만들어 내고 싶으면 만족가능성 판을 쓰고, 전제를 줄이고 싶으면 귀결 판을 쓴다. 이 장에서 쓰는 것은 거의 다 앞엣것이다.
예제 195
Γ 를 무한한 문장 집합이라 하고 Γ⊨𝜑 라 하자. 그러면 Γ 의 문장을 아무리 많이 버려도 되는가, 아니면 특정한 유한 개를 남겨야 하는가.
풀이 보기
특정한 유한 개다. 귀결 판이 주장하는 것은 "그런 Δ 가 있다"이지 "아무 유한 부분집합이나 된다"가 아니다.
예를 보자. Γ={𝐹𝑎,𝐹𝑏,𝐹𝑐,…} 이고 𝜑 가 𝐹𝑎 라면 Δ={𝐹𝑎} 로 충분하지만, Δ={𝐹𝑏} 로는 안 된다.
그래도 얻는 것이 크다. 무한한 전제를 다 짊어지고 있는 귀결은 없다. 어떤 귀결이든 유한 개의 전제로 성립한다. 3장에서 논증을 "전제 몇 개와 결론 하나"로 그렸던 그림이 무한 집합 앞에서도 무너지지 않는다는 뜻이다.
예제 196
컴팩트성이 성립하지 않는다면 무엇이 가능해지겠는가. 유한 부분집합이 모두 만족가능한데 전체는 만족가능하지 않은 집합 Γ 가 있다고 하자. 그런 Γ 가 있으면 증명 체계에 무슨 일이 생기는가.
풀이 보기
그런 Γ 는 만족가능하지 않으므로 Γ⊨⊥ 이다. 완전성이 성립한다면 Γ⊢⊥ 이고, 도출의 유한성으로 유한한 Δ⊆Γ 에서 Δ⊢⊥ 이며, 건전성으로 Δ 가 만족가능하지 않다. 그런데 유한 부분집합은 모두 만족가능하다고 했으니 부딪친다.
그러므로 컴팩트성이 깨지려면 건전성이나 완전성이나 도출의 유한성 가운데 하나가 깨져야 한다. 셋 다 성립하는 체계에서 컴팩트성은 선택지가 아니라 강제된다.
이 점을 기억해 두면 마지막 절이 쉬워진다. 컴팩트성을 없애고 싶으면 셋 중 하나를 포기해야 하고, 실제로 2차 논리는 완전성을 포기한다.
첫 번째 대가 — 무한을 못 잡는다
이제 이 정리로 무엇이 일어나는지 본다. 재료는 12장이 넘겨준 문장들이다.
12장은 𝜆𝑛 을 "정의역에 원소가 적어도 𝑛 개 있다"를 말하는 문장으로 정했다. 𝜆2 는 ∃𝑥∃𝑦𝑥≠𝑦 이고 𝜆3 은 ∃𝑥∃𝑦∃𝑧(𝑥≠𝑦∧𝑥≠𝑧∧𝑦≠𝑧) 이다. 이들을 전부 모은 집합에 이름을 준다.
Λ={𝜆2,𝜆3,𝜆4,…}
<왼쪽 모형들은 서로 다르고 어느 것도 오른쪽 모형이 아니다. 컴팩트성은 왼쪽을 이어 붙이는 것이 아니라 이어 붙이지 않고도 오른쪽이 있다고 보증한다>[원본 보기]
Λ 의 유한 부분집합 Δ 를 아무거나 잡자. Δ 에 든 문장은 유한 개이니 첨자 가운데 가장 큰 것이 있다. 그것을 𝑛 이라 하면, 원소가 𝑛 개인 정의역을 잡는 것만으로 Δ 의 문장이 전부 참이 된다. 술어를 어떻게 해석하든 상관없다 — 𝜆𝑘 에는 술어가 하나도 들어 있지 않기 때문이다.
그러니 Λ 의 모든 유한 부분집합이 모형을 갖는다. 컴팩트성에 따라 Λ 자체가 모형 M=⟨𝐷,𝐼⟩ 을 갖는다. 그 모형은 모든 𝑛 에 대해 M⊨𝜆𝑛 이므로 𝐷 의 원소가 적어도 𝑛 개다. 어떤 𝑛 에 대해서도 그렇다. 곧 𝐷 는 유한할 수 없다.
무한 모형이 강제되었다. 유한한 것만 이야기했는데 무한한 것이 나왔다.
유한하다고 말하는 문장은 없다
방금 것을 뒤집으면 정리가 된다. 정확히 진술한다.
정리. 모든 유한 모형에서 참이고 모든 무한 모형에서 거짓인 문장 𝜑 는 없다.
증명. 그런 𝜑 가 있다고 하자. Σ={𝜑}∪Λ 를 잡는다.
Σ 의 유한 부분집합 Δ 를 잡으면 Δ 에 든 𝜆 의 첨자 가운데 가장 큰 것이 있다. 그것을 𝑛 이라 하고 원소가 𝑛 개인 정의역을 잡는다. 𝜆 들은 앞에서 본 대로 참이고, 𝜑 도 유한 모형이므로 가정에 따라 참이다. 그러니 Δ 는 모형을 갖는다
컴팩트성에 따라 Σ 가 모형 M 을 갖는다
M⊨Λ 이므로 𝐷 는 무한하다. 그런데 M⊨𝜑 이고 𝜑 는 무한 모형에서 거짓이라 했다
부딪쳤다. 그러므로 그런 𝜑 는 없다. 증명 끝이다.
이 정리는 문장 하나가 아니라 문장 집합에 대해서도 그대로 성립한다. 모형이 정확히 유한 모형 전부인 집합 Γ 가 있다면, Γ∪Λ 의 유한 부분집합이 모두 모형을 가지므로(충분히 큰 유한 모형을 잡으면 된다) 같은 논증이 통한다.
여기가 헷갈리기 쉬운 자리다. 12장은 "원소가 많아야 𝑘 개"를 ¬𝜆𝑘+1 로 적을 수 있다고 했다. 크기 하나하나에 대해서는 말할 수 있다는 뜻이다. 그런데 "유한하다"는 "크기가 1 이하이거나 2 이하이거나 3 이하이거나 …"이고, 이 "…"가 끝나지 않는다. 논리합을 무한히 이어야 하는데 5장이 적형식을 정의할 때 조항을 유한 번만 쓰기로 못 박았다. 문장은 유한한 기호열이다. 크기마다 하나씩은 되고 전부를 한 문장으로는 안 된다 — 이 차이가 정리의 내용 전부다.
예제 197
Λ 가 모형을 갖는다는 것은 컴팩트성 없이도 알 수 있다. 정의역을 {1,2,3,…} 로 잡으면 끝이다. 그렇다면 위의 논증에서 컴팩트성이 실제로 일한 자리는 어디인가.
풀이 보기
Λ 하나만 두고 보면 컴팩트성은 필요 없다. 지적한 대로 무한 정의역을 직접 적으면 된다.
컴팩트성이 일하는 자리는 𝜑 가 섞였을 때다. {𝜑}∪Λ 의 모형을 직접 지으려면 "𝜑 를 참으로 만들면서 무한한" 모형을 손으로 만들어야 하는데, 𝜑 가 무엇인지 모르는 채로는 할 수 없다. 𝜑 는 우리가 고른 것이 아니라 있다고 가정한 것이라 정체를 모른다.
컴팩트성은 그 정체를 몰라도 된다고 말해 준다. 유한 부분집합마다 모형이 있다는 것만 확인하면 되는데, 그것은 "𝜑 는 유한 모형에서 참"이라는 가정만으로 확인된다.
정체를 모르는 대상에 대해 존재를 주장할 수 있게 해 주는 것이 이 정리의 쓸모다. 다음 두 절도 전부 같은 수법이다.
예제 198
다음 성질 가운데 어느 것이 1차 논리의 문장 하나로 표현되는가. (가) 정의역에 원소가 정확히 다섯 개 있다 (나) 정의역이 유한하다 (다) 정의역이 무한하다
풀이 보기
(가) 된다.𝜆5∧¬𝜆6. 12장의 "정확히 𝑛 개"가 이것이다. 문장 하나이고 길이가 유한하다.
(나) 안 된다. 방금 증명했다.
(다) 문장 하나로는 안 되지만 문장 집합으로는 된다.Λ 가 바로 그 집합이다. 모형이 Λ 를 전부 참으로 만드는 것과 정의역이 무한한 것이 같은 말이다.
(나)와 (다)가 갈리는 것이 이상해 보일 수 있다. 부정하면 서로 넘어가는 성질인데 왜 하나는 되고 하나는 안 되는가. 답은 집합의 부정은 집합이 아니기 때문이다. Λ 를 전부 참으로 만드는 것의 반대는 "Λ 의 어떤 문장이 거짓"이고, 이것은 무한 논리합이라 문장 집합으로 적히지 않는다. 문장 집합은 논리곱만 무한히 할 수 있고 논리합은 못 한다.
예제 199
정의역이 무한한 것을 "𝐹 인 것이 무한히 많다"로 바꾸면 어떻게 되는가. 그런 문장 집합이 있는가.
풀이 보기
있다. 12장의 "𝐹 인 것이 적어도 𝑛 개" 문장들을 다 모으면 된다. 𝜆𝑛 에서 술어를 지웠던 것을 되돌리는 셈이다.
∃𝑥∃𝑦(𝐹𝑥∧𝐹𝑦∧𝑥≠𝑦), ∃𝑥∃𝑦∃𝑧(𝐹𝑥∧𝐹𝑦∧𝐹𝑧∧𝑥≠𝑦∧𝑥≠𝑧∧𝑦≠𝑧), 그리고 계속.
그러면 이 집합의 모형은 𝐼(𝐹) 가 무한한 모형이다. 그런데 "𝐹 인 것이 유한히 많다"는 여전히 안 된다. 앞의 증명에서 Λ 자리에 이 집합을 넣으면 그대로 통한다.
1차 논리는 "충분히 많다" 쪽으로는 얼마든지 갈 수 있고 "더 이상은 없다" 쪽에서 막힌다. 아래에서 위로 쌓는 주장은 문장을 하나씩 더하면 되지만, 위에서 막는 주장은 한 문장 안에 무한을 담아야 하기 때문이다.
같은 벽이 또 나온다 — ‘조상’
유한과 무한의 이야기처럼 보였지만 벽의 정체는 더 일반적이다. 술어 하나로 확인해 두면 눈에 익는다.
2항 술어 𝐹 를 "… 는 … 의 부모다"로 읽자. 그러면 "조상이다"는 부모이거나, 부모의 부모이거나, 부모의 부모의 부모이거나 … 이다. 걸음 수마다 문장은 적을 수 있다. 한 걸음은 𝐹𝑥𝑦, 두 걸음은 ∃𝑧(𝐹𝑥𝑧∧𝐹𝑧𝑦), 세 걸음은 ∃𝑧1∃𝑧2(𝐹𝑥𝑧1∧𝐹𝑧1𝑧2∧𝐹𝑧2𝑦) 이고 계속 이렇게 간다.
그런데 "조상이다"는 이것들의 무한 논리합이다. 그리고 그런 문장은 없다. 유한하다는 말을 못 한 것과 같은 이유다.
정확히 진술하면 이렇다. 2항 술어 𝐺 를 하나 더 두고, 어떤 문장 집합 Γ 로도 "𝐺 가 성립하는 것과 𝐹 를 유한 번 따라갈 수 있는 것이 같다"를 강제할 수 없다. 증명은 요령 그대로다. 새 상수 𝑎 와 𝑏 를 더하고 아래를 모은다.
Σ=Γ∪{𝐺𝑎𝑏}∪{한걸음에못간다,두걸음에못간다,…}
오른쪽 각 항목은 위의 문장들에 ¬ 를 붙인 것이라 유한한 문장이다. 유한 부분집합에는 걸음 수 제약이 유한 개뿐이므로, 𝑎 에서 𝑏 로 가는 사슬을 그보다 길게 잡아 둔 모형이면 전부 참이 된다. 컴팩트성에 따라 Σ 에 모형이 있고, 거기서는 𝐺𝑎𝑏 가 참인데 𝑎 에서 𝑏 로 유한 걸음으로 갈 수 없다.
프로그램을 다뤄 본 독자는 이 벽을 알아볼 것이다. "도달 가능하다"는 되풀이로 정의되는 성질이고, 되풀이가 몇 번인지 미리 정해지지 않는다. 1차 논리는 되풀이 횟수에 상한이 없는 조건을 적지 못한다. 유한성도 자연수도 조상도 전부 이 하나의 벽이다.
예제 200
위 논증에서 Γ 가 무엇인지 한 번도 쓰지 않았다. 그것이 왜 중요한가.
풀이 보기
결론이 모든Γ 에 대해 성립하기 때문이다. 논증이 Γ 의 내용을 썼다면 "이 Γ 로는 안 된다"만 보인 것이 되고, 다른 공리를 더 넣어 보자는 여지가 남는다.
유한 부분집합에 모형을 주는 걸음에서 Γ 는 "원래 모형을 그대로 쓴다"로 통과했다. 𝑎 와 𝑏 는 새 상수라 Γ 의 문장에 나오지 않으므로, 그것들을 어디에 배정하든 Γ 의 참거짓은 흔들리지 않는다.
새 상수는 아무 새 정보를 주지 않는다는 이 사실이 이 장에서 세 번 쓰였다. 위로 정리에서도, 비표준 모형에서도, 여기서도 그렇다. 11장이 변수 조건을 세울 때 처음 나온 생각이고 14장이 증인 공리에서 값을 치른 것이 같은 생각이다.
두 번째 대가 — 뢰벤하임-스콜렘
첫째 대가는 유한과 무한을 가르지 못한다는 것이었다. 둘째 대가는 더 나아간다. 무한 안에서도 크기를 가르지 못한다. 이 말을 하려면 크기를 재는 낱말이 있어야 하니 먼저 그것을 세운다.
가산과 비가산 — 여기서 필요한 만큼만
5장이 적형식 전체에 대해 "셀 수 있다"는 말을 쓰면서 정확한 정의는 15장으로 미뤘다. 여기서 갚는다.
두 모임의 크기를 견주는 방법은 하나뿐이다. 짝을 지어 보는 것이다. 한 모임의 원소마다 다른 모임의 원소 하나가 붙고, 남거나 겹치는 것이 없으면 두 모임은 크기가 같다. 이런 짝짓기를 전단사(bijection)라 한다. 손가락을 하나씩 접어 가며 세는 일이 바로 {1,2,3,…,𝑛} 과 전단사를 만드는 일이다.
가산(countable)이란 {1,2,3,…} 과 전단사가 있다는 뜻이다. 곧 원소 전부에 번호를 빠짐없이 겹치지 않게 붙일 수 있다는 뜻이고, 5장에서 적형식 전체에 대해 확인한 것이 이것이다. 유한한 모임도 셀 수 있다고 부르지만, 이 장에서 "가산"이라 할 때는 가산이면서 무한한 것을 뜻한다.
놀라운 것은 무한한 모임에서 부분이 전체와 크기가 같을 수 있다는 점이다. 짝수 전체에 1,2,3,… 을 붙일 수 있으므로 짝수는 자연수 전부와 크기가 같다. 유한한 모임에서는 있을 수 없는 일이고, 무한에서는 이것이 정상이다.
더 놀라운 것은 번호를 붙일 수 없는 무한도 있다는 점이다. 실수 전체가 그렇다. 이런 모임을 비가산(uncountable)이라 한다. 증명은 대각선 논법이라 부르는 것인데, 여기서는 결과만 쓰면 되고 논법 자체는 Mathematics for Computer Science 의 무한집합 장에 있다. 5장에서 적형식이 가산임을 보일 때 쓴 두 줄 세우기와 짝을 이루는 논법이다.
이 장에서 필요한 것은 딱 여기까지다. 무한에도 크기가 여럿 있고, 가장 작은 무한이 가산이다.
아래로 — 모형이 있으면 가산 모형이 있다
아래로 뢰벤하임-스콜렘 정리. 문장 집합 Γ 가 모형을 가지면 Γ 는 가산인 모형도 갖는다.
증명은 이미 끝나 있다. Γ 가 모형을 가지면 만족가능하고, 만족가능하면 일관적이다(건전성). 그러면 14장의 헨킨 구성이 Γ 의 모형을 하나 지어 내는데, 그 모형의 정의역은 언어의 닫힌 항들을 묶은 것이다. 항은 유한한 기호열이고 기호는 가산 개이므로 항 전체가 가산이다. 묶어도 늘어나지 않는다. 그러므로 지어진 모형이 가산이다.
14장에서는 이것이 부산물처럼 지나갔다. 여기서는 정리다. 아무리 큰 모형을 손에 들고 있어도, 같은 문장을 전부 참으로 만드는 가산 모형이 반드시 따로 있다.
위로 — 무한 모형이 있으면 더 큰 모형이 있다
반대 방향은 컴팩트성이 한다. 수법은 "서로 다른 이름을 잔뜩 집어넣는 것"이다.
위로 뢰벤하임-스콜렘 정리.Γ 가 무한 모형을 가지면, 아무 모임 𝑋 를 잡아도 정의역이 𝑋 만큼 큰 Γ 의 모형이 있다.
증명.𝑋 의 원소마다 새 개체상수를 하나씩 만들어 어휘에 더한다. 그것들을 𝑐𝑖 라 하자. 그리고 서로 다른 두 상수마다 문장 𝑐𝑖≠𝑐𝑗 를 만들어 모두 모은다. 그 집합을 𝐸 라 하고 Σ=Γ∪𝐸 를 잡는다.
Σ 의 유한 부분집합 Δ 를 잡으면 Δ 에 나오는 새 상수는 유한 개다. Γ 의 무한 모형을 가져와, 그 유한 개의 상수를 정의역의 서로 다른 원소들에 배정한다. 정의역이 무한하니 서로 다른 원소가 얼마든지 있어 배정이 막히지 않는다. 나머지 새 상수는 아무렇게나 배정한다. 그러면 Δ 가 전부 참이다.
컴팩트성에 따라 Σ 가 모형 M 을 갖는다. M 에서 서로 다른 상수는 서로 다른 원소를 가리켜야 하므로 𝐷 의 원소가 적어도 𝑋 만큼 많다. 그리고 M⊨Γ 이다. 새로 더한 상수를 어휘에서 다시 지우면 Γ 의 언어에서의 모형이 남는다.
정직하게 밝힐 것이 있다. 𝑋 를 비가산으로 잡으면 어휘 자체가 비가산이 된다. 그러면 5장이 "적형식 전체는 가산"이라고 센 계산이 더는 통하지 않는다. 다행히 컴팩트성 증명은 어휘의 크기를 한 번도 쓰지 않았고, 14장의 헨킨 구성도 상수를 더 넣는 일만 늘어날 뿐 그대로 돈다. 이 문서는 가산 어휘만 다루기로 했으므로, 이 절의 "아무 모임 𝑋"는 가산 어휘 바깥을 잠깐 빌린 진술로 읽어 두면 된다. 가산인 𝑋 만 써도 이 절의 결론에는 지장이 없다.
<아래로는 가산에서 멈추고 유한까지 내려가지 않는다는 것에 주의하라. 두 화살표를 합치면 무한 모형을 가진 어떤 집합도 자기 모형의 크기를 한 칸으로 좁히지 못한다>[원본 보기]
두 정리를 합치면 결론이 나온다. 무한 모형을 가진 문장 집합은 무한한 크기 어느 것으로도 모형을 갖는다. 아래로는 가산까지 내려가고 위로는 끝없이 올라간다. 어떤 이론도 "내 모형은 이만한 크기다"라고 못 박지 못한다.
스콜렘의 역설
여기가 이 장에서 가장 걸리는 곳이다. 천천히 읽는 편이 좋다.
집합론의 공리를 전부 모은 집합을 생각하자. 이 집합은 "비가산 집합이 존재한다"를 정리로 증명한다. 실수 전체가 그런 집합이라는 것이 집합론의 기본 결과다.
그런데 이 공리 집합이 모형을 갖는다면 — 곧 일관적이라면 — 아래로 뢰벤하임-스콜렘에 따라 가산 모형을 갖는다. 정의역의 원소 전부에 1,2,3,… 을 붙일 수 있는 모형이다.
이상하다. 가산인 모형 안에 비가산 집합이 있다는 말인가.
<왼쪽 칸과 오른쪽 칸이 같은 대상을 두고 서로 다른 말을 하는 것처럼 보이지만, 어긋나는 자리는 아래 한 곳뿐이다 — 전단사가 밖에는 있고 안에는 없다>[원본 보기]
풀린다. "𝑎 는 비가산이다"가 집합론의 언어에서 뜻하는 것은 "ℕ 에서 𝑎 로 가는 전단사가 존재하지 않는다"이다. 그리고 이 문장의 ∃ 는 10장의 조항대로 정의역 𝐷 안을 훑는다. 그러니 이 문장이 모형 M 에서 참이라는 말은 "그런 전단사가 𝐷안에 없다"는 말이다.
밖에서 보면 그 전단사가 있다. 우리가 𝐷 의 원소에 번호를 붙이면서 만들었으니까. 안에서 보면 없다. 그 짝짓기가 𝐷 의 원소로 들어 있지 않기 때문이다. 두 말은 서로 다른 것을 말하고 있으므로 부딪치지 않는다.
남는 교훈이 이 절의 값이다. "가산이다"는 대상 혼자 지니는 성질이 아니다. 어느 모형 안에서 보느냐에 딸린 성질이다. 우리는 이 낱말을 절대적인 것으로 여기며 배웠는데, 1차 논리의 문장으로 그 낱말을 적는 순간 모형 상대적인 것이 되어 버린다. 역설이 있다면 논리 안이 아니라 우리의 기대 안에 있었다.
이 사정은 "가산"에만 해당하는 것이 아니다. 첫째 대가에서 본 "유한하다"도 그랬고, 다음 절의 "자연수"도 그렇다. 1차 논리의 문장이 붙잡는 것은 언제나 모형 안에서의 뜻뿐이라는 하나의 사실이 세 자리에서 세 얼굴로 나타난다.
예제 201
Γ 가 "정의역이 정확히 비가산이다"를 강제할 수 있는가.
풀이 보기
없다. Γ 가 비가산 모형을 가진다면 그 모형은 무한하므로 Γ 는 무한 모형을 가진다. 아래로 뢰벤하임-스콜렘에 따라 Γ 는 가산 모형도 갖는다.
그러니 비가산 모형을 갖는 집합은 반드시 가산 모형도 갖는다. 크기를 비가산으로 못 박는 일은 불가능하다.
대칭으로 "정의역이 정확히 가산이다"도 강제할 수 없다. 위로 정리가 더 큰 모형을 만들어 준다. 무한 안에서 크기를 한 칸으로 좁히는 일은 어느 쪽으로도 안 된다.
예제 202
스콜렘의 역설을 잘못 정리한 문장을 셋 든다. 각각 무엇이 틀렸는가. (가) 집합론이 비일관적임이 드러났다 (나) 실수 전체가 사실은 가산이다 (다) 가산 모형 안의 "실수 전체"는 진짜 실수 전체가 아니다
풀이 보기
(가) 틀렸다. 논증 어디에도 모순이 없다. 우리가 얻은 것은 "가산 모형이 있다"이고, 그것은 집합론이 일관적이라는 가정 아래 나온 결과다. 일관성을 흔드는 대목이 하나도 없다.
(나) 틀렸다. 밖에서 실수 전체가 비가산이라는 사실은 그대로다. 가산인 것은 어떤 특정한 모형의 정의역이고, 그 모형이 "실수 전체"라 부르는 원소가 진짜 실수 전체와 같아야 할 이유가 없다.
(다) 이것이 맞다. 그 모형 안에서 "실수 전체"라 불리는 원소 𝑎 는 밖에서 보면 가산 개의 원소만 담고 있다. 그런데 그 원소를 하나씩 세어 주는 짝짓기가 모형 안에 없어서, 모형은 𝑎 를 비가산이라고 판정한다.
정리하면 이렇다. 모형이 자기 언어로 하는 말은 전부 참이다. 다만 그 말의 뜻이 우리가 밖에서 쓰는 뜻과 같지 않다.
예제 203
아래로 정리의 증명이 "헨킨 구성이 가산 모형을 만든다" 한 줄로 끝났다. 그 한 줄이 성립하는 이유를 14장의 재료로 되짚어라.
풀이 보기
헨킨 구성이 만드는 모형의 정의역은 언어의 닫힌 항을 재료로 삼는다. 9장이 함수기호를 넣지 않았으므로 이 문서에서 닫힌 항은 개체상수뿐이다.
개체상수는 원래 언어에 가산 개 있었고, 증인 공리를 위해 더한 𝑐0,𝑐1,𝑐2,… 도 가산 개다. 가산 개를 가산 번 더해도 가산이라는 것이 5장의 두 줄 세우기였다.
마지막으로 12장의 = 때문에 상수들을 묶는 걸음이 있는데, 묶으면 개수가 줄거나 그대로다. 늘지 않는다.
그러므로 정의역이 가산이다. 이 논증에 "Γ 가 어떤 집합인가"가 한 번도 나오지 않았다는 점이 중요하다. 그래서 결론이 모든 Γ 에 대해 성립한다.
답이 말이 되는가. 결론은 "가산"인데 논증이 쓴 재료는 항 모형의 정의역이 상수들의 묶음이라는 사실 하나뿐이다. 상수를 셀 수 있을 만큼만 더했으므로 묶음도 셀 수 있고, 크기가 늘어날 자리가 어디에도 없다. 결론의 크기와 논증이 쓴 재료의 크기가 맞아떨어지는지 보는 것이 이런 논증의 검산이다.
예제 204
위로 정리의 증명에서 "Γ 가 무한 모형을 갖는다"는 가정을 "Γ 가 모형을 갖는다"로 약하게 만들면 어디가 무너지는가.
풀이 보기
유한 부분집합 Δ 에 모형을 주는 걸음이 무너진다. 그 걸음은 "Δ 에 나오는 유한 개의 새 상수를 서로 다른 원소에 배정한다"였는데, Γ 의 모형이 크기 3 짜리 하나뿐이라면 새 상수 네 개를 서로 다르게 배정할 수 없다.
실제로 결론도 거짓이 된다. ¬𝜆2 는 원소가 하나인 모형만 갖고, 아무리 상수를 더해도 더 큰 모형이 생기지 않는다.
무한 모형이 하나라도 있어야 사다리가 시작된다. 첫째 대가에서 무한 모형이 강제되는 것을 본 뒤라 이 조건이 그렇게 까다롭지 않다는 것도 알 수 있다 — 유한 모형의 크기에 상한이 없기만 하면 무한 모형이 따라온다.
세 번째 대가 — 비표준 모형
세 번째는 앞의 둘을 합친 것이고, 논리학 바깥에서 가장 자주 인용되는 결과다.
산술을 이야기하려면 어휘가 필요하다. 개체상수 0, 다음 수를 주는 기호, 덧셈과 곱셈, 그리고 크기를 견주는 2항 술어를 갖춘 언어를 잡는다. 9장이 함수기호를 넣지 않았다는 것을 여기서 밝혀 둔다 — 그것은 17장의 몫이다. 이 절은 함수기호가 있는 언어를 잠깐 빌려 온다. 컴팩트성 논증은 어휘가 무엇으로 되어 있든 한 글자도 달라지지 않으므로 빌려도 탈이 없다.
0,1,2,… 는 각각 "다음 수" 기호를 유한 번 쌓아 만든 닫힌 항이다. 3 은 "0 의 다음의 다음의 다음"을 줄여 적은 것이다. 이 점이 곧 쓰인다.
이제 산술의 참인 문장 전부를 모은다. 표준 모형 ℕ 에서 참인 문장을 하나도 빠짐없이 모은 집합이고, 이름을 𝑇 라 하자. 이것은 상상할 수 있는 가장 강한 산술 이론이다. 공리를 고르고 말고 할 것 없이 참인 것을 다 넣었다.
그런데도 붙잡지 못한다.
상수 하나를 밀어 넣는다
새 개체상수 𝑘 를 어휘에 더하고 아래 문장들을 만든다.
𝑘>0,𝑘>1,𝑘>2,𝑘>3,…
이 문장 전체를 𝐾 라 하고 Σ=𝑇∪𝐾 를 잡는다.
Σ 의 유한 부분집합 Δ 를 잡자. Δ 에 든 𝐾 쪽 문장은 유한 개이므로 오른쪽 수 가운데 가장 큰 것이 있다. 그것을 𝑛 이라 하면, 표준 모형에서 𝑘 를 𝑛+1 로 해석하는 것만으로 Δ 가 전부 참이 된다. 𝑇 쪽 문장은 표준 모형에서 참이니 그대로이고, 𝐾 쪽 유한 개도 참이다.
그러니 모든 유한 부분집합이 모형을 갖고, 컴팩트성에 따라 Σ 전체가 모형 M∗ 을 갖는다.
<두 줄이 눈으로는 전혀 다른데 1차 논리의 문장으로는 하나도 구별되지 않는다는 것이 요점이다. k 에 이르는 유한 걸음이 없다는 대목을 특히 보라>[원본 보기]
M∗ 가 무엇인지 따져 보자.
M∗⊨𝑇 이므로 산술의 참인 문장이 전부 참이다. 표준 모형과 문장 하나까지 똑같이 판정한다
그런데 M∗⊨𝐾 이므로 𝑘 가 가리키는 원소는 0 보다도 1 보다도 2 보다도 크다. 어떤 표준 자연수보다도 큰 원소가 정의역에 들어 있다
이런 원소를 무한대 원소라 하고, 이런 모형을 산술의 비표준 모형(nonstandard model)이라 한다.
그림의 아래 줄이 그것이다. 앞쪽에는 표준 자연수가 그대로 있고, 그 뒤에 무한대 원소들의 덩어리가 붙는다. 덩어리가 앞뒤로 끝이 없다는 것이 눈에 띄는 특징이다. 𝑘 가 무한대이면 "𝑘 의 앞 수"도 무한대이고 그 앞 수도 그렇다. 그렇게 뒤로 끝없이 가는데, 0 에는 영영 닿지 않는다. 표준 자연수는 0 에서 유한 걸음으로 닿는 것들이고, 𝑘 에 이르는 유한 걸음은 없기 때문이다.
무엇을 잃었는가
두 모형이 이름만 바꾼 것일 때 둘이 동형(isomorphic)이라 한다. 정의역 사이에 전단사가 있고 그 짝짓기가 모든 해석을 그대로 옮기면 동형이다. 동형인 두 모형은 사실상 같은 모형이라고 여긴다.
표준 모형과 M∗ 는 동형이 아니다. 표준 모형에는 무한대 원소가 없으니 짝을 지을 수가 없다. 그런데 두 모형이 참으로 만드는 1차 논리 문장은 정확히 같다.
이것이 결론이다. 1차 논리로는 자연수를 유일하게 붙잡을 수 없다. 참인 것을 하나도 빼지 않고 전부 공리로 넣어도, 자연수가 아닌 것이 함께 딸려 온다. 딸려 오는 것을 걸러 낼 문장이 없다 — 있다면 그 문장이 두 모형을 가르는데, 두 모형은 모든 문장에 대해 값이 같다.
17장의 예고를 여기서 해 둔다. 17장의 불완전성 정리는 다른 주장이다. 이 장은 "산술의 참을 전부 모아도 모형이 여럿"이라 했고, 17장은 "산술의 참을 기계가 다룰 수 있는 공리 목록으로 뽑아낼 수 없다"고 한다. 이 장의 𝑇 는 목록으로 적을 수 있는 물건이 아니고, 17장은 바로 그 점을 정리로 만든다. 둘은 같은 한계의 두 얼굴이지만 진술도 증명도 다르다.
예제 205
M∗ 에서 "모든 수는 0 이거나 어떤 수의 다음 수다"가 참인가.
풀이 보기
참이다. 이 문장은 표준 모형에서 참이므로 𝑇 에 들어 있고, M∗⊨𝑇 이기 때문이다.
처음에는 이상해 보인다. 𝑘 는 0 이 아니니 "어떤 수의 다음 수"여야 하는데, 무한대 원소의 앞 수라는 것이 있는가.
있다. 그것도 무한대 원소다. 그림에서 𝑘−1 이라 적은 것이 그것이고, 표준 모형에는 없던 원소다. 문장이 요구하는 것은 앞 수의 존재이지 그 앞 수가 표준일 것이 아니다.
이 예제가 보여 주는 요령이 하나 있다. M∗ 에서 어떤 문장이 참인지 궁금하면 그림을 들여다볼 필요가 없다. 표준 모형에서 참인지만 확인하면 된다. 둘은 모든 문장에 대해 값이 같다.
예제 206
그렇다면 두 모형이 다르다는 것을 우리는 어떻게 아는가. 문장으로 가를 수 없다면서 왜 다르다고 말할 수 있는가.
풀이 보기
우리가 쓴 말이 1차 논리의 문장이 아니기 때문이다. "정의역에 무한대 원소가 있다"는 표준 자연수 전체를 한꺼번에 지목하는 말이다. 이것을 문장으로 적으려면 𝑘>0∧𝑘>1∧𝑘>2∧⋯ 를 무한히 이어야 하고, 문장은 유한하다.
무한 논리곱이 필요한 대목에서 우리가 쓴 것은 문장 무한 개였다. 𝐾 가 그것이다. 그런데 𝐾 는 M∗ 의 언어에서 새 상수 𝑘 를 쓰는 집합이고, 원래 산술의 언어에 속하지 않는다.
정리하면 이렇다. 우리는 모형 밖에 서서 메타언어로 말하고 있다. 5장이 대상언어와 메타언어를 구별해 둔 것이 여기서 값을 한다. 두 모형의 차이는 메타언어에서 보이고 대상언어에서 보이지 않는다.
예제 207
컴팩트성을 써서 "𝑇 는 정의역이 가산인 비표준 모형을 갖는다"를 보여라.
풀이 보기
위에서 컴팩트성으로 Σ=𝑇∪𝐾 의 모형 M∗ 을 얻었다. 이 모형의 크기가 얼마인지는 컴팩트성이 말해 주지 않는다.
여기에 아래로 뢰벤하임-스콜렘을 얹는다. Σ 가 모형을 가지므로 Σ 는 가산 모형 N 도 갖는다.
N⊨𝑇 이고 N⊨𝐾 이므로 N 에도 무한대 원소가 있다. 곧 비표준이다. 그리고 가산이다.
표준 모형도 가산이다. 그러므로 같은 문장을 전부 참으로 만들면서 크기까지 같은데 동형이 아닌 두 모형이 있다. 크기를 맞춰 놓아도 갈라지지 않는다는 뜻이라, 세 번째 대가가 두 번째 대가보다 한 걸음 더 나간 자리다.
답이 말이 되는가. 만든 것이 요구를 다 채웠는지 항목별로 되짚는다. 𝑇 를 전부 참으로 만드는가 — 컴팩트성이 준 모형이므로 그렇다. 표준 모형과 동형이 아닌가 — 무한대 원소가 있으므로 아니다. 정의역이 가산인가 — 아래로 정리를 한 번 더 써서 그렇게 만들었다. 구성 문제의 검산은 요구 조건을 하나씩 되짚는 것이고, 셋 가운데 하나라도 빼먹으면 만든 것이 요구한 물건이 아니다.
무엇이 대가인가
세 절이 센 것을 한 줄로 잇는다.
완전성이 성립한다는 것은 유한한 도출이 의미론을 남김없이 따라잡는다는 뜻이다. 그런데 도출이 유한하다는 바로 그 사실이 컴팩트성을 낳는다. 컴팩트성이 있으면 "유한 부분집합마다 모형이 있다"에서 "전체에 모형이 있다"로 건너뛸 수 있고, 그 건너뜀이 무한 모형을 강제하고 크기를 미끄러뜨리고 비표준 모형을 만든다.
사슬을 거꾸로 읽으면 이렇게 된다.
얻은 것
그 때문에 잃은 것
증명이 유한하다
무한한 정보를 담은 조건을 문장으로 적을 수 없다
건전성 · 완전성
컴팩트성이 강제된다
컴팩트성
유한과 무한을 가르지 못한다
컴팩트성
모형의 크기를 무한 안에서 한 칸으로 좁히지 못한다
컴팩트성
ℕ 을 동형인 것들만 남기고 붙잡지 못한다
표현력을 내주고 완전성을 산 것이다. 1차 논리가 말하지 못하는 것이 많은 것은 설계가 서툴러서가 아니라 값을 치른 자리다. 이것이 이 장의 결론이다.
값을 안 치르는 논리는 없는가
있다. 2차 논리는 한정사를 개체뿐 아니라 술어에도 붙일 수 있게 한 것이다. ∀𝐹… 처럼 적는다. 그러면 "모든 성질에 대해"라고 말할 수 있게 되고, 표현력이 크게 늘어난다.
<세로줄 둘에 찍힌 표시가 정확히 뒤집혀 있다는 것을 확인하라. 하나를 늘리면 다른 하나가 사라진다>[원본 보기]
2차 논리에서는 "정의역이 유한하다"를 문장 하나로 적을 수 있고, 자연수를 동형인 것들만 남기고 붙잡을 수 있다. 귀납 원리를 "모든 성질에 대해"로 적을 수 있기 때문이다. 앞 절의 비표준 모형은 그 문장 하나에 걸려 걸러진다.
대신 잃는 것이 크다. 2차 논리에는 건전하고 완전한 증명 체계가 없다. 규칙 목록을 어떻게 고르든 없다. 있을 수 없다는 것이 정리다. 컴팩트성도 뢰벤하임-스콜렘도 성립하지 않는다.
여기서는 이름만 얹어 둔다. 2차 논리가 무엇을 더 말할 수 있고 그 대가로 무엇을 잃는지는 20장에서 다룬다.
예제 208
앞 절의 예제에서 "컴팩트성이 깨지려면 건전성이나 완전성이나 도출의 유한성 가운데 하나가 깨져야 한다"고 했다. 2차 논리는 그중 어느 것을 포기한 것인가.
풀이 보기
완전성이다. 2차 논리에도 건전한 규칙 목록은 얼마든지 만들 수 있고, 그 규칙으로 만든 도출은 여전히 유한하다.
모자란 것은 반대 방향이다. 모든 모형에서 참인데 어떤 규칙 목록으로도 도출되지 않는 식이 반드시 남는다.
그래서 2차 논리에서는 ⊢ 와 ⊨ 사이의 틈이 영영 메워지지 않는다. 이 문서가 13장과 14장에서 세운 다리를 2차 논리는 절반만 갖는다. 표현력의 값이 정확히 그 절반이다.
예제 209
어떤 사람이 이렇게 말한다. "컴팩트성은 대가가 아니라 도구다. 위로 정리도 비표준 모형도 컴팩트성 덕분에 얻은 것 아닌가." 이 말은 맞는가.
풀이 보기
맞다. 그리고 그 점이 이 장의 낱말을 조심스럽게 만든다.
컴팩트성 자체는 강력한 존재 정리다. 정체를 모르는 모형의 존재를 유한한 확인만으로 보증해 준다. 실제로 수학에서 컴팩트성은 모형을 만들어 내는 도구로 쓰이고, 이 장의 위로 정리와 비표준 모형이 그 쓰임의 본보기다. 비표준 해석학이라는 분야 하나가 여기서 나왔다.
대가라고 부른 것은 같은 사실을 표현력 쪽에서 본 이름이다. "정체 모를 모형이 딸려 온다"를 좋게 보면 존재 정리이고, "딸려 오는 것을 걸러 낼 수 없다"로 보면 표현력의 한계다.
어느 쪽으로 부를지는 무엇을 하려는가에 달렸다. 모형을 만들려는 사람에게는 도구이고, 하나의 구조를 정확히 지목하려는 사람에게는 대가다. 12장이 𝜆2 를 두고 "대가로 볼 것인가 능력으로 볼 것인가는 쓰임에 달렸다"고 한 것과 같은 사정이다.
이 장에서 새로 나온 것
기호 · 용어
뜻
컴팩트성 정리
Γ 의 모든 유한 부분집합이 모형을 가지면 Γ 도 모형을 갖는다
컴팩트성 (귀결 판)
Γ⊨𝜑 이면 어떤 유한한 Δ⊆Γ 에 대해 Δ⊨𝜑
Λ
{𝜆2,𝜆3,𝜆4,…}. 12장의 수 세기 문장 전부. 모형은 정확히 무한 정의역을 가진 것들
유한성은 말할 수 없다
유한 모형에서만 참인 문장은 없다. 문장 집합으로도 안 된다
전단사(bijection)
두 모임 사이의 빠짐없고 겹치지 않는 짝짓기
가산(countable)
{1,2,3,…} 과 전단사가 있다. 원소 전부에 번호를 붙일 수 있다. 5장이 미룬 정의
비가산(uncountable)
번호를 붙일 수 없는 무한. 실수 전체가 그렇다
아래로 뢰벤하임-스콜렘
모형을 갖는 집합은 가산 모형도 갖는다. 헨킨 구성이 만드는 모형이 가산이라는 데서 곧바로 나온다
위로 뢰벤하임-스콜렘
무한 모형을 가지면 임의로 큰 모형도 갖는다. 상수를 잔뜩 더하고 서로 다르다고 못 박는다
스콜렘의 역설
집합론이 가산 모형을 갖는다. 역설이 아닌 까닭은 전단사가 밖에는 있고 모형 안에는 없기 때문
모형 상대성
‘가산이다’ 는 대상 혼자 지니는 성질이 아니라 어느 모형 안에서 보느냐에 딸린 성질이다
𝑇
표준 모형에서 참인 산술 문장 전부. 공리를 고르지 않고 참을 다 넣은 이론
무한대 원소
어떤 표준 자연수보다도 큰 원소. 𝑘>0,𝑘>1,𝑘>2,… 를 다 참으로 만든다
비표준 모형
𝑇 를 전부 참으로 만들면서 무한대 원소를 가진 모형. 표준 모형과 참인 문장이 완전히 같다
은하
무한대 원소 하나에서 앞뒤로 끝없이 이어지는 덩어리. 0 에서 유한 걸음으로 닿지 않는다
동형(isomorphic)
정의역 사이의 전단사가 모든 해석을 그대로 옮긴다. 동형인 두 모형은 사실상 같은 모형
2차 논리
술어에도 한정사를 붙이는 논리. 표현력이 크고 완전한 증명 체계가 없다. 이름만 — 20장
챙겨 갈 것은 넷이다.
컴팩트성의 증명은 네 걸음이고 일하는 걸음은 하나다. 도출이 유한한 기호열이라는 사실이 무한한 Γ 를 유한한 Δ 로 줄인다. 나머지는 13장과 14장의 다리를 건너는 것뿐이다
세 대가는 하나의 사실이 세 얼굴로 나타난 것이다. 유한을 못 가르고, 무한 안에서 크기를 못 좁히고, ℕ 을 유일하게 못 붙잡는다. 뿌리는 셋 다 "문장은 유한한 기호열"이다
1차 논리의 문장이 붙잡는 것은 모형 안에서의 뜻뿐이다. 스콜렘의 역설이 역설이 아닌 이유가 이것이고, 비표준 모형이 걸러지지 않는 이유도 이것이다
완전성은 표현력을 내주고 산 것이다. 둘 다 갖는 선택지는 없다. 2차 논리는 반대쪽을 골랐고 그래서 완전한 증명 체계를 잃었다
16장은 남은 구멍 하나를 본다. 두 다리가 놓였으니 Γ⊨𝜑 인지 알고 싶으면 도출을 찾으면 되는데, 도출이 없을 때 없다는 것을 어떻게 아는가. 명제논리에서는 진리표가 답했지만 술어논리에는 그런 것이 없다. 없다는 것 자체가 정리이고, 그것이 결정불가능성이다.
결정불가능성
14장이 ⊢ 와 ⊨ 를 붙였다. 술어논리에서 도출할 수 있는 것과 의미론이 인정하는 것이 정확히 같다는 것이 완전성 정리였다. 그러면 자연스러운 다음 물음이 하나 있다. 기계가 판정할 수 있는가.
물음이 자연스러운 이유는 이렇다. 논리식이 논리적 참인지 알아내는 일이 통찰을 요구한다면 우리는 여전히 재주에 기대고 있는 것이다. 그런데 판정이 기계적이라면 그 재주가 필요 없어진다. 힐베르트는 20세기 초에 정확히 그것을 목표로 삼았다. 논리식을 넣으면 예 또는 아니오가 나오는 절차를 만들자는 것이었고, 그 계획의 이름이 결정 문제(Entscheidungsproblem)다.
이 장에서 답할 것은 셋이다. "기계가 판정한다"가 정확히 무슨 뜻인가. 술어논리에 그런 기계가 있는가. 없다면, 14장이 증명한 완전성은 도대체 무엇을 준 것인가. 셋째 물음이 이 장의 중심이다. 완전성과 결정불가능성이 어긋나 보이는데 어긋나지 않는다는 것을 보이는 것이 이 장의 값이다.
15장에서 가져오는 것은 의미론 쪽이 우리 통제 밖이라는 사실이다. 컴팩트성과 뢰벤하임-스콜렘 정리가 보여 준 것은 우리가 적은 문장들이 우리가 뜻한 모형만 갖지 않는다는 것이었다. 이 장은 그 반대편에서 시작한다. 도출은 유한한 대상이다. 7장이 정의한 도출은 줄이 유한하고 줄마다 식이 유한하다. 무한히 많은 모형과 유한한 도출, 이 비대칭이 이 장의 답을 만든다.
6장이 "명제논리는 결정 가능하다"고 말하면서 낱말만 던져 두었다. 여기서 그 낱말에 정의를 준다.
판정 문제란 무엇인가
먼저 물음을 물음답게 만들어야 한다. "기계가 판정할 수 있는가"에서 판정할 대상이 무엇인지부터 정한다.
판정 문제(decision problem)는 두 부분으로 이루어진다. 첫째, 입력의 모임이 있다. 문자열로 적을 수 있는 것이면 무엇이든 된다 — 논리식, 논증, 자연수, 나중에는 기계 자체도. 둘째, 입력마다 붙는 예·아니오 물음이 있다.
여기서 놓치기 쉬운 것을 짚어 둔다. 판정 문제는 물음 하나가 아니라 물음의 무한한 가족이다. "𝑃→𝑃 는 항진명제인가"는 판정 문제가 아니다. 물음 하나이고 답이 정해져 있다. "주어진 명제논리식은 항진명제인가"가 판정 문제다.
이제 답하는 쪽이다. 판정 절차(decision procedure)는 세 조건을 모두 지켜야 한다.
기계적이다. 유한하게 적힌 규칙만 따른다. 통찰도 운도 쓰지 않는다
모든 입력에 답한다. 입력 하나라도 빠지면 안 된다
반드시 멈춘다. 유한 걸음 안에 답을 낸다
셋째 조건이 가장 자주 잊힌다. 그리고 이 장 전체가 그 조건 하나를 둘러싼 이야기다.
<조건이 셋인데 오른쪽 세 상자가 각각 하나씩 어긴 모습이다. 셋째만 어긴 것에 따로 이름이 붙는다는 것 — 맨 아래 상자 — 이 장 마지막 절의 예고다>[원본 보기]
판정 문제가 결정 가능(decidable)하다는 것은 그 문제의 판정 절차가 있다는 뜻이다. 없으면 결정 불가능(undecidable)하다. 이 장의 제목이 그것이다.
마지막으로 섞지 말아야 할 것 하나. 판정 문제는 예·아니오를 묻는다. "이 식의 파스 트리 높이는 얼마인가"는 값을 내놓으라는 계산 문제이지 판정 문제가 아니다. 다만 "높이가 𝑘 이상인가"처럼 고쳐 물으면 판정 문제로 바꿔 놓을 수 있고, 대개 그렇게 한다.
예제 210
다음 넷 가운데 판정 문제인 것은 어느 것인가. (가) 7 은 소수인가 (나) 주어진 자연수는 소수인가 (다) 주어진 술어논리 문장의 자유 변수를 모두 적어라 (라) 주어진 논증이 7장의 규칙으로 도출되는가
풀이 보기
무엇을 묻는가. 입력을 받는가와 예·아니오를 묻는가 둘이다.
(가) 아니다. 입력이 없다. 물음 하나이고 답은 "예"로 정해져 있다. 굳이 절차를 만들라면 "예를 출력하고 멈춘다"가 그것인데, 그런 절차가 있다는 사실은 소수 판정에 대해 아무것도 말해 주지 않는다.
(나) 판정 문제다. 입력은 자연수이고 물음은 예·아니오다. 결정 가능하기도 하다 — 2 부터 그 수 직전까지 나눠 보면 반드시 끝난다.
(다) 판정 문제가 아니다. 계산 문제다. 답이 예·아니오가 아니라 변수의 목록이다. "𝑥 가 이 문장의 자유 변수인가"로 바꾸면 판정 문제가 된다.
(라) 판정 문제다. 그리고 이 장이 답할 물음이 정확히 이것이다. 지금은 결정 가능한지 모른다.
여기서 챙길 것은 (가)와 (나)의 차이다. 입력이 없으면 어려움도 없다. 어려움은 늘 "입력이 무엇으로 오든"이라는 요구에서 나온다.
예제 211
다음 절차가 "주어진 술어논리 문장은 만족가능한가"의 판정 절차인지 따져라. "정의역 크기를 1,2,3,… 순으로 늘려 가며 그 크기의 모형을 모두 만들어 넣어 본다. 참으로 만드는 모형을 찾으면 예를 출력하고 멈춘다."
풀이 보기
세 조건으로 하나씩 본다.
기계적인가. 그렇다. 크기가 정해지면 그 크기의 모형은 유한 개이고 하나씩 만들어 확인할 수 있다.
모든 입력에 올바로 답하고 멈추는가. 아니다. 두 군데에서 무너진다.
첫째, 답이 "아니오"인 입력에서 이 절차는 아무 말도 하지 않는다. 크기를 아무리 키워도 못 찾았을 뿐이지 없다고 확정한 것이 아니므로 멈출 수가 없다. 셋째 조건을 어긴다.
둘째, 더 나쁜 것이 있다. 답이 "예"인 입력에서도 못 찾을 수 있다. 10장 끝의 예제가 유한 모형은 하나도 없고 무한 모형만 갖는 문장 집합을 실제로 만들었다. 그런 문장은 만족가능한데 이 절차는 영원히 지나친다.
답이 말이 되는가. 두 결함의 성격이 다르다는 것을 구분해 두자. 첫째는 고칠 수 없는 종류다. 이 장 마지막 절에서 그것에 이름을 붙인다. 둘째는 절차가 잘못 설계된 것이고, 실제로 이 장의 마지막 절이 "모형을 훑는다" 대신 "도출을 훑는다"로 갈아타서 이 결함만은 없앤다.
명제논리는 결정 가능하다 — 다만 지수 시간이다
술어논리로 가기 전에 명제논리에서 무엇이 되는지 확인해 둔다. 6장이 이미 답을 말했다. 배당이 유한 개이므로 전부 훑으면 된다.
정확히 적으면 이렇다. 𝜑 에 나오는 문장문자가 𝑛 개라 하자. 6장이 말하고 13장이 귀납으로 갚은 사실 — 식의 값은 그 식에 나오는 문장문자에만 달려 있다 — 에 의해 확인할 배당은 2𝑛 개뿐이다. 각 줄의 값은 확장 배당의 재귀 조항을 부분식마다 한 번씩 적용해 얻는다. 부분식의 개수도 유한하다. 그러니 이 절차는 반드시 멈춘다.
세 조건을 다 지켰다. 그래서 명제논리에서 항진명제 판정, 만족가능성 판정, 그리고 유한한 Γ 에 대한 Γ⊨𝜑 판정은 모두 결정 가능하다.
여기서 한 가지를 미리 새겨 두면 마지막 절이 쉬워진다. 우리가 판정한 것은 의미론 쪽이다. 진리표는 ⊨ 를 다루지 ⊢ 를 다루지 않는다. 명제논리에서도 도출은 무한히 많고, 도출을 훑어서 결정 가능성을 얻은 것이 아니다. 술어논리에서 사라지는 것이 바로 이 진리표이고, 그러면 남는 길은 도출을 훑는 것뿐이다.
결정 가능하다는 것이 실용적이라는 뜻은 아니다. 2𝑛 은 빠르게 손을 벗어난다. 6장의 예제가 문장문자 스물여섯 개로 이미 1 분이 걸리고 여섯 개를 더하면 1 시간이 된다고 계산했다. 만족가능성 판정을 다항 시간에 할 수 있는지는 아무도 모르고, 그 물음이 P 대 NP 다. 만족가능성 문제가 NP-완전이라는 것과 완전이라는 말이 무슨 뜻인지는 알고리즘 문서가 다룬다.
두 종류의 어려움을 섞지 마라. "절차는 있는데 느리다"와 "절차가 아예 없다"는 다른 이야기다. 이 장 나머지는 뒤엣것을 다룬다.
예제 212
유한한 Γ 에 대해 Γ⊨𝜑 를 판정하는 절차를 적고, 세 조건을 각각 확인하라. Γ 에 𝑚 개의 식이 있고 Γ 와 𝜑 를 통틀어 문장문자가 𝑛 개 나온다고 하자.
풀이 보기
절차.𝑛 개 문장문자에 값을 주는 배당 2𝑛 개를 차례로 만든다. 각 배당마다 Γ 의 𝑚 개 식과 𝜑 의 값을 계산한다. Γ 가 모두 T 인데 𝜑 가 F 인 줄이 하나라도 나오면 아니오를 내고 멈춘다. 2𝑛 개 줄을 다 보고도 그런 줄이 없으면 예를 내고 멈춘다.
기계적인가. 그렇다. 배당을 만드는 일은 𝑛 자리 비트열을 세는 일이고, 값 계산은 6장의 재귀 조항을 부분식에 적용하는 일이다. 어느 단계에도 판단이 끼지 않는다.
모든 입력에 답하는가. 그렇다. Γ 와 𝜑 가 무엇으로 오든 문장문자를 세는 일부터 시작하면 된다.
멈추는가. 그렇다. 여기가 핵심이다. 훑을 줄이 2𝑛 개로 유한하고, 줄 하나를 처리하는 데 드는 걸음도 부분식 개수만큼으로 유한하다. 유한 곱하기 유한은 유한이다.
답이 말이 되는가. 셋째 조건이 통과하는 이유가 "배당이 유한 개" 하나에 걸려 있다는 데 주목하라. 10장이 배당 자리에 모형을 놓았고 모형은 무한히 많다. 그 한 줄이 바뀌는 순간 이 증명이 통째로 무너진다.
예제 213
항진명제 판정 절차가 있으면 만족가능성 판정 절차도 있고, 거꾸로도 그렇다는 것을 보여라.
풀이 보기
무엇을 묻는가. 두 문제를 잇는 다리다. 이런 다리를 환원이라 부르고, 이 장 뒷부분의 주된 도구가 된다.
6장의 정의로부터 이렇다. 𝜑 가 항진명제인 것과 ¬𝜑 가 만족가능하지 않은 것이 같다. 모든 배당에서 𝜑 가 T 인 것과, 어느 배당에서도 ¬𝜑 가 T 이 아닌 것이 같은 말이기 때문이다.
만족가능성 판정기로 항진명제를 판정하기.𝜑 를 받으면 ¬𝜑 를 만든다 — 기호 하나 붙이는 일이니 기계적이고 반드시 끝난다. 그것을 만족가능성 판정기에 넣는다. 답이 "아니오"이면 𝜑 는 항진명제이므로 "예"를 내고, 답이 "예"이면 "아니오"를 낸다.
반대 방향.𝜑 가 만족가능한 것과 ¬𝜑 가 항진명제가 아닌 것이 같다. 같은 식으로 뒤집으면 된다.
답이 말이 되는가. 환원이 어떤 모양인지 여기서 익혀 두자. 입력을 기계적으로 고쳐 다른 문제의 판정기에 넘기고, 나온 답을 필요하면 뒤집는다. 이 절차 전체가 하나의 판정기다. 뒤에서 정지 문제를 술어논리로 넘길 때도 모양이 똑같고, 다른 것은 "기호 하나 붙이기" 자리에 훨씬 큰 조립이 들어간다는 점뿐이다.
계산 가능성을 어떻게 정의하는가
앞 절까지 "기계적"이라는 말을 그냥 썼다. 이제 그 말을 정의해야 한다. 이유는 분명하다. "그런 절차가 있다"는 절차 하나를 내밀면 끝나지만, "그런 절차가 없다"는 절차 전체를 훑어야 하는 주장이다. 훑으려면 무엇이 절차인지 정해져 있어야 한다.
Mathematics for Computer Science 10장이 정지 문제를 다룰 때 이 자리를 비워 두었다. 거기서는 ‘문자열 하나를 인수로 받는 프로그램’을 문자열 프로시저라 부르고 그 이상 형식화하지 않았다. 대각선 논법을 펴는 데는 그것으로 충분했기 때문이다. 여기서는 그 자리를 메운다.
튜링이 1936년에 제안한 것은 놀랄 만큼 단순한 기계다. 튜링 기계𝑀 은 네 부품으로 이루어진다.
테이프 — 칸이 한 줄로 늘어서 있고 양쪽으로 끝이 없다. 칸마다 기호가 하나씩 적혀 있고, 거의 모든 칸은 빈칸 ◻ 이다
헤드 — 칸 하나를 보고 있다. 그 칸의 기호를 읽고, 고쳐 쓰고, 한 칸 왼쪽이나 오른쪽으로 옮겨 간다
상태 — 유한 개 가운데 하나다. 기계가 "지금 어느 단계인가"를 기억하는 자리다. 시작 상태 𝑞0 과 정지 상태 𝑞halt 를 정해 둔다
전이표𝛿 — 유한한 표다. 줄마다 "상태가 이것이고 읽은 기호가 저것이면, 상태를 이렇게 바꾸고 이 기호를 쓰고 이쪽으로 옮겨라"가 적혀 있다
<오른쪽 아래 표를 먼저 읽어라. 무한한 것은 테이프 하나뿐이고 나머지는 전부 유한하다. 그래서 기계 하나를 통째로 적을 수 있다는 마지막 줄이 다음 절의 전제가 된다>[원본 보기]
계산은 이렇게 진행된다. 시작할 때 테이프에 입력 𝑤 가 적혀 있고 헤드는 그 왼쪽 끝에 있으며 상태는 𝑞0 이다. 그다음은 전이표대로다. 지금 상태와 읽은 기호로 표의 줄 하나가 정해지고, 그 줄이 시키는 대로 한 걸음 간다. 정지 상태에 닿으면 멈춘다. 닿지 않으면 영원히 이어진다. 그 둘뿐이다.
<한 걸음이 바꾸는 것이 셋뿐이라는 것 — 칸 하나의 기호, 헤드 자리, 상태. 나머지 테이프는 손대지 않는다. 그래서 걸음마다의 변화를 유한한 말로 적을 수 있다>[원본 보기]
이 기계가 계산하는 방식은 우스울 만큼 굼뜨다. 그러나 여기서 재는 것은 속도가 아니라 할 수 있는 일의 범위다.
처치-튜링 논제 — 정리가 아니다
이제 결정적인 걸음을 딛는다. 우리가 정의한 것은 튜링 기계이고, 우리가 알고 싶은 것은 "기계적 절차"다. 둘이 같은가.
처치-튜링 논제(Church-Turing thesis)가 그 둘이 같다고 말한다. 직관적인 뜻의 기계적 절차로 계산할 수 있는 것은 정확히 어떤 튜링 기계가 계산할 수 있는 것이다.
이것은 정리가 아니다. 증명할 수 없다. 왼쪽 항 — "직관적인 뜻의 기계적 절차" — 이 형식적으로 정의되어 있지 않기 때문이다. 정의되지 않은 것과 정의된 것이 같다는 주장은 증명의 대상이 될 수 없다. 논제는 정의를 제안하는 것이고, 받아들일 근거는 증명이 아니라 증거다.
증거는 강하다. 서로 아무 상관 없어 보이는 정의들이 전부 같은 것에 이르렀다.
처치의 𝜆-계산 — 함수를 적고 대입하는 규칙만으로 된 체계
괴델과 에르브랑의 일반 재귀함수 — 기본 함수에서 합성과 최소화로 쌓아 올린 것
튜링 기계, 그리고 레지스터 기계·태그 체계·세포 자동자
실제 프로그래밍 언어 전부
이들이 같은 함수족을 계산한다는 것은 정리로 증명되어 있다. 서로 다른 직관에서 출발한 정의들이 한 점에 모인 것이다. 튜링의 원 논문은 여기에 더해 "사람이 종이에 연필로 계산할 때 실제로 하는 일"을 분석해 그것이 자기 기계와 같음을 논증했다.
왜 이 구분을 붙들어야 하는가. 이 장의 결론은 두 조각으로 되어 있기 때문이다. "튜링 기계로는 안 된다"는 정리이고, "튜링 기계가 계산의 전부다"는 논제다. 앞엣것은 확실하고 뒤엣것은 증거에 기댄 믿음이다. 둘을 뭉뚱그려 "증명되었다"고 말하면 정직하지 않다.
부품을 하나 더 얹어 둔다. 전이표가 유한하므로 기계 하나를 문자열로 적을 수 있다. 기계 𝑀 을 적은 문자열을 ⟨𝑀⟩ 이라 쓴다. 그러면 기계도 다른 기계의 입력이 되고, 특히 보편 튜링 기계를 만들 수 있다 — ⟨𝑀,𝑤⟩ 를 받아 𝑀 이 𝑤 에 대해 하는 일을 그대로 흉내 내는 기계다. 흉내 내는 기계가 있다는 사실이 다음 두 절을 떠받친다.
예제 214
테이프에 1 이 연달아 적혀 있고 그 양옆은 빈칸이다. 1 의 개수가 짝수이면 정지 상태에서 Y 를, 홀수이면 N 을 쓰고 멈추는 기계의 전이표를 적어라. 헤드는 처음에 입력의 맨 왼쪽 칸에 있다.
풀이 보기
무엇을 묻는가. 상태를 무엇으로 삼을지다. 기계가 기억할 수 있는 것은 상태뿐이므로, 기억해야 할 것을 상태로 만든다.
기억해야 할 것은 "지금까지 지나친 1 의 개수가 짝수인가 홀수인가" 하나다. 그러니 상태 둘이면 된다. 𝑞0 을 "지금까지 짝수", 𝑞1 을 "지금까지 홀수"로 정한다. 시작할 때 지나친 것이 없으니 𝑞0 이 시작 상태인 것이 맞다.
상태
읽음
새 상태
쓸 기호
이동
𝑞0
1
𝑞1
1
오른쪽
𝑞1
1
𝑞0
1
오른쪽
𝑞0
◻
𝑞halt
Y
왼쪽
𝑞1
◻
𝑞halt
N
왼쪽
앞의 두 줄이 세는 일을 한다. 1 을 하나 볼 때마다 상태를 뒤집고 오른쪽으로 간다. 뒤의 두 줄이 답하는 일을 한다. 빈칸을 만나면 1 이 끝난 것이므로 지금 상태를 보고 답을 쓴다.
답이 말이 되는가. 입력이 11 이면 𝑞0→𝑞1→𝑞0 을 거쳐 빈칸에서 Y 를 쓴다. 맞다. 입력에 1 이 하나도 없으면 첫걸음에서 곧바로 빈칸을 읽어 Y 를 쓴다. 0 은 짝수이니 이것도 맞다.
표가 네 줄뿐이라는 데 주목하라. 이 표가 기계의 전부다. 이것을 문자열로 적으면 그것이 ⟨𝑀⟩ 이고, 이 장 뒷부분에서 다른 기계에 먹일 입력이 된다.
예제 215
다음 두 반론에 답하라. (가) 튜링 기계는 테이프가 하나뿐이고 헤드가 한 칸씩만 움직인다. 실제 컴퓨터보다 약한 것 아닌가. (나) 언젠가 더 강한 계산 모형이 나오면 처치-튜링 논제가 반증되는 것 아닌가.
풀이 보기
(가) 느린 것과 약한 것은 다르다. 테이프를 여럿 두거나, 헤드를 여럿 두거나, 임의의 칸으로 한 번에 뛰게 하거나, 테이프를 2차원으로 넓혀도 계산할 수 있는 것의 범위는 그대로다. 어느 쪽이든 원래 기계로 흉내 낼 수 있다는 것이 증명되어 있다. 걸음 수는 늘어난다. 그 늘어남을 재는 것이 알고리즘 문서의 주제이고, 이 장의 주제는 아니다.
오히려 반대 방향을 새겨 둘 만하다. 실제 컴퓨터는 튜링 기계보다 약하다. 메모리가 유한하기 때문이다. 메모리가 유한한 기계는 상태가 유한 개인 기계일 뿐이라 훨씬 못한다. 무한한 테이프가 이상화하는 것은 "종이가 모자라면 더 가져온다"는 일상적인 사실이다.
(나) 그럴 수 있다. 논제이므로 반증에 열려 있다. 다만 반증의 모양이 무엇일지 생각해 보라. 어떤 기계를 내밀며 "이것이 튜링 기계가 못 하는 것을 한다"고 하려면, 그 기계가 무엇을 하는지 기계적으로 서술해야 한다. 그런데 기계적으로 서술된 것은 대개 흉내 낼 수 있다. 90년 동안 그 벽을 넘은 제안이 없었다는 것이 논제를 받아들이는 근거다.
답이 말이 되는가. 양자 컴퓨터를 떠올렸다면 짚어 둘 것이 있다. 양자 컴퓨터는 어떤 문제를 훨씬 빨리 풀 것으로 기대되지만, 튜링 기계가 못 푸는 문제를 푸는 것은 아니다. 논제가 말하는 것은 범위이지 속도가 아니다.
예제 216
보편 튜링 기계가 있다는 것이 왜 놀랍지 않은지 설명하고, 그것이 다음 절에서 어떤 구실을 하는지 말하라.
풀이 보기
무엇을 묻는가. 익숙한 것과의 연결이다.
보편 기계는 ⟨𝑀,𝑤⟩ 를 받아 𝑀 이 𝑤 에 하는 일을 그대로 한다. 이것을 오늘날의 말로 옮기면 해석기(interpreter)다. 프로그램 텍스트와 입력을 받아 그 프로그램이 할 일을 대신 해 주는 프로그램. 파이썬 해석기가, 자바스크립트 엔진이, 브라우저가 매일 하는 일이다.
만드는 법도 어렵지 않다. 테이프 한쪽에 ⟨𝑀⟩ 을 적어 두고 다른 쪽에 𝑀 의 테이프를 흉내 낸다. 매 걸음마다 ⟨𝑀⟩ 쪽으로 가서 지금 상태와 읽은 기호에 맞는 줄을 찾고, 돌아와 그 줄이 시키는 대로 한다. 굼뜨지만 되기는 된다.
다음 절에서의 구실은 둘이다. 첫째, 기계와 문자열을 같은 축에 놓는 일이 정당해진다. 기계도 데이터라는 것이 대각선을 그을 수 있게 해 준다. 둘째, "시늉해 보면 되지 않는가"라는 자연스러운 시도가 실제로 가능한 시도가 된다. 그 시도가 어디까지 가고 어디서 멈추는지가 이 장 다섯째 절의 주제다.
답이 말이 되는가. mcs 도 정지 문제를 다루면서 "프로그램이 데이터라는 사실이 이 정리의 전제"라고 적었다. 같은 말이다. 다른 것은 여기서는 그 사실이 논증의 전제가 아니라 우리가 만든 정의에서 따라 나오는 것이라는 점이다.
정지 문제
이제 결정 불가능한 문제를 하나 확보한다. 하나만 있으면 나머지는 환원으로 얻는다.
정지 문제(halting problem)는 이런 판정 문제다. 입력은 짝 ⟨𝑀,𝑤⟩ 이고, 물음은 "기계 𝑀 을 입력 𝑤 에 돌리면 멈추는가"다.
이 문제가 왜 어려운지부터 감을 잡아 두자. 멈춘다는 것은 알아낼 수 있다 — 보편 기계로 시늉해 보면 언젠가 멈추는 것을 본다. 어려운 쪽은 멈추지 않는다는 판정이다. 시늉하는 중에는 "조금 더 가면 멈출지"와 "영원히 안 멈출지"를 가릴 수 없다. 그러니 다른 방법, 즉 전이표를 들여다보고 판정하는 방법이 있어야 한다. 그런 방법이 없다는 것을 증명한다.
정리. 정지 문제는 결정 불가능하다.
증명의 뼈대는 셋이다. 판정 기계가 있다고 가정한다. 그것을 부품으로 삼아 자기 답을 뒤집는 기계를 조립한다. 조립한 기계에 자기 코드를 먹인다.
<왼쪽 줄기가 조립이고 아래 두 갈래가 조립한 것에 자기 코드를 먹인 두 경우다. 두 갈래 모두 자기가 말한 것과 반대로 끝난다는 것, 그래서 쓴 것이 하나뿐인 맨 위 가정이 무너진다는 것>[원본 보기]
자세히 적으면 이렇다. 정지 판정 기계 𝐻 가 있다고 하자. 𝐻 는 ⟨𝑀,𝑤⟩ 를 받아 반드시 멈추고 예 또는 아니오를 낸다. 이제 새 기계 𝐷 를 만든다. 𝐷 는 기계 코드 ⟨𝑀⟩ 하나를 받아
𝐻 에게 ⟨𝑀,⟨𝑀⟩⟩ 를 묻는다. 즉 "𝑀 을 자기 코드에 돌리면 멈추는가"를 묻는다
답이 예이면 일부러 영원히 돈다
답이 아니오이면 곧바로 멈춘다
𝐷 를 만드는 일은 정당하다. 𝐻 가 기계이므로 그 전이표에 몇 줄을 덧붙이면 된다. 이제 𝐷 에 ⟨𝐷⟩ 를 먹인다.
𝐷 가 ⟨𝐷⟩ 에서 멈춘다고 하자. 그러면 𝐻 는 예라고 답하고, 그러면 𝐷 는 영원히 돈다. 멈춘다고 했는데 멈추지 않는다.
𝐷 가 ⟨𝐷⟩ 에서 멈추지 않는다고 하자. 그러면 𝐻 는 아니오라고 답하고, 그러면 𝐷 는 곧바로 멈춘다. 멈추지 않는다고 했는데 멈춘다.
두 갈래가 모두 모순이다. 쓴 가정은 "𝐻 가 있다" 하나뿐이므로 그것이 틀렸다. 정지 판정 기계는 없다.
대각선이 어디 있는지 짚어 두자. 행이 기계이고 열이 입력인 표를 그리면, 기계도 문자열이므로 두 축이 같은 집합이다. ⟨𝑀,⟨𝑀⟩⟩ 는 그 표의 대각선 칸이고 𝐷 는 대각선을 자리마다 뒤집는다. mcs 가 칸토어 정리에서 쓴 것과 같은 논증이고, 다른 것은 여기서 기계가 형식적으로 정의되어 있다는 점이다.
예제 217
"시늉해 보면 되지 않는가"라는 시도가 정확히 어디서 무너지는지 세 조건으로 밝혀라.
풀이 보기
절차.⟨𝑀,𝑤⟩ 를 받아 보편 기계로 𝑀 을 𝑤 에 돌린다. 멈추면 "예"를 내고 멈춘다.
기계적인가. 그렇다. 보편 기계가 있으므로 이 절차는 실제로 만들 수 있다.
모든 입력에 답하는가. 답이 "예"인 입력에는 반드시 답한다. 𝑀 이 𝑛 걸음에 멈춘다면 시늉도 유한 시간에 그것을 본다. 답이 "아니오"인 입력에는 아무 말도 하지 않는다.
멈추는가. 아니오인 입력에서 멈추지 않는다. 여기가 무너지는 자리다.
왜 고칠 수 없는지도 보자. 자연스러운 수선은 "걸음 수에 상한을 두고, 그 안에 안 멈추면 아니오를 낸다"는 것이다. 그러나 상한을 얼마로 잡아도 그보다 늦게 멈추는 기계가 있다. 상한을 입력에 따라 정하려면 "이 기계가 멈춘다면 몇 걸음 안에 멈추는가"를 알아야 하는데, 그것을 알면 애초에 정지 문제가 풀린 것이다.
답이 말이 되는가. 이 절차는 세 조건 가운데 딱 하나만 어긴다. 그런 절차를 버리기는 아깝다. 다음 절에서 이름을 붙인다.
예제 218
"𝐷 는 억지로 만든 기계다. 실제 프로그램에는 저런 것이 없으니 이 정리는 실무와 상관없다"는 반론에 답하라.
풀이 보기
무엇을 묻는가. 정리의 범위다.
먼저 논리를 확인한다. 증명한 것은 "모든 입력에 대해 올바로 답하는 𝐻 가 없다"이다. 그것을 보이려면 𝐻 가 틀리는 입력을 하나 내놓으면 되고, 𝐷 가 그 하나다. 억지스러운 것이 흠이 아니라 그것이 증명의 방식이다.
다음으로 실무와의 관계다. 정지 문제는 "프로그램을 끝까지 돌려야 알 수 있는 성질"의 대표다. 그런 성질을 완벽하게 판정하는 도구가 있다면 그것을 조금 고쳐 𝐻 를 만들 수 있고, 그러면 모순이다. 그래서 완벽한 정적 분석기·완벽한 타입 검사기·완벽한 무한 루프 검출기는 있을 수 없다.
그러면 실제 도구는 무엇을 하는가. 안전한 쪽으로 기운다. 통과시킨 것은 정말 안전하지만, 문제없는 프로그램도 몇 개는 거절한다. 타입 검사기를 쓰다가 "이건 분명 괜찮은 코드인데"라고 느낄 때 그 느낌의 뿌리에 이 정리가 있다.
답이 말이 되는가. 과장하지 않는 것이 중요하다. 정리가 말하는 것은 "임의의 입력에 대해 완벽하게는 안 된다"뿐이다. 실제로 쓰이는 프로그램은 대개 분석되기 좋게 짜여 있고 도구도 잘 작동한다. 다만 "모든 프로그램을 분석하는 일반적 방법"이라는 주장을 들으면 그것이 온전한 이야기가 아님을 알게 되었다.
결정 가능과 반결정 가능
앞 절의 시늉 절차가 조건 하나만 어겼다. 그 자리에 이름을 준다. 14장이 완전성의 부산물로 이 성질을 이미 한 번 만났다 — 도출을 번호 순으로 꺼내 검사하는 절차가 그것이었고, 거기서 이름만 얹고 지나갔다. 여기서 제자리에 놓는다. mcs 는 이 구별을 하지 않았다 — 거기서는 "인식 가능하다"는 말만 쓰고 "결정 가능"과 나란히 놓지 않았다. 여기서 둘을 나란히 놓는다.
판정 문제 𝐴 에 대해
결정 가능 — 모든 입력에서 멈추고 올바른 답을 내는 기계가 있다
반결정 가능(semi-decidable) — 답이 예인 입력에서는 멈추고 예를 내는 기계가 있다. 답이 아니오인 입력에서는 영원히 돌아도 된다
결정 가능하면 반결정 가능하다. 반대는 성립하지 않고, 그 사실이 이 장의 남은 절반이다.
여집합이라는 말을 하나 정한다. 𝐴 의 여집합은 예와 아니오를 맞바꾼 판정 문제다. 정지 문제의 여집합은 "𝑀 을 𝑤 에 돌리면 멈추지 않는가"다.
결정 가능한 문제의 여집합은 결정 가능하다. 답을 뒤집으면 되고, 원래 절차가 멈추므로 뒤집은 절차도 멈춘다. 반결정 가능한 문제의 여집합은 그렇다는 보장이 없다. 답을 뒤집으려면 먼저 답이 나와야 하는데, 아니오인 입력에서는 답이 나오지 않기 때문이다. 보장이 없다는 것이지 반드시 안 된다는 것은 아니다 — 원래 문제가 결정 가능했다면 여집합도 반결정 가능하다.
<가운데 띠가 비어 있지 않다는 것이 이 장의 결과다. 그리고 가운데 띠에 있는 것의 여집합은 오른쪽 바깥으로 튕겨 나간다 — 그 이유가 아래 포스트 정리다>[원본 보기]
두 개념을 잇는 정리가 하나 있다.
포스트 정리.𝐴 와 𝐴 의 여집합이 둘 다 반결정 가능하면 𝐴 는 결정 가능하다.
증명은 짧다. 𝐴 를 반결정하는 기계와 여집합을 반결정하는 기계를 나란히 놓고 번갈아 한 걸음씩 돌린다. 입력이 무엇이든 답은 예이거나 아니오이므로 둘 중 하나는 그 입력에서 반드시 멈춘다. 어느 쪽이 먼저 멈추는지 보고 답을 낸다. 이 절차는 반드시 끝난다.
이 정리가 곧바로 값을 한다. 정지 문제는 반결정 가능하다(앞 절의 시늉 절차). 그런데 결정 가능하지 않다(앞 절의 정리). 포스트 정리를 뒤집어 읽으면 정지 문제의 여집합은 반결정 가능하지 않다. 그것이 mcs 가 대각선 논법으로 증명한 "안멈춤 집합은 인식 가능하지 않다"와 같은 진술이다. 두 문서가 같은 자리를 다른 길로 짚은 것이다.
예제 219
정지 문제가 반결정 가능함을 정의에 맞춰 확인하고, 같은 기계가 왜 결정 절차가 되지 못하는지 정의의 어느 낱말 때문인지 짚어라.
풀이 보기
기계.⟨𝑀,𝑤⟩ 를 받아 보편 기계로 𝑀 을 𝑤 에 시늉한다. 시늉이 정지 상태에 닿으면 예를 내고 멈춘다. 닿지 않으면 계속 시늉한다.
반결정 가능의 정의에 맞는가. 답이 예인 입력, 즉 𝑀 이 𝑤 에서 실제로 멈추는 경우를 보자. 𝑛 걸음에 멈춘다면 시늉도 𝑛 걸음을 흉내 낸 뒤 정지 상태를 본다. 유한 시간이다. 그러니 예인 입력에서는 멈추고 예를 낸다. 정의가 요구하는 것이 이것뿐이다. 맞는다.
왜 결정 절차가 아닌가. 결정 가능의 정의에 있는 낱말은 "모든 입력에서 멈추고"다. 답이 아니오인 입력에서 이 기계는 멈추지 않는다. 그 낱말 하나 때문에 자격이 없다.
답이 말이 되는가. 두 정의의 차이가 낱말 하나라는 것에 주목하라. 그런데 그 낱말 하나가 "쓸 만한 도구"와 "문제를 푼 것" 사이의 거리 전부다. 반결정 절차를 돌리다가 아직 안 멈췄을 때 우리가 아는 것은 아무것도 없다 — 곧 멈출지 영영 안 멈출지 알 길이 없다.
예제 220
포스트 정리를 써서 "정지 문제의 여집합은 반결정 가능하지 않다"를 증명하라. 그리고 이 결과가 mcs 의 결과와 어떻게 대응하는지 적어라.
풀이 보기
증명. 모순을 이끌어 낸다. 정지 문제의 여집합이 반결정 가능하다고 하자. 앞 예제에서 정지 문제 자체는 반결정 가능함을 확인했다. 그러면 𝐴 와 그 여집합이 둘 다 반결정 가능하므로 포스트 정리에 의해 정지 문제는 결정 가능하다. 그런데 앞 절에서 결정 가능하지 않음을 증명했다. 모순이다. 따라서 여집합은 반결정 가능하지 않다.
mcs 와의 대응. mcs 가 인식 가능하지 않다고 증명한 집합은 이것이었다.
안멈춤={𝑠:𝑃𝑠를𝑠에적용하면멈추지않는다}
거기서 "인식 가능"은 여기서 "반결정 가능"과 같은 뜻이고, 그 집합은 정지 문제 여집합의 대각선 조각이다. 즉 mcs 는 더 강한 쪽을 곧바로 증명했고 그 강함에 이름을 붙이지 않았다.
답이 말이 되는가. 두 길의 성격이 다르다는 것을 챙기자. mcs 는 대각선 논법 한 번으로 곧장 갔다. 여기서는 정지 문제의 결정불가능성을 대각선으로 얻고, 반결정 가능성을 시늉으로 얻고, 포스트 정리로 둘을 붙였다. 세 조각을 나눠 두면 각 조각을 다른 데 다시 쓸 수 있다. 실제로 마지막 절에서 같은 세 조각을 술어논리에 그대로 적용한다.
술어논리는 결정 불가능하다
이제 힐베르트의 결정 문제로 돌아온다. 정확한 진술은 이렇다.
처치-튜링 정리. 주어진 술어논리 문장 𝜑 에 대해 ⊨𝜑 인지 판정하는 기계는 없다.
낱말을 하나 정리해 둔다. 다른 책은 이 문제를 "타당성 문제"라 부른다. 이 문서는 6장의 결정에 따라 "타당"을 논증에만 쓰므로, 10장의 낱말대로 논리적 참이라 적는다. 그리고 14장의 완전성에 의해 ⊨𝜑 와 ⊢𝜑 가 같으므로, 이 정리는 "𝜑 가 도출 가능한지 판정하는 기계가 없다"와 같은 말이다. 처치와 튜링이 1936년에 독립적으로 증명했다. 처치는 𝜆-계산으로, 튜링은 기계로.
증명은 환원이다. 정지 문제를 논리적 참 문제로 옮긴다.
<가운데 굵은 화살표 하나가 환원이고 그것을 앞뒤로 이어 붙이면 있지도 않은 정지 판정 기계가 조립된다. 아래 두 메모가 가장 자주 틀리는 곳 둘 — 화살표의 방향과, 변환기 자체도 멈춰야 한다는 조건이다>[원본 보기]
해야 할 일은 하나다. 각 ⟨𝑀,𝑤⟩ 에 대해 술어논리 문장 𝜑𝑀,𝑤 를 기계적으로 만들되, ⊨𝜑𝑀,𝑤 인 것과 𝑀 이 𝑤 에서 멈추는 것이 같아지게 만든다.
그것이 되면 끝난다. 논리적 참 판정기가 있다고 하자. ⟨𝑀,𝑤⟩ 를 받아 𝜑𝑀,𝑤 를 만들고 판정기에 넣는다. 나온 답이 곧 정지 여부다. 앞뒤로 이어 붙인 전체가 정지 판정 기계이므로 모순이다.
옮기는 문장의 모양
완주하지는 않는다. 뼈대만 정확히 적는다.
문장이 말해야 하는 것은 기계의 계산 전체다. 계산은 시각 0,1,2,… 마다 순간묘사 하나로 이루어지고, 순간묘사는 "어느 칸에 어느 기호가 있는가"와 "헤드가 어디 있고 상태가 무엇인가"다. 그것을 술어로 적는다.
𝐺 (2항) — 𝐺𝑥𝑦 는 "𝑦 는 𝑥 의 바로 다음이다". 시각을 세는 데도 칸을 세는 데도 이 하나를 쓴다. 9장이 함수기호를 넣지 않았으므로 후속자를 술어로 적는다
기호 𝑠 마다 𝐹𝑠 (2항) — 𝐹𝑠𝑡𝑖 는 "시각 𝑡 에 칸 𝑖 의 기호가 𝑠 다"
상태 𝑞 마다 𝐻𝑞 (2항) — 𝐻𝑞𝑡𝑖 는 "시각 𝑡 에 상태가 𝑞 이고 헤드가 칸 𝑖 에 있다"
기호도 상태도 유한 개이므로 술어도 유한 개다. 이제 조항을 적는다. 넷으로 나뉜다.
다음 조항. 시각마다 바로 다음 시각이 있고 칸마다 바로 다음 칸이 있다. ∀𝑥∃𝑦𝐺𝑥𝑦 가 그것이다. 이 조항이 있어야 정의역이 계산을 담을 만큼 길어진다.
시작 조항. 시각 0 에 테이프에 𝑤 가 적혀 있고, 헤드가 맨 왼쪽에 있고, 상태가 𝑞0 이다. 𝑤 가 유한하므로 유한한 논리곱이다.
전이 조항. 전이표의 줄마다 조건문 하나다. 𝛿(𝑞1,1)=(𝑞2,0,오른쪽) 이라는 줄은 이렇게 옮긴다.
읽으면 "시각 𝑡 에 상태가 𝑞1 이고 헤드 밑 칸에 1 이 있으면, 다음 시각 𝑡′ 에는 상태가 𝑞2 이고 헤드가 다음 칸 𝑖′ 에 있으며 원래 칸에는 0 이 적혀 있다"다. 표가 유한하므로 이런 조건문도 유한하다.
유지 조항. 헤드가 없는 칸은 다음 시각에도 그대로다. "헤드가 칸 𝑖 에 없다"는 상태마다의 ¬𝐻𝑞𝑡𝑖 를 모두 논리곱한 것으로 적는다. 상태가 유한 개이므로 이것도 유한한 논리곱이다.
이 넷을 논리곱한 것을 𝛼𝑀,𝑤 라 하고, 목표 문장을 이렇게 잡는다.
𝜑𝑀,𝑤=𝛼𝑀,𝑤→∃𝑡∃𝑖𝐻halt𝑡𝑖
읽으면 "계산이 이렇게 진행된다면 언젠가 정지 상태에 닿는다"다.
왜 이것이 통하는가. 두 방향이다.
𝑀 이 𝑤 에서 𝑛 걸음에 멈춘다고 하자. 𝛼𝑀,𝑤 를 참으로 만드는 어떤 모형에서든, 시작 조항이 시각 0 의 모습을 강제하고 전이 조항이 걸음마다 다음 모습을 강제한다. 걸음 수에 대한 귀납으로 𝑛 번째 시각에 정지 상태가 성립함이 나오므로 후건이 참이다. 𝛼𝑀,𝑤 가 거짓인 모형에서는 조건문이 공허하게 참이다. 그러니 모든 모형에서 참, 즉 ⊨𝜑𝑀,𝑤
𝑀 이 멈추지 않는다고 하자. 실제 계산 자체로 반례 모형을 만든다. 정의역은 시각과 칸 번호로 함께 쓸 정수, 𝐺 는 "하나 더한 것" 관계, 𝐹𝑠 와 𝐻𝑞 는 실제 계산에서 성립하는 것들. 이 모형에서 𝛼𝑀,𝑤 는 참이고, 계산이 정지 상태에 결코 닿지 않으므로 후건은 거짓이다. 반례 모형이 하나 있으므로 ⊨𝜑𝑀,𝑤 가 아니다
여기서 확인하지 않고 넘어가는 것을 밝혀 둔다. 유지 조항을 빠짐없이 적는 일이 잔손이 많고, 첫째 방향의 귀납을 제대로 돌리려면 "𝑡 번째 순간묘사가 모형 안에 그대로 나타난다"는 진술을 정확히 세워야 한다. 13장의 구조적 귀납법과 같은 종류의 일이다. 뼈대는 이것이 전부이고, 남은 것은 그 뼈대를 빈틈없이 채우는 작업이다.
왜 명제논리에서는 이 환원이 안 되는가
같은 일을 명제논리로 해 보려면 시각마다 문장문자를 따로 두어야 한다. "시각 5에 칸 3의 기호가 1이다"가 문장문자 하나가 되는 식이다. 그런데 계산이 몇 걸음인지 모르므로 문장문자가 몇 개 필요한지도 모른다. 유한한 문장으로 끝나지 않는다.
술어논리에서 되는 이유는 ∀𝑡 하나다. 한정사가 무한한 계산을 유한한 문장에 담는다. 9장이 문장 안을 들여다볼 수 있게 해 준 대가가 여기서 청구된다.
걸음 수에 상한을 두면 어떻게 되는가. "𝑘 걸음 안에 멈추는가"는 명제논리로 적을 수 있고, 결정 가능하다. 다만 식이 커진다. 그것이 알고리즘 문서가 다루는 어려움 — 절차는 있는데 느린 어려움 — 이고, 이 절의 어려움과 종류가 다르다.
예제 221
"𝑀 을 빈 테이프에 돌리면 멈추는가"도 결정 불가능함을 환원으로 보여라.
풀이 보기
무엇을 묻는가. 환원 한 번을 손으로 해 보는 일이다. 큰 환원의 예행연습이다.
무엇에서 무엇으로 옮기는가. 이미 결정 불가능하다고 아는 것 — 정지 문제 — 을 새 문제 — 빈 테이프 정지 문제 — 로 옮긴다. 방향이 이쪽이어야 한다.
변환.⟨𝑀,𝑤⟩ 를 받아 새 기계 𝑀𝑤 를 만든다. 𝑀𝑤 는 빈 테이프에서 시작해 먼저 𝑤 를 테이프에 적고, 헤드를 맨 왼쪽으로 되돌린 뒤, 𝑀 을 돌린다. 𝑤 를 적는 일은 글자마다 전이표 줄 두어 개면 되므로 이 변환은 기계적이고 반드시 끝난다.
옳게 옮겼는가.𝑀𝑤 는 앞부분을 반드시 끝내므로, 𝑀𝑤 가 빈 테이프에서 멈추는 것과 𝑀 이 𝑤 에서 멈추는 것이 같다.
결론. 빈 테이프 정지 문제의 판정기 𝐸 가 있다고 하자. ⟨𝑀,𝑤⟩ 를 받아 ⟨𝑀𝑤⟩ 를 만들고 𝐸 에 넣으면 정지 문제가 판정된다. 그런 것은 없으므로 𝐸 도 없다.
답이 말이 되는가. 이 환원과 앞 절의 큰 환원이 뼈대가 같다는 것을 보라. 기계적으로 입력을 고쳐 새 문제의 판정기에 넘긴다. 다른 것은 여기서는 결과물이 기계이고 거기서는 논리식이라는 점뿐이다.
예제 222
다음 논증이 왜 틀렸는지 밝혀라. "논리적 참 판정기가 있으면 그것을 써서 정지 문제를 풀 수 있다는 것을 보였다. 그런데 거꾸로, 정지 판정기가 있으면 논리적 참도 판정할 수 있다. 그러니 두 문제는 같은 문제이고, 둘 중 하나만 증명하면 된다."
풀이 보기
무엇이 문제인가. 둘째 문장이 증명되지 않았고, 설령 참이어도 결론을 주지 않는다.
먼저 방향의 뜻을 정확히 하자. "𝐴 를 𝐵 로 환원한다"는 𝐵 의 판정기로 𝐴 를 판정할 수 있다는 말이고, 여기서 나오는 결론은 𝐴 가 어려우면 𝐵 도 어렵다이다. 어려움이 화살표를 따라 앞에서 뒤로 옮겨 간다.
우리가 한 것은 정지 문제를 논리적 참으로 환원한 것이다. 정지 문제가 결정 불가능하므로 논리적 참도 그렇다. 여기까지가 필요한 전부다.
반대 방향 — 논리적 참을 정지 문제로 환원하는 것 — 은 사실 성립한다. 마지막 절의 열거 절차가 그것을 준다. 그런데 그것에서 나오는 결론은 "논리적 참이 어려우면 정지 문제도 어렵다"이고, 이미 아는 사실을 되풀이할 뿐 논리적 참에 대해 아무것도 말해 주지 않는다.
답이 말이 되는가. "둘 다 결정 불가능하다"와 "같은 문제다"도 구별하자. 두 문제가 서로 환원되면 결정 가능성에 대해서는 같이 움직이지만, 그렇다고 같은 문제가 되는 것은 아니다. 환원은 방향이 있는 화살표이고, 방향을 잃으면 아무것도 증명하지 못한다.
그런데 반결정 가능하다
앞 절이 나쁜 소식이었다. 좋은 소식이 있고, 이 장의 핵심이 거기에 있다.
정리. 술어논리의 논리적 참 문제는 반결정 가능하다.
절차는 이렇다. 문장 𝜑 를 받아 도출을 전부 열거한다. 하나 꺼낼 때마다 그것이 규칙을 지킨 도출인지, 마지막 줄이 𝜑 인지, 열린 가정이 하나도 없는지 검사한다. 조건을 다 만족하는 것을 만나면 예를 내고 멈춘다. 아니면 다음 도출로 간다.
<나가는 문이 둘인데 한쪽에만 끝이 있다. 왼쪽은 완전성이 보장하고 오른쪽은 건전성이 보장하는데, 오른쪽 화살표에는 도달하는 시점이 없다는 것 — 그 비대칭 하나가 이 장 전체의 답이다>[원본 보기]
두 가지가 이 절차를 떠받친다.
도출을 열거할 수 있다. 도출은 유한한 대상이다. 줄이 유한하고, 줄마다 식이 유한하고, 규칙은 열일곱 개에 =I·=E 를 더한 것이 전부다. 그러니 "줄이 1개인 도출 전부, 2개인 도출 전부, …" 순으로 빠짐없이 늘어놓을 수 있다. 5장이 적형식이 가산임을 보인 것과 같은 종류의 사실이다
도출 검사는 결정 가능하다. 적힌 도출 한 벌을 앞에 놓고 규칙을 지켰는지 확인하는 일은 유한한 확인이고 반드시 끝난다. 7장과 11장이 규칙을 그렇게 만들어 두었다
이제 두 갈래를 본다.
⊨𝜑 이면 — 14장의 완전성에 의해 ⊢𝜑 다. 즉 도출이 있다. 열거는 도출을 하나도 빠뜨리지 않으므로 언젠가 그것을 꺼낸다. 절차가 멈춘다.
⊨𝜑 가 아니면 — 13장의 건전성에 의해 도출이 없다. 목록에는 끝이 없으므로 "다 봤는데 없다"고 말할 시점이 오지 않는다. 절차가 영원히 돈다.
정확히 반결정 절차의 모양이다.
완전성과 결정불가능성이 왜 모순이 아닌가
여기가 이 장에서 가장 걸리는 곳이다. 14장은 "논리적 참인 것은 전부 증명된다"고 했다. 그런데 방금 "판정할 수 없다"고 했다. 어긋나 보인다.
세 문장으로 정리한다.
완전성은 존재에 관한 정리다. 논리적 참인 식마다 도출이 있다고 말한다. 어떻게 찾는지는 말하지 않는다
결정 가능성은 절차에 관한 요구다. 도출이 있든 없든 유한 시간에 답을 내라고 요구한다
"있으면 언젠가 찾는다"는 "없으면 없다고 안다"를 함의하지 않는다. 무한한 목록에서 없음을 확인할 방법이 없기 때문이다
어긋나 보였던 것은 두 정리가 서로 다른 것에 대한 진술인데 같은 것에 대한 진술로 읽었기 때문이다. 완전성은 증명 체계가 의미론을 빠뜨리지 않는다고 말하고, 결정불가능성은 그 체계를 기계로 다 훑을 수는 없다고 말한다. 둘은 서로 다른 층의 이야기다.
이 장의 결과를 앞 장들과 나란히 놓으면 같은 비대칭이 세 번 나타난다는 것이 보인다.
장
한쪽 답이 쉽다
다른 쪽 답이 어렵다
6장 의미론(명제)
귀결이 아님 — 반례 배당 하나
귀결임 — 배당 전부. 다만 2𝑛 개라 끝난다
10장 의미론(술어)
귀결이 아님 — 반례 모형 하나
귀결임 — 모형 전부. 무한히 많아 끝나지 않는다
16장 증명론
논리적 참임 — 도출 하나
아님 — 도출 전부. 무한히 많아 끝나지 않는다
마지막 줄에서 쉬운 쪽과 어려운 쪽이 뒤집혔다. 의미론에서는 "아니다"가 쉬웠는데 증명론에서는 "그렇다"가 쉽다. 완전성이 두 층을 붙여 놓았으므로 우리는 그중 편한 쪽을 골라 쓸 수 있고, 골라 쓴 결과가 반결정 절차다.
그런데 편한 쪽을 하나 골랐다고 문제가 풀리지는 않는다. 포스트 정리가 그것을 못 박는다. 논리적 참 문제는 반결정 가능하고 결정 가능하지 않으므로, 그 여집합은 반결정 가능하지 않다. 즉 "⊨𝜑 가 아니다"를 언젠가 알려 주는 절차조차 없다. 술어논리에서 반례 모형을 찾는 일반적 방법이 없다는 뜻이다.
결정 가능한 조각들
결정불가능성은 술어논리 전체의 성질이다. 조각을 잘라내면 결정 가능성이 되돌아온다. 이름만 대고 지나간다.
명제논리 — 이 장 둘째 절에서 확인했다
단항 술어논리 — 1항 술어만 쓰고 함수기호를 넣지 않은 조각. 술어가 𝑘 개면 크기 2𝑘 이하의 모형만 확인하면 된다는 것이 알려져 있어 결정 가능하다
변수를 두 개만 쓰는 조각, 그리고 한정사를 앞으로 다 뽑았을 때 ∃ 들이 먼저 오고 ∀ 들이 뒤에 오는 꼴 등 몇 가지 문법적 제한 — 함수기호를 넣지 않으면 결정 가능하다
프레스버거 산술 — 자연수에 덧셈만 있고 곱셈이 없는 이론. 결정 가능하다. 곱셈을 넣는 순간 무너지고, 그 이야기가 17장이다
양상논리 K·T·S4·S5 — 18장에서 세운다. 전부 결정 가능하다
실무의 자동 추론기는 이 조각들 안에 살거나, 조각 밖에서는 반결정 절차를 실제로 돌린다. 답이 예이면 언젠가 답을 주고, 아니면 시간 제한에 걸려 "모르겠다"를 낸다. 그 "모르겠다"가 도구의 게으름이 아니라 이 장의 정리라는 것을 알아 두면 도구를 오해하지 않는다.
예제 223
열거 절차에서 완전성과 건전성이 각각 어느 갈래를 맡는지 밝히고, 둘 중 하나가 없으면 무엇이 무너지는지 말하라.
풀이 보기
무엇을 묻는가. 두 정리가 이 절차 안에서 하는 서로 다른 일이다.
완전성이 맡는 것 — 왼쪽 갈래.⊨𝜑 인데 도출이 없다면 절차는 영영 못 찾고 멈추지 않는다. 그러면 "예인 입력에서는 멈춘다"가 깨져 반결정 절차조차 못 된다. 완전성이 도출의 존재를 보장해 주기 때문에 이 갈래가 성립한다.
건전성이 맡는 것 — 오른쪽 갈래.⊨𝜑 가 아닌데 도출이 있다면 절차가 그것을 주워 "예"를 낸다. 답이 틀린다. 건전성이 "도출된 것은 논리적 참이다"를 보장하므로 그런 일이 없다.
한 문장으로 적으면 이렇다. 완전성은 절차가 놓치지 않게 하고 건전성은 절차가 속지 않게 한다.
답이 말이 되는가. 13장과 14장이 왜 둘 다 필요했는지가 여기서 실물로 보인다. 그때는 "두 기호가 같다"는 깔끔함을 위한 것처럼 보였을 수 있다. 실제로는 두 방향이 서로 다른 쓸모를 갖고, 이 절차가 그 쓸모를 하나씩 쓴다.
예제 224
술어논리의 만족가능성 판정 문제는 반결정 가능한가. 근거를 대라.
풀이 보기
무엇을 묻는가. 여집합 관계를 정확히 따지는 일이다.
먼저 관계를 세운다. 문장 𝜑 가 만족가능하지 않은 것과 ¬𝜑 가 논리적 참인 것이 같다. 𝜑 를 참으로 만드는 모형이 하나도 없다는 것과 모든 모형이 ¬𝜑 를 참으로 만든다는 것이 같은 말이기 때문이다.
그러니 "𝜑 는 만족가능하지 않은가"는 반결정 가능하다. ¬𝜑 를 만들어 — 기호 하나 붙이는 일이다 — 열거 절차에 넣으면 된다.
이제 만족가능성 자체를 본다. 만족가능성이 반결정 가능하다면, 방금 그 여집합도 반결정 가능하므로 포스트 정리에 의해 만족가능성이 결정 가능해진다. 그런데 만족가능성이 결정 가능하면 논리적 참도 결정 가능하다 — ⊨𝜑 인지 알려면 ¬𝜑 의 만족가능성을 묻고 답을 뒤집으면 된다. 앞 절의 정리에 어긋난다.
따라서 술어논리의 만족가능성은 반결정 가능하지 않다.
답이 말이 되는가. 이 결과가 이 장 둘째 절과 대비를 이룬다. 명제논리에서는 항진명제 판정과 만족가능성 판정이 서로 뒤집기만 하면 되는 쌍둥이였다. 술어논리에서는 한쪽만 반결정 가능하고 다른 쪽은 그마저 안 된다. 유한한 진리표가 사라지면서 둘의 대칭도 함께 사라졌다.
예제 225
"완전성 정리가 있으니 컴퓨터에 공리를 넣어 두면 수학의 정리를 전부 뽑아낼 수 있다"는 주장을 검토하라.
풀이 보기
무엇을 묻는가. 완전성이 실제로 무엇을 주었는지다.
맞는 부분. 공리 집합 Γ 를 정하면, Γ⊢𝜑 인 𝜑 를 하나씩 뽑아내는 기계를 만들 수 있다. 도출을 열거하며 열린 가정이 Γ 안에 있는 것을 골라 마지막 줄을 출력하면 된다. 이것을 계속 돌리면 정리가 하나씩 나온다. 완전성에 의해 Γ⊨𝜑 인 것은 전부 언젠가 나온다. 여기까지는 사실이다.
어긋나는 부분 — 순서를 정할 수 없다. 목록은 우리가 궁금한 것을 먼저 내놓지 않는다. 어떤 문장 𝜑 를 정해 놓고 "이것이 나오는가"를 물으면, 답이 예일 때만 언젠가 답을 얻는다. 아니면 영원히 기다린다. 기다리는 동안에는 "아직 안 나온 것"과 "영영 안 나올 것"을 구별할 수 없다.
더 어긋나는 부분. 위 절차가 뽑아내는 것은 Γ 의 귀결이지 "참인 수학 명제"가 아니다. 둘이 같으려면 Γ 가 참인 것을 다 붙잡아야 하는데, 산술에 대해서는 그것이 불가능하다. 17장의 주제가 그것이다.
답이 말이 되는가. 완전성이 준 것을 정확히 적으면 이렇다. "찾을 수 있다"가 아니라 "있다"이고, 실제 절차로 옮기면 "예일 때만 언젠가"다. 그 이상을 읽어 내는 것이 이 장이 막으려는 오해다.
이 장에서 새로 나온 것
용어·기호
뜻
판정 문제
입력의 모임과 입력마다 붙는 예·아니오 물음. 물음 하나가 아니라 물음의 가족이다
판정 절차
기계적이고, 모든 입력에 답하고, 반드시 멈추는 절차. 셋째가 요점이다
결정 가능 · 결정 불가능
판정 절차가 있다 · 없다. 6장이 이름만 쓴 것에 여기서 정의를 주었다
반결정 가능
예인 입력에서는 멈추고 예를 낸다. 아니오인 입력에서는 영원히 돌아도 된다
여집합
예와 아니오를 맞바꾼 판정 문제. 결정 가능한 문제 전체는 여집합에 닫혀 있고 반결정 가능한 문제 전체는 닫혀 있지 않다
포스트 정리
𝐴 와 여집합이 둘 다 반결정 가능하면 𝐴 는 결정 가능하다. 번갈아 한 걸음씩 돌린다
튜링 기계 𝑀
테이프 · 헤드 · 상태 · 전이표 𝛿. 무한한 것은 테이프뿐이다
𝑞0 · 𝑞halt · ◻
시작 상태 · 정지 상태 · 빈칸
입력 𝑤 · 코드 ⟨𝑀⟩
기계에 먹이는 문자열 · 기계 자체를 적은 문자열. 기계도 데이터다
보편 튜링 기계
⟨𝑀,𝑤⟩ 를 받아 𝑀 을 흉내 낸다. 오늘날의 해석기와 같은 것
처치-튜링 논제
기계적 절차 = 튜링 기계. 정리가 아니라 논제다. 증거는 정의들이 한 점에 모였다는 것
정지 문제
𝑀 을 𝑤 에 돌리면 멈추는가. 반결정 가능하고 결정 불가능하다
환원
입력을 기계적으로 고쳐 다른 문제의 판정기에 넘긴다. 어려움이 화살표를 따라 앞에서 뒤로 간다
결정 문제 (Entscheidungsproblem)
힐베르트가 세운 목표. 술어논리의 논리적 참을 판정하라는 것
처치-튜링 정리
⊨𝜑 판정은 결정 불가능하다. 정지 문제를 환원해 증명한다
𝜑𝑀,𝑤
계산 전체를 묘사한 문장. 시각과 칸을 정의역에 놓고 전이표의 줄마다 조건문 하나
열거 절차
도출을 길이 순으로 전부 꺼내 검사한다. 논리적 참 문제의 반결정 절차
챙겨 갈 것은 넷이다.
결정 가능과 반결정 가능의 거리는 낱말 하나다. "모든 입력에서 멈춘다"는 요구. 그 낱말 하나가 "문제를 풀었다"와 "쓸 만한 도구가 있다"를 가른다
결정불가능성 증명은 늘 같은 모양이다. 결정 불가능한 것 하나를 대각선으로 확보하고, 나머지는 환원으로 옮긴다. 화살표의 방향을 잃으면 아무것도 증명하지 못한다
완전성과 결정불가능성은 서로 다른 층의 진술이다. 앞엣것은 도출의 존재를, 뒤엣것은 절차의 가능성을 말한다. "있으면 언젠가 찾는다"가 "없으면 없다고 안다"를 주지 않는다
비대칭이 뒤집혔다. 의미론에서는 "아니다"가 반례 하나로 끝났고 증명론에서는 "그렇다"가 도출 하나로 끝난다. 완전성이 두 층을 붙였으므로 편한 쪽을 골라 쓸 수 있고, 그 결과가 반결정 절차다
17장으로 넘어가는 다리는 이렇다. 판정할 수 없다면, 증명할 수 있는 것을 다 모으면 어떻게 되는가. 술어논리 자체는 그 물음에 좋은 답을 준다 — 논리적 참인 것은 전부 도출되므로, 모은 것이 인정할 것을 다 담는다. 그런데 논리만으로는 산술을 말할 수 없다. 산술의 공리를 얹어야 하고, 그러면 무슨 일이 일어나는가.
괴델의 답은 이 장이 쓴 두 도구를 그대로 다시 쓴다. 계산을 논리식으로 옮기는 일과 기계에 자기 코드를 먹이는 일이다. 17장에서 그 두 도구가 "참인데 증명되지 않는 문장"을 만들어 낸다. 미리 낱말 하나만 못 박아 둔다. "결정 불가능"과 "불완전"은 다른 말이다. 앞엣것은 판정하는 기계가 없다는 뜻이고 뒤엣것은 참인데 증명되지 않는 문장이 있다는 뜻이다. 술어논리는 결정 불가능하지만 완전하다. 산술은 결정 불가능하고 불완전하다. 두 낱말을 섞지 않는 것이 17장을 읽는 첫 조건이다.
괴델 불완전성
1931년에 나온 논문 하나가 논리학의 모습을 바꾸었다. 스물다섯 살의 쿠르트 괴델이 쓴 그 논문의 제목은 "『프린키피아 마테마티카』와 그 유관 체계의 형식적으로 결정 불가능한 명제들에 대하여"다. 제목에 결론이 이미 들어 있다. 어떤 체계 안에서는 참인지 거짓인지 결판나지 않는 명제가 있다는 것이다.
이 정리는 수학의 정리 가운데 가장 많이 인용되고 가장 많이 오해받는다. 그래서 이 장의 첫 번째 의무는 정확히 진술하는 것이다. 떠도는 문장들의 거의 전부가 조건을 하나씩 빠뜨려서 틀렸고, 조건을 되돌려 놓으면 대부분 저절로 사라진다.
이 장에서 답할 것은 넷이다.
14장은 완전성을 증명했다. 그런데 이 장은 불완전성을 말한다. 둘은 모순인가
정리는 어떤 체계에 적용되는가. 아무 체계에나 적용되는가
어떻게 "나는 증명될 수 없다"고 말하는 문장을 산술의 언어로 만드는가
"참인데 증명할 수 없다"에서 참은 무슨 뜻인가
앞 장들에서 가져오는 것은 많다. 5장의 대상언어와 메타언어 구분이 이 장의 핵심 장치이므로 잊었다면 그 절을 다시 보고 오는 편이 좋다. 7장에서 Γ⊢𝜑 의 정의와 "도출은 유한한 목록이고 도출인지 검사하는 데는 배당도 모형도 필요 없다"는 사실을 가져온다. 9장이 함수기호를 어휘에 넣지 않으며 "17장에서 산술을 다룰 때 더한다"고 미뤄 둔 빚을 이 장이 갚는다. 13·14장의 건전성과 완전성, 15장의 비표준 모형, 16장의 기계적 절차와 판정 문제가 모두 재료로 쓰인다.
이 장은 5부의 마지막이고, 13장부터 놓아 온 다리가 닿는 곳이다. 끝에서 이 문서 전체를 한 번 닫는다.
완전성과 불완전성은 다른 말이다
여기서 헷갈리면 나머지가 전부 무너지므로 이 절을 먼저 놓는다.
14장이 증명한 것은 이것이다. Γ⊨𝜑 이면 Γ⊢𝜑 이다. 주어는 증명 체계다. 우리가 7·11·12장에서 고른 규칙들이 의미론이 인정하는 것을 하나도 놓치지 않는다는 주장이다.
괴델의 불완전성 정리가 말하는 것은 이것이다. 어떤 조건을 만족하는 이론𝑇 에 대해서는, 𝑇⊢𝜑 도 𝑇⊢¬𝜑 도 아닌 문장 𝜑 가 있다. 주어는 이론이다. 공리로 무엇을 골랐느냐에 대한 주장이지 규칙에 대한 주장이 아니다.
두 주장의 주어가 다르다. 그래서 둘은 부딪치지 않는다.
<위 표의 첫 줄, 곧 두 주장의 주어가 다르다는 것을 확인하라. 아래 칸은 둘을 함께 놓았을 때 무슨 일이 일어나는지 보여 준다 — 모순이 아니라 협력이다>[원본 보기]
낱말이 겹치는 것이 문제의 뿌리다. 이 문서에서 "완전"이 세 곳에 나오는데 뜻이 다 다르다. 3장의 "건전"과 6장의 "타당"에서 했던 것처럼 여기서도 표를 하나 두고 못 박아 둔다.
어디서 나오는가
무엇에 대한 말인가
무슨 뜻인가
6장 진리함수적 완전성
연결자의 집합
그 연결자들만으로 모든 진리함수를 만들 수 있다
14장 완전성
증명 체계
Γ⊨𝜑 이면 Γ⊢𝜑
17장 완전성 · 불완전성
이론 𝑇
모든 문장 𝜑 에 대해 𝑇⊢𝜑 이거나 𝑇⊢¬𝜑 이다 · 그렇지 않다
더 나아가 둘은 서로 돕는다. 이 장에서 𝑇⊬𝐺 와 𝑇⊬¬𝐺 를 얻고 나면, 14장을 대우로 써서 𝑇⊭𝐺 와 𝑇⊭¬𝐺 를 얻는다. 𝑇⊭𝐺 라는 것은 𝑇 의 공리를 다 만족하면서 𝐺 는 거짓인 모형이 있다는 뜻이다. 그 모형이 15장의 비표준 모형이고, 이 장 뒷부분에서 다시 만난다.
마지막으로 사람 이야기를 하나 붙인다. 두 정리를 같은 사람이 증명했다. 완전성은 1929년 학위논문이고 불완전성은 1931년 논문이다. 같은 사람이 두 해 사이에 증명한 두 정리가 서로 모순일 리 없다는 것이, 헷갈릴 때 떠올릴 만한 사실이다.
예제 226
다음 각각이 "완전하다"의 어느 뜻인지 판정하라. 그리고 참인지도 판정하라. (가) {¬,∧} 는 완전하다 (나) 우리의 자연연역 체계는 완전하다 (다) 페아노 산술은 완전하다 (라) ⊨𝜑 이면 ⊢𝜑 이다
풀이 보기
(가) 6장의 뜻. 진리함수적 완전성이다. 참이다 — 6장이 ¬ 와 ∧ 만으로 다른 연결자를 다 만들 수 있음을 보였다. 이 뜻의 "완전"은 연결자 집합에 대한 말이고 증명과 아무 상관이 없다.
(나) 14장의 뜻. 참이다. 이것이 14장의 정리다.
(다) 17장의 뜻. 거짓이다. 페아노 산술은 이 장의 조건 셋을 만족하므로 결판나지 않는 문장을 갖는다.
(라) 14장의 뜻. 참이다. Γ 를 공집합으로 놓은 특수한 경우다.
답이 말이 되는가. 같은 낱말이 붙었는데 (나)는 참이고 (다)는 거짓이다. 주어가 다르기 때문이다. (나)의 주어는 규칙이고 (다)의 주어는 공리다. 이 문서가 5장부터 문법·의미론·증명 체계를 따로 세운 이유가 여기서 또 한 번 값을 한다. 층을 나누어 놓지 않았다면 이 두 문장이 어떻게 함께 참일 수 있는지 말할 방법이 없다.
흔한 오해
다음 추론은 어디가 틀렸는가. "괴델은 참인데 증명할 수 없는 문장이 있음을 보였다. 그런데 14장의 완전성 정리는 참인 것은 모두 증명된다고 말한다. 그러니 둘 중 하나는 틀렸다."
풀이 보기
틀린 곳은 "참인 것은 모두 증명된다"를 어느 뜻의 참으로 읽었는가에 있다.
14장이 말하는 것은 Γ⊨𝜑 이면 Γ⊢𝜑 이다. 여기서 ⊨ 는 Γ 의 모든 모형에서 참이라는 뜻이다. 10장이 그렇게 정의했다.
괴델의 𝐺 는 그런 뜻으로 참인 것이 아니다. 𝐺 는 표준 모형 하나에서만 참이다. 𝑇 의 다른 모형에서는 거짓이다. 그러니 𝑇⊨𝐺 가 아니고, 14장은 𝑇⊢𝐺 를 약속하지 않는다.
정리하면 이렇다. 두 문장에 "참"이라는 같은 낱말이 쓰였지만 하나는 모든 모형에서 참이고 하나는 한 모형에서 참이다. 이 구분이 이 장의 절반이고, 뒤에서 절을 하나 따로 두어 다룬다.
여기서 배울 습관 하나. 이 문서에서 "참"이라는 낱말을 볼 때마다 어느 모형에서인지를 되물어라. 10장이 참과 거짓은 모형에 대해서만 말한다고 못 박아 두었다.
정리가 요구하는 세 조건
정리는 아무 체계에나 적용되지 않는다. 조건이 셋이고, 조건을 빼먹은 진술이 세상에 떠도는 오해의 대부분이다. 조건을 세우기 전에 낱말 하나를 정하고 언어를 하나 늘려야 한다.
이론이란 무엇인가
이론(theory)𝑇 는 어떤 언어의 문장들의 집합이다. 그 문장들을 공리라 부른다. 𝑇⊢𝜑 는 7장의 Γ⊢𝜑 에서 Γ 자리에 𝑇 를 넣은 것일 뿐이고, 새 정의가 아니다.
이론 𝑇 가 일관적(consistent)이라는 것은 어떤 𝜑 에 대해서도 𝑇⊢𝜑 와 𝑇⊢¬𝜑 가 함께 성립하지 않는다는 뜻이다. 7장의 규칙으로 다시 말하면 𝑇⊬⊥ 이다.
이론 𝑇 가 완전하다는 것은 언어의 모든 문장 𝜑 에 대해 𝑇⊢𝜑 이거나 𝑇⊢¬𝜑 이라는 뜻이다. 이론이 모든 물음에 결판을 낸다는 말이다.
산술의 언어 — 어휘를 늘린다
9장이 함수기호를 어휘에 넣지 않았고, 대가로 "17장에서 산술을 다루려면 더해야 한다"고 적어 두었다. 지금 더한다. 5장에서 ⊥ 을 7장이 어휘에 더한 것과 같은 일이다. 언어가 무엇인지는 우리가 정하고, 정한 것을 바꾸려면 정의를 고친다.
어휘에 더하는 것은 넷이다. 개체상수 0, 1항 함수기호 𝑆(후계, successor), 2항 함수기호 + 와 ×. 순서를 쓰고 싶으면 2항 술어 < 를 더하지만 = 와 + 로 정의할 수도 있으므로 여기서는 넣지 않는다. 이 어휘로 된 언어를 산술의 언어라 한다.
9장의 항 정의에서 비어 있던 재귀 조항이 이제 채워진다. 𝑡1,…,𝑡𝑛 이 항이고 𝑓 가 𝑛 항 함수기호이면 𝑓(𝑡1,…,𝑡𝑛) 도 항이다.+ 와 × 는 관례대로 가운데에 적는다. 10장의 의미론에도 조항이 하나 는다. 해석 𝐼 는 𝑛 항 함수기호에 𝐷 위의 𝑛 항 함수를 준다.
항이 재귀적으로 자라므로 이제 이름 없이도 대상을 가리킬 수 있다. 𝑆𝑆0 는 "0의 다음의 다음"이다. 자연수 𝑛 을 이렇게 적은 항을 𝑛 의 수사(numeral)라 하고 ――𝑛 로 쓴다.
――0=0, ――1=𝑆0, ――2=𝑆𝑆0, ――3=𝑆𝑆𝑆0, 일반적으로 ――――𝑛+1=𝑆――𝑛
표준 모형N 은 정의역이 자연수 전체 ℕ 이고, 0 을 0으로, 𝑆 를 "1 더하기"로, + 와 × 를 보통의 덧셈·곱셈으로 해석한 모형이다. 우리가 산술의 문장을 적을 때 머릿속에 두는 모형이 이것이다. 그런데 머릿속에 둔다는 것과 문장이 그 모형을 붙잡는다는 것은 다르다. 15장이 그 차이를 이미 보였다.
이론의 예를 둘 든다. 로빈슨 산술𝖰 는 공리가 일곱 개쯤 되는 아주 약한 이론이다. ∀𝑥𝑆𝑥≠0(0은 누구의 다음도 아니다), ∀𝑥∀𝑦(𝑆𝑥=𝑆𝑦→𝑥=𝑦), ∀𝑥𝑥+0=𝑥, ∀𝑥∀𝑦𝑥+𝑆𝑦=𝑆(𝑥+𝑦) 같은 것들이다. 페아노 산술𝖯𝖠 는 여기에 귀납 도식을 더한 것이다 — 자유 변수가 있는 식 𝜑(𝑥) 마다 [𝜑(――0)∧∀𝑥(𝜑(𝑥)→𝜑(𝑆𝑥))]→∀𝑥𝜑(𝑥) 를 공리로 넣는다. 식마다 하나씩이므로 공리가 무한히 많다.
조건 셋
이제 정리의 조건을 적을 수 있다. 이론 𝑇 가 다음 셋을 만족해야 한다.
(가) 산술을 담을 만큼 강하다. 적어도 𝖰 의 공리를 전부 증명한다. 왜 이만큼이 필요한지는 표현 가능성 절에서 드러난다
(나) 재귀적으로 공리화된다. 어떤 기호열이 𝑇 의 공리인지 기계가 유한 단계에 판정한다. 공리가 무한히 많아도 된다 — 𝖯𝖠 의 귀납 도식이 그렇다. 목록을 알아볼 수 있으면 된다
(다) 일관적이다.𝑇⊬⊥
셋 다 이론에 대한 조건이지 증명 체계에 대한 조건이 아니다. 규칙은 13·14장에서 이미 검사를 마쳤고 여기서 다시 문제 삼지 않는다.
하나씩 빼 보면
조건이 정말 필요한지는 하나씩 빼 보면 안다. 뺄 때마다 실제로 완전한 이론이 있다.
<위아래를 짝지어 읽어라. 조건 하나를 뺄 때마다 완전한 이론이 실제로 하나씩 있고, 그것이 조건을 빼먹은 진술을 반박하는 예가 된다>[원본 보기]
세 반례를 말로 적어 둔다.
(가)를 빼면 — 프레스버거 산술은 덧셈만 있고 곱셈이 없는 산술이다. 이 이론은 완전하고 게다가 결정 가능하다. 곱셈 하나가 빠졌을 뿐인데 정리가 적용되지 않는다. 산술 밖으로 나가면 예가 더 있다 — 실수의 순서와 덧셈·곱셈에 대한 1차 이론도 완전하다
(나)를 빼면 — 진 산술Th(N) 은 표준 모형에서 참인 문장을 전부 공리로 삼은 이론이다. 정의부터가 "참인 것을 다 넣었다"이므로 완전하고 일관적이고 산술을 다 담는다. 빠진 것은 (나)뿐이다. 어떤 기호열이 이 이론의 공리인지 기계가 알아볼 방법이 없다
(다)를 빼면 — 비일관 이론은 7장의 ⊥E 로 모든 문장을 도출한다. 그러므로 완전하다. 완전하고 쓸모가 없다
이 셋이 왜 중요한가. "괴델은 어떤 체계도 완전할 수 없음을 보였다"라는 문장을 들으면 이제 반례 셋을 곧바로 댈 수 있다. 조건을 빼면 정리가 아니라 거짓말이 된다.
예제 228
(나)를 뺀 반례에서 한 걸음 더 나간다. 제1 불완전성 정리를 인정할 때, 진 산술 Th(N) 이 재귀적으로 공리화될 수 없다는 것을 보여라.
증명
모순을 이끌어 낸다. Th(N) 이 재귀적으로 공리화된다고 하자. 그러면 이 이론은 조건 셋을 다 만족한다. (가) 표준 모형에서 참인 문장을 전부 담았으니 𝖰 의 공리도 담는다. (나) 가정이다. (다) 한 모형에서 참인 문장만 모았으므로 𝜑 와 ¬𝜑 가 함께 들어갈 수 없다. 13장의 건전성에 의해 도출되는 것도 전부 그 모형에서 참이므로 일관적이다.
그러면 제1 불완전성 정리에 의해 Th(N)⊬𝐺 이고 Th(N)⊬¬𝐺 인 문장 𝐺 가 있다. 그런데 𝐺 는 문장이므로 표준 모형에서 참이거나 거짓이고, 둘 중 하나는 Th(N) 의 공리다. 공리는 한 줄 도출로 얻어진다. 모순이다.
따라서 Th(N) 은 재귀적으로 공리화되지 않는다.
답이 말이 되는가. 이 결과가 조건 (나)의 값을 보여 준다. 산술의 참을 다 잡는 이론은 있다. 다만 그것을 적을 수가 없다. 공리 목록을 알아볼 수 없는 이론은 증명을 검사할 수도 없으니 쓸 수가 없다. 우리가 원하는 것은 참을 다 잡는 이론이 아니라 쓸 수 있으면서 참을 다 잡는 이론이었고, 정리가 없앤 것은 뒤엣것이다.
예제 229
𝖯𝖠 는 공리가 무한히 많다. 그런데도 조건 (나)를 만족한다고 했다. 왜 그런가. 그리고 "공리가 유한 개여야 한다"로 조건을 바꾸면 무엇이 달라지는가.
풀이 보기
조건 (나)가 요구하는 것은 목록의 크기가 아니라 알아볼 수 있는가다. 𝖯𝖠 의 귀납 도식은 "𝜑 가 자유 변수 𝑥 를 가진 적형식이면 [𝜑(――0)∧∀𝑥(𝜑(𝑥)→𝜑(𝑆𝑥))]→∀𝑥𝜑(𝑥) 가 공리다"라는 모양을 하고 있다. 어떤 기호열을 주면, 그것이 이 모양인지 검사하는 절차가 있다. 5장의 적형식 판정과 9장의 대입 판정을 이어 붙이면 되고, 둘 다 유한 단계에 끝난다.
"유한 개"로 바꾸면 정리가 약해진다.𝖯𝖠 같은 이론이 정리의 사정권에서 빠져나가는데, 정작 우리가 걱정하는 이론이 그런 것들이다. 그리고 정리의 증명이 진짜로 필요로 하는 것은 유한성이 아니다. 뒤에서 보겠지만 필요한 것은 "이 목록이 𝑇 에서의 도출인가"를 기계가 검사할 수 있다는 사실뿐이고, 그러려면 공리를 알아볼 수 있으면 충분하다.
답이 말이 되는가. 조건 (나)를 "기계가 알아본다"로 적은 것이 우연이 아니다. 이 조건 하나가 16장의 개념을 이 장에 끌어들이는 통로다. 그리고 뒤에서 이 조건이 정확히 어디에 쓰이는지 보게 된다.
산술화 — 문장과 증명에 번호를 매긴다
이제 정리의 기계 장치를 만든다. 첫 부품은 놀랄 만큼 단순하다. 기호열마다 자연수를 하나씩 붙인다.
왜 이런 일을 하는가. 5장이 대상언어와 메타언어를 갈라 놓았다. 대상언어는 논리식이고, "이 기호열은 적형식이다"나 "이 목록은 도출이다" 같은 말은 전부 메타언어, 곧 한국어의 문장이었다. 대상언어에는 그런 말을 할 어휘가 없다.
그런데 산술의 언어는 수에 대해 말할 수 있다. 그러니 기호열을 수로 바꿔 놓으면, 기호열에 대한 말이 수에 대한 말이 되고, 수에 대한 말은 산술의 언어가 할 수 있다. 5장이 "괴델은 대상언어가 메타언어의 말을 흉내 내게 만든다"고 예고한 것이 이 수법이다.
붙이는 방법은 여러 가지가 있고 어느 것을 써도 된다. 괴델이 쓴 방법을 작은 예로 보인다.
<④에서 나온 수가 아니라 왼쪽의 되돌리기 화살표를 눈여겨보라 — 번호에서 기호열이 하나로 정해진다는 것이 이 방법의 전부다>[원본 보기]
먼저 기호마다 코드를 하나씩 정한다. 0 에 1, 𝑆 에 3, + 에 5, × 에 7, = 에 9, 여는 괄호에 11, 닫는 괄호에 13, ¬ 에 15, 이런 식으로 홀수를 차례로 준다. 변수는 무한히 많으므로 𝑥𝑖 에 29+2𝑖 를 준다.
다음으로 기호열 𝑠1𝑠2⋯𝑠𝑘 에 이렇게 수를 붙인다. 𝑖 번째 자리에 𝑖 번째 소수를 놓고, 그 소수의 지수로 𝑠𝑖 의 코드를 올린 뒤 전부 곱한다.
⌜𝑠1𝑠2⋯𝑠𝑘⌝=2𝑐1⋅3𝑐2⋅5𝑐3⋯𝑝𝑐𝑘𝑘
⌜𝜑⌝ 라고 모서리 괄호로 감싼 것이 𝜑 의 괴델 수다. 그림의 예를 따라가면 ⌜0=0⌝=21⋅39⋅51=196830 이다.
왜 하필 소수의 거듭제곱인가. 되돌릴 수 있어야 하기 때문이다. 자연수를 소인수로 쪼개는 길은 하나뿐이므로, 196830 을 받으면 지수 1,9,1 을 읽어 내고 거기서 기호열 0=0 을 되찾을 수 있다. 5장의 유일 가독성이 문법에서 한 일을 유일 인수분해가 번호에서 한다.
도출에도 번호를 붙인다. 7장이 도출을 유한한 문장 목록으로 정의했으므로, 문장마다 괴델 수 𝑛1,…,𝑛𝑘 를 구한 다음 같은 방법으로 한 번 더 묶으면 된다. 2𝑛1⋅3𝑛2⋯𝑝𝑛𝑘𝑘 가 그 도출의 번호다.
수가 상상하기 어려울 만큼 커진다. 그것은 문제가 되지 않는다. 우리는 이 수를 계산할 일이 없다. 필요한 것은 셋뿐이다. 서로 다른 기호열에 서로 다른 수가 붙고, 붙이는 일이 기계적이고, 되돌리는 일도 기계적이라는 것.
한 가지를 정확히 해 둔다. ⌜𝜑⌝ 는 수이고, 산술의 언어 안에서 그 수를 가리키려면 수사가 필요하다. 엄밀히 적으면 ―――⌜𝜑⌝ 다. 아래에서는 관례를 따라 이 위줄을 생략하고 ⌜𝜑⌝ 라고만 쓰지만, 식 안에 들어간 것은 언제나 수사라는 것을 잊지 마라. 대상언어에 "수"가 들어갈 자리는 없고 항이 들어갈 자리만 있다.
예제 230
기호 코드가 위와 같을 때 ⌜𝑆0⌝ 를 구하라. 그리고 ⌜𝑆0⌝ 와 ⌜0=0⌝ 가운데 어느 쪽이 큰지 계산 없이 말할 수 있는지 따져 보라.
풀이 보기
기호열은 𝑆 와 0 둘이고 코드는 3과 1이다. 자리는 두 개이므로 소수는 2와 3이다.
⌜𝑆0⌝=23⋅31=8⋅3=24
크기를 계산 없이 비교할 수 있는가. 없다. 0=0 은 기호가 셋이라 소수를 하나 더 쓰지만, 크기를 정하는 것은 자리의 개수가 아니라 지수다. = 의 코드가 9라서 39 이 통째로 들어오는 바람에 ⌜0=0⌝ 이 훨씬 크다. 짧은 식이 큰 번호를 받는 일도 얼마든지 있다.
답이 말이 되는가. 번호의 크기에는 아무 뜻이 없다. 우리가 요구한 것은 서로 다른 기호열에 서로 다른 수가 붙는다는 것뿐이고, 순서나 크기에 대해서는 아무것도 요구하지 않았다. 여기서 헷갈리기 쉬운 것 하나를 덧붙이면, ⌜𝜑⌝ 는 𝜑 를 줄인 이름이 아니라 𝜑 라는 기호열 전체를 코딩한 수다. 식이 길어지면 번호는 걷잡을 수 없이 커진다.
예제 231
다음 각각이 대상언어의 표현인지 메타언어의 표현인지 판정하라. 5장의 판정 기준을 그대로 쓴다. (가) ⌜0=0⌝=196830 (나) ―――――196830 (다) 𝑆𝑆0+𝑆𝑆0=𝑆𝑆𝑆𝑆0 (라) 𝜑 의 괴델 수는 짝수다
풀이 보기
기준은 하나다. 어휘 목록에 있는 기호만으로 적혀 있는가.
(가) 메타언어. 여기 쓰인 등호는 산술의 언어의 = 가 아니라 "두 수가 같다"는 우리말이고, 모서리 괄호와 십진 표기 196830 도 어휘에 없다. 이 줄은 우리가 계산해서 확인한 사실을 적은 한국어 문장이다.
(나) 대상언어.𝑆 를 196830번 붙이고 0 을 적은 항이다. 위줄과 십진 숫자는 우리가 그 항을 줄여 부르는 이름일 뿐이고, 실제 항에는 𝑆 와 0 만 들어 있다.
(다) 대상언어.𝑆, 0, +, = 가 다 어휘에 있다. 게다가 표준 모형에서 참인 문장이다.
(라) 메타언어. "괴델 수"도 "짝수"도 어휘에 없다. 다만 이것이 이 장의 요점이다 — 이 한국어 문장에 대응하는 산술의 문장을 만들 수 있다는 것이 다음 절의 주제다.
답이 말이 되는가. (나)와 (라)가 이 장의 두 걸음을 각각 보여 준다. 수사는 수를 언어 안으로 들여오는 장치이고, 표현 가능성은 수에 대한 말을 언어 안으로 들여오는 장치다. 두 걸음이 다 있어야 대상언어가 메타언어를 흉내 낼 수 있다.
표현 가능성 — 여기서는 결과만 쓴다
번호를 붙였으니 이제 그 번호에 대해 산술의 언어로 말해야 한다. 목표는 이것이다.
Prf𝑇(𝑦,𝑥) — "𝑦 는 괴델 수가 𝑥 인 문장의, 𝑇 에서의 도출의 괴델 수다"
이것이 산술의 식이라는 말은, 0 과 𝑆 와 + 와 × 와 = 와 논리 기호만으로 적힌 적형식이라는 뜻이다. 한국어는 한 글자도 들어가지 않는다.
<줄마다 가로로 읽어라. 왼쪽 칸은 5장이 메타언어라고 못 박은 말이고 오른쪽 칸은 산술의 식이다. 이 표를 실제로 채우는 일이 괴델 논문의 대부분이다>[원본 보기]
무엇을 인용하는가
정확한 낱말을 하나 세운다. 자연수들 사이의 관계 𝑅 가 이론 𝑇 에서 표현 가능하다(representable)는 것은, 어떤 식 𝜑(𝑥1,…,𝑥𝑘) 가 있어 다음 둘이 성립한다는 뜻이다.
𝑅(𝑛1,…,𝑛𝑘) 가 성립하면 𝑇⊢𝜑(―――𝑛1,…,―――𝑛𝑘)
𝑅(𝑛1,…,𝑛𝑘) 가 성립하지 않으면 𝑇⊢¬𝜑(―――𝑛1,…,―――𝑛𝑘)
표현 가능성은 "참이다"가 아니라 "증명된다"를 요구한다는 점을 눈여겨보라. 𝑇 가 낱낱의 경우마다 결판을 내 준다는 뜻이다.
이제 인용할 정리다.
표현 가능성 정리. 기계적 절차로 판정할 수 있는 관계는 모두 𝖰 에서 표현 가능하다.
조건 (가)가 여기서 값을 한다. 𝑇 가 𝖰 를 담으면 𝖰 에서 표현 가능한 것은 𝑇 에서도 표현 가능하다. "산술을 담을 만큼 강하다"가 정확히 무엇을 위한 조건이었는지가 이것이다.
조건 (나)도 여기서 값을 한다. "이 목록이 𝑇 에서의 도출인가"를 기계가 판정할 수 있어야 Prf𝑇 가 표현 가능해진다. 그러려면 목록의 각 줄이 규칙을 제대로 쓴 것인지 검사해야 하고 — 7장이 도출 검사는 유한하고 기계적이라고 못 박았다 — 전제로 인용된 줄이 공리인지도 검사해야 한다. 공리를 알아볼 수 없으면 여기서 막힌다.
두 조건이 다 갖춰지면 Prf𝑇(𝑦,𝑥) 를 얻고, 그 위에 한정사 하나를 얹어 증명 가능성 술어를 정의한다.
Prov𝑇(𝑥):=∃𝑦Prf𝑇(𝑦,𝑥)
왜 힘든가
이 정리를 증명하는 일이 괴델 논문에서 가장 긴 부분이고, 이 장에서는 결과만 쓴다. 다만 왜 힘든지는 말해 두는 편이 정직하다.
산술의 언어에는 0, 𝑆, +, × 넷밖에 없다. 수열이 없고, 목록이 없고, "𝑖 번째 원소"라는 말이 없다. 그런데 우리가 코딩하려는 것은 기호열이고 도출이고, 둘 다 길이가 정해지지 않은 목록이다. 그래서 "임의 길이의 목록을 수 몇 개로 다루는 장치"를 + 와 × 만으로 만들어야 한다.
괴델의 해결책이 𝛽 함수다. 나머지 연산을 써서 수 두 개로 임의 길이의 수열을 흉내 내는 함수이고, 나머지 연산은 ∃ 와 + 와 × 로 적을 수 있다. 이 장치가 서고 나면 소수·인수분해·지수 같은 것을 차례로 정의할 수 있고, 그 위에 "적형식이다", "대입한 결과다", "이 줄은 저 두 줄에 →E 를 쓴 것이다" 같은 조항을 하나씩 쌓는다. 우리 체계의 규칙이 열일곱 개에 동일성 규칙 둘이므로 조항도 그만큼이다. 괴델의 논문에는 이런 정의가 마흔 개 넘게 줄지어 있다.
길지만 놀라움은 없다. 한 걸음씩 다 검사할 수 있는 작업이다. 놀라움은 다음 절에 있고, 그래서 여기를 인용으로 넘긴다.
한쪽으로만 통한다
마지막으로 Prov𝑇 의 성질 하나를 못 박아 둔다. 뒤에서 두 번 쓴다.
𝑇⊢𝜑 이면 𝑇⊢Prov𝑇(⌜𝜑⌝) 이다. 도출이 실제로 있으면 그 도출의 번호 𝑛 을 손에 쥐고 있는 셈이므로, 𝑇 안에서 Prf𝑇(――𝑛,⌜𝜑⌝) 를 증명한 뒤 ∃I 를 쓰면 된다.
역은 자명하지 않다.𝑇⊢Prov𝑇(⌜𝜑⌝) 이라고 해서 𝑇⊢𝜑 인 것은 아니다. ∃𝑦 가 있다고 𝑇 가 증명했을 때 그 𝑦 가 진짜 도출을 코딩한다는 보장이 없기 때문이다. 이 틈이 어디서 생기는지는 비표준 모형 절에서 정확히 드러난다.
예제 232
표현 가능성의 정의에서 두 조항 가운데 아래엣것, 곧 "성립하지 않으면 𝑇⊢¬𝜑(…)"를 빼면 무엇이 약해지는가. 위 조항만 있는 성질을 "약하게 표현한다"고 부르기로 하고 답하라.
풀이 보기
위 조항만 있으면 𝑇 는 성립하는 경우에만 말을 한다. 성립하지 않는 경우에 𝑇 는 침묵할 수도 있다. 즉 𝑅(𝑛) 이 거짓인데 𝑇⊬𝜑(――𝑛) 이고 𝑇⊬¬𝜑(――𝑛) 인 상태가 허용된다.
무엇이 약해지는가. 뒤에서 우리는 "𝐺 의 도출이 실제로 없다"에서 "𝑇 가 낱낱의 수 𝑛 마다 ¬Prf𝑇(――𝑛,⌜𝐺⌝) 를 증명한다"로 넘어가야 한다. 이 걸음이 정확히 아래 조항이다. 약한 표현만으로는 이 걸음을 딛지 못한다.
답이 말이 되는가. 정의의 두 조항이 각각 정리의 두 갈래에 대응한다는 것이 요점이다. 위 조항은 "𝑇⊢𝐺 이면" 갈래에 쓰이고 아래 조항은 "𝑇⊢¬𝐺 이면" 갈래에 쓰인다. 정의를 세울 때 조항을 왜 그렇게 잡았는지는 대개 나중에 어디에 쓰는지를 보아야 알 수 있고, 이것이 그 예다.
흔한 오해
"Prov𝑇(𝑥) 는 '𝑥 는 증명 가능하다'는 뜻이다"라는 설명은 어디까지 옳고 어디부터 위험한가.
풀이 보기
옳은 부분. 표준 모형 N 에서 Prov𝑇(――𝑚) 이 참인 것과 괴델 수가 𝑚 인 문장이 𝑇 에서 도출되는 것은 같다. 표현 가능성 정리가 그렇게 되도록 식을 만들었다.
위험한 부분. Prov𝑇(𝑥) 는 산술의 식일 뿐이다. 그 안에는 "증명"이라는 낱말이 없고 0 과 𝑆 와 + 와 × 와 한정사만 있다. 우리가 그것을 "증명 가능하다"로 읽는 것은 표준 모형을 머릿속에 두고 하는 일이고, 다른 모형에서는 그 읽기가 통하지 않는다.
이 차이가 이 장의 결정적인 대목에서 값을 한다. 비표준 모형에서 Prov𝑇(⌜𝐺⌝) 가 참일 수 있는데, 그때 "그러면 𝐺 의 증명이 있다는 말이냐"고 물으면 답은 아니다이다. 그 모형에서 ∃𝑦 를 만족시키는 𝑦 는 자연수가 아니고, 따라서 어떤 도출도 코딩하지 않는다.
답이 말이 되는가. 5장이 대상언어와 메타언어를 갈라 놓은 것이 여기서 또 값을 한다. Prov𝑇 는 대상언어의 식이고, "증명 가능하다"는 메타언어의 말이다. 둘이 표준 모형에서 맞아떨어진다는 것은 정리이지 정의가 아니다.
대각화 보조정리
이제 놀라운 부분이다. 자기 자신에 대해 말하는 문장을 만든다.
대각화 보조정리.𝑇 가 𝖰 를 담는다고 하자. 자유 변수가 하나인 임의의 식 𝜓(𝑥) 에 대하여, 다음을 만족하는 문장𝐺 가 있다.
𝑇⊢𝐺↔𝜓(⌜𝐺⌝)
읽기는 이렇다. "𝐺 는 자기 자신이 𝜓 라는 성질을 가진다고 말한다." 𝜓 가 무엇이든 상관없다는 것이 이 보조정리의 힘이다.
무슨 수를 쓰는가. Mathematics for Computer Science 의 무한집합 장이 정지 문제에 쓴 대각선 논법과 같은 수법이다. 칸토어는 목록의 𝑛 번째 항목의 𝑛 번째 자리를 보았고, 정지 문제는 프로그램에 자기 자신을 입력으로 주었다. 여기서는 식의 자유 변수에 그 식 자신의 괴델 수를 넣는다. 셋 다 하는 일이 같다 — 같은 대상을 두 자리에 동시에 넣는 것이다.
증명의 뼈대만 적는다. 먼저 다음 계산을 생각한다.
diag(⌜𝜃(𝑥)⌝)=⌜𝜃(――――⌜𝜃(𝑥)⌝)⌝
말로 하면 "식 하나의 번호를 받아, 그 식의 자유 변수에 자기 번호의 수사를 넣은 결과의 번호를 돌려준다"이다. 이 계산은 기계적이다. 번호에서 기호열을 되찾고, 대입하고, 다시 번호를 매기면 된다. 그러니 표현 가능성 정리에 의해 산술의 식으로 적을 수 있고, 그 식을 Diag(𝑥,𝑧) 라 하자. 이름을 로만체로 적는 것은 Prov𝑇·Prf𝑇 와 같은 계열이기 때문이기도 하고, 이 장 앞에서 모형의 정의역으로 쓴 𝐷 와 겹치지 않게 하려는 것이기도 하다.
이제 𝜃(𝑥):=∃𝑧(Diag(𝑥,𝑧)∧𝜓(𝑧)) 로 놓고 𝐺:=𝜃(――――⌜𝜃(𝑥)⌝) 로 정의한다. 𝜃 안에 𝜓 가 들어 있고, 𝐺 는 𝜃 에 자기 번호를 먹인 것이다. 계산해 보면 𝐺 가 말하는 것은 "𝜃 에 𝜃 의 번호를 넣은 결과, 곧 나 자신이 𝜓 다"가 되고, 이것이 정확히 위의 등가식이다.
여기서 정확히 해 둘 것이 있다. 𝐺 안에 "나"라는 말도, 𝐺 라는 이름도 들어 있지 않다.𝐺 는 그저 아주 긴 산술의 문장이다. 자기 지시는 문장의 내용이 아니라 우리가 그것을 만든 방법에 있다.
예제 234
대각화 보조정리를 𝜓(𝑥):=Prov𝑇(𝑥) 에 적용하면 "나는 증명 가능하다"고 말하는 문장 𝐻 가 나온다. 이 문장에 대해 무엇을 말할 수 있는가. ¬Prov𝑇 쪽과 무엇이 다른가.
풀이 보기
얻는 것은 𝑇⊢𝐻↔Prov𝑇(⌜𝐻⌝) 다.
이 문장은 역설을 만들지 않는다.𝑇⊢𝐻 라고 해 보자. 그러면 𝑇⊢Prov𝑇(⌜𝐻⌝) 이고 등가식에 의해 𝑇⊢𝐻 다. 처음으로 돌아왔을 뿐 모순이 없다. 반대로 𝑇⊬𝐻 라 해도, 그때 Prov𝑇(⌜𝐻⌝) 가 𝑇 에서 증명되지 않는 것이 자연스러우므로 역시 모순이 없다. 즉 이 문장은 양쪽 다 가능해 보인다.
실제로 뢰브(Löb)가 1955년에 답을 냈다. 조건을 갖춘 𝑇 에서 이 𝐻 는 언제나 증명된다. 이 장에서 다루기에는 재료가 더 필요하지만, 이름만 적어 두면 뢰브의 정리다.
답이 말이 되는가. 여기서 배울 것은 대각화 보조정리 자체는 아무 결론도 주지 않는다는 것이다. 그것은 문장을 만드는 기계일 뿐이고, 무엇이 나오는지는 𝜓 를 무엇으로 넣느냐에 달렸다. 부정을 붙인 쪽이 결론을 낳는다는 사실은 미리 알 수 있는 것이 아니라 해 보아야 아는 것이다.
예제 235
거짓말쟁이 역설 "이 문장은 거짓이다"는 모순을 낳는다. 그런데 "이 문장은 증명 불가능하다"는 모순을 낳지 않는다. 차이가 어디에 있는가. 이 물음에서 무엇이 따라 나오는가.
풀이 보기
차이는 산술의 언어가 무엇을 표현할 수 있는가에 있다. 우리는 Prov𝑇 를 실제로 만들었다. 그러니 대각화 보조정리를 ¬Prov𝑇 에 먹일 수 있다.
진리에 대해서도 같은 일을 할 수 있다고 해 보자. 곧 "𝑥 는 참인 문장의 번호다"에 해당하는 산술의 식 True(𝑥) 가 있고, 모든 문장 𝜑 에 대해 𝜑↔True(⌜𝜑⌝) 가 표준 모형에서 참이라고 하자. 대각화 보조정리를 ¬True(𝑥) 에 먹이면 𝐿↔¬True(⌜𝐿⌝) 인 문장 𝐿 이 나오고, 이것은 "𝐿 이 참인 것과 𝐿 이 참이 아닌 것이 같다"는 뜻이다. 모순이다.
따라서 그런 True 는 없다. 이것이 타르스키의 진리 정의 불가능성 정리다. 산술의 참은 산술의 언어로 정의할 수 없다.
답이 말이 되는가. 두 정리가 하나의 그림을 이룬다. 증명 가능성은 언어 안에서 정의할 수 있고 진리는 없다. 그래서 "나는 증명 불가능하다"는 문장은 만들어지고 모순을 내지 않는 반면, "나는 거짓이다"는 애초에 만들 수가 없다. 이 비대칭이 왜 괴델 문장이 역설이 아니라 정리인지를 설명한다.
제1 불완전성 정리
부품이 다 모였다. 조립한다.
정확한 진술
제1 불완전성 정리. 이론 𝑇 가 (가) 산술을 담을 만큼 강하고 (나) 재귀적으로 공리화되고 (다) 일관적이면, 산술의 문장 𝐺𝑇 가 있어
𝑇⊬𝐺𝑇이고𝑇⊬¬𝐺𝑇
이다. 그리고 𝐺𝑇 는 표준 모형 N 에서 참이다.
표기 하나를 밝혀 둔다. 𝐺𝑇 의 𝐺 는 괴델의 머리글자다. 9장 이후 술어에 𝐺 를 쓰기로 했지만 이 장이 다루는 산술의 언어에는 술어기호가 = 하나뿐이라 겹칠 일이 없다.
역사 주석도 하나. 괴델이 1931년에 증명한 것은 두 번째 결론에 𝜔-일관성이라는 더 센 조건을 붙인 형태였다. 1936년에 로서(Rosser)가 문장을 손봐 단순 일관성만으로 같은 결론을 얻었다. 위에 적은 것은 로서 판본이다.
증명의 뼈대
<두 갈래가 대칭이 아니라는 것을 확인하라. 왼쪽은 일관성만으로 닫히고 오른쪽은 조건이 하나 더 든다. 그리고 맨 아래 줄이 갈래 하나에서만 따라 나온다는 것도>[원본 보기]
대각화 보조정리를 𝜓(𝑥):=¬Prov𝑇(𝑥) 에 적용해 문장 𝐺𝑇 를 얻는다.
𝑇⊢𝐺𝑇↔¬Prov𝑇(⌜𝐺𝑇⌝)
𝐺𝑇 는 "나는 𝑇 에서 증명되지 않는다"고 말한다.
갈래 1 — 𝑇⊬𝐺𝑇. 반대로 𝑇⊢𝐺𝑇 라고 하자. 도출이 실제로 있으므로 앞 절의 성질에 의해 𝑇⊢Prov𝑇(⌜𝐺𝑇⌝) 이다. 한편 등가식과 𝑇⊢𝐺𝑇 에서 𝑇⊢¬Prov𝑇(⌜𝐺𝑇⌝) 이다. 둘 다 도출되므로 𝑇 가 비일관이고, 조건 (다)에 어긋난다.
갈래 2 — 𝑇⊬¬𝐺𝑇. 여기가 어려운 쪽이다. 𝑇⊢¬𝐺𝑇 라고 하면 등가식에서 𝑇⊢Prov𝑇(⌜𝐺𝑇⌝) 이다. 즉 "𝐺𝑇 의 도출이 있다"를 𝑇 가 증명한다. 그런데 갈래 1에서 실제 도출은 없다는 것을 알았으므로, 표현 가능성의 아래 조항에 의해 낱낱의 수 𝑛 마다𝑇⊢¬Prf𝑇(――𝑛,⌜𝐺𝑇⌝) 이다. "하나 있다"를 증명하면서 후보를 대면 모두 아니라고 증명하는 상태를 𝜔-비일관이라 한다. 모순은 아니지만 이런 이론은 표준 모형을 갖지 못한다. 𝜔-일관성을 가정하면 이 갈래가 닫힌다. 로서는 𝐺𝑇 대신 "나를 증명하는 도출이 있다면 그보다 작은 번호의 나의 반증이 있다"고 말하는 문장을 써서, 단순 일관성만으로 이 갈래를 닫았다.
그리고 𝐺𝑇 는 표준 모형에서 참이다. 갈래 1에서 𝑇⊬𝐺𝑇 를 얻었다. 그러니 어떤 자연수도 𝐺𝑇 의 도출의 번호가 아니다. 따라서 N 에서 ∃𝑦Prf𝑇(𝑦,⌜𝐺𝑇⌝) 는 거짓이고, ¬Prov𝑇(⌜𝐺𝑇⌝) 는 참이고, 등가식에 의해 𝐺𝑇 는 참이다.
이 마지막 걸음을 누가 걸었는지 정확히 보아 두어라. 우리가 메타언어에서 걸었다.𝑇 가 증명한 것이 아니다. 우리는 𝑇 밖에 서서 "𝑇 는 일관적이다"를 가정으로 삼아 이 결론에 이르렀고, 𝑇 자신은 그 가정을 쓸 수 없다. 이 사실이 제2 정리로 곧장 이어진다.
따름정리를 하나 적어 둔다. 𝑇 에 𝐺𝑇 를 공리로 더한 이론 𝑇′=𝑇∪{𝐺𝑇} 도 조건 셋을 그대로 만족한다. 그러니 𝑇′ 에 대해서도 결판나지 않는 문장 𝐺𝑇′ 이 있다. 구멍을 메우면 새 구멍이 생긴다. 공리를 아무리 더해도, 더한 목록을 기계가 알아볼 수 있는 한 끝나지 않는다.
"참인데 증명할 수 없다"가 무슨 뜻인가
이 절이 이 장에서 가장 자주 오해되는 자리다.
두 문장을 나란히 놓는다. 𝑇⊬𝐺𝑇 는 증명 체계에 대한 말이고, "𝐺𝑇 는 참이다"는 의미론에 대한 말이다. 그런데 뒤엣것은 어느 모형에서 참이라는 말인가.
답은 표준 모형 N 에서다. 𝑇 의 모든 모형에서가 아니다. 실제로 모든 모형에서 참일 수는 없다. 14장의 완전성 정리를 대우로 쓰면 𝑇⊬𝐺𝑇 에서 𝑇⊭𝐺𝑇 가 나오고, 이것은 𝑇 의 공리를 다 만족하면서 𝐺𝑇 가 거짓인 모형이 있다는 뜻이다.
<아래 줄의 상자를 보라. 그 안의 원소들 때문에 같은 문장이 위에서 참이고 아래에서 거짓이 된다 — 완전성 정리가 저 상자의 존재를 보장한다>[원본 보기]
그 모형이 15장의 비표준 모형이다. 표준 부분 뒤에 0 에서 𝑆 를 유한 번 붙여서는 닿을 수 없는 원소들이 붙어 있는 모형이다. 그런 모형에서 ∃𝑦Prf𝑇(𝑦,⌜𝐺𝑇⌝) 가 참이 될 수 있다. 그 𝑦 가 비표준 원소이기 때문이다.
여기서 앞 절이 남겨 둔 틈이 메워진다. 𝑇⊢Prov𝑇(⌜𝜑⌝) 에서 𝑇⊢𝜑 로 갈 수 없었던 이유가 이것이다. 𝑇 가 "도출이 있다"를 증명해도, 그 "도출"이 모든 모형에서 진짜 도출을 코딩한다는 보장이 없다.
그래서 정확한 문장은 이렇다.
𝐺𝑇 는 𝑇 에서 도출되지 않는다 — 증명 체계의 사실
𝐺𝑇 는 표준 모형에서 참이다 — 한 모형에 대한 사실
𝐺𝑇 는 𝑇 의 논리적 귀결이 아니다 — 그래서 완전성 정리와 부딪치지 않는다
종이에 적을 수 있는 𝐺𝑇 의 도출은 하나도 없다 — 비표준 원소는 종이에 적히지 않는다
마지막 줄이 중요하다. 비표준 모형이 있다는 사실이 "사실은 증명이 있는데 우리가 못 찾는 것뿐"이라는 뜻이 아니다. 진짜 도출은 정말로 없다.
예제 236
앞에서 𝑇′=𝑇∪{𝐺𝑇} 도 불완전하다고 했다. 그렇다면 𝑇″ 를 "𝑇 에 𝐺𝑇, 𝐺𝑇′, 𝐺𝑇″, … 를 전부 더한 이론"으로 만들면 완전해지는가?
풀이 보기
되지 않는다. 두 가지를 따로 확인해야 한다.
첫째, 그렇게 만든 이론이 조건 (나)를 유지하는가. 𝐺𝑇 를 만드는 절차는 기계적이므로, 이 무한 목록도 기계가 알아볼 수 있게 적을 수 있다. 그러면 새 이론도 조건 셋을 다 만족하고, 정리가 다시 적용되어 새 괴델 문장이 또 생긴다.
둘째, 목록을 더 이상 기계가 알아볼 수 없을 만큼 늘리면 어떻게 되는가. 그때는 조건 (나)가 깨져 정리가 적용되지 않는다. 그러나 그 이론은 쓸 수 없는 이론이다. 어떤 것이 공리인지 확인할 수 없으니 증명을 검사할 수도 없다. 앞에서 본 진 산술이 그 극단이다.
답이 말이 되는가. 두 갈래가 이 정리의 모양을 다시 보여 준다. 공리를 늘리는 일과 이론을 쓸 수 있게 유지하는 일이 서로 당긴다. 정리가 없앤 것은 "참을 다 잡는 이론"이 아니라 "참을 다 잡으면서 쓸 수 있는 이론"이다. 이 문장을 정확히 붙잡고 있으면 뒤의 오해 절이 훨씬 쉬워진다.
예제 237
15장의 비표준 모형에서 Prov𝑇(⌜𝐺𝑇⌝) 이 참이라고 하자. 그 모형에서 ∃𝑦 를 만족시키는 𝑦 를 "증명"이라 불러도 되는가. 되지 않는다면 무엇이 모자란가.
풀이 보기
부르면 안 된다. 모자란 것을 정확히 적는다.
도출은 7장의 정의에 따라 유한한 문장 목록이다. 산술화는 그 목록에 자연수를 붙였다. 그러니 "𝑦 가 도출을 코딩한다" 는 말이 뜻을 가지려면 𝑦 가 자연수여야 한다. 비표준 원소는 자연수가 아니므로 어떤 목록도 코딩하지 않는다.
그러면 그 모형에서 Prf𝑇(𝑦,⌜𝐺𝑇⌝) 가 참이라는 것은 무슨 뜻인가. Prf𝑇 는 산술의 식일 뿐이고, 그 모형은 그 식이 요구하는 산술적 관계를 그 원소에 대해 만족시킬 뿐이다. 그것을 "도출이다"로 읽는 것은 표준 모형에서만 통하는 읽기다.
답이 말이 되는가. 앞 절 예제에서 "Prov𝑇 를 '증명 가능하다'로 읽는 것은 표준 모형을 머릿속에 두고 하는 일"이라고 한 것이 여기서 실제 사례로 나타났다. 5장이 갈라 놓은 두 층을 괴델이 만나게 했지만, 만난 것과 하나가 된 것은 다르다. 두 층이 딱 표준 모형에서만 맞물린다는 것이 이 장 전체의 미묘한 곳이다.
제2 불완전성 정리와 힐베르트 계획
제1 정리의 갈래 1을 다시 읽어 보자. "𝑇 가 일관적이면 𝑇⊬𝐺𝑇 이다." 이 논증은 유한하고 기계적이다. 그렇다면 이 논증 자체를 산술화해서 𝑇 안에서 다시 할 수 있지 않겠는가.
할 수 있다. 먼저 "𝑇 는 일관적이다"를 산술의 문장으로 적는다.
Con(𝑇):=¬Prov𝑇(⌜⊥⌝)
⊥ 대신 0=𝑆0 처럼 명백히 거짓인 문장을 써도 된다. 그리고 갈래 1의 논증을 형식화하면 — 형식화가 되려면 𝑇 가 조금 더 강해야 하는데 그 조건은 아래에 적는다 — 이것을 얻는다.
𝑇⊢Con(𝑇)→𝐺𝑇
제2 불완전성 정리.𝑇 가 제1 정리의 조건 셋을 만족하고, 증명 가능성 술어에 대한 몇 가지 기본 사실을 스스로 증명할 만큼 강하면(𝖯𝖠 이면 충분하다), 𝑇⊬Con(𝑇) 이다.
증명은 한 줄이다. 만약 𝑇⊢Con(𝑇) 이면 위 식과 →E 로 𝑇⊢𝐺𝑇 인데, 제1 정리가 그것을 막았다.
형식화에 필요한 "몇 가지 기본 사실"은 힐베르트·베르나이스·뢰브의 도출 가능성 조건 셋이다. 𝖰 로는 부족하고 𝖯𝖠 정도가 필요하다. 이것도 결과만 쓴다.
이 정리가 말하지 않는 것을 정확히 적어 둔다.
𝑇 가 비일관이라는 말이 아니다. 𝑇 의 도구로는 𝑇 의 일관성을 보일 수 없다는 말이다
아무도 𝑇 의 일관성을 증명할 수 없다는 말이 아니다. 겐첸은 1936년에 𝖯𝖠 의 일관성을 증명했다. 𝜀0 까지의 초한귀납법을 썼는데, 그것은 𝖯𝖠 안에 없는 도구다. 정리가 예측한 그대로다
자기 일관성을 증명하는 이론이 좋은 이론이라는 말이 아니다. 오히려 반대다 — 비일관 이론은 폭발률로 무엇이든 증명하므로 자기 일관성도 증명한다. "나는 일관적이다"를 증명했다는 것은 나쁜 신호다
이제 이 정리가 무엇을 무너뜨렸는지 본다. 힐베르트 계획은 1920년대에 다비트 힐베르트가 내놓은 것으로, 수학 전체를 형식 체계 하나에 담고 그 체계를 유한적 방법만으로 검사하자는 것이었다. 유한적 방법이란 논쟁의 여지가 없는 초등적 조작을 뜻하고, 대략 𝖯𝖠 안쪽이다.
계획의 목표
무엇이 걸렸는가
그래서 남은 것
완전성 — 참인 것은 모두 증명된다
제1 불완전성 정리 (1931)
결판나지 않는 문장이 실제로 어떤 것인지 찾는 일. 굿스타인 정리 같은 자연스러운 예가 나왔다
일관성 — 체계 안에서 유한적 방법으로 무모순임을 보인다
제2 불완전성 정리 (1931)
상대적 일관성 증명. ‘A 가 일관적이면 B 도 일관적이다’ 는 여전히 증명된다. 겐첸의 증명이 그 예다
결정 가능성 — 어떤 문장이 정리인지 기계가 판정한다
결정불가능성 (16장)
어떤 조각이 결정 가능한지 재는 일. 프레스버거 산술이 그 예다
계획이 죽은 것이 아니라 목표가 바뀌었다. 증명론이라는 분야가 그 자리에서 생겼다.
예제 238
𝖯𝖠 가 일관적이고 그 공리가 모두 표준 모형에서 참이라고 하자. 다음 두 이론이 일관적인지 판정하라. (가) 𝖯𝖠∪{Con(𝖯𝖠)} (나) 𝖯𝖠∪{¬Con(𝖯𝖠)}
풀이 보기
(가) 일관적이다. 가정에 의해 𝖯𝖠 의 공리는 N 에서 참이다. 그리고 𝖯𝖠 가 일관적이므로 ⊥ 의 도출이 실제로 없고, 따라서 Con(𝖯𝖠) 도 N 에서 참이다. 그러니 N 이 이 이론 전체의 모형이고, 모형이 있으면 13장의 건전성에 의해 ⊥ 을 도출할 수 없다.
(나) 일관적이다. 놀랍게 들리지만 그렇다. 제2 정리가 𝖯𝖠⊬Con(𝖯𝖠) 라고 했다. 14장의 완전성을 대우로 쓰면 𝖯𝖠⊭Con(𝖯𝖠) 이고, 곧 𝖯𝖠 의 공리를 다 만족하면서 Con(𝖯𝖠) 가 거짓인 모형이 있다. 그 모형이 (나)의 모형이다.
(나)는 "나를 담은 이론은 비일관이다"라고 주장하면서 자기는 일관적인 이론이다. 그 모형에서 Prov𝖯𝖠(⌜⊥⌝) 가 참인데, ∃𝑦 를 만족시키는 𝑦 는 비표준 원소다. 실제 도출은 없다. 그리고 표준 모형은 (나)의 모형이 아니다 — 이 이론에는 표준 모형이 아예 없다.
답이 말이 되는가. (가)에서 추가로 가정한 것을 눈여겨보라. 공리가 표준 모형에서 참이라는 가정이 없으면 (가)는 보장되지 않는다. 실제로 (나)를 새 이론 𝑇′ 라 하면 𝑇′ 는 일관적인데, 𝑇′ 가 𝖯𝖠 를 담으므로 "𝖯𝖠 가 비일관이면 𝑇′ 도 비일관" 이고, 따라서 𝑇′⊢¬Con(𝑇′) 이다. 그러면 𝑇′∪{Con(𝑇′)} 는 비일관이다. 일관성만으로는 (가)가 따라 나오지 않는다.
흔한 오해
다음 주장을 평가하라. "제2 불완전성 정리는 수학의 기초가 무너졌음을 뜻한다. 우리는 산술이 일관적인지조차 알 수 없게 되었다."
풀이 보기
두 문장이 각각 다르게 틀렸다.
앞 문장. 정리는 "𝑇 의 일관성을 𝑇 안에서 증명할 수 없다"고 말한다. 이 결론에 이르는 논증 자체가 수학이다. 무너진 체계로는 이런 정리를 증명할 수 없다. 정리가 없앤 것은 "스스로를 검사하는 체계"라는 특정한 계획이지 수학의 결과들이 아니다.
뒤 문장. "알 수 없다"가 지나치다. 겐첸의 증명이 있고, 더 강한 체계에서 𝖯𝖠 의 일관성을 증명하는 일도 일상적이다. 정리가 막는 것은 검사 도구가 검사 대상 안에 있는 경우 하나다. 그리고 애초에 그런 증명은 얻어도 값이 크지 않았을 것이다. 비일관 이론도 자기 일관성을 증명하기 때문이다.
그러면 무엇이 남는가. 산술의 일관성에 대한 우리의 믿음은 형식적 증명이 아니라 다른 데서 온다 — 백 년 넘게 모순이 나오지 않았다는 것, 표준 모형이 있다고 여긴다는 것, 더 강한 체계에서의 증명들이 있다는 것. 이 근거들이 "𝖯𝖠 안에서의 증명"보다 약한지는 따져 볼 문제이고, 강하다고 볼 이유가 오히려 많다.
답이 말이 되는가. 정리를 정확히 진술하면 가정과 결론이 둘 다 좁다. 좁은 정리를 넓게 읽는 것이 이 장에서 경계할 일의 전부이고, 다음 절이 그 목록이다.
흔한 오해 바로잡기
이제 떠도는 문장들을 정면으로 다룬다. 넷을 고른다. 넷 모두 정확한 진술에서 조각을 하나씩 빼서 만들어진 것이다.
<줄마다 가로로 읽어라. 왼쪽 문장이 오른쪽에 적힌 조각을 하나씩 빠뜨렸고, 맨 아래가 그 조각을 전부 되돌려 놓은 문장이다>[원본 보기]
흔한 오해
다음 두 주장이 왜 틀렸는지 각각 적어라. (가) 괴델은 수학에 모순이 있음을 보였다 (나) 괴델은 모든 것이 증명 불가능함을 보였다
풀이 보기
(가)가 틀린 이유. 정리는 일관성을 가정한 위에서 말한다. 조건 (다)를 빼면 정리 자체가 성립하지 않는다. 그리고 비일관 이론은 앞에서 보았듯 완전하다 — 모든 문장을 증명한다. 그러니 "괴델이 보인 것"은 "모순이 있다"의 반대편에 있다. 정리는 모순이 없다면 무슨 일이 일어나는가를 말한다.
덧붙일 것 하나. 정리는 수학의 정리들에 아무 흠집도 내지 않는다. 소수가 무한하다는 것도, 피타고라스 정리도 그대로 증명된다. 없어진 것은 "하나의 체계가 산술의 참을 남김없이 잡는다"는 희망뿐이다.
(나)가 틀린 이유. 한정사를 바꿔치기했다. 정리가 말하는 것은 "결판나지 않는 문장이 있다"이고, 이것은 ∃ 다. "모든 문장이 결판나지 않는다"는 ∀ 다. 10장에서 ∃ 와 ∀ 를 뒤집으면 전혀 다른 주장이 된다고 여러 번 확인했다.
게다가 정리가 내놓는 𝐺𝑇 는 아주 인공적인 문장 하나다. 자연스러운 수학 명제 중에도 𝖯𝖠 에서 독립인 것이 나중에 발견되었지만(굿스타인 정리, 파리스·해링턴 정리) 그것도 찾아낸 예이지 "대부분이 그렇다"가 아니다. 수학에서 다루는 문장의 압도적 다수는 여전히 증명되거나 반증된다.
답이 말이 되는가. 두 오해가 각각 가정을 지운 것과 한정사를 뒤집은 것이다. 이 문서가 3장부터 논증의 형식을 다루고 9·10장에서 한정사를 다룬 이유가 여기서 값을 한다. 정리를 오독하는 방식도 결국 논리의 오류이고, 이름을 붙일 수 있는 오류다.
흔한 오해
다음 두 주장이 왜 틀렸는지 각각 적어라. (다) 괴델의 정리는 인간의 마음이 기계보다 낫다는 증명이다 (라) 괴델의 정리는 충분히 복잡한 어떤 체계에도 적용된다. 법 체계, 사회 조직, 마음 같은 것에도
풀이 보기
(다)에 대하여. 이 논변은 루카스와 펜로즈가 다듬은 것으로, 대략 이렇게 간다. 어떤 기계 𝑀 이 증명하는 것들을 알면 우리는 𝐺𝑀 이 참임을 알 수 있는데 𝑀 은 그것을 증명하지 못한다. 그러므로 우리는 𝑀 이 아니다.
걸리는 곳이 셋이다. 첫째, 우리가 아는 것은 조건문뿐이다. 우리가 확인한 것은 "𝑀 이 일관적이면 𝐺𝑀 이 참"이고, 그 조건문은 𝑀 자신도 증명한다 — 제2 정리의 형식화가 바로 그 내용이다. 우리가 더 아는 것은 전건, 곧 𝑀 의 일관성인데 그것을 어떻게 아는가. 우리가 𝑀 이라면 우리도 모른다.
둘째, 사람이 일관적이라는 근거가 없다. 사람은 모순된 믿음을 자주 갖는다. 정리는 일관적인 체계에 대한 것이므로 애초에 적용 조건이 확인되지 않는다.
셋째, 𝑀 을 특정할 수 없으면 𝐺𝑀 을 만들 수도 없다. 괴델 문장은 공리 목록이 손에 있어야 만들어진다.
요지는 이렇다. 정리는 형식 체계에 대한 수학 정리다. 마음이 형식 체계인지 아닌지는 수학의 물음이 아니고, 정리가 답할 수 있는 것도 아니다.
(라)에 대하여. 조건 (가)를 빼먹었다. 정리가 요구하는 것은 "복잡함"이 아니라 산술을 담는 형식 언어와 기계적으로 검사되는 증명 관계다. 법 체계에는 괴델 수도, 도출의 정의도, 표현 가능성도 없다. 산술화가 되지 않으면 대각화도 되지 않고, 대각화가 되지 않으면 아무 결론도 나오지 않는다.
이것이 "복잡하면 적용된다"가 아니라는 증거는 수학 안에도 있다. 프레스버거 산술과 실수의 1차 이론은 둘 다 완전하다. 후자는 유클리드 기하를 담을 만큼 넓은데도 그렇다. 복잡함이 기준이었다면 이 둘이 반례다.
답이 말이 되는가. 넷을 한 줄로 요약하면 이렇다. 유비는 논증이 아니다. 정리를 쓰려면 조건을 확인해야 하고, 조건을 확인할 수 없는 자리에서는 정리의 이름만 빌려 오는 것이다.
그래서 무엇이 남았는가
13장부터 다섯 장에 걸쳐 우리는 체계 밖에 서서 체계를 대상으로 삼았다. 얻은 것을 한자리에 놓아 본다. ⊢ 로 얻은 것은 전부 참이고(13장), 모든 모형에서 참인 것은 전부 ⊢ 로 얻어지고(14장), 무한한 집합도 유한한 조각으로 판정되지만 그 대가로 우리가 뜻하지 않은 모형이 딸려 오고(15장), 어떤 식이 논리적 참인지 기계는 판정하지 못하고(16장), 산술을 담는 어떤 쓸 만한 이론도 산술의 참을 다 잡지 못한다(17장).
무엇을 잃었는가. 하나의 형식 체계에 수학을 다 담고 그 체계로 모든 물음에 답하겠다는 계획을 잃었다. 그리고 체계가 자기 힘으로 자기 안전을 보증하게 하겠다는 계획도 잃었다.
무엇을 얻었는가. 그보다 많다.
증명이 수학의 대상이 되었다. 도출을 수로 코딩할 수 있다는 발견이 증명론이라는 분야를 만들었다. 이 문서 13장부터가 그 분야의 입구다
계산 가능성이라는 개념이 자랐다. 괴델이 표현 가능성을 세우며 쓴 재귀함수가 곧 튜링의 기계와 만난다. 16장의 결정불가능성과 컴퓨터과학의 뿌리 하나가 여기서 나온다
독립성이라는 물음이 생겼다. "이 명제는 이 공리계에서 결판나는가"를 묻는 일이 수학의 일상이 되었다. mcs 의 무한집합 장이 소개한 연속체 가설의 독립성이 그 계열의 결과다
층을 나누는 습관이 값을 했다. 문법과 의미론과 증명 체계를 따로 세우고, 대상언어와 메타언어를 갈라 놓지 않았다면 이 장의 어느 문장도 정확히 적을 수 없었다. 5장의 그 절이 열두 장 뒤에 이렇게 값을 한다
남은 길도 적어 둔다. 이 장에서 만든 Prov𝑇 는 사실 연산자처럼 군다. 𝑇⊢𝜑 이면 𝑇⊢Prov𝑇(⌜𝜑⌝) 이고, 함의를 통과하기도 한다. 그 규칙들을 뽑아내 만든 것이 18장의 ◻ 이고, 그 갈래를 증명 가능성 논리라 한다. 19장은 이 문서가 7장에서 IP 하나로 고전 논리를 만들었던 그 결정을 되돌려 보는 장이다.
마지막으로 한 문장. 괴델이 보인 것은 형식화의 실패가 아니라 형식화의 성숙이다. 증명이라는 것을 충분히 정확하게 정의했기 때문에 증명에 대해 증명할 수 있게 되었고, 그러자 증명의 한계가 정리로 나왔다. 한계를 정리로 적을 수 있다는 것 자체가 이 문서가 지어 온 것의 값이다.
기호열에 붙인 수. 자리마다 소수를 놓고 기호 코드를 지수로 올려 곱한다. 유일 인수분해가 되돌린다
산술화
기호열과 도출에 번호를 붙여 메타언어의 말을 수에 대한 말로 바꾸는 일
표현 가능하다
관계 𝑅 에 대해 𝑅 이 성립하면 𝑇⊢𝜑(――𝑛), 성립하지 않으면 𝑇⊢¬𝜑(――𝑛) 인 식이 있다
표현 가능성 정리
기계적으로 판정되는 관계는 𝖰 에서 표현 가능하다. 이 장은 결과만 인용했다
𝛽 함수
수 두 개로 임의 길이의 수열을 흉내 내는 장치. 산술의 언어에 목록이 없다는 문제를 푼다
Prf𝑇(𝑦,𝑥)
𝑦 는 번호가 𝑥 인 문장의 𝑇 에서의 도출의 번호다
Prov𝑇(𝑥)
∃𝑦Prf𝑇(𝑦,𝑥). 산술의 식일 뿐이고 ‘증명 가능하다’ 로 읽는 것은 표준 모형에서만 통한다
대각화 보조정리
임의의 𝜓(𝑥) 에 대해 𝑇⊢𝐺↔𝜓(⌜𝐺⌝) 인 문장 𝐺 가 있다
괴델 문장 𝐺𝑇
𝜓=¬Prov𝑇 로 만든 문장. ‘나는 𝑇 에서 증명되지 않는다’
제1 불완전성 정리
조건 셋을 만족하면 𝑇⊬𝐺𝑇 이고 𝑇⊬¬𝐺𝑇 이며 𝐺𝑇 는 N 에서 참이다
𝜔-일관성 · 로서 트릭
‘하나 있다’ 를 증명하면서 후보마다 아니라고 증명하지 않는 성질 · 그 조건을 없애는 문장 손질
Con(𝑇)
¬Prov𝑇(⌜⊥⌝). ‘𝑇 는 일관적이다’ 를 산술의 문장으로 적은 것
제2 불완전성 정리
𝑇⊢Con(𝑇)→𝐺𝑇 이므로 𝑇⊬Con(𝑇). 𝖯𝖠 정도의 힘이 더 필요하다
타르스키 정리
산술의 참은 산술의 언어로 정의할 수 없다. 증명 가능성은 되고 진리는 안 된다
힐베르트 계획
수학을 형식 체계에 담고 유한적 방법으로 완전성 · 일관성 · 결정 가능성을 보이려던 계획
챙겨 갈 것은 다섯이다.
완전성과 불완전성은 주어가 다르다. 앞엣것은 증명 체계에 대한 말이고 뒤엣것은 이론에 대한 말이다. 그래서 부딪치지 않고 오히려 함께 쓰인다
조건 셋을 빼고 진술하면 거짓이 된다. 프레스버거 산술, 진 산술, 비일관 이론이 각각 반례다
산술화가 두 층을 만나게 한다. 5장이 갈라 놓은 대상언어와 메타언어가 여기서 만나되, 만나는 자리는 표준 모형 하나뿐이다
‘참’ 은 표준 모형에서의 참이다.𝑇 의 모든 모형에서 참이 아니고, 그래서 완전성 정리와 어긋나지 않는다. 어긋나는 대신 15장의 비표준 모형을 낳는다
정리는 좁다. 가정도 좁고 결론도 좁다. 넓게 읽는 순간 그것은 더 이상 괴델의 정리가 아니다
18장부터는 고전 1차 논리 밖으로 나간다. 이 장에서 만든 Prov𝑇 가 그 첫 장의 ◻ 와 어떻게 닮았는지가 다리 하나이고, 7장의 IP 를 빼면 무엇이 남는지가 또 하나다. 지금까지 지은 것은 그대로 서 있고, 이제 다른 것을 지어 볼 차례다.
양상논리
4장에 '옮기면서 잃는 것' 이라는 표가 있었다. 그 표의 둘째 줄이 이렇다 — 잃는 것은 양상, 보기는 '반드시 그렇다 / 그럴 수 있다', 어떻게 되는가는 "그냥 버려진다. 𝑃 와 반드시 𝑃 를 구별할 수 없다", 되찾는 곳은 18장. 여기가 그 자리다.
같은 장의 예제 하나가 이미 그 손실을 실물로 보여 주었다. "비가 온다면 반드시 길이 젖는다"를 𝑃→𝑄 로 옮기면서 4장은 "양상은 이 도구에 자리가 없어 그냥 사라졌다"고 적었다. 이 장이 끝나면 그 문장을 ◻(𝑃→𝑄) 로 적을 수 있다.
되찾는 방법은 연결자를 둘 더하는 것이다. 그런데 그 둘은 진리함수가 아니다.◻𝜑 의 값은 𝜑 의 값만으로 정해지지 않는다 — 참인 문장 중에도 반드시 참인 것과 어쩌다 참인 것이 있기 때문이다. 6장이 "연결자는 진리함수다"라고 못 박은 자리를 이 장이 처음으로 넘어선다. 그러려면 상황을 하나가 아니라 여럿 두어야 하고, 그 발상이 이 장 전체다.
이 장에서 답할 질문은 다섯이다.
𝑃 와 "반드시 𝑃" 를 어떻게 갈라 적는가
그렇게 적은 식이 참이라는 말은 무엇에 대해 참이라는 뜻인가
왜 양상논리가 하나가 아니라 여럿인가. 무엇이 그것들을 가르는가
17장이 "Prov𝑇 가 ◻ 처럼 군다"고 한 말은 정확히 무슨 뜻인가
16장에서 술어논리는 결정 불가능했다. 양상논리는 어떤가
17장에서 가져오는 것은 다리 하나다. 17장 마지막 절이 이렇게 적었다 — Prov𝑇 는 연산자처럼 굴고, 𝑇⊢𝜑 이면 𝑇⊢Prov𝑇(⌜𝜑⌝) 이고, 함의를 통과하기도 한다. 그 두 성질이 이 장에서 각각 필연화 규칙과 𝐾 공리라는 이름을 얻는다. 다리는 넷째 절에서 건넌다.
6장과 10장에서 가져오는 것은 의미론을 세우는 방식이다. 6장은 상황 하나를 배당 𝑣 로 못 박았고 10장은 모형 M=⟨𝐷,𝐼⟩ 으로 못 박았다. 이 장은 그 위에 한 겹을 더 얹는다. 상황을 여러 개 두고 그 사이에 관계를 놓는다. 연결자 다섯의 진리 조항은 6장 것을 그대로 쓰고 조항 하나만 새로 붙는다.
미리 못 박아 둘 것이 하나 있다. 이 장은 고전 논리를 버리지 않는다. 넓힌다. 명제논리의 항진명제는 전부 그대로 정리이고 7장의 규칙도 그대로 쓴다. 6부의 제목이 '고전 논리 밖' 인 것은 이 장이 고전 1차 논리로는 적을 수 없는 것을 적기 때문이지 고전 논리를 부정하기 때문이 아니다. 실제로 무엇을 빼는 일은 19장이 한다.
4장이 버리고 간 것
두 문장을 나란히 놓자. "독신자는 미혼이다." 그리고 "이 방의 사람은 미혼이다." 둘 다 참이라고 하자. 그런데 앞엣것은 어길 수 없이 참이고 뒤엣것은 어쩌다 참이다. 4장의 도구로 옮기면 둘 다 문장문자 하나가 된다. 차이는 사전에도 연결자에도 자리가 없어 사라진다.
<가운데 줄과 아래 줄을 견주어라. 잃은 것은 원자를 다시 잡아서 되찾을 수 있는 것이 아니다 — 어휘 자체에 연결자를 더해야 갈라진다>[원본 보기]
4장이 늘 권한 요령은 "도구를 바꾸기 전에 원자를 다시 잡아 보라"였다. 여기서는 그 요령이 통하지 않는다. 원자를 아무리 잘게 쪼개도 '어길 수 없다' 는 원자 안에 들어가 버려서 논리가 다룰 수 있는 것이 되지 않는다. 어휘를 늘려야 한다.
◻ 와 ◊ — 어휘에 연결자 둘을 더한다
5장이 어휘와 적형식을 정할 때 조항을 세우던 방식을 그대로 쓴다. 어휘에 기호 하나를 더한다.
◻ — '박스' 라 읽는다. ◻𝜑 는 "필연적으로 𝜑" 다
◊ — '다이아몬드' 라 읽는다. ◊𝜑 는 "𝜑 일 수 있다" 다
적형식의 정의에는 조항 하나가 붙는다. 𝜑 가 적형식이면 ◻𝜑 도 적형식이다. 항수는 1이므로 ¬ 과 같은 자리에 놓인다. 괄호 규약도 ¬ 과 같게 맞춘다 — ◻ 는 가장 세게 묶으므로 ◻𝑃→𝑄 는 (◻𝑃)→𝑄 이지 ◻(𝑃→𝑄) 가 아니다. 이 자리에서 실수하는 사람이 많다.
◊ 는 어휘에 넣지 않고 줄임말로 둔다. 5장이 도식과 줄임말을 갈라 둔 그 방식이다.
◊𝜑:=¬◻¬𝜑
읽어 보면 뜻이 맞는다. "𝜑 일 수 있다"는 "𝜑 가 아닌 것이 필연은 아니다"와 같은 말이다. 뒤에서 의미론을 세우고 나면 반대 방향도 정리로 나온다 — ◻𝜑↔¬◊¬𝜑. 둘 중 아무것이나 기본으로 두고 나머지를 정의해도 된다는 뜻이다.
9장의 한정사와 짝이 정확히 같다. ∀𝑥𝜑 와 ¬∃𝑥¬𝜑 가 같았듯이 ◻ 와 ◊ 가 그렇다. 우연이 아니고, 왜 우연이 아닌지는 다음 절의 진리 조항에서 드러난다.
예제 242
다음을 기호로 옮겨라. (가) 비가 온다면 반드시 길이 젖는다 (나) 비가 오지 않을 수도 있었다 (다) 독신자는 반드시 미혼이지만, 이 방의 사람이 미혼인 것은 어쩌다 그런 것이다. 원자는 𝑃: 비가 온다, 𝑄: 길이 젖는다, 𝑅: 독신자는 미혼이다, 𝑆: 이 방의 사람은 미혼이다.
풀이 보기
(가)◻(𝑃→𝑄). ◻𝑃→𝑄 가 아니다. '반드시' 가 걸리는 것은 후건 하나가 아니라 조건문 전체다. 괄호 하나가 뜻을 완전히 바꾼다.
4장이 이 문장을 𝑃→𝑄 로 옮기면서 "양상이 사라졌다"고 적은 것이 정확히 이 ◻ 다. 이런 꼴의 ◻(𝜑→𝜓) 를 엄밀 함의(strict implication)라 부른다.
(나)◊¬𝑃. 줄임말을 풀면 ¬◻¬¬𝑃 이고, 이중부정을 지우면 ¬◻𝑃 다. "비가 오는 것이 필연은 아니다" 와 같은 말이 된다는 것을 확인할 수 있다.
(다)◻𝑅∧(𝑆∧◊¬𝑆). 뒤쪽 괄호가 요점이다. '어쩌다 참' 은 "참인데 거짓일 수도 있었다" 이므로 𝑆 하나로는 적을 수 없고 ◊¬𝑆 를 함께 적어야 한다. 이런 것을 우연적으로 참(contingently true)이라 한다.
답이 말이 되는가. 세 문장 모두 4장의 도구로는 원자 하나거나 원자 둘의 조합이었다. 늘어난 것은 기호 하나뿐인데 구별이 셋이나 생겼다.
흔한 오해
"𝜑 가 참이면 ◻𝜑 도 참이다" 는 왜 틀렸는가. 그리고 "◻ 가 진리함수라면" 무슨 일이 일어나는지 6장의 낱말로 적어라.
풀이 보기
왜 틀렸는가. 참인 것과 필연적으로 참인 것이 다르다는 것이 이 장을 시작한 이유다. "이 방의 사람은 미혼이다" 는 참일 수 있지만 필연은 아니다. 그 주장을 인정하면 𝑆→◻𝑆 가 무엇을 넣어도 성립하게 되고, 그러면 우연적으로 참인 문장이 하나도 없게 된다. 셋째 절에서 볼 공리 𝑇(◻𝜑→𝜑)와 함께 받아들이면 ◻𝜑 와 𝜑 가 늘 같은 값이 되어 ◻ 가 아무 일도 하지 않게 된다.
◻ 가 진리함수라면. 6장의 정의로 진리함수는 "진리값 몇 개를 받아 진리값 하나를 내놓는 함수" 다. 1항 진리함수는 넷뿐이다 — 항상 T, 항상 F, 그대로 두기, 뒤집기. ◻ 를 이 넷 중 하나로 정하면 각각 이렇게 된다.
항상 T 이면 ◻⊥ 이 참이 되어 못 쓴다. 항상 F 이면 항진명제에 ◻ 를 붙인 것조차 거짓이 되어 못 쓴다. 그대로 두기이면 ◻𝜑 가 𝜑 와 같아지고, 뒤집기이면 ◻𝜑 가 ¬𝜑 가 된다. 넷 중 어느 것도 우리가 원하는 것이 아니다.
답이 말이 되는가. 이것이 이 장에서 상황을 여럿 두는 이유다. 𝜑 의 값 하나로는 ◻𝜑 의 값을 정할 수 없으니, 값을 더 많이 가진 무언가를 봐야 한다. 그 "더 많은 값" 이 다른 세계들에서의 값이다.
가능세계 — 상황을 여럿 둔다
6장에서 상황 하나는 배당 𝑣 였고 10장에서는 모형 M 이었다. 이제 상황을 여럿 둔다. 상황 하나하나를 가능세계(possible world), 줄여서 세계라 부르고 𝑤,𝑢,𝑡 로 적는다. 세계 이름에 𝑣 를 쓰지 않는 것은 방금 적은 6장의 배당 𝑣 와 겹치기 때문이다. 셋째 세계가 필요할 때는 𝑡 를 쓴다.
여기서 "세계"라는 말에 형이상학을 얹지 않는 것이 좋다. 세계는 그냥 점이다. 무엇으로 읽을지는 나중에 정하고, 지금은 이름 붙은 점들의 모임이면 충분하다. 뒤에서 보겠지만 같은 장치를 시각으로도, 시스템의 상태로도, 어떤 사람이 배제하지 못한 상황으로도 읽는다.
그리고 점들 사이에 화살표를 놓는다. 이것이 이 장의 결정적인 발상이다. 모든 세계가 모든 세계에서 보이지는 않는다.𝑤 에서 판정할 때 셈에 넣을 세계와 넣지 않을 세계가 갈린다.
프레임과 모형
프레임(frame)은 두 부분이다.
F=⟨𝑊,𝑅⟩
𝑊 는 비어 있지 않은 세계들의 집합이고, 𝑅 은 𝑊 위의 2항 관계다. ⟨𝑤,𝑢⟩∈𝑅 을 짧게 𝑤𝑅𝑢 로 적고 "𝑤 에서 𝑢 가 접근 가능하다" 고 읽는다. 그림으로는 𝑤 에서 𝑢 로 가는 화살표다. 10장이 𝐷 를 비지 않게 요구한 것과 같은 이유로 𝑊 도 비지 않게 둔다.
프레임에는 아직 참·거짓이 없다. 6장에서 𝑃 의 값을 밖에서 넣어 주어야 했듯이 여기서도 그렇다. 세계마다 어느 문장문자가 참인지 정해 주는 것을 배당𝑉 라 하고, 문장문자 𝑃 마다 𝑉(𝑃)⊆𝑊 를 정한다. 𝑉(𝑃) 는 𝑃 가 참인 세계들의 모임이다.
프레임에 배당을 얹은 것이 모형이다.
M=⟨𝑊,𝑅,𝑉⟩
6장의 배당과 견주어 두자. 6장의 𝑡 는 문장문자마다 값 하나를 주었다. 여기서 𝑉 는 문장문자마다 세계들의 모임을 준다. 세계를 하나 못 박고 보면 𝑉 는 6장의 배당 하나로 줄어든다 — 세계 𝑤 에서 𝑃 가 참인가는 𝑤∈𝑉(𝑃) 인가일 뿐이다. 그러니 모형 하나는 6장의 배당 여럿을 화살표로 이어 놓은 것이라고 보아도 된다.
1950년대 말에 크립키(Saul Kripke)가 정리한 꼴이 표준이 되어 크립키 모형이라고도 부른다. 비슷한 생각을 여러 사람이 같은 무렵에 따로 냈다.
세계에서의 참 — 조항 하나만 새것이다
이제 만족 관계를 정의한다. 10장이 M,𝑔⊨𝜑 를 썼듯이 여기서는 세계를 딸려 적는다.
M,𝑤⊨𝜑
읽기는 "𝜑 는 모형 M 의 세계 𝑤 에서 참이다" 다. 정의는 5장의 조항을 그대로 따라간다.
문장문자 — M,𝑤⊨𝑃 인 것은 𝑤∈𝑉(𝑃) 일 때다
¬ — M,𝑤⊨¬𝜑 인 것은 M,𝑤⊨𝜑 가 아닐 때다
∧ — M,𝑤⊨𝜑∧𝜓 인 것은 두 쪽이 모두 𝑤 에서 참일 때다
∨ — M,𝑤⊨𝜑∨𝜓 인 것은 둘 중 하나라도 𝑤 에서 참일 때다
→ — M,𝑤⊨𝜑→𝜓 인 것은 𝜑 가 𝑤 에서 참이 아니거나 𝜓 가 𝑤 에서 참일 때다
↔ — 두 쪽이 𝑤 에서 함께 참이거나 함께 거짓일 때다
◻ — M,𝑤⊨◻𝜑 인 것은 𝑤𝑅𝑢 인 모든𝑢∈𝑊 에 대해 M,𝑢⊨𝜑 일 때다
가운데 여섯 조항은 6장 그대로다. 그 세계 안에서만 계산되고 화살표를 쓰지 않는다. 새것은 마지막 하나뿐이고, 그것만 세계를 떠난다. 이 비대칭이 이 장의 전부다.
◊ 의 조항은 줄임말을 풀면 따라 나온다. M,𝑤⊨◊𝜑 인 것은 𝑤𝑅𝑢 이고 M,𝑢⊨𝜑 인 𝑢 가 하나라도 있을 때다. ◻ 조항의 "모든"이 "어떤"으로 바뀐 것뿐이다.
앞 절에서 ◻ 와 ◊ 의 짝이 ∀ 와 ∃ 의 짝과 같아 보인다고 했다. 이제 이유가 보인다. ◻ 는 한정사다. 다만 정의역 전체가 아니라 "𝑤 에서 보이는 세계들" 만 훑는 제한된 한정사다.
<오른쪽 다섯 줄을 위에서 아래로 따라가 보라. 셋째 줄과 다섯째 줄이 함께 성립한다는 것 — 네모 P 가 참인데 네모네모 P 가 거짓이라는 것 — 이 다음 절의 출발점이다>[원본 보기]
참에 층이 넷이다
10장은 "배정에서의 만족"과 "모형에서의 참"을 갈랐다. 여기서는 층이 넷으로 늘어난다.
층
기호
무슨 뜻인가
무엇에 대해 모두인가
세계에서 참
M,𝑤⊨𝜑
이 모형의 이 세계에서 참이다
없음
모형에서 참
M⊨𝜑
이 모형의 모든 세계에서 참이다
세계 𝑤
프레임에서 타당
F⊨𝜑
이 프레임 위의 어떤 배당을 얹어도 모든 세계에서 참이다
배당 𝑉 와 세계 𝑤
프레임 부류에서 타당
(말로 적는다)
그 부류의 모든 프레임에서 타당하다
프레임까지 전부
셋째 층이 이 장의 주인공이다. 프레임 타당성은 배당을 지운다. 배당을 지우고 나면 남는 것은 𝑊 와 𝑅 뿐이므로, 어떤 식이 프레임에서 타당한가는 오직 𝑅 이 어떤 관계인가에 달린다. 다음 절이 그 대응을 정리로 만든다.
그리고 층을 내려가는 방향으로만 화살표가 있다는 것을 새겨 두자. 프레임에서 타당하면 그 프레임 위의 모든 모형에서 참이고, 모형에서 참이면 그 모형의 모든 세계에서 참이다. 거꾸로는 성립하지 않는다.
예제 244
앞 그림의 모형을 쓴다. 𝑊={𝑤1,𝑤2,𝑤3,𝑤4}, 𝑅={⟨𝑤1,𝑤2⟩,⟨𝑤1,𝑤3⟩,⟨𝑤2,𝑤4⟩,⟨𝑤3,𝑤2⟩}, 𝑉(𝑃)={𝑤2,𝑤3}, 𝑉(𝑄)={𝑤3,𝑤4}. 다음을 판정하라. (가) M,𝑤1⊨◊𝑄 (나) M,𝑤1⊨◻◊𝑄 (다) M,𝑤3⊨◻(𝑃∧¬𝑄)
풀이 보기
(가)𝑤1 에서 보이는 것은 𝑤2 와 𝑤3 이다. 𝑤3∈𝑉(𝑄) 이므로 조건을 만족하는 세계가 있다. 참이다.
(나)◻◊𝑄 이므로 𝑤2 와 𝑤3 각각에서 ◊𝑄 를 확인해야 한다. 𝑤2 가 보는 것은 𝑤4 뿐이고 𝑤4∈𝑉(𝑄) 이므로 𝑤2 에서 ◊𝑄 는 참이다. 𝑤3 이 보는 것은 𝑤2 뿐이고 𝑤2∉𝑉(𝑄) 이므로 𝑤3 에서 ◊𝑄 는 거짓이다. 하나가 어긋났으므로 거짓이다.
(가)와 (나)를 붙여 읽으면 ◊𝑄→◻◊𝑄 가 𝑤1 에서 거짓이다. 이 식의 이름이 5 이고, 다음 절에서 다시 만난다.
(다)𝑤3 이 보는 것은 𝑤2 뿐이다. 𝑤2∈𝑉(𝑃) 이고 𝑤2∉𝑉(𝑄) 이므로 𝑤2 에서 𝑃∧¬𝑄 가 참이다. 보이는 세계가 그것뿐이므로 참이다.
답이 말이 되는가. 세 물음 모두 요령이 같다. ◻ 를 만나면 화살표를 따라 나가고, 나머지 연결자를 만나면 그 자리에서 계산한다. 어디에 서 있는지를 놓치는 것이 여기서 가장 흔한 실수다.
예제 245
막다른 세계, 곧 나가는 화살표가 하나도 없는 세계 𝑤 를 생각한다. (가) M,𝑤⊨◻⊥ 인가 (나) M,𝑤⊨◊𝜑 인 𝜑 가 있는가 (다) 이 세계에서 ◻𝜑→◊𝜑 는 어떻게 되는가.
풀이 보기
(가) 참이다. 조항이 요구하는 것은 "𝑤𝑅𝑢 인 모든 𝑢 에 대해 ⊥ 이 참" 인데 그런 𝑢 가 하나도 없다. 조건을 어기는 사례가 없으므로 요구가 성립한다. 6장이 "공허하게 참"이라고 부른 것이 그대로 되풀이된다. 같은 이유로 이 세계에서는 모든◻𝜑 가 참이다.
(나) 없다.◊𝜑 는 𝑤𝑅𝑢 인 𝑢 를 하나 내놓으라고 요구하는데 내놓을 것이 없다. 그러니 이 세계에서는 모든 ◊𝜑 가 거짓이다. 항진명제를 넣어도 그렇다 — ◊(𝑃∨¬𝑃) 조차 거짓이다.
(다) 거짓이다. 전건 ◻𝜑 가 참이고 후건 ◊𝜑 가 거짓이므로 → 조항의 유일한 거짓 경우다. 이 식의 이름이 𝐷 이고, "막다른 세계가 없다"와 정확히 맞물린다는 것을 다음 절에서 본다.
답이 말이 되는가. 막다른 세계는 병리적인 예외가 아니라 정의를 그대로 따라간 결과다. 그것이 불편하면 프레임에 조건을 걸어 막으면 되고, 조건을 거는 일이 곧 공리를 고르는 일이다.
예제 246
𝑃→◻𝑃 를 생각한다. (가) 이 식이 참인 모형을 만들어라 (나) 세계가 하나뿐인 프레임에서는 이 식이 타당한가 (다) 세계가 둘인 프레임 가운데 이 식이 타당하지 않은 것을 만들어라.
풀이 보기
(가) 쉽다. 𝑊={𝑤}, 𝑅={⟨𝑤,𝑤⟩}, 𝑉(𝑃)={𝑤} 로 두자. 𝑤 에서 𝑃 가 참이고, 보이는 세계는 𝑤 자신뿐이며 거기서 𝑃 가 참이므로 ◻𝑃 도 참이다. 전건도 후건도 참이니 조건문이 참이다.
(나) 타당하다. 세계가 𝑤 하나뿐이면 𝑅 은 비었거나 {⟨𝑤,𝑤⟩} 다. 비었으면 ◻𝑃 가 공허하게 참이라 조건문이 참이고, 𝑤𝑅𝑤 이면 𝑃 가 참일 때 보이는 유일한 세계에서도 𝑃 가 참이므로 후건이 참이다. 배당을 어떻게 골라도 그렇다는 것이 타당성이 요구하는 바다.
(다)𝑊={𝑤,𝑢}, 𝑅={⟨𝑤,𝑢⟩}, 𝑉(𝑃)={𝑤}. 𝑤 에서 𝑃 는 참이다. 𝑤 가 보는 것은 𝑢 뿐인데 𝑢∉𝑉(𝑃) 이므로 ◻𝑃 는 거짓이다. 조건문이 𝑤 에서 거짓이다.
답이 말이 되는가. (나)와 (다)를 붙여 읽으면 프레임 타당성이 프레임마다 다르다는 것이 보인다. 어떤 프레임에서 타당한 식들의 목록이 곧 그 프레임의 성질을 되비춘다는 것 — 그것이 다음 절의 주제다.
접근관계가 공리를 정한다
앞 절 마지막 예제가 이미 실마리를 주었다. 프레임을 바꾸면 타당한 식의 목록이 바뀐다. 그러면 거꾸로 물을 수 있다. 어떤 식이 타당하다는 것은 𝑅 에 대해 무엇을 말해 주는가. 답이 하나하나 정확히 맞아떨어진다는 것이 이 장에서 가장 아름다운 부분이다.
체계를 공리로 세운다
잠깐 증명 체계 쪽으로 간다. 7장은 자연연역을 골랐고, 그러면서 "공리를 잔뜩 두고 규칙은 하나만 두는 방식(공리 체계)도 있지만 그쪽은 짧은 논증도 길어져서 배우기에 나쁘다"고 적었다. 양상논리에서는 관행이 반대다. 이 절은 공리 체계로 간다. 이유가 둘이다. 첫째, 양상 규칙을 자연연역으로 세우려면 도출 안에 세계를 들여와야 해서 표기가 무거워진다. 둘째, 이 절이 하려는 일이 "공리를 하나 넣고 빼면서 무엇이 달라지는지 보는 것" 이라 공리가 앞에 나와 있는 편이 낫다.
가장 약한 체계를 𝖪 라 하고 이렇게 정한다. 체계 이름은 𝖪,𝖳,𝖲𝟦,𝖲𝟧 처럼 적고 공리 이름은 𝐾,𝑇,4,5 처럼 적어 갈라 둔다.
공리 — 명제논리의 항진명제 전부, 그리고 도식 𝐾: ◻(𝜑→𝜓)→(◻𝜑→◻𝜓)
규칙 1 (전건 긍정) — ⊢𝖪𝜑 이고 ⊢𝖪𝜑→𝜓 이면 ⊢𝖪𝜓
규칙 2 (필연화) — ⊢𝖪𝜑 이면 ⊢𝖪◻𝜑
필연화를 정확히 읽어야 한다. 이 규칙은 정리에만 적용된다. 𝜑 를 가정으로 놓고 ◻𝜑 를 얻는 것이 아니다. 𝜑→◻𝜑 는 이 체계의 정리가 아니고, 앞 절 예제에서 그것을 무너뜨리는 모형을 이미 만들었다. 정리는 모든 세계에서 참이므로 ◻ 를 붙여도 되고, 가정은 지금 이 세계에서만 참일 수 있으므로 붙이면 안 된다. 이 구분을 놓치면 체계가 무너진다.
𝐾 공리부터 확인하자. 𝐾 는 모든 프레임에서 타당하다. 증명은 조항을 펴는 것뿐이다. 아무 모형과 아무 세계 𝑤 를 잡고 ◻(𝜑→𝜓) 와 ◻𝜑 가 𝑤 에서 참이라 하자. 𝑤𝑅𝑢 인 𝑢 를 아무거나 잡으면, 앞엣것에서 𝑢 에서 𝜑→𝜓 가 참이고 뒤엣것에서 𝑢 에서 𝜑 가 참이다. → 조항을 𝑢 에서 쓰면 𝑢 에서 𝜓 가 참이다. 𝑢 를 아무거나 잡았으므로 𝑤 에서 ◻𝜓 가 참이다.
이 증명 어디에서도 𝑅 의 성질을 쓰지 않았다는 것을 눈여겨보라. 그래서 𝐾 는 대응하는 프레임 조건이 없다. 바닥이다.
𝑇 · 4 · 5 — 세 공리와 세 성질
이제 공리를 하나씩 얹는다. 각각이 𝑅 의 성질 하나와 정확히 맞물린다.
<점선 화살표가 있어야 한다는 요구가 곧 그 성질이다. 세 그림 어디에도 논리식이 없다는 것을 확인하라 — 이것은 접근관계 R 에 대한 조건이지 대상언어의 문장이 아니다>[원본 보기]
공리
도식
프레임 조건
조건의 뜻
𝐷
◻𝜑→◊𝜑
직렬적
모든 𝑤 에 나가는 화살표가 하나는 있다
𝑇
◻𝜑→𝜑
반사적
모든 𝑤 에 대해 𝑤𝑅𝑤
𝐵
𝜑→◻◊𝜑
대칭적
𝑤𝑅𝑢 이면 𝑢𝑅𝑤
4
◻𝜑→◻◻𝜑
추이적
𝑤𝑅𝑢 이고 𝑢𝑅𝑡 이면 𝑤𝑅𝑡
5
◊𝜑→◻◊𝜑
유클리드적
𝑤𝑅𝑢 이고 𝑤𝑅𝑡 이면 𝑢𝑅𝑡
<줄마다 가로로 읽어라. 왼쪽 칸은 대상언어의 논리식이고 오른쪽 칸은 논리식이 아니다. 가운데 기호가 ⟺ 라는 것 — 곧 이 표의 줄 하나하나가 정리라는 것 — 이 요점이다>[원본 보기]
대응 정리를 실제로 증명한다
표의 한 줄을 정리로 적어 보자.
대응 정리(𝑇). 프레임 F=⟨𝑊,𝑅⟩ 에 대해 다음 둘은 같다. (가) 𝑅 이 반사적이다. (나) 𝑇 의 모든 사례가 F 에서 타당하다.
(가)에서 (나) — 쉬운 방향.𝑅 이 반사적이라 하자. 아무 배당을 얹고 아무 세계 𝑤 를 잡아 𝑤 에서 ◻𝜑 가 참이라 하자. 조항은 "𝑤𝑅𝑢 인 모든 𝑢 에서 𝜑 가 참" 이다. 반사성에 의해 𝑤𝑅𝑤 이므로 𝑢 자리에 𝑤 를 넣을 수 있고, 따라서 𝑤 에서 𝜑 가 참이다.
(나)에서 (가) — 어려운 방향. 대우로 간다. 𝑅 이 반사적이 아니라 하자. 그러면 𝑤𝑅𝑤 이 아닌 세계 𝑤 가 있다. 이 자리를 겨냥해 배당을 우리가 만든다.
𝑉(𝑃)={𝑢∈𝑊:𝑤𝑅𝑢}
곧 𝑃 를 "𝑤 에서 보인다" 는 뜻으로 쓴 것이다. 그러면 𝑤 에서 보이는 세계는 모두 𝑉(𝑃) 안에 있으므로 ◻𝑃 가 𝑤 에서 참이다. 그런데 𝑤𝑅𝑤 이 아니므로 𝑤∉𝑉(𝑃) 이고, 𝑃 는 𝑤 에서 거짓이다. 그러니 ◻𝑃→𝑃 가 𝑤 에서 거짓이고, 𝑇 는 이 프레임에서 타당하지 않다.
어려운 방향의 요령을 새겨 두자. 프레임 타당성은 모든 배당에 대한 요구이므로, 무너뜨리려면 배당 하나만 만들면 된다. 그 배당을 짓는 요령도 대체로 같다 — 문제가 되는 세계에서 보이는 것들을 모아 원자 하나에 준다. 늘 그런 것은 아니고, 5 에서는 다른 모양이 필요하다. 남은 두 줄을 예제로 남긴다.
마지막으로 이 절과 앞 절의 관계를 정확히 적어 둔다. 지금까지 확인한 것은 의미론 쪽이다. 𝑅 에 조건을 걸면 어떤 도식이 타당해지는가. 증명 체계 쪽에서도 짝이 맞는다는 것 — 곧 𝖪 에 𝑇 를 공리로 더한 체계의 정리가 정확히 반사적 프레임에서 타당한 식 전부라는 것 — 은 각 체계마다 따로 증명해야 하고, 그것이 13장의 건전성과 14장의 완전성을 양상논리에서 다시 하는 일이다. 헨킨식 구성을 그대로 옮겨 쓸 수 있고, 이 장은 결과만 인용한다.
예제 247
대응 정리의 어려운 방향을 4 에 대해 증명하라. 곧 4 가 프레임 F 에서 타당하면 𝑅 이 추이적임을 보여라.
풀이 보기
무엇을 묻는가.𝑇 에서 쓴 요령을 그대로 옮기는 일이다.
4 가 F 에서 타당하다고 하고, 𝑤𝑅𝑢 와 𝑢𝑅𝑡 를 잡는다. 목표는 𝑤𝑅𝑡 다.
배당을 만든다. 𝑉(𝑃)={𝑥∈𝑊:𝑤𝑅𝑥}. 곧 𝑃 를 "𝑤 에서 보인다" 로 쓴다.
그러면 𝑤 에서 ◻𝑃 가 참이다 — 𝑤 에서 보이는 세계는 정의상 모두 𝑉(𝑃) 안에 있다. 4 가 타당하므로 𝑤 에서 ◻◻𝑃 도 참이다.
이제 화살표를 두 번 따라간다. 𝑤𝑅𝑢 이므로 𝑢 에서 ◻𝑃 가 참이다. 𝑢𝑅𝑡 이므로 𝑡 에서 𝑃 가 참이다. 곧 𝑡∈𝑉(𝑃) 이고, 정의에 따라 𝑤𝑅𝑡 다.
답이 말이 되는가. 배당 하나를 만들고 화살표를 두 번 따라간 것이 전부다. 𝑇 때는 한 번, 4 때는 두 번 따라갔다. 공리에 든 ◻ 의 개수만큼 걸어간다는 것이 이 증명들의 공통 모양이다.
예제 248
대응 정리의 어려운 방향을 5 에 대해 증명하라. 그리고 이번에는 왜 "보이는 것을 모은" 배당이 아니라 다른 배당을 써야 하는지 짚어라.
풀이 보기
무엇을 묻는가.5 가 타당하면 𝑅 이 유클리드적이라는 것, 곧 𝑤𝑅𝑢 이고 𝑤𝑅𝑡 이면 𝑢𝑅𝑡 라는 것이다.
𝑤𝑅𝑢 와 𝑤𝑅𝑡 를 잡는다. 이번 배당은 이것이다. 𝑉(𝑃)={𝑡} — 세계 하나만 든 모임이다.
𝑤𝑅𝑡 이고 𝑡∈𝑉(𝑃) 이므로 𝑤 에서 ◊𝑃 가 참이다. 5 가 타당하므로 𝑤 에서 ◻◊𝑃 도 참이다. 𝑤𝑅𝑢 이므로 𝑢 에서 ◊𝑃 가 참이다.
𝑢 에서 ◊𝑃 가 참이라는 것은 𝑢𝑅𝑧 이고 𝑧∈𝑉(𝑃) 인 𝑧 가 있다는 뜻이다. 그런데 𝑉(𝑃) 의 원소는 𝑡 하나뿐이므로 𝑧=𝑡 이고, 따라서 𝑢𝑅𝑡 다.
왜 배당이 달라야 하는가.𝑇 와 4 에서는 ◻ 로 시작하는 전건을 참으로 만들어야 했다. 그래서 넉넉한 모임 — 보이는 것 전부 — 을 잡았다. 5 의 전건은 ◊𝑃 라 참으로 만들기가 쉽고, 대신 결론 쪽에서 "그 𝑧 가 바로 𝑡 다" 를 강제해야 한다. 그러려면 모임이 좁아야 한다.
답이 말이 되는가. 요령은 하나로 요약된다. 전건이 ◻ 면 배당을 넓게, ◊ 면 좁게 잡는다.
예제 249
다음 각각에 대해 그 공리를 무너뜨리는 프레임과 배당을 만들어라. 세계는 셋을 넘기지 마라. (가) 𝑇 (나) 4 (다) 5
풀이 보기
(가) 𝑇 를 무너뜨린다. 반사적이 아닌 프레임이면 된다. 𝑊={𝑤,𝑢}, 𝑅={⟨𝑤,𝑢⟩}, 𝑉(𝑃)={𝑢}. 𝑤 가 보는 것은 𝑢 뿐이고 거기서 𝑃 가 참이므로 ◻𝑃 가 참이다. 그런데 𝑤∉𝑉(𝑃) 이므로 𝑃 는 거짓이다. ◻𝑃→𝑃 가 𝑤 에서 거짓이다.
(나) 4 를 무너뜨린다. 추이적이 아닌 프레임이 필요하다. 𝑊={𝑤,𝑢,𝑡}, 𝑅={⟨𝑤,𝑢⟩,⟨𝑢,𝑡⟩}, 𝑉(𝑃)={𝑢}. 𝑤 가 보는 것은 𝑢 뿐이고 𝑢∈𝑉(𝑃) 이므로 ◻𝑃 가 𝑤 에서 참이다. 그런데 𝑢 가 보는 것은 𝑡 뿐이고 𝑡∉𝑉(𝑃) 이므로 𝑢 에서 ◻𝑃 가 거짓이고, 따라서 𝑤 에서 ◻◻𝑃 가 거짓이다.
(다) 5 를 무너뜨린다. 유클리드적이 아닌 프레임이 필요하다. 𝑊={𝑤,𝑢,𝑡}, 𝑅={⟨𝑤,𝑢⟩,⟨𝑤,𝑡⟩}, 𝑉(𝑃)={𝑡}. 𝑤 에서 ◊𝑃 는 참이다 — 𝑡 가 보이고 거기서 𝑃 가 참이다. 그런데 𝑢 가 보는 세계는 하나도 없으므로 𝑢 에서 ◊𝑃 는 거짓이고, 따라서 𝑤 에서 ◻◊𝑃 가 거짓이다.
답이 말이 되는가. 셋 다 만드는 절차가 같다. 먼저 그 성질을 깨는 화살표 그림을 그리고, 그다음에 깨진 자리가 드러나도록 배당을 얹는다. 앞 두 예제가 그 절차를 일반적으로 적은 것이고, 여기서는 손으로 한 번씩 해 본 것이다.
𝖲𝟦 와 𝖲𝟧
공리를 조합해 이름 붙인 체계가 있다. 아래 넷이 가장 흔하다.
체계
무엇을 더했나
프레임 조건
한마디로
𝖪
없음
없음
바닥. 모든 정규 양상논리가 이것을 담는다
𝖳
𝑇
반사적
필연이면 실제로 그렇다
𝖲𝟦
𝑇 와 4
반사적 + 추이적
양상을 겹쳐 붙이면 줄어들지만 다 없어지지는 않는다
𝖲𝟧
𝑇 와 5
반사적 + 유클리드적 = 동치관계
양상이 붕괴한다. 겹쳐 붙여도 맨 뒤 하나만 남는다
마지막 줄의 "동치관계"가 곧바로 보이지는 않는다. 확인해 두자. 𝑅 이 반사적이고 유클리드적이라 하자.
대칭적이다.𝑤𝑅𝑢 라 하자. 반사성에서 𝑤𝑅𝑤 이다. 유클리드성을 𝑤 에서 나가는 두 화살표 𝑤𝑅𝑢 와 𝑤𝑅𝑤 에 적용하면 𝑢𝑅𝑤 를 얻는다
추이적이다.𝑤𝑅𝑢 이고 𝑢𝑅𝑡 라 하자. 방금 얻은 대칭성에서 𝑢𝑅𝑤 다. 유클리드성을 𝑢 에서 나가는 두 화살표 𝑢𝑅𝑤 와 𝑢𝑅𝑡 에 적용하면 𝑤𝑅𝑡 를 얻는다
반사적·대칭적·추이적인 관계가 동치관계다. 동치관계는 집합을 덩어리로 가른다. 한 덩어리 안에서는 모두가 서로 보이고 덩어리 밖은 보이지 않는다.
<왼쪽 덩어리 안에서 어느 점으로 옮겨 가도 보이는 것이 같다는 것을 확인하라. 오른쪽 네 등가식이 그 사실의 결과다>[원본 보기]
그림 오른쪽이 𝖲𝟧 의 특징이다. 양상이 쌓이지 않는다.◻◻𝜑 는 ◻𝜑 와 같고 ◊◻𝜑 도 ◻𝜑 와 같다. 겹쳐 붙인 것 중 맨 뒤 하나만 남으므로 서로 다른 양상은 셋뿐이다 — 아무것도 안 붙인 것, ◻, ◊. 𝖲𝟦 에서는 그렇게까지 줄지 않아 서로 다른 양상이 열넷 있다고 알려져 있다.
체계들 사이의 포함 관계도 적어 둔다. 𝖪 의 정리는 𝖳 의 정리이고, 𝖳 의 정리는 𝖲𝟦 와 𝖲𝟧 의 정리다. 공리를 더하면 정리가 늘어난다. 의미론 쪽에서 보면 방향이 반대다 — 조건을 더하면 프레임이 줄어들고, 프레임이 줄면 타당한 식이 늘어난다. 같은 사실을 두 층에서 반대 방향으로 읽는 것이고, 그 둘이 맞아떨어진다는 것이 각 체계의 건전성·완전성이다.
◻ 를 읽는 방식이 여럿이다
지금까지 ◻ 를 "필연적으로" 로 읽었다. 그런데 의미론 어디에도 "필연"이라는 말이 나오지 않았다. 있는 것은 점과 화살표뿐이다. 그래서 같은 장치를 다르게 읽을 수 있다.
<줄마다 가로로 읽어라. 문법과 진리 조항은 다섯 줄이 전부 같다. 갈리는 것은 W 가 무엇의 모임이고 R 이 무슨 관계인가, 그리고 그 결과로 어느 공리를 받아들이는가뿐이다>[원본 보기]
표의 셋째 줄이 이 절에서 가장 중요하다. 의무로 읽으면 𝑇 를 버려야 한다.◻𝜑→𝜑 는 의무 읽기에서 "해야 하는 일은 실제로 일어난다" 가 되는데, 그것은 세상에 대해 명백히 거짓이다. 그러면 남는 것은 𝐷 다 — ◻𝜑→◊𝜑, 곧 "해야 하는 일은 적어도 해도 되는 일이다". 프레임 조건으로는 막다른 세계가 없다는 것이다.
여기서 이 장의 요지가 나온다. '어느 것이 옳은 양상논리인가' 는 잘못된 물음이다. 무엇을 읽으려는가가 𝑅 을 정하고, 𝑅 이 공리를 정한다. 앞 절의 대응표가 그 사이를 잇는 다리이고, 다리가 있기 때문에 "이 읽기에는 어느 체계가 맞는가" 를 논증으로 따질 수 있다.
증명 가능성 — 17장이 놓은 다리
17장이 만든 Prov𝑇(𝑥) 를 ◻ 로 읽어 보자. ◻𝜑 를 "𝑇 에서 𝜑 가 증명된다" 로 읽는 것이다. 17장이 확인해 둔 두 성질이 그대로 규칙 둘이 된다.
𝑇⊢𝜑 이면 𝑇⊢Prov𝑇(⌜𝜑⌝) — 필연화 규칙이다
형식화된 전건 긍정, 곧 Prov𝑇(⌜𝜑→𝜓⌝)→(Prov𝑇(⌜𝜑⌝)→Prov𝑇(⌜𝜓⌝)) — 𝐾 공리다
그러니 증명 가능성 읽기는 적어도 𝖪 를 만족한다. 그런데 𝑇 는 어떤가. ◻𝜑→𝜑 는 "증명되면 참이다" 이므로 참인 이야기처럼 들린다. 그런데 이 체계의 정리로 삼으면 안 된다. 뢰브(Löb)의 정리가 이유를 준다 — 𝑇⊢Prov𝑇(⌜𝜑⌝)→𝜑 이면 𝑇⊢𝜑 다. 𝑇 를 도식으로 인정하면 𝜑 자리에 아무것이나 넣어 무엇이든 증명되고, 곧 비일관이 된다.
대신 뢰브가 준 것을 공리로 삼는다. 이 도식을 𝐺𝐿 이라 하고, 𝖪 에 𝐺𝐿 을 더한 체계를 𝖦𝖫 또는 증명 가능성 논리라 한다.
◻(◻𝜑→𝜑)→◻𝜑
프레임 대응도 있다. 𝐺𝐿 은 추이적이고 화살표를 따라 끝없이 나아가는 길이 없는 프레임에서 타당하다. 그런 프레임에는 자기 자신으로 가는 화살표가 있을 수 없다 — 있으면 그 자리를 맴도는 끝없는 길이 생긴다. 반사적이 아니므로 대응 정리에 따라 𝑇 가 타당하지 않고, 𝑇 를 버려야 했던 까닭이 프레임 쪽에서도 그대로 보인다. 덧붙이면 이 체계에서는 4 가 공리를 더하지 않아도 정리로 나온다.
마지막으로 놀라운 결과 하나. 솔로베이 정리.𝖦𝖫 의 정리는 정확히 "◻ 를 Prov𝖯𝖠 로 바꿔 읽었을 때 𝖯𝖠 가 증명하는 것" 전부다. 곧 이 작은 양상 체계가 페아노 산술의 증명 가능성에 대해 말할 수 있는 것을 남김없이 잡는다. 17장의 제2 불완전성 정리도 이 언어로 한 줄이 된다. 17장의 Con(𝑇) 를 여기서는 ¬◻⊥ 로 적는다. 그러면 정리는 ¬◻⊥→¬◻¬◻⊥ 이고, 읽으면 "일관적이라면 그 일관성은 증명되지 않는다" 다. 17장이 산술화를 거쳐 얻은 것이 양상 기호 다섯 개로 적힌다.
예제 250
인식 읽기, 곧 ◻𝜑 를 "그 사람은 𝜑 를 안다" 로 읽는 경우를 본다. (가) 𝑇 는 무엇을 주장하는가 (나) 4 와 5 는 각각 무엇을 주장하는가 (다) 5 가 의심스러운 이유를 대라.
풀이 보기
(가)◻𝜑→𝜑 는 "아는 것은 참이다" 다. 지식의 사실성이라 부르고, 대개 받아들인다. 거짓인 것을 안다고 하지는 않기 때문이다. 다만 ◻ 를 "믿는다" 로 읽으면 이 공리는 곧바로 무너진다 — 사람은 거짓을 믿는다.
(나)4 는 ◻𝜑→◻◻𝜑, 곧 "알면 안다는 것을 안다" 다. 긍정적 내성이라 부른다. 5 는 ◊𝜑→◻◊𝜑 인데, 인식 읽기로 옮기면 "배제하지 못하는 것이 있으면 그것을 배제하지 못한다는 것을 안다" 이고, 대우로 읽으면 "모르는 것은 모른다는 것을 안다" 가 된다. 부정적 내성이라 부른다.
(다) 부정적 내성은 강한 주장이다. 사람은 자기가 무엇을 모르는지 모르는 일이 흔하다. 잘못 알고 있으면서 안다고 여기는 경우가 그렇다. 프레임으로 보면 5 는 접근관계를 동치관계로 만들어 "구별하지 못하는 상황들" 을 깔끔한 덩어리로 가르는데, 실제 인지 상태가 그렇게 깔끔하다고 볼 근거가 없다.
답이 말이 되는가. 같은 5 가 알레틱 읽기에서는 자연스럽고 인식 읽기에서는 논란거리다. 공리를 고르는 일이 논리 안에서 결정되지 않는다는 것 — 읽기를 정해야 결정된다는 것 — 이 이 절이 보이려는 바다.
예제 251
증명 가능성 읽기에서 𝑇 를 인정하면 왜 곤란한지 뢰브의 정리를 써서 적어라. 그리고 "그래도 증명된 것은 참이지 않은가" 라는 반문에 답하라.
풀이 보기
곤란한 이유.𝑇 를 도식으로 인정한다는 것은 모든 𝜑 에 대해 𝑇⊢Prov𝑇(⌜𝜑⌝)→𝜑 라는 뜻이다. 뢰브의 정리는 그 조건에서 𝑇⊢𝜑 를 준다. 𝜑 가 아무것이나 될 수 있으므로 𝑇⊢⊥ 이고, 𝑇 가 비일관이다.
반문에 대한 답. 둘을 갈라야 한다. 우리가 밖에서 "𝑇 가 증명한 것은 참이다" 라고 말하는 것과, 𝑇 자신이 그 문장을 증명하는 것은 다르다. 앞엣것은 메타언어의 주장이고 참이다. 뒤엣것은 𝑇 안의 정리이고, 방금 본 대로 인정하면 무너진다.
17장이 같은 구별을 이미 했다. Prov𝑇 를 "증명 가능하다" 로 읽는 것은 표준 모형을 머릿속에 두고 하는 일이고, 다른 모형에서는 그 읽기가 통하지 않는다고 적었다. 여기서 그 문장이 값을 한다.
답이 말이 되는가. 5장이 대상언어와 메타언어를 갈라 둔 것이 이 장에서 다시 값을 한다. ◻ 는 대상언어의 연결자이고 "증명된다" 는 메타언어의 말이다. 둘이 맞아떨어지는 범위를 정확히 재는 것이 증명 가능성 논리가 하는 일이다.
실무에서 만나는 자리 — 시제 논리와 모형 검사
시제 읽기를 다시 보자. 𝑊 를 시각의 모임으로, 𝑤𝑅𝑢 를 "𝑢 는 𝑤 보다 나중이다" 로 읽는다. 그러면 ◻𝜑 는 "앞으로 늘 𝜑" 이고 ◊𝜑 는 "언젠가 𝜑" 다. 나중의 나중은 나중이므로 4 는 받아들이고, 𝑇 는 "나중"에 지금을 포함시킬 때만 받아들인다.
이 읽기가 컴퓨터과학에서 실제로 쓰인다. 시스템 하나를 유한한 상태 전이 그래프로 적으면 그것이 곧 크립키 모형이다. 상태가 세계이고, 한 걸음 실행이 화살표이고, 각 상태에서 성립하는 명제가 배당이다. 요구사항을 양상 식으로 적고 "이 모형의 초기 상태에서 이 식이 참인가" 를 기계에 묻는 일을 모형 검사(model checking)라 한다.
<왼쪽 세로줄과 오른쪽 세로줄을 짝지어 읽어라. 이름만 다를 뿐 같은 것이다. 아래 상자가 이 도구가 돌아가는 이유와 실제로 걸리는 벽이다>[원본 보기]
실무의 표기는 조금 다르다. 선형 시제 논리(LTL)에서는 ◻ 를 G, ◊ 를 F 로 적고, ‘다음 걸음’ 과 ‘까지’ 를 뜻하는 연산자를 더 둔다. 기호가 다를 뿐 진리 조항은 이 장에서 세운 것과 같다. 상태 폭발 문제와 그것을 미는 기법은 알고리즘 문서 쪽 이야기다.
예제 252
신호등을 상태 셋으로 적는다. 𝑊={𝑤r,𝑤g,𝑤y} 이고 화살표는 빨강→초록, 초록→노랑, 노랑→빨강 셋뿐이다. 𝐺 는 "초록이다" 로 두어 𝑉(𝐺)={𝑤g} 다. 다음을 판정하라. (가) M,𝑤r⊨◊𝐺 (나) M,𝑤r⊨◻◊𝐺 (다) M⊨◊𝐺
풀이 보기
(가) 참이다. 빨강이 보는 것은 초록 하나이고 거기서 𝐺 가 참이다.
(나) 거짓이다. "신호등은 언제나 언젠가 초록이 된다" 는 참으로 들리므로 여기서 걸린다. 정의대로 따져 보자. 빨강이 보는 것은 초록뿐이므로 초록에서 ◊𝐺 를 확인하면 된다. 초록이 보는 것은 노랑 하나이고 거기서 𝐺 는 거짓이다. 그러니 초록에서 ◊𝐺 가 거짓이고, 따라서 𝑤r 에서 ◻◊𝐺 도 거짓이다.
직관과 어긋나는 이유는 하나다. ◊ 는 한 걸음만 본다. 우리 머릿속의 "언젠가" 는 몇 걸음이든 가도 된다는 뜻인데 조항은 화살표 하나만 따라간다. 그렇게 읽고 싶으면 𝑅 을 추이적으로 닫아야 하고, 그러면 프레임이 달라진다. 실무의 F 가 처음부터 "몇 걸음이든 간다" 는 관계 위에서 정의되고 한 걸음짜리는 따로 X 라는 기호를 받는 이유가 이것이다.
(다) 거짓이다. 모형에서 참이려면 모든 세계에서 참이어야 한다. 초록에서 ◊𝐺 가 거짓임을 이미 보았다.
답이 말이 되는가. 이 예제의 값은 (나)에 있다. 자연어의 "언젠가" 와 ◊ 조항이 같지 않다는 것, 그리고 그 차이가 𝑅 을 어떻게 잡았는가에서 온다는 것. 요구사항을 잘못 적는 실무의 실수가 대부분 이 자리에서 난다.
예제 253
앞 신호등 모형에서 𝑅 을 추이적으로 닫는다. 곧 두 걸음·세 걸음으로 닿는 것도 화살표로 넣는다. (가) 그러면 𝑅 은 어떤 관계가 되는가 (나) 이제 M⊨◻◊𝐺 인가 (다) 이 프레임에서 𝑇 는 타당한가
풀이 보기
(가) 세 상태가 고리를 이루므로 어느 상태에서든 세 걸음 안에 모든 상태에 닿는다. 추이적으로 닫으면 모든 짝에 화살표가 생기고 자기 자신으로 가는 화살표도 생긴다. 곧 𝑅=𝑊×𝑊 이고, 이것은 동치관계다.
(나) 참이다. 어느 세계에서든 보이는 세계가 셋 전부이고 그중 초록이 있으므로 모든 세계에서 ◊𝐺 가 참이다. 따라서 모든 세계에서 ◻◊𝐺 도 참이다.
(다) 타당하다.𝑅=𝑊×𝑊 는 반사적이므로 대응 정리의 쉬운 방향에 의해 𝑇 가 이 프레임에서 타당하다. 사실 이 프레임은 동치관계이므로 𝖲𝟧 의 프레임이고, 𝑇 도 4 도 5 도 전부 타당하다.
답이 말이 되는가. 같은 시스템을 두고 𝑅 을 어떻게 잡느냐에 따라 판정이 뒤집혔다. 모형 검사에서 모형을 잘못 적으면 도구가 옳은 답을 주어도 쓸모가 없다. 그리고 (다)가 보여 주듯 프레임 조건은 우리가 고르는 것이기도 하지만 시스템이 강제하는 것이기도 하다.
많은 양상논리는 결정 가능하다 — 16장과의 대비
16장이 술어논리는 결정 불가능하다고 증명했다. 그리고 마지막 절의 '결정 가능한 조각들' 목록에 이렇게 적어 두었다 — "양상논리 𝖪·𝖳·𝖲𝟦·𝖲𝟧 — 18장에서 세운다. 전부 결정 가능하다." 여기가 그 약속을 갚는 자리다.
이유는 유한 모형 성질(finite model property)이다. 어떤 체계가 이 성질을 갖는다는 것은, 그 체계의 정리가 아닌 식은 유한한 모형에서 이미 반증된다는 뜻이다. 반증하려고 무한한 세계를 늘어놓을 필요가 없다는 것이다.
게다가 크기의 한계가 식으로부터 정해진다. 𝜑 의 부분식이 𝑛 개면 세계가 2𝑛 개 이하인 모형만 확인하면 충분하다는 것이 알려져 있다. 증명 기법의 이름은 여과(filtration)이고, 큰 모형에서 "𝜑 의 부분식들에 대해 값이 같은 세계" 를 한 점으로 뭉치는 방법이다. 여기서는 결과만 쓴다.
그러면 판정 절차가 곧바로 나온다. 세계가 2𝑛 개 이하인 모형은 유한 개다. 전부 만들어 𝜑 를 확인한다. 반증하는 것이 있으면 "아니오", 하나도 없으면 "예". 반드시 멈춘다. 16장이 요구한 세 조건 — 기계적이고, 모든 입력에 답하고, 반드시 멈추는 것 — 을 다 지켰다.
실용적이라는 말은 아니다. 2𝑛 이 이미 손을 벗어난다. 𝖪·𝖳·𝖲𝟦 의 만족가능성 판정은 PSPACE-완전이고 𝖲𝟧 는 NP-완전이라고 알려져 있다. 𝖲𝟧 가 쉬운 이유는 앞 절에 있다 — 양상이 붕괴하므로 겹쳐 붙인 ◻ 를 다 지울 수 있다.
술어논리는 왜 안 되는가. 유한 모형 성질이 없기 때문이다. 15장에서 만족가능하면서 무한 모형만 갖는 문장 집합을 보았고, 12장의 𝜆𝑛 이 그 재료였다. 유한한 후보를 다 훑어도 반증을 못 찾을 수 있으니 훑기가 판정 절차가 되지 못한다.
왜 양상논리가 결정 가능한지 — 우연이 아니다
더 깊은 이유가 있다. 양상 언어는 술어논리로 번역된다. 문장문자 𝑃 마다 1항 술어 𝐹𝑃 를 두고 접근관계에 2항 술어 𝑅 을 둔다. 세계를 정의역의 원소로 삼고, 세계 하나를 가리키는 변수를 딸려 적는다.
𝑆𝑇𝑥(𝑃)=𝐹𝑃𝑥
𝑆𝑇𝑥(¬𝜑)=¬𝑆𝑇𝑥(𝜑)
𝑆𝑇𝑥(𝜑∧𝜓)=𝑆𝑇𝑥(𝜑)∧𝑆𝑇𝑥(𝜓)
𝑆𝑇𝑥(◻𝜑)=∀𝑦(𝑅𝑥𝑦→𝑆𝑇𝑦(𝜑))
𝑆𝑇𝑥(◊𝜑)=∃𝑦(𝑅𝑥𝑦∧𝑆𝑇𝑦(𝜑))
이 번역의 결정적인 성질은 변수를 둘만 쓰면 된다는 것이다. 안쪽으로 들어갈 때 𝑥 와 𝑦 를 번갈아 재사용하면 새 변수가 필요 없다. 그런데 16장의 '결정 가능한 조각들' 목록에 이런 줄이 있었다 — "변수를 두 개만 쓰는 조각 … 함수기호를 넣지 않으면 결정 가능하다". 양상논리는 그 조각 안에 들어 있다.
그러니 이 장의 결정 가능성은 새로 얻은 것이 아니라 16장이 이미 알려 준 것이다. 그리고 대가도 분명하다. 표현력을 줄인 값으로 얻은 것이다. 12장이 𝜆𝑛 으로 정의역의 크기를 셌지만 양상 언어로는 "보이는 세계가 정확히 둘이다" 를 적을 수 없다. 셈을 포기한 대신 판정을 얻었다.
예제 254
◻◻𝑃 를 표준 번역으로 옮겨라. 변수를 둘만 쓰도록 적고, 왜 셋째 변수가 필요 없는지 짚어라.
풀이 보기
바깥부터 조항을 적용한다. 𝑆𝑇𝑥(◻◻𝑃)=∀𝑦(𝑅𝑥𝑦→𝑆𝑇𝑦(◻𝑃)) 다.
안쪽을 편다. 𝑆𝑇𝑦(◻𝑃) 는 조항에 따라 "𝑦 에서 보이는 모든 세계에서 𝑃" 인데, 여기서 새 변수를 만들 필요가 없다. 𝑥 가 이미 자기 몫을 끝냈으므로 다시 쓸 수 있다.
𝑆𝑇𝑦(◻𝑃)=∀𝑥(𝑅𝑦𝑥→𝐹𝑃𝑥)
합치면 이렇다. ∀𝑦(𝑅𝑥𝑦→∀𝑥(𝑅𝑦𝑥→𝐹𝑃𝑥))
안쪽 ∀𝑥 가 바깥의 𝑥 를 가린다. 9장의 낱말로 하면 안쪽 𝑥 의 나타남은 안쪽 한정사에 속박되고, 바깥 𝑥 는 그 범위 밖에서만 자유롭다. 가려도 되는 이유는 바깥 𝑥 가 안쪽에서 다시 쓰이지 않기 때문이다.
답이 말이 되는가. ◻ 를 아무리 겹쳐 붙여도 같은 요령이 통한다. 한 번에 한 걸음만 나가고 지나온 세계를 되돌아보지 않기 때문에 손에 들고 있어야 할 세계가 늘 둘뿐이다. 그것이 양상 언어가 1차 논리의 결정 가능한 조각 안에 사는 이유다.
예제 255
유한 모형 성질이 왜 결정 가능성을 주는지 16장의 정의에 맞춰 적어라. 그리고 이 논증이 술어논리에서 어디서 막히는지 짚어라.
풀이 보기
무엇을 묻는가. 16장의 판정 절차 정의 — 기계적이고, 모든 입력에 답하고, 반드시 멈춘다 — 를 실제로 확인하는 일이다.
입력은 양상 논리식 𝜑 이고 물음은 "𝜑 가 이 체계의 정리인가" 다. 절차는 이렇다. 𝜑 의 부분식을 세어 𝑛 을 얻고, 세계가 2𝑛 개 이하이고 프레임 조건을 만족하는 모형을 모두 만든다. 각각에서 𝜑 를 확인한다.
기계적인가. 그렇다. 부분식을 세는 것도, 크기가 정해진 모형을 열거하는 것도, 유한한 모형에서 진리 조항을 계산하는 것도 전부 기계적이다.
반드시 멈추는가. 그렇다. 세계 수가 2𝑛 이하이면 서로 다른 프레임은 유한 개이고 배당도 유한 개다. 목록이 유한하므로 훑기가 끝난다.
답이 맞는가. 반증이 발견되면 완전성에 의해 정리가 아니다. 발견되지 않으면 유한 모형 성질에 의해 반증하는 모형이 아예 없고, 따라서 정리다. 유한 모형 성질이 정확히 이 자리에서 쓰인다.
술어논리에서 막히는 곳. 마지막 걸음이다. 유한한 후보를 다 훑어 반증을 못 찾아도 "반증하는 모형이 없다" 고 결론지을 수 없다. 무한 모형에 반증이 숨어 있을 수 있기 때문이다. 15장이 그런 문장이 실제로 있음을 보였다.
답이 말이 되는가. 16장이 명제논리에서 진리표로 한 일과 모양이 같다. 후보를 유한하게 가둘 수 있으면 결정 가능하다. 명제논리에서는 배당이 2𝑛 개였고 여기서는 모형이 유한 개다. 술어논리에서 사라진 것이 정확히 이 울타리다.
이 장에서 새로 나온 것
기호 · 용어
뜻
◻ · ◊
필연 · 가능. 항수 1인 연결자. ¬ 과 같은 자리에서 가장 세게 묶는다
◊𝜑:=¬◻¬𝜑
◊ 는 줄임말이다. 어휘에 든 것은 ◻ 뿐. 반대로 ◻𝜑↔¬◊¬𝜑 도 성립한다
엄밀 함의
◻(𝜑→𝜓). 4장이 실질함의로 옮기며 잃었던 것의 일부를 되찾는다
우연적으로 참
𝜑∧◊¬𝜑. 참인데 거짓일 수도 있었다
가능세계 𝑤,𝑢,𝑡
상황 하나. 형이상학을 얹지 않고 점으로 본다
프레임 F=⟨𝑊,𝑅⟩
비지 않은 세계 집합과 그 위의 2항 관계. 𝑤𝑅𝑢 는 𝑤 에서 𝑢 가 접근 가능하다는 뜻
배당 𝑉
문장문자마다 𝑉(𝑃)⊆𝑊. 6장의 배당 𝑣 를 세계마다 하나씩 놓은 것
모형 M=⟨𝑊,𝑅,𝑉⟩
프레임에 배당을 얹은 것. 크립키 모형이라고도 한다
M,𝑤⊨𝜑
세계에서의 참. 조항 여섯은 6장 그대로이고 ◻ 조항만 새것이다
◻ 조항
𝑤𝑅𝑢 인 모든 𝑢 에서 𝜑 가 참일 때. 유일하게 세계를 떠나는 조항
참의 네 층
세계에서 참 M,𝑤⊨𝜑 · 모형에서 참 M⊨𝜑 · 프레임에서 타당 F⊨𝜑 · 프레임 부류에서 타당. 아래로만 화살표가 있다
필연화 규칙
⊢𝜑 이면 ⊢◻𝜑. 정리에만 쓴다. 𝜑→◻𝜑 는 정리가 아니다
공리 𝐾
◻(𝜑→𝜓)→(◻𝜑→◻𝜓). 모든 프레임에서 타당하다
공리 𝐷 · 𝑇 · 𝐵 · 4 · 5
차례로 직렬적 · 반사적 · 대칭적 · 추이적 · 유클리드적 프레임과 맞물린다
대응 정리
공리의 타당성과 𝑅 의 성질이 서로를 함의한다. 어려운 방향은 배당을 손으로 만들어 공리를 무너뜨린다
체계 𝖪 · 𝖳 · 𝖲𝟦 · 𝖲𝟧
바닥 · 반사적 · 반사적이고 추이적 · 동치관계
양상 붕괴
𝖲𝟧 에서 겹친 양상이 맨 뒤 하나로 줄어든다. 서로 다른 양상이 셋뿐이다
읽는 방식
알레틱 · 인식 · 의무 · 시제 · 증명 가능성. 읽기가 𝑅 을 정하고 𝑅 이 공리를 정한다
사실성 · 긍정적 내성 · 부정적 내성
인식 읽기에서 𝑇 · 4 · 5 가 각각 주장하는 것
뢰브 공리 𝐺𝐿
◻(◻𝜑→𝜑)→◻𝜑. 증명 가능성 읽기에서 𝑇 대신 쓴다
솔로베이 정리
𝖦𝖫 의 정리가 𝖯𝖠 의 증명 가능성에 대한 참을 정확히 잡는다
모형 검사
상태 전이 그래프를 크립키 모형으로 보고 시제 논리 식을 기계로 판정하는 일
유한 모형 성질
정리가 아닌 식은 유한한 모형에서 이미 반증된다. 크기 한계가 식의 부분식 개수로 정해진다
여과(filtration)
큰 모형에서 값이 같은 세계를 한 점으로 뭉쳐 유한 모형을 얻는 기법. 결과만 인용했다
표준 번역 𝑆𝑇𝑥
양상 식을 1차 논리로 옮긴다. ◻ 는 제한된 ∀ 가 되고, 변수 둘이면 충분하다
챙겨 갈 것은 다섯이다.
◻ 는 제한된 한정사다. 정의역 전체가 아니라 "여기서 보이는 세계들" 을 훑는다. ◻ 와 ◊ 의 쌍대성이 ∀ 과 ∃ 의 쌍대성과 같은 이유가 이것이다
새 조항은 하나뿐이다. 나머지 여섯은 6장 그대로 그 세계 안에서 계산된다. 이 비대칭을 놓치면 계산이 어긋난다
공리와 프레임 성질이 정확히 맞물린다. 대응이 있기 때문에 "어느 공리를 받아들일 것인가" 라는 물음이 "𝑅 을 무엇으로 읽을 것인가" 로 옮겨 간다. 논리를 고르는 일이 논증이 될 수 있는 이유다
양상논리는 하나가 아니다. 그리고 그것이 결함이 아니다. 필연·지식·의무·시간·증명 가능성이 서로 다른 것이므로 서로 다른 공리를 요구하는 것이 옳다
표현력을 줄인 값으로 판정 절차를 얻었다. 16장에서 잃은 결정 가능성이 여기서 돌아온다. 공짜가 아니라 1차 논리의 잘 고른 조각 안으로 들어간 대가다
19장으로 넘어가는 다리는 이렇다. 이 장은 고전 논리에 더했다. 19장은 뺀다. 그런데 뺀 결과가 이 장의 장치로 설명된다 — 7장의 IP 를 빼고 남는 직관주의 논리의 의미론이 크립키 프레임에 𝖲𝟦 의 조건을 건 것이고, 세계를 "지금까지 무엇을 증명해 놓았는가" 로 읽으면 된다. 같은 장치가 두 번 쓰이는 것이 아니라 같은 구조를 두 각도에서 보는 것이고, 그 일치를 정리로 확정하는 것이 괴델의 번역이다.
4장의 손실 표에 아직 남은 줄도 적어 둔다. 반사실이 그 표에서 이 장을 가리키고 있었다. 엄밀 함의 ◻(𝜑→𝜓) 가 실질함의의 이상함 가운데 일부를 고치는 것은 맞다. 그러나 "뛰었더라면 탔을 것이다" 를 제대로 다루려면 세계들 사이에 "더 닮았다" 는 순서를 더 얹어야 하고, 그 갈래는 20장에 길만 적어 둔다. 되찾은 것과 다 되찾은 것은 다르다.
고전 논리 밖
3장부터 18장까지 이 문서는 논리를 하나 세웠다. 5장이 문법을 정하고, 6장이 진리값 둘을 배당하고, 7장이 규칙 열세 개를 놓고, 11·12장이 한정사와 동일성을 얹고, 13·14장이 그 두 층이 같은 것을 가려낸다고 증명했다. 그렇게 세운 논리에 이름이 있다. 고전 논리(classical logic)다.
이름이 붙는다는 것은 다른 것이 있다는 뜻이다. 여기까지 오는 동안 그 이름을 거의 쓰지 않았는데, 비교할 대상이 없으면 이름이 필요 없기 때문이다. 이 장에서 비교할 대상이 생긴다.
이 장에서 답할 것은 넷이다.
고전 논리를 떠받치는 가정은 무엇인가. 어디가 고를 수 있었던 자리였나
7장의 규칙 목록에서 IP 한 줄을 지우면 무슨 일이 일어나는가. 무엇을 잃고 무엇을 얻는가
진리값을 셋으로 늘리면 어떻게 되는가. 왜 늘리고 싶어지는가
⊥E, 곧 "모순에서 무엇이든 나온다"는 정말 좋은 규칙인가
18장에서 가져오는 것이 이 장의 절반이다. 가능세계의 집합 𝑊, 세계 사이의 접근관계 𝑅, 그 둘로 이루어진 프레임, 그리고 프레임에 조건을 걸면 정리 목록이 달라진다는 사고방식. 특히 S4 의 조건인 반사성과 추이성이 이 장에서 그대로 다시 나온다. 우연이 아니고, 왜 우연이 아닌지가 직관주의 절의 마지막 문단에 있다.
7장에서는 IP 절과 그 절의 예제 둘을 가져온다. 13장에서는 IP 의 건전성 확인이 "값이 둘뿐"이라는 문장 하나에 걸려 있었다는 사실을, 14장에서는 완전성 증명이 IP 를 쓴다는 사실을 가져온다. 6장과 7장은 폭발이 이상하게 느껴지는 것이 정상이라고 적어 두었고, 4장은 '덥다' 같은 정도의 낱말이 참·거짓 둘로 갈리며 중간을 잃는다고 적었다. 앞 장들이 모두 "19장에서 갚는다"고 적어 두었고 여기가 그 자리다.
미리 못 박아 둘 것이 하나 있다. 이 장은 고전 논리가 틀렸다고 말하지 않는다. 골랐다는 것을 보일 뿐이다. 고른 줄 모르고 쓰는 것과 알고 고르는 것은 다르다.
무엇이 선택이었나
고전 논리는 가정 세 개 위에 서 있다. 셋은 서로 얽혀 있지만 같은 것은 아니다.
(가) 진리값은 둘이다. 6장이 배당을 "문장문자 전체에서 {T,F} 로 가는 함수"로 정의했다. 공역의 원소가 둘이라는 것
(나) 배중률(law of excluded middle).𝜑∨¬𝜑 가 무엇을 넣어도 성립한다
(다) 이중부정 제거(double negation elimination).¬¬𝜑 를 손에 쥐면 𝜑 를 적어도 된다
(가)는 의미론 쪽 가정이고 (나)(다)는 증명 체계 쪽 가정이다. 고전 논리 안에서는 셋이 서로를 낳는다. (가)가 있으면 진리표 두 줄로 (나)가 항진명제가 되고, (나)와 (다)는 7장의 나머지 규칙만으로 서로 도출된다. 그래서 지금까지는 셋을 구분할 이유가 없었다.
그러나 서로를 낳는다는 것이 고전 논리 안에서의 이야기라는 점이 중요하다. 하나를 빼면 나머지가 자동으로 따라 빠지지 않는다. 어느 것을 빼느냐에 따라 다른 논리가 나온다. 그 갈림길이 이 장의 지도다.
<가정 셋에서 각각 화살표가 어디로 나가는지 보라. (나)와 (다)를 함께 빼면 직관주의, (가)를 빼면 다치논리이고, 목록에 없던 넷째 자리 ⊥E 를 문제 삼으면 또 다른 갈래가 나온다>[원본 보기]
목록에 없는 넷째 자리가 하나 더 있다. 폭발률 ⊥E 다. 이것은 위의 셋과 성격이 달라서, 빼면 고전 논리보다 약해지는 것이 아니라 다른 방향으로 약해진다. 폭발률을 다루는 절에서 따로 본다.
무엇을 뺀다
남는 것의 이름
이 장의 절
(나) 배중률과 (다) 이중부정 제거 — 규칙으로는 IP 하나
직관주의 논리
둘째 절 — 이 장에서 가장 긴 절이다
(가) 진리값이 둘
다치논리 — 클레이니 세 값, 루카시에비치, 퍼지
셋째 절
⊥E 폭발률
관련성 논리 · 준일관 논리
넷째 절
아무것도 빼지 않는다
고전 논리. 18장까지 세운 것
다섯째 절에서 왜 이것을 골랐는지 답한다
예제 256
(가)에서 (나)가 나오는 논증을 6장의 낱말로 적어라. 그 논증의 어느 걸음이 "값이 둘"에 기대는지 정확히 짚어라.
풀이 보기
무엇을 묻는가.⊨𝑃∨¬𝑃 를 보이는 것, 곧 모든 배당이 이 식을 참으로 만든다는 것이다.
논증. 배당 𝑣 를 아무거나 잡는다. 6장의 배당의 정의에 의해 𝑣 는 𝑃 에 값 하나를 준다. 그 값은 T 이거나 F 이다.
¯𝑣(𝑃)=T 이면 ∨ 조항에 의해 ¯𝑣(𝑃∨¬𝑃)=T 다. ¯𝑣(𝑃)=F 이면 ¬ 조항에 의해 ¯𝑣(¬𝑃)=T 이고, 다시 ∨ 조항에 의해 전체가 T 다.
어느 걸음인가. "그 값은 T 이거나 F 이다"라는 문장 하나다. 나머지 두 걸음은 연결자의 조항을 읽은 것뿐이라 값이 몇 개든 그대로 쓸 수 있다. 값을 셋으로 늘리면 이 자리에서 세 번째 경우가 생기고, 다치논리 절에서 보듯 그 경우에는 전체가 참이 되지 않는다.
답이 말이 되는가. 진리표로 하면 이 논증은 두 줄짜리 표가 된다. 줄이 둘인 것 자체가 (가)이고, 표에 세 번째 줄이 없다는 사실이 논증의 전부였던 셈이다.
예제 257
(나)와 (다)는 서로 도출된다. IP 를 쓰지 않고 배중률을 전제로 놓아 이중부정 제거를 도출하라. 곧 𝑃∨¬𝑃,¬¬𝑃⊢𝑃 를 보여라.
풀이 보기
어느 규칙을 쓰는가. 손에 든 것 가운데 주연결자가 ∨ 인 것이 있으므로 8장의 전략대로 ∨E, 곧 경우 나누기로 간다. 두 갈래 모두에서 𝑃 를 얻으면 된다.
줄
논리식
근거
1
𝑃∨¬𝑃
전제
2
¬¬𝑃
전제
3
│ 𝑃
가정
4
│ 𝑃
3 R
5
│ ¬𝑃
가정
6
│ ⊥
5, 2 ¬E
7
│ 𝑃
6 ⊥E
8
𝑃
1, 3–4, 5–7 ∨E
쓴 규칙은 R, ¬E, ⊥E, ∨E 넷이다. IP 는 없다. 그러므로 이 도출은 다음 절에서 만들 직관주의 체계 안에서도 그대로 적을 수 있다.
반대 방향도 된다. 이중부정 제거가 있으면 배중률이 나오는데, 그러려면 먼저 ¬¬(𝑃∨¬𝑃) 를 IP 없이 얻어야 한다. 7장의 여덟 줄짜리 도출에서 마지막 줄만 ¬I 로 바꾸면 정확히 그것이 나온다 — 7장이 그렇게 하면 무엇이 얻어지는지 이미 적어 두었다. 거기에 이중부정 제거를 한 번 쓰면 배중률이다.
답이 말이 되는가. 두 방향이 다 되므로 (나)와 (다)는 증명 체계 안에서 같은 힘을 갖는다. 그래서 둘을 함께 빼거나 함께 넣는다. 하나만 빼는 논리는 없다.
직관주의 논리 — IP 를 뺀다
20세기 초에 브라우어(L. E. J. Brouwer)는 이런 입장을 내놓았다. 수학적 대상은 우리가 구성해야 있는 것이고, 명제는 증명해야 참이다. 이 입장에서는 "𝜑 이거나 ¬𝜑 이다"를 무조건 주장할 수 없다. 그 주장이 성립하려면 어느 쪽인지를 알아야 하는데, 아직 아무도 모르는 명제가 있기 때문이다. 그의 제자 하이팅(Arend Heyting)이 그 입장을 형식 체계로 옮겼다. 그것이 직관주의 논리(intuitionistic logic)다.
놀라운 것은 그 체계가 7장의 목록에서 정확히 한 줄을 지운 것이라는 점이다.
규칙 목록에서 한 줄을 지운다
먼저 표기를 정한다. 이 장부터 도출 가능 기호에 아래첨자를 붙인다.
Γ⊢C𝜑 — 7·11·12장의 규칙 전부를 써서 도출된다. 지금까지 그냥 ⊢ 라고 적어 온 것이 이것이다
Γ⊢I𝜑 — 그 목록에서 IP 만 빼고 도출된다
아래첨자 C 는 classical, I 는 intuitionistic 이다. 도출된다는 것을 부정할 때는 ⊬I 로 적는다. 그리고 곧바로 따라 나오는 사실 하나를 적어 둔다. 직관주의 도출은 고전 도출이기도 하므로, Γ⊢I𝜑 이면 언제나 Γ⊢C𝜑 다. 반대는 성립하지 않고, 이 절이 그 반례들을 모으는 자리다.
<열일곱 줄짜리 목록에서 지워진 줄이 하나뿐이라는 것. 그리고 지워진 줄이 어느 연결자에도 속하지 않는 자리에 있었다는 것 — 7장이 IP 만 성격이 다르다고 적어 둔 이유가 여기서 눈에 보인다>[원본 보기]
규칙
직관주의에 남는가
비고
∧I / ∧E / ∨I / ∨E
남는다
연결자의 뜻을 풀어 쓴 규칙
→I / →E / ↔I / ↔E
남는다
같음
¬I / ¬E
남는다
가정 아래 ⊥ 을 얻어 ¬𝜑 를 적는 쪽은 그대로다
⊥E 폭발률
남는다
이것까지 빼면 최소 논리가 된다. 직관주의는 이것을 지킨다
R 반복
남는다
IP 간접증명
지운다
이 한 줄이 이 절의 전부다
∀I / ∀E / ∃I / ∃E
남는다
변수 조건도 그대로다
=I / =E
남는다
표에서 짚을 것이 둘이다. 첫째, ¬I 는 남는다. 7장이 ¬I 와 IP 를 나란히 놓고 "재료가 같고 마지막 한 걸음만 다르다"고 했는데, 직관주의는 그 한 걸음만 버린다. "𝜑 를 놓았더니 모순이다, 그러므로 ¬𝜑"는 그대로 좋고, "¬𝜑 를 놓았더니 모순이다, 그러므로 𝜑"가 막힌다.
둘째, ⊥E 는 남는다. 직관주의는 폭발률에 불만이 없다. 불만이 있는 것은 폭발률을 다루는 절의 논리들이고, 그 둘은 서로 다른 방향의 이의 제기다. ⊥E 까지 뺀 체계를 최소 논리(minimal logic)라 부르고, 이름만 적어 둔다.
예제 258
7장의 여덟 줄짜리 배중률 도출을 직관주의 체계 안에서 다시 적어 보라. 정확히 어느 줄에서 막히는가. 그리고 막힌 자리까지 얻은 것은 무엇인가.
풀이 보기
어디까지 되는가. 1번부터 7번 줄까지는 쓴 규칙이 가정, ∨I, ¬E, ¬I 뿐이다. 전부 남은 규칙이므로 그대로 적힌다. 7번 줄에서 ⊥ 을 손에 쥔 상태다.
어디서 막히는가. 8번 줄이다. 근거가 "1–7 IP"인데 IP 가 없다. 지울 수 있는 줄이 그 한 줄뿐이라는 것이 이 도출의 요점이었고, 그 한 줄이 정확히 지워졌다.
대신 무엇을 얻는가. 7번 줄까지 왔으면 1번 가정 ¬(𝑃∨¬𝑃) 아래에서 ⊥ 을 얻은 것이다. 그러면 ¬I 를 쓸 수 있다. 얻어지는 것은
⊢I¬¬(𝑃∨¬𝑃)
이다. "배중률의 부정은 모순이다"는 직관주의에서도 정리다. 다만 거기서 "그러므로 배중률"로 건너가지 못한다.
답이 말이 되는가. 이 결과가 직관주의를 오해하지 않는 열쇠다. 직관주의는 배중률을 부정하지 않는다.¬(𝑃∨¬𝑃) 는 직관주의에서도 모순이므로, 배중률을 거짓이라고 주장하는 논리가 아니다. 주장하지 않을 뿐이다. 이 차이가 다음 예제의 정리로 정확해진다.
앞 예제가 확인한 것은 우연이 아니라 정리의 한 사례다. 글리벤코 정리(Glivenko's theorem) — 명제논리에서 ⊢C𝜑 인 것과 ⊢I¬¬𝜑 인 것은 같다. 그러므로 명제논리에서 직관주의는 고전 논리보다 정리가 적은 체계가 아니라 고전 논리를 이중부정 안에 통째로 담고 있는 체계다. 잃은 것은 정리의 목록이 아니라 이중부정을 벗겨 내는 능력 하나다.
술어논리에서는 이대로 성립하지 않는다. 맨 앞에 ¬¬ 를 한 번 붙이는 것으로는 부족하고 안쪽 부분식에도 손을 대야 하는데, 그렇게 손보는 방법이 있고 괴델-겐첸 부정 번역이라 부른다 — 이름만 적어 둔다. 그 번역까지 쓰면 술어논리에서도 고전 논리가 직관주의 안으로 통째로 들어간다. 그래서 "직관주의는 고전 논리의 일부만 인정한다"는 흔한 요약은 부정확하다. 인정하는 범위는 같고 주장하는 방식이 다르다.
무엇을 잃는가
잃는 것을 목록으로 적는다. 아래는 전부 ⊢C 이지만 ⊬I 인 것들이다.
식
이름
고전에서
직관주의에서
𝜑∨¬𝜑
배중률
정리
정리가 아니다
¬¬𝜑→𝜑
이중부정 제거
정리
정리가 아니다. 반대 방향 𝜑→¬¬𝜑 는 정리다
((𝜑→𝜓)→𝜑)→𝜑
페이르스 법칙
정리
정리가 아니다. ¬ 가 하나도 없는데 고전적이다
(¬𝜓→¬𝜑)→(𝜑→𝜓)
대우의 한쪽
정리
정리가 아니다. 반대 방향은 정리다
¬(𝜑∧𝜓)→(¬𝜑∨¬𝜓)
드모르간의 한쪽
정리
정리가 아니다. 나머지 셋은 정리다
(𝜑→𝜓)→(¬𝜑∨𝜓)
함의를 논리합으로
정리
정리가 아니다. 반대 방향은 정리다
¬∀𝑥𝐹𝑥→∃𝑥¬𝐹𝑥
한정사 부정의 한쪽
정리
정리가 아니다. 나머지 셋은 정리다
표에 규칙성이 있다. 잃은 것은 전부 "부정을 지나 긍정으로 나오는" 방향이다. 무언가가 성립하지 않는다는 정보에서 무언가가 성립한다는 정보를 뽑아내는 걸음이 막힌다. 반대 방향, 곧 긍정에서 부정으로 가는 걸음은 하나도 잃지 않았다.
페이르스 법칙이 표에 있는 것을 눈여겨보라. ¬ 도 ⊥ 도 나오지 않는데 직관주의에서 증명되지 않는다. 고전성은 부정에만 숨어 있는 것이 아니다.
그리고 목록에서 가장 실질적인 손실은 정리 하나가 아니라 논증의 방식이다. 수학에서 "그런 것이 없다고 하면 모순이다, 그러므로 있다"로 존재를 보이는 논증이 통째로 막힌다. 다음 예제가 그 전형이다.
예제 259
드모르간 법칙 네 방향 가운데 어느 것이 막히는지 확인하라. 막히는 것 하나에 대해서는 왜 막히는지 말로 설명하라.
풀이 보기
넷을 적는다.¬(𝜑∨𝜓)⊢I¬𝜑∧¬𝜓, ¬𝜑∧¬𝜓⊢I¬(𝜑∨𝜓), ¬𝜑∨¬𝜓⊢I¬(𝜑∧𝜓), ¬(𝜑∧𝜓)⊢I¬𝜑∨¬𝜓. 넷 다 직관주의에서 성립하는지 묻는 것이다.
앞의 셋은 된다. 셋 다 결론의 주연결자가 ¬ 이거나 ∧ 이라 ¬I 와 ∧I 로 만들 수 있다. 예를 들어 셋째는 𝜑∧𝜓 를 가정하고 ¬𝜑∨¬𝜓 에 ∨E 를 써서 어느 갈래에서도 ⊥ 을 얻은 뒤 ¬I 로 닫으면 된다. IP 가 쓰이지 않는다.
넷째가 막힌다. 결론의 주연결자가 ∨ 이므로 ∨I 를 쓰려면 ¬𝜑 나 ¬𝜓 가운데 어느 쪽인지를 손에 쥐어야 한다. 전제 ¬(𝜑∧𝜓) 는 "둘이 함께 성립하지는 않는다"고만 말하고 어느 쪽이 실패하는지는 말하지 않는다. 고전 논리는 IP 로 이 간극을 건너뛴다 — 결론 전체의 부정을 가정하고 모순을 얻는 길이다.
답이 말이 되는가. 이 하나가 막히는 방식이 직관주의 전체를 요약한다. ∨ 를 주장하려면 어느 쪽인지 알아야 한다. 배중률이 막히는 것도 같은 이유였다 — 𝜑 인지 ¬𝜑 인지 모르면서 𝜑∨¬𝜑 를 주장할 수 없다.
예제 260
고전 수학의 유명한 논증 하나. "무리수 𝑎, 𝑏 가 있어서 𝑎𝑏 가 유리수가 된다"를 보인다. √2 를 √2 제곱한 수 √2√2 를 보자(무리수를 지수로 올린 수도 하나로 정해진다는 것은 받아들이고 넘어간다. 여기서 중요한 것은 그 수의 값이 아니라 논증의 모양이다). 이것이 유리수이면 𝑎=𝑏=√2 로 끝난다. 유리수가 아니면 𝑎=√2√2, 𝑏=√2 로 둔다. 거듭제곱을 다시 거듭제곱하면 지수끼리 곱해지므로 𝑎𝑏=√2√2×√2=√22=2 이고 이것은 유리수다. 어느 쪽이든 그런 짝이 있다. 이 논증의 어느 걸음이 직관주의에서 막히는가. 무엇이 문제인가.
풀이 보기
막히는 걸음. "√2√2 는 유리수이거나 유리수가 아니다"라는 첫 문장이다. 배중률을 그 명제에 적용했고, 그 명제가 어느 쪽인지는 논증 안에서 결정되지 않는다.
무엇이 문제인가. 논증이 끝난 뒤에도 짝을 대라고 하면 댈 수 없다. 후보가 둘 나왔는데 어느 쪽이 답인지는 이 논증이 말해 주지 않는다. 존재한다는 것은 보였지만 아무것도 손에 쥐어 주지 않았다.
직관주의의 요구. "그런 것이 있다"를 주장하려면 그것을 하나 내놓아야 한다. 이 논증은 그것을 하지 않는다. 이 명제에 구성적인 증명이 아예 없는 것은 아니다 — 짝을 직접 지정하고 그 두 수가 무리수임을 따로 보이는 증명이 있다. 그러나 그것은 다른 증명이지 위 논증을 고친 것이 아니다. 위 논증에서 짝을 뽑아낼 방법은 없다.
답이 말이 되는가. 덧붙일 것이 하나 있다. 나중에 밝혀진 바로는 √2√2 는 무리수이므로 둘째 경우가 참이다. 그러나 그 사실을 알기 전에도 위 논증은 고전 논리에서 완전한 증명이었다. 고전 논리에서 "존재한다"가 무슨 뜻인지가 이 한 줄에 다 들어 있다.
무엇을 얻는가 — 증명이 구성적이다
규칙을 빼면 증명되는 것이 줄어든다. 줄어드는 대신 남은 증명들이 성질을 갖는다. 무엇이든 증명하는 체계는 아무것도 보장하지 않지만, 까다로운 체계는 그 까다로움만큼을 보장한다.
존재 성질(existence property).⊢I∃𝑥𝐹𝑥 이면 어떤 항 𝑡 에 대해 ⊢I𝐹𝑡 이다
두 문장을 천천히 읽어야 한다. 이것은 "𝜑∨𝜓 가 참이면 둘 중 하나가 참"이라는 당연한 말이 아니다. 증명 체계에 대한 주장이다. 논리합의 증명이 있으면 어느 쪽 조각의 증명이 반드시 따로 있다는 것. 존재 주장의 증명이 있으면 실제로 증인(witness) 하나가 따로 나온다는 것.
두 성질은 "증명이 구성적이다"를 정리로 적은 것이다. 그리고 이 성질이 왜 값어치가 있는지는 고전 논리와 견주면 즉시 보인다.
예제 261
고전 논리는 선언 성질을 만족하지 않는다. 반례를 대라. 그리고 그것이 왜 "고전 논리의 결함"이 아닌지 설명하라.
풀이 보기
반례.⊢C𝑃∨¬𝑃 다. 그런데 ⊬C𝑃 이고 ⊬C¬𝑃 다. 두 부정은 13장의 건전성으로 확인한다 — 𝑃 를 거짓으로 만드는 배당이 있으므로 ⊭𝑃 이고, 건전성의 대우로 ⊬C𝑃 다. ¬𝑃 도 마찬가지다.
그러므로 논리합은 증명되는데 어느 조각도 증명되지 않는다. 선언 성질이 깨진다.
왜 결함이 아닌가. 고전 논리에서 𝜑∨𝜓 는 "어느 한쪽이 참이다"를 뜻하지 "어느 쪽인지 안다"를 뜻하지 않는다. 6장의 ∨ 조항이 그렇게 정해져 있고, 정해진 대로 행동하고 있을 뿐이다. 결함이 되려면 약속을 어겨야 하는데 어긴 것이 없다.
답이 말이 되는가. 두 논리가 같은 기호에 다른 약속을 붙였다는 것이 요점이다. 직관주의의 ∨ 는 더 강한 약속이고, 그래서 그것을 얻기가 더 어렵고, 대신 얻고 나면 더 많은 것을 준다. 좋고 나쁨이 아니라 거래다.
BHK 해석 — 뜻을 증명으로 정한다
6장은 연결자의 뜻을 진리표로 정했다. 𝜑∧𝜓 의 값은 두 조각의 값에서 계산된다는 식이었다. 직관주의는 그 방식을 쓸 수 없다. 진리값 자체를 믿지 않기 때문이다. 대신 이렇게 정한다.
어떤 식의 뜻은 그 식의 증명이 무엇인지로 정한다. 이것을 브라우어-하이팅-콜모고로프 해석, 줄여서 BHK 해석이라 부른다. 여기서 "증명"은 7장의 도출이 아니라 좀 더 넓은 뜻의 구성물이다.
식
그 식의 증명이란
𝜑∧𝜓
𝜑 의 증명과 𝜓 의 증명을 나란히 놓은 쌍
𝜑∨𝜓
어느 쪽인지를 밝히는 표와, 그쪽의 증명. 표가 반드시 붙는다
𝜑→𝜓
𝜑 의 증명을 받아 𝜓 의 증명으로 바꾸는 구성. 곧 함수
⊥
없다. ⊥ 의 증명은 존재하지 않는다
¬𝜑
𝜑→⊥ 의 증명. 곧 𝜑 의 증명이 오면 있을 수 없는 것을 내놓는 구성
∀𝑥𝐹𝑥
정의역의 원소 하나를 받아 그것에 대한 𝐹 의 증명을 내놓는 구성
∃𝑥𝐹𝑥
원소 하나와, 그 원소에 대한 𝐹 의 증명의 쌍
표의 마지막 두 줄이 앞 절의 존재 성질과 같은 말이다. ∃𝑥𝐹𝑥 의 증명은 정의상 원소를 하나 포함한다.
¬𝜑 를 𝜑→⊥ 로 적은 것이 눈에 띌 것이다. 7장은 ¬ 를 따로 놓았지만, 남은 규칙만으로 두 식은 서로 도출된다. 어느 쪽을 원시 기호로 두든 같은 체계가 나오므로 BHK 는 짧은 쪽을 쓴다.
이 해석으로 배중률을 읽어 보면 왜 그것이 받아들여지지 않는지가 즉시 보인다. 𝜑∨¬𝜑 의 증명이라면 "왼쪽"이라는 표와 𝜑 의 증명이거나, "오른쪽"이라는 표와 𝜑 를 반박하는 구성이어야 한다. 그것을 모든 𝜑 에 대해 한꺼번에 내놓으라는 것이 배중률의 요구다. 아직 아무도 증명도 반박도 못 한 명제가 하나라도 있으면 그 요구를 채울 수 없다.
예제 262
BHK 로 ¬¬𝜑 의 증명이 무엇인지 풀어 써라. 그리고 그것이 왜 𝜑 의 증명을 주지 않는지 말하라.
풀이 보기
풀어 쓰기.¬¬𝜑 는 (𝜑→⊥)→⊥ 이다. 그 증명은 "𝜑→⊥ 의 증명을 받아 ⊥ 의 증명을 내놓는 구성"이다. 그런데 ⊥ 의 증명은 존재하지 않는다.
그러므로 ¬¬𝜑 의 증명을 손에 쥐었다는 것은 이런 뜻이 된다. 𝜑 를 반박하는 구성은 결코 나올 수 없다. 만약 나온다면 나의 구성이 그것을 없는 것으로 바꿔 버릴 테니까.
왜 𝜑 를 주지 않는가. 위 문장 어디에도 𝜑 의 증명은 없다. "반박이 불가능하다"와 "증명이 있다"는 다른 것이고, 앞엣것에서 뒤엣것을 뽑아내는 장치가 BHK 표에 하나도 없다. 있어야 할 자리가 비어 있는 것이 아니라 애초에 그런 자리가 없다.
답이 말이 되는가. 고전 논리에서 이 둘이 같아지는 것은 "참이거나 거짓이거나" 둘뿐이어서 반박 불가능이 곧 참이기 때문이다. 13장이 IP 의 건전성 확인에서 "값이 둘뿐이므로"라고 밑줄 그은 문장이 바로 그것이었다. BHK 는 그 자리에 값을 두지 않는다. 그래서 건너뛸 수 없다.
커리-하워드 대응 — 증명이 프로그램이다
BHK 의 표를 다시 보면 오른쪽 칸이 전부 "쌍", "함수", "표를 붙인 값" 같은 말로 되어 있다. 프로그래밍에서 쓰는 말이다. 이것이 우연이 아니라는 것이 커리-하워드 대응(Curry-Howard correspondence)이다.
<왼쪽 줄과 오른쪽 줄이 하나씩 짝지어져 있다는 것. 특히 맨 아래 두 줄 — 증명을 다듬는 일이 프로그램을 실행하는 일이고, IP 에는 짝이 없다>[원본 보기]
논리 쪽
프로그램 쪽
명제
타입
𝜑 의 증명
타입 𝜑 를 갖는 프로그램
𝜑→𝜓
𝜑 를 받아 𝜓 를 돌려주는 함수의 타입
→I 가정을 열고 닫는 일
함수를 정의하는 일. 가정이 매개변수가 된다
→E 전건 긍정
함수를 호출하는 일
𝜑∧𝜓
쌍의 타입. ∧E 는 쌍에서 한쪽을 꺼내는 일
𝜑∨𝜓
어느 쪽인지 표가 붙은 값의 타입. ∨E 는 표를 보고 갈라지는 분기
⊥
값이 하나도 없는 타입
증명에서 군더더기를 없애는 일
프로그램을 실행하는 일
IP
짝이 없다
마지막 줄이 이 절의 요점이다. ¬¬𝜑→𝜑 라는 타입을 갖는 프로그램은 보통의 함수형 언어로는 적을 수 없다. 적으려면 언어에 제어 흐름을 뒤집는 장치를 넣어야 하고, 그런 장치를 넣으면 대응이 고전 논리까지 늘어난다는 것도 알려져 있다. 이름만 적어 둔다.
이 대응 때문에 직관주의 논리는 이론적 호기심으로 남지 않았다. 증명 보조 도구(proof assistant)라 불리는 프로그램들이 이 대응 위에 서 있고, 거기서는 정리를 증명하는 일과 프로그램을 작성하는 일이 같은 일이다. 존재 정리를 증명하면 증인을 계산하는 프로그램이 딸려 나온다. 타입과 프로그램, 그리고 계산이라는 낱말이 무슨 뜻인지는 알고리즘 문서가 다룬다.
크립키 의미론 — 18장의 프레임을 다시 쓴다
여기까지는 증명 체계 쪽 이야기였다. 의미론이 필요하다. 6장의 진리표는 쓸 수 없다 — 값이 둘이면 배중률이 곧바로 항진명제가 되어 버린다.
크립키(Saul Kripke)가 1965년에 답을 냈고, 그 답이 18장에서 양상논리에 쓴 것과 같은 장치다. 세계를 여럿 두고 그 사이에 관계를 놓는다. 달라지는 것은 세계를 무엇으로 읽느냐다.
18장에서 𝑊 의 원소는 가능세계였다. 여기서는 정보 상태다. 지금까지 무엇을 증명해 놓았는가를 나타낸다
18장에서 𝑅 은 접근관계였다. 여기서는 𝑤≤𝑤′ 로 적고 "𝑤′ 는 𝑤 보다 더 알게 된 상태"로 읽는다
≤ 에 거는 조건은 반사적이고 추이적이다. 자기 자신보다 더 알지도 덜 알지도 않고, 더 알고 또 더 알면 더 안 것이다. 18장의 낱말로 하면 S4 의 프레임 조건이다
여기에 조건이 하나 더 붙는다. 지속성(persistence)이다. 원자에 대해, 𝑤 에서 성립하면 𝑤≤𝑤′ 인 모든 𝑤′ 에서도 성립해야 한다. 한 번 증명한 것은 취소되지 않는다는 뜻이다.
강제 관계를 𝑤⊩𝜑 로 적고 "𝑤 가 𝜑 를 강제한다"고 읽는다. 세로줄이 둘인 새 기호다. 6장의 ⊨ 와 굳이 구분하는 까닭은 아래 조항들을 보면 드러난다.
𝑤⊩𝜑∧𝜓 ⟺ 𝑤⊩𝜑 이고 𝑤⊩𝜓
𝑤⊩𝜑∨𝜓 ⟺ 𝑤⊩𝜑 이거나 𝑤⊩𝜓
𝑤⊩𝜑→𝜓 ⟺ 𝑤≤𝑤′ 인 모든𝑤′ 에 대해, 𝑤′⊩𝜑 이면 𝑤′⊩𝜓
𝑤⊩¬𝜑 ⟺ 𝑤≤𝑤′ 인 모든𝑤′ 에 대해 𝑤′⊮𝜑
어떤 𝑤 도 ⊥ 을 강제하지 않는다
셋째와 넷째 조항이 핵심이다. → 와 ¬ 가 그 세계 하나만 보지 않고 앞을 내다본다. 18장에서 그렇게 앞을 내다보는 것은 ◻ 뿐이었고 → 는 그 세계 안에서 진리표대로 처리되었다. 여기서는 연결자 자체가 관계를 쓴다. 기호를 ⊨ 가 아니라 ⊩ 로 달리 적는 이유가 그것이다.
조항이 이렇게 정해지면 지속성이 원자에서 모든 식으로 퍼진다. 확인은 식의 구조에 대한 귀납이고 도구는 13장에서 세웠다. 그리고 이 의미론에 대해 건전성과 완전성이 둘 다 성립한다 — ⊢I𝜑 인 것과 모든 크립키 모형의 모든 세계가 𝜑 를 강제하는 것이 같다. 13·14장이 고전 논리에 대해 한 일을 직관주의에 대해 다시 한 셈이다.
<왼쪽 두 세계짜리 모형에서 w₀ 이 P 도 ¬P 도 강제하지 않는다는 것을 확인하라. 오른쪽 갈래 모형에서는 위쪽 두 세계가 서로 다른 원자를 강제하기 때문에 아래에서 ¬P 도 ¬Q 도 얻지 못한다>[원본 보기]
예제 263
두 세계 𝑤0≤𝑤1 만 있고 𝑃 를 𝑤1 에서만 참으로 놓은 모형을 보자. 이 모형에서 (가) 𝑤0⊩𝑃∨¬𝑃 인가 (나) 𝑤0⊩¬¬𝑃 인가 (다) 𝑤0⊩¬¬𝑃→𝑃 인가.
풀이 보기
먼저 세계마다 원자를 확인한다. 𝑤0⊮𝑃, 𝑤1⊩𝑃 다. 지속성 조건도 어기지 않았다 — 𝑤0 에서 성립하는 원자가 없으므로 지킬 것이 없다.
(가)∨ 조항은 한쪽을 요구한다. 𝑤0⊮𝑃 이므로 오른쪽을 보아야 한다. 𝑤0⊩¬𝑃 이려면 𝑤0 보다 더 아는 모든 세계가 𝑃 를 강제하지 않아야 하는데, 𝑤1 이 강제한다. 그러므로 𝑤0⊮¬𝑃 이고, 둘 다 아니므로 𝑤0⊮𝑃∨¬𝑃 다.
(나)𝑤0⊩¬¬𝑃 이려면 𝑤0 이상의 모든 세계가 ¬𝑃 를 강제하지 않아야 한다. 𝑤0 은 방금 보았듯 강제하지 않는다. 𝑤1 도 강제하지 않는다 — 자기 자신이 𝑃 를 강제하기 때문이다(≤ 가 반사적이라는 조건이 여기서 쓰인다). 그러므로 𝑤0⊩¬¬𝑃 다.
(다)→ 조항을 쓴다. 𝑤0 자신이 ¬¬𝑃 를 강제하는데 𝑃 를 강제하지 않는다. 반례가 되는 세계가 자기 자신이므로 𝑤0⊮¬¬𝑃→𝑃 다.
답이 말이 되는가. 세계 둘짜리 모형 하나가 배중률과 이중부정 제거를 동시에 떨어뜨렸다. 앞 절에서 두 식이 같은 힘이라고 했던 것이 의미론 쪽에서도 확인된다. 그리고 건전성의 대우로 ⊬I𝑃∨¬𝑃 가 확정된다 — 반례 모형 하나로 "도출이 없다"를 말하는 방식은 13장에서 배운 그대로다.
예제 264
드모르간의 막힌 방향 ¬(𝑃∧𝑄)→(¬𝑃∨¬𝑄) 의 반례 모형을 만들어라. 세계 둘로는 왜 안 되는지도 말하라.
풀이 보기
무엇이 필요한가. 어떤 세계에서 ¬(𝑃∧𝑄) 는 강제되고 ¬𝑃∨¬𝑄 는 강제되지 않아야 한다. 뒤엣것이 강제되지 않으려면 ¬𝑃 도 ¬𝑄 도 아니어야 하고, 그러려면 앞으로 𝑃 가 성립하는 세계와 𝑄 가 성립하는 세계가 각각 있어야 한다.
모형. 세계 셋을 둔다. 𝑤0≤𝑤1, 𝑤0≤𝑤2 이고 𝑤1 과 𝑤2 사이에는 관계가 없다. 𝑤1 에서만 𝑃 를, 𝑤2 에서만 𝑄 를 참으로 놓는다.
확인.𝑃∧𝑄 를 강제하는 세계가 하나도 없으므로 𝑤0⊩¬(𝑃∧𝑄) 다. 𝑤0⊩¬𝑃 는 𝑤1 때문에 깨지고, 𝑤0⊩¬𝑄 는 𝑤2 때문에 깨진다. 그러므로 𝑤0⊮¬𝑃∨¬𝑄 이고, → 조항에 의해 𝑤0 이 전체 식을 강제하지 않는다.
세계 둘로는 왜 안 되는가.𝑤0 위에 세계가 하나뿐이면 그 세계는 𝑃 와 𝑄 를 함께 강제하거나 적어도 한쪽을 강제하지 않는다. 함께 강제하면 ¬(𝑃∧𝑄) 가 깨지고, 한쪽을 강제하지 않으면 그쪽의 부정이 𝑤0 에서 성립해 ¬𝑃∨¬𝑄 가 얻어진다. 갈라지는 자리가 있어야 한다.
답이 말이 되는가. 반례 모형의 모양이 앞 예제에서 말로 한 설명과 정확히 같다. "둘이 함께는 안 되지만 어느 쪽이 실패하는지는 모른다"가 그림으로는 갈래 둘이다. 크립키 의미론의 값어치가 이런 데 있다 — 막히는 이유를 그림 하나로 보여 준다.
마지막으로 18장과의 관계를 정확히 적어 둔다. 직관주의 식의 모든 부분식 앞에 ◻ 를 붙이는 번역이 있고, 그 번역을 거치면 직관주의 정리가 정확히 S4 의 정리가 된다. 괴델이 1933년에 알아차렸다. 프레임 조건이 같았던 것이 우연이 아니라는 증거이고, 18장과 이 장이 같은 장치를 두 번 쓴 것이 아니라 같은 구조를 두 각도에서 본 것임을 뜻한다.
다치논리 — 값을 셋 이상으로
이제 (가)를 뺀다. 진리값을 셋 이상 둔다.
세 번째 값에 무엇을 읽히느냐에 따라 체계가 갈린다. 가장 널리 쓰이는 것이 클레이니(Kleene)의 세 값이고, 세 번째 값을 U 로 적고 미정(undefined) 으로 읽는다. 참인지 거짓인지 아직 정해지지 않았다는 뜻이지, 참과 거짓 사이의 중간이라는 뜻이 아니다.
진리표를 다시 만들어야 한다. 만드는 원칙은 하나다. 미정인 자리에 참이나 거짓 어느 것을 넣어도 결과가 같으면 그 결과를 쓰고, 달라지면 미정으로 둔다.
<표에서 색이 다른 칸만 보면 된다. 그 칸이 미정인 입력을 받고도 값이 정해지는 자리다 — 다른 입력 하나가 결과를 이미 결정해 버린 경우다>[원본 보기]
𝜑
𝜓
¬𝜑
𝜑∧𝜓
𝜑∨𝜓
𝜑→𝜓
T
U
F
U
T
U
U
T
U
U
T
T
U
F
U
F
U
U
F
U
T
F
U
T
U
U
U
U
U
U
값이 둘인 아홉 칸은 6장 그대로이므로 적지 않았다. 그리고 낱말 하나가 새로 필요하다. 값이 셋이면 "참" 대신 지정값(designated value) 을 정해야 한다. 논증이 타당하다는 것은 전제가 전부 지정값을 받으면 결론도 지정값을 받는다는 뜻이 된다. 클레이니의 체계에서 지정값은 T 하나다.
왜 값을 늘리는가. 억지로 만든 문제가 아니다. 셋을 든다.
부분 함수. 프로그램에서 1/𝑥 는 𝑥=0 일 때 값이 없다. "1/0>1" 은 참도 거짓도 아니다. 클레이니가 이 표를 만든 것이 정확히 계산 가능성 이론에서 정의되지 않은 값을 다루기 위해서였다
미래 우연. 아리스토텔레스가 든 예다 — "내일 해전이 있을 것이다"는 오늘 참인가 거짓인가. 오늘 이미 참이라면 내일 일은 이미 정해진 것이 된다. 루카시에비치가 이 물음 때문에 세 값 체계를 만들었다
데이터베이스의 NULL. 값이 없는 칸을 비교하면 결과가 참도 거짓도 아니다. 실제 데이터베이스 언어가 세 값 논리를 쓰고, 조건이 미정인 행은 결과에서 빠진다
4장이 "정도" 를 나타내는 낱말 — 덥다, 키가 크다 — 을 옮길 때 참과 거짓 둘로 갈라야 해서 중간이 없어진다고 적고 이 장을 가리켰다. 그 자리를 다루는 갈래가 퍼지 논리(fuzzy logic) 다. 값을 셋이 아니라 0 과 1 사이의 실수 전부로 두고 정도를 값으로 삼는다. 이름만 적어 둔다.
루카시에비치의 세 값 체계는 클레이니의 표와 딱 한 칸이 다르다. U→U 를 T 로 둔다. 그 한 칸 때문에 𝑃→𝑃 가 항진명제가 되고, 그런데도 배중률은 여전히 항진명제가 아니다. 표 한 칸이 체계의 성격을 바꾼다.
예제 265
클레이니의 표에서 T∧U=U 인데 F∧U=F 다. 왜 다른가. 그리고 F→U 의 값을 원칙에서 끌어내라.
풀이 보기
원칙을 다시 읽는다. 미정인 자리에 T 를 넣어 보고 F 를 넣어 본다. 두 결과가 같으면 그 값이고 다르면 U 다.
T∧U.T∧T=T 이고 T∧F=F 다. 달라진다. 그러므로 U.
F∧U.F∧T=F 이고 F∧F=F 다. 같다. 그러므로 F. F 한쪽이 이미 결과를 정해 버렸으므로 나머지 한쪽을 몰라도 된다.
F→U.F→T=T 이고 F→F=T 다. 같으므로 T 다. 6장이 확정한 "전건이 거짓이면 조건문은 참"이 세 값에서도 그대로 살아 있다.
답이 말이 되는가. 이 원칙은 프로그램의 단축 평가와 같은 것이다. F∧𝑥 는 𝑥 를 계산하지 않고 F 를 내놓는다. 클레이니가 계산 가능성 이론에서 이 표를 만든 것이 우연이 아니다.
예제 266
클레이니의 세 값에서 배중률 𝑃∨¬𝑃 는 항진명제인가. 그리고 문장문자와 연결자만으로 만든 식 가운데 항진명제가 하나라도 있는가.
풀이 보기
배중률.𝑃 에 U 를 준다. ¬𝑃 도 U 다. U∨U=U 이고 지정값은 T 하나이므로 항진명제가 아니다. 첫 절의 예제가 예고한 "세 번째 경우"가 정확히 이것이다.
항진명제가 있는가. 없다. 논증은 한 줄이다 — 모든 문장문자에 U 를 주자. 표를 보면 ¬U=U 이고 U 끼리의 ∧, ∨, → 도 전부 U 다. 그러므로 어떤 식이든 U 를 받는다. 5장의 재귀적 정의를 따라 올라가는 짧은 귀납이다.
단서 하나.⊥ 을 쓰면 사정이 다르다. ⊥ 은 늘 F 이므로 ¬⊥ 은 늘 T 다. 그래서 주장을 "문장문자와 연결자만으로 만든 식"으로 좁혔다.
답이 말이 되는가. 항진명제가 없다는 것은 이 논리가 쓸모없다는 뜻이 아니다. 이 체계에서 값어치 있는 것은 정리 목록이 아니라 타당한 논증의 목록이다. 전건 긍정은 여전히 타당하다 — 𝜑 와 𝜑→𝜓 가 둘 다 T 이면 표를 훑어 𝜓 도 T 임을 확인할 수 있다.
예제 267
데이터베이스에 나이 칸이 비어 있는 사람이 있다. "나이가 30 미만인 사람"을 뽑고, 이어서 "나이가 30 미만이 아닌 사람"을 뽑았다. 두 결과를 합치면 전체가 되는가. 세 값 논리로 설명하라.
풀이 보기
무엇을 묻는가.𝜑 로 뽑은 것과 ¬𝜑 로 뽑은 것을 합치면 전체인가. 이것이 배중률을 실무의 말로 옮긴 물음이다.
답은 아니다. 나이 칸이 빈 사람에 대해 "나이 < 30" 은 U 다. 조건이 U 인 행은 결과에 넣지 않는다는 것이 이 체계의 규칙이므로 첫 질의에서 빠진다. 그 사람에 대해 "나이 < 30 이 아니다" 는 ¬U=U 이므로 둘째 질의에서도 빠진다.
그러므로 두 결과를 합쳐도 그 사람은 어디에도 없다. 합집합이 전체가 되지 않는다.
답이 말이 되는가. 배중률이 깨진다는 추상적인 말이 "행 하나가 사라진다"는 구체적인 사고로 나타난 것이다. 실무에서 이 함정에 걸리는 사람이 많은데, 그것은 세 값 논리를 쓰면서 머릿속으로는 두 값 논리를 굴리기 때문이다. 어느 논리로 계산되고 있는지 아는 것이 곧 실무 지식이다.
관련성 논리와 준일관 논리 — 폭발률을 문제 삼는다
세 가정 목록에 없던 넷째 자리다. 6장은 만족가능하지 않은 집합이 무엇이든 귀결로 갖는다는 것을 정의에서 끌어내며 "이상하게 느껴지는 것이 정상"이라고 적었고, 7장은 그것을 ⊥E 라는 규칙으로 놓으며 같은 말을 되풀이했다. 두 장 모두 19장이 되돌아온다고 적었다.
문제는 이것이다. "달은 치즈로 되어 있고 치즈로 되어 있지 않다. 그러므로 오늘 비가 온다"는 타당한 논증인가. 고전 논리에서는 타당하다. 전제가 만족가능하지 않으므로 정의에 걸린다.
불만은 관련성에 있다. 결론이 전제와 아무 상관이 없는데도 따라 나온다. 6장이 실질함의에서 관련성을 잃었다고 적은 것과 같은 자리다.
<가운데 네 줄이 ⊥ 를 한 번도 쓰지 않고 폭발을 만든다는 것이 이 그림의 핵심이다. 그래서 아래 칸이 셋이 된다 — 폭발을 막으려면 그 셋 가운데 하나를 골라 버려야 하고, 무엇을 버리느냐가 맨 아래 두 갈래를 가른다>[원본 보기]
예제 268
⊥E 를 규칙에서 빼기만 하면 폭발이 멈추는가. 다음 논증을 보라. 전제 𝑃 와 ¬𝑃 에서 ∨I 로 𝑃∨𝑄 를 얻고, 여기에 선언 삼단논법(𝜑∨𝜓 와 ¬𝜑 에서 𝜓)을 쓰면 𝑄 가 나온다.
풀이 보기
답은 아니다. 위 논증에는 ⊥ 이 한 번도 나오지 않는다. 쓴 것은 ∨I 와 선언 삼단논법 둘뿐이다. 20세기 초에 루이스(C. I. Lewis)가 이 논증으로 폭발이 다른 규칙들에 이미 숨어 있음을 보였다.
그러므로 선택해야 한다. 폭발을 막으려면 셋 가운데 적어도 하나를 버려야 한다 — ⊥E, ∨I, 선언 삼단논법.
∨I 를 버리기는 어렵다. 7장이 "정보를 버리는 규칙"이라고 한 그 규칙이고, 이것 없이는 ∨ 를 만들 방법이 사실상 없다. 그래서 대부분의 갈래가 선언 삼단논법을 버린다. 낯설게 들리지만 이유가 있다 — 𝑃∨𝑄 를 𝑃 하나에서 만들었다면, 그 논리합은 𝑄 에 대해 아무 정보도 담고 있지 않다. 그런 논리합에 삼단논법을 적용하는 것이 속임수라는 것이다.
참고로 7장의 체계 안에서는 선언 삼단논법 자체가 ⊥E 를 써서 도출된다. 그러므로 셋은 따로 놓인 규칙이 아니라 한 묶음이다. 하나를 건드리면 나머지가 따라 움직인다.
답이 말이 되는가. 이 예제의 값어치는 "규칙 하나를 빼면 된다"는 기대를 무너뜨리는 데 있다. 직관주의 절에서 IP 를 뺀 것은 운이 좋았던 것이다 — IP 는 정말로 다른 규칙에서 나오지 않는 독립적인 규칙이었다. 폭발은 그렇지 않다.
예제 269
관련성 논리는 변수 공유(variable sharing) 를 요구한다. 𝜑→𝜓 가 정리이려면 𝜑 와 𝜓 가 문장문자를 적어도 하나 공유해야 한다. 이 요구로 어떤 고전 정리가 걸러지는지 둘을 대라.
풀이 보기
첫째, 폭발.(𝑃∧¬𝑃)→𝑄 는 고전 정리다. 그런데 왼쪽에는 𝑃 만, 오른쪽에는 𝑄 만 있다. 공유하는 문장문자가 없으므로 걸러진다.
둘째, 약화.𝑃→(𝑄→𝑃) 도 고전 정리다. 여기서는 𝑃 를 공유하지만, 안쪽 조건문 𝑄→𝑃 만 떼어 놓고 보면 공유가 없다. 관련성 논리는 이 식도 버린다. 6장이 "후건이 참이기만 하면 조건문이 참"이라고 확정한 그 칸이 여기서 대가를 치른다.
왜 이 요구인가. 조건문이 "앞엣것이 뒤엣것과 관계가 있다"를 담기를 바라는 것이고, 문장문자를 공유하지 않으면 관계가 있을 수 없다는 것이다. 최소한의 요구이지 충분한 요구는 아니다.
답이 말이 되는가. 이 갈래에 준일관 논리(paraconsistent logic) 가 이웃해 있다. 비일관적인 집합이 있어도 모든 것을 도출하지는 않는 논리를 그렇게 부른다. 서로 부딪히는 조항이 들어 있는 법전, 갱신이 어긋난 데이터베이스, 아직 정리되지 않은 과학 이론처럼 모순을 안고도 계속 추론해야 하는 상황이 실제로 있다. 고전 논리에서는 그런 상황에서 모든 문장이 도출되므로 추론이 아무 정보도 주지 않는다. 이 문서는 이 갈래를 이름과 문제의식으로만 남긴다.
이 문서가 왜 고전 논리를 골랐는가
정직하게 답할 차례다. 이유는 셋이고, 셋 다 "고전 논리가 참이기 때문"이 아니다.
표준이다. 수학책과 컴퓨터과학 교재의 기본값이 고전 논리이고, 다른 논리를 설명할 때조차 비교 기준이 고전 논리다. 이 장이 방금 그렇게 했다 — 절마다 "고전에서는 되는데"에서 이야기를 시작했다
수학의 실제 관행이다. 대부분의 수학자가 배중률을 의식하지 않고 쓴다. 해석학과 대수학의 존재 정리 상당수가 비구성적이고, 그것을 문제 삼는 수학자는 소수다. 이 문서의 독자가 다른 수학을 읽을 때 만나는 것은 고전 논리다
메타이론이 가장 잘 정리돼 있다. 13장의 건전성, 14장의 완전성, 15장의 컴팩트성과 뢰벤하임-스콜렘, 16장의 결정불가능성, 17장의 불완전성이 모두 고전 1차 논리에 대한 정리다. 다른 논리에도 대응물이 있지만 훨씬 늦게, 훨씬 어렵게 나왔고 어떤 것은 아직 정리되지 않았다
그러나 유일한 선택은 아니었다. 그리고 그것을 감추면 이 문서가 한 일이 무엇인지 흐려진다. 어느 논리를 골랐는지는 "증명했다"가 무슨 뜻인지의 일부다. 같은 정리를 고전적으로 증명한 것과 구성적으로 증명한 것은 다른 것을 손에 쥐어 준다.
예제 270
이 장의 크립키 반례 예제로 돌아가자. "⊬I𝑃∨¬𝑃 이다"를 확정한 논증에서, 메타언어가 고전 논리를 쓴 자리를 찾아라.
풀이 보기
논증의 모양. 반례 모형을 하나 들었다. 그 모형에서 𝑤0 이 𝑃∨¬𝑃 를 강제하지 않는다. 건전성에 의해 도출이 있으면 모든 모형이 강제해야 한다. 그러므로 도출이 없다.
고전 논리를 쓴 자리. 마지막 걸음이다. "도출이 있다고 하면 어긋난다, 그러므로 도출이 없다" — 메타언어에서 귀류법을 썼다. 13장이 IP 의 건전성을 확인할 때도 같은 지적을 했다.
더 있다. 세계마다 "𝑃 를 강제하는가" 를 따질 때 강제하거나 강제하지 않거나 둘 중 하나라고 놓았다. 대상언어에서는 배중률을 인정하지 않으면서 메타언어에서는 배중률을 썼다.
답이 말이 되는가. 이것은 흠이 아니라 사실이다. 직관주의를 연구하는 일과 직관주의로 연구하는 일은 다른 일이고, 이 장은 앞엣것을 했다. 뒤엣것도 가능하며 그렇게 만든 직관주의 메타이론이 실제로 있다. 다만 이 문서의 메타언어는 처음부터 끝까지 고전 논리였고, 그 사실이 이 절의 첫째 이유를 가장 잘 보여 준다.
예제 271
어떤 정리를 고전적으로 증명해 놓고 "구성적으로도 증명된다"고 말하려면 무엇을 더 해야 하는가. 앞에서 나온 정리 하나를 예로 들어 설명하라.
풀이 보기
무엇이 부족한가. 고전 증명이 있다고 해서 구성적 증명이 딸려 나오지 않는다. 글리벤코 정리가 주는 것은 ⊢I¬¬𝜑 뿐이고, 이중부정을 벗겨 내는 일이 정확히 남는 일이다.
예. 14장의 완전성 정리를 보자. 증명이 린덴바움 구성으로 극대 일관 집합을 만드는데, 그 구성이 "각 문장에 대해 넣을 수 있으면 넣는다"는 갈래 나누기를 무한히 되풀이한다. 갈래를 나눌 때마다 배중률을 쓰는 셈이다. 14장이 "IP 는 둘째 방향에서 쓴다"고 짚어 둔 자리도 같은 이야기다.
그래서 무엇을 해야 하는가. 정리를 다시 진술해야 하는 경우가 많다. 구성적으로 참인 형태로 약하게 고치거나, 추가 가정을 붙이거나, 아예 다른 증명을 찾아야 한다. 완전성 정리의 구성적 판본이 있기는 하지만 진술이 고전 판본과 같지 않다.
답이 말이 되는가. 이것이 "고전 논리는 유일한 선택이 아니었다"의 실제 무게다. 논리를 바꾸는 일은 기호 하나를 바꾸는 일이 아니라 지어 놓은 정리들을 하나씩 다시 검사하는 일이다. 이 문서가 고전 논리를 고른 셋째 이유가 바로 그 검사가 이미 끝나 있다는 것이었다.
이 장에서 새로 나온 것
기호 · 용어
뜻
고전 논리
18장까지 이 문서가 세운 논리. 가정 셋 위에 선다 — 진리값 둘, 배중률, 이중부정 제거
⊢C · ⊢I
규칙 전부를 써서 도출된다 · IP 만 빼고 도출된다. ⊢I 이면 언제나 ⊢C 이고 역은 아니다
직관주의 논리
7장의 목록에서 IP 한 줄을 지운 체계. 브라우어의 입장을 하이팅이 형식화했다
최소 논리
거기서 ⊥E 까지 뺀 체계. 이름만 적었다
배중률 · 이중부정 제거
𝜑∨¬𝜑 · ¬¬𝜑 에서 𝜑. 증명 체계 안에서 같은 힘이다
페이르스 법칙
((𝜑→𝜓)→𝜑)→𝜑. ¬ 없이도 고전적일 수 있다는 예
글리벤코 정리
명제논리에서 ⊢C𝜑 이면 그리고 그때만 ⊢I¬¬𝜑. 술어논리에서는 괴델-겐첸 번역이 필요하다
선언 성질 · 존재 성질
⊢I𝜑∨𝜓 이면 한쪽이 따로 도출된다 · ⊢I∃𝑥𝐹𝑥 이면 증인이 나온다. 고전 논리는 둘 다 만족하지 않는다
BHK 해석
연결자의 뜻을 진리값이 아니라 증명이 무엇인지로 정하는 방식. ¬𝜑 는 𝜑→⊥ 로 읽는다
커리-하워드 대응
명제는 타입이고 증명은 프로그램이며 증명을 다듬는 일은 계산이다. IP 에는 짝이 없다
크립키 모형(직관주의)
⟨𝑊,≤⟩ 와 원자의 배정. ≤ 는 반사적이고 추이적이며 원자에 지속성이 걸린다
강제 𝑤⊩𝜑
세로줄이 둘인 기호. → 와 ¬ 의 조항이 더 아는 모든 세계를 내다본다는 점이 ⊨ 와 다르다
지속성
한 번 성립한 것은 더 아는 세계에서도 성립한다. 원자에 걸면 모든 식으로 퍼진다
괴델 번역
부분식마다 ◻ 를 붙이면 직관주의 정리가 S4 의 정리가 된다. 18장의 프레임 조건이 같았던 까닭
다치논리 · 지정값
진리값을 셋 이상 두는 논리 · 그 가운데 ‘참에 해당하는’ 값들. 타당성을 지정값으로 다시 정의한다
클레이니 세 값 U
미정. 미정 자리에 참·거짓 어느 것을 넣어도 결과가 같으면 그 값, 다르면 U
루카시에비치 세 값 · 퍼지 논리
U→U 만 T 로 바꾼 체계 · 값을 0 과 1 사이 실수로 두는 체계. 이름만
폭발률의 문제
결론이 전제와 무관해도 따라 나온다. 루이스 논증이 ⊥E 없이도 폭발을 만든다
관련성 논리 · 변수 공유
𝜑→𝜓 가 정리이려면 문장문자를 공유해야 한다는 요구
준일관 논리
비일관적인 집합에서도 모든 것을 도출하지는 않는 논리. 이름과 문제의식만 적었다
챙겨 갈 것은 다섯이다.
한 줄이 논리 하나를 만든다. 규칙 열일곱 개(명제 열셋과 한정사 넷) 가운데 IP 한 줄을 지우면 직관주의가 된다. 잃는 것은 배중률, 이중부정 제거, 드모르간의 한쪽, 그리고 귀류법으로 존재를 보이는 논증 전부다
잃는 대신 얻는 것이 있다. 선언 성질과 존재 성질. 증명이 구성적이라는 것을 정리로 적은 것이고, 커리-하워드 대응을 통해 프로그램이 된다
가정 셋은 서로 다른 것이다. 진리값 둘, 배중률, 이중부정 제거. 뒤의 둘은 같은 힘이지만 첫째와는 다르고, 첫째만 빼면 다치논리라는 다른 갈래가 나온다
18장의 장치가 여기서 다시 쓰인다. 크립키 프레임에 S4 의 조건을 걸고 세계를 정보 상태로 읽으면 직관주의 논리의 의미론이 된다. 괴델 번역이 그 일치를 정리로 확정한다
고전 논리는 골라진 것이다. 표준이고 관행이고 메타이론이 갖춰졌기 때문이지, 다른 것이 틀렸기 때문이 아니다
본문은 여기서 끝난다. 3장에서 "좋은 논증이란 무엇인가"를 물으며 시작해, 그 물음에 답하는 체계를 하나 짓고, 그 체계로 무엇을 할 수 있고 무엇을 할 수 없는지를 13장부터 17장까지 재고, 18장과 19장에서 그 체계 자체가 여럿 가운데 하나였음을 보았다. 처음의 물음은 여전히 답을 다 받지 못했지만, 이제는 그 물음이 왜 어려운지를 안다. 좋은 논증인지 판정하려면 어떤 논리로 판정할지를 먼저 정해야 하고, 그 정함은 논리 안에서 정당화되지 않는다.
그것이 나쁜 소식은 아니다. 17장이 형식 체계의 한계를 보였을 때와 같다 — 한계를 정확히 아는 일이 그 안에서 하는 일을 더 단단하게 만든다. 이 문서가 지은 고전 1차 논리는 여전히 서 있고, 이제 그 옆에 무엇이 있는지도 안다. 다음 장은 여기서 갈라지는 길들을 안내한다.
더 공부할 것
이 문서는 형식 논리의 골격과 그 체계에 대한 메타이론까지다. 여기서 갈라지는 길을 정리해 둔다. 각 분야가 이 문서의 어느 부분을 확장한 것인지 함께 적었다.
이 사이트 안에서 이어지는 문서
Mathematics for Computer Science — 이 문서와 짝을 이룬다. 5·6장과 9·10장이 요약하고 지나간 것(진리표 계산, 명제 대수, 정규형, SAT, 한정사의 실전 용법)이 그쪽에 자세하다. 반대로 그쪽이 ‘형식화가 멈춘다’고 적은 자리가 이 문서의 출발점이었다.
알고리즘 — 6장의 지수 폭발이 그쪽 13장의 P·NP 로, 16장의 결정불가능성이 그쪽의 계산 복잡도로 이어진다. 이 문서가 ‘할 수 있는가’를 물었다면 그쪽은 ‘얼마나 빨리’를 묻는다.