함께 시작해 볼까요?
A[t/x]가 바꾸는 자유 출현을 구별하고 상수·변수·함수항의 대입을 연습합니다. 변수 포획의 구체적 반례, 대입 가능성 조건, 안전한 속박변수 이름 변경을 익힌 뒤 대입 보조정리를 두 계산 경로로 읽습니다. 항의 값은 원래 배정에서 먼저 구한다는 점과, 원자식·연결사·양화사에 대한 구조적 증명 단계를 설명합니다.
대입하면 원래 식과 언제나 같은 값이 되나요?
무엇과 무엇을 비교하는지부터 분명히 합니다.
제목이 “뜻을 지켜 준다”니까 P(x)의 x를 b로 바꾸어도 값이 같다는 뜻인가요?
비교할 대상을 정확히 정해야 합니다. 3편의 구조를 다시 쓰겠습니다. P는 서류 제출, Q는 확인 도장, f는 지정 연락인, R은 인사한 관계입니다. 이름과 배정도 아래처럼 고정합니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 항목 | 내용 |
|---|---|
| 영역 D | 아라·보라·찬우 세 사람 |
| 이름 | aᴹ=아라, bᴹ=보라, kᴹ=아라 |
| 성질 | Pᴹ={아라,찬우}, Qᴹ={아라,보라} |
| 함수 | fᴹ: 아라↦보라, 보라↦찬우, 찬우↦아라 |
| 관계 | Rᴹ={(아라,보라),(보라,찬우),(찬우,아라)} |
| 기본 배정 g | x에는 아라, y에는 보라, 그 밖의 모든 변수에는 아라 |
기본 g에서 P(x)는 참입니다. 그런데 x 자리에 b를 써 넣은 P(b)는 거짓입니다. bᴹ는 보라이고 보라는 P가 아니기 때문입니다. 안전하게 대입했다고 해서 원래 식과 같은 배정에서 같은 값을 갖는다는 보장은 없습니다.
그러면 대입이 무엇을 보존한다는 것인가요?
P(b)를 원래 g에서 읽는 결과는, x의 배정을 b가 가리키는 보라로 바꾸고 원래 P(x)를 읽는 결과와 같습니다. 두 경우 모두 보라가 서류를 냈는지 확인합니다. 이 두 계산 경로가 일치한다는 것이 이번 편의 목표입니다.
M,g⊨P(x)가 참이면 M,g⊨P(b)도 반드시 참인가요?
답과 풀이 확인하기
반드시 참인 것은 아닙니다. 이번 구조에서는 P(x)는 참이고 P(b)는 거짓입니다.
대입 결과와 비교할 것은 원래 배정의 P(x)가 아니라, x에 b의 값을 준 배정에서의 P(x)입니다.
A[t/x]는 어느 x를 바꾸라는 표시인가요?
식 전체에서 자유롭게 남은 출현을 찾아 바꿉니다.
대괄호 안의 t/x는 나누기처럼 보이네요. 어떻게 읽나요?
A[t/x]는 “식 A의 자유로운 x 자리에 항 t를 대입한 결과”라고 읽습니다. t/x는 분수가 아닙니다. A는 식 전체를, t는 항 전체를 대신 부르는 설명용 표시입니다. 양화사에 이미 묶인 x의 출현은 이 대입으로 바꾸지 않습니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 원래 식 A | A[a/x] | 이유 |
|---|---|---|
| P(x) | P(a) | 이 x는 자유롭습니다. |
| R(x,x) | R(a,a) | 자유로운 x의 두 출현을 모두 바꿉니다. |
| R(x,y)∧∀xP(x) | R(a,y)∧∀xP(x) | 왼쪽 x만 자유롭고 오른쪽 x는 ∀x가 맡습니다. |
| ∀xR(x,y) | ∀xR(x,y) | 식 전체에 자유로운 x가 없습니다. |
∀xR(x,y) 안에는 x가 보이는데도 그대로군요.
눈에 보이는 글자를 모두 바꾸는 작업이 아니기 때문입니다. 이 전체 식에서 x는 ∀x가 맡습니다. 다만 전칭문에서 그 양화사를 벗겨 몸통 R(x,y)를 따로 보면, 몸통의 x는 자유 출현입니다. 어느 식 전체를 A로 삼았는지 먼저 확인하세요.
(P(x)∧∃xQ(x))[a/x]의 결과는 무엇인가요?
답과 풀이 확인하기
P(a)∧∃xQ(x)입니다.
왼쪽 P의 x는 자유롭습니다. 오른쪽 Q의 x는 ∃x에 묶여 있으므로 그대로 둡니다.
R(x,y)에서 x를 a로 바꿀 때 y도 같은 a로 바꾸나요?
답과 풀이 확인하기
바꾸지 않습니다. 결과는 R(a,y)입니다.
한 번의 [a/x]는 지정한 변수 x의 자유 출현만 바꿉니다. 다른 변수의 출현은 그대로 둡니다.
함수항을 넣을 때에는 몇 번 바꾸나요?
원래 자리마다 항 전체를 한 번 넣고, 새로 넣은 항을 다시 대입하지 않습니다.
x 자리에 f(x)를 넣으면 새로 생긴 x도 또 바꾸나요?
한 번의 대입에서는 원래 식이나 항에 있던 대상 자리만 바꿉니다. 넣을 항 f(x) 안의 x를 끝없이 다시 바꾸지 않습니다. 예를 들어 원래 항 f(x)의 안쪽 x 한 자리에 f(x)를 한 번 넣으면 f(f(x))가 됩니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 원래 항 s | 넣을 항 t | s[t/x] |
|---|---|---|
| x | f(x) | f(x) |
| f(x) | f(x) | f(f(x)) |
| f(f(x)) | a | f(f(a)) |
| a | f(y) | a |
| y | f(x) | y |
상수 a나 다른 변수 y에서는 대입이 멈추는군요.
네. 항의 재귀적 대입은 다음처럼 정합니다. x를 만나면 t를 내놓고, 다른 변수와 상수는 그대로 둡니다. 함수항에서는 각 입력 항에 대입한 결과를 같은 함수기호로 다시 묶습니다. 이 정의가 “한 번의 대입”의 범위를 정해 줍니다.
P(f(x))[f(x)/x]의 결과는 무엇인가요?
답과 풀이 확인하기
P(f(f(x)))입니다.
원래 f(x)의 안쪽 x 자리에 f(x)를 한 번 넣었습니다. 새로 들어온 f(x) 안의 x까지 같은 작업에서 다시 바꾸지 않습니다.
R(x,y)에 먼저 [y/x], 그 결과에 [x/y]를 순서대로 적용하면 R(y,x)가 되나요?
답과 풀이 확인하기
R(x,x)가 됩니다.
첫 대입으로 R(y,y)가 됩니다. 그다음 대입은 그 결과의 두 y를 모두 x로 바꾸므로 R(x,x)가 됩니다. 순차 대입은 두 변수의 이름을 동시에 안전하게 교환하는 작업과 다릅니다.
자유로운 자리에 넣기만 하면 항상 안전한가요?
들어가는 항의 변수가 새 양화사에 잡힐 수 있습니다.
A=∃yR(x,y)에서 자유로운 x를 y로 바꾸면 ∃yR(y,y)인가요?
그렇게 글자만 바꾸면, 원래 바깥 배정에서 값을 받아야 할 넣은 y가 ∃y에 붙잡힙니다. 이것이 변수 포획입니다. 이번 편에서는 포획이 생기는 이런 교체를 허용된 대입으로 취급하지 않습니다. 구체적인 값을 비교해 보겠습니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 경로 | 평가할 내용 | 결과 |
|---|---|---|
| 의도한 대상 바꾸기 | y의 원래 값 보라를 x에 주고 ∃yR(x,y)를 평가 | 참: 보라가 찬우에게 인사했습니다. |
| 포획된 글자 교체 | 원래 g에서 ∃yR(y,y)를 평가 | 거짓: 자기 자신에게 인사한 사람은 없습니다. |
첫 경로에서는 x가 보라로 고정된 뒤, 안쪽 y는 인사받은 상대를 다시 고르는군요.
그렇습니다. 두 자리의 역할이 유지되어야 합니다. 그런데 포획된 식은 하나의 양화사가 R의 두 자리를 함께 움직여 “자기 자신에게 인사한 사람”을 찾게 만들었습니다. 원래 넣으려던 항 y의 바깥 값이 사라졌습니다.
이 반례에서 원래 y의 값은 누구이고, 존재식의 증거로 고르는 안쪽 y의 값은 누구인가요?
답과 풀이 확인하기
원래 배정의 y는 보라이고, 의도한 경로에서 안쪽 존재양화사의 증거는 찬우입니다.
x에 보라를 넣어 보라의 인사 상대를 찾습니다. R(보라,찬우)가 성립하므로 찬우가 증거가 됩니다. 원래 y의 값과 안쪽에서 새로 정한 값이 같은 역할을 하지 않습니다.
대입 가능성은 어떤 자리들을 확인하나요?
바꿀 x의 자리마다, 지나온 양화사와 항 안의 변수를 비교합니다.
포획을 피하는 조건을 한 문장으로 정할 수 있나요?
항 t가 식 A의 x에 대입 가능하다, 영어로 “free for x in A”라고 할 조건은 다음과 같습니다. A의 자유로운 x의 어느 출현도, t에 들어 있는 변수를 묶는 양화사의 범위 안에 놓여 있지 않아야 합니다. 항에는 양화사가 없으므로 항의 변수들을 그대로 살피면 됩니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 식 A | 넣을 항 t | 대입할 변수 | 가능한가요? |
|---|---|---|---|
| ∀yR(x,y) | a | x | 가능: a에는 변수가 없습니다. |
| ∀yR(x,y) | f(a) | x | 가능: f(a)에도 변수가 없습니다. |
| ∀yR(x,y) | f(y) | x | 불가능: 넣은 y를 ∀y가 잡습니다. |
| (∀yQ(y))∧P(x) | y | x | 가능: 바꿀 x는 ∀y의 범위 밖입니다. |
| ∃xP(x) | f(y) | x | 가능: 자유로운 x가 없어 결과는 그대로입니다. |
식의 어딘가에 ∀y가 있다는 이유만으로 항 y를 언제나 금지하지는 않는군요.
맞습니다. 대입할 자리로 들어가는 길에 그 양화사가 있는지를 봅니다. 같은 글자가 다른 범위에 등장한다고 곧바로 충돌하지는 않습니다. 반대로 자유로운 x가 여러 곳에 있으면 그 자리들을 모두 확인해야 합니다.
A=R(x,y)∧∀yP(x)에 항 y를 x 대신 넣어도 되나요?
답과 풀이 확인하기
원래 식에는 대입 가능하지 않습니다.
왼쪽 R의 x는 괜찮지만 오른쪽 P의 x는 ∀y의 범위 안에 있습니다. 그 자리에 넣은 y가 포획되므로 전체 대입의 조건을 충족하지 않습니다.
상수기호 a는 모든 식의 자유로운 x에 대입 가능한가요?
답과 풀이 확인하기
이 언어의 표준 대입에서는 가능합니다.
상수기호에는 변수가 없으므로 어느 양화사도 a 안의 변수를 포획할 수 없습니다. 다만 이미 속박된 x를 바꾸지 않는다는 대입의 기본 정의는 그대로 지킵니다.
충돌하는 양화사의 변수 이름을 먼저 바꿀 수 있나요?
범위를 지키며 속박변수만 새 글자로 바꿉니다.
∃yR(x,y)에 y를 넣어야 한다면 방법이 없나요?
안쪽 양화사의 변수 이름을 안전하게 바꿀 수 있습니다. 식과 넣을 항에 쓰이지 않은 z를 골라 ∃zR(x,z)로 적습니다. 이 이름 변경은 같은 대상을 찾는 조건을 유지합니다. 그다음 자유로운 x에 y를 넣으면 ∃zR(y,z)가 됩니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 단계 | 식 | 무엇을 바꾸었나요? |
|---|---|---|
| 원래 A | ∃yR(x,y) | 자유로운 x에 y를 넣고 싶습니다. |
| 안전한 이름 변경 A′ | ∃zR(x,z) | 양화사와 그 양화사가 맡는 y만 z로 바꿉니다. |
| 허용된 대입 A′[y/x] | ∃zR(y,z) | 자유로운 x 자리에 y를 넣습니다. z와 충돌하지 않습니다. |
양화사의 변수 이름을 바꾸는 일도 일반 대입처럼 원래 식의 값을 바꾸나요?
안전한 속박변수 이름 변경은 모든 같은 구조와 배정에서 원래 식과 같은 만족 여부를 갖습니다. 흔히 알파 변환이라고 부릅니다. 바깥의 자유변수는 그대로 두고, 담당 양화사와 그 양화사가 묶는 출현만 함께 바꾼다는 조건이 중요합니다.
∀yR(x,y)의 y를 x로 바꾸어 ∀xR(x,x)로 써도 안전한 이름 변경인가요?
답과 풀이 확인하기
안전하지 않습니다.
원래 자유로운 첫 자리 x까지 새 ∀x에 묶입니다. 식과 관련 항에 없는 z를 골라 ∀zR(x,z)로 바꾸면 원래 자유로운 x를 유지할 수 있습니다.
∃y(P(y)∧∀yQ(y))에서 바깥 양화사의 y만 z로 안전하게 바꾸면 어떻게 되나요?
답과 풀이 확인하기
∃z(P(z)∧∀yQ(y))입니다.
안쪽 Q(y)의 y는 안쪽 ∀y가 맡습니다. 바깥 양화사가 맡지 않는 출현까지 함께 바꾸지 않습니다.
대입 보조정리는 두 계산을 어떻게 연결하나요?
글자를 바꾼 식의 평가와, 대상을 바꾼 배정의 평가를 나란히 봅니다.
이제 포획을 피했어요. 대입의 뜻을 정확히 적어 볼 수 있나요?
t가 A의 x에 대입 가능하다고 합시다. 먼저 원래 M,g에서 t의 값을 구해 d=⟦t⟧ᴹ,g라고 부르겠습니다. d는 언어에 새로 넣은 이름이 아니라 영역 안의 한 대상을 설명하는 표시입니다. 대입 보조정리는 아래 두 경로의 만족 여부가 같다고 말합니다.
| 경로 | 먼저 하는 일 | 그다음 평가 |
|---|---|---|
| 식에 대입하기 | A의 자유로운 x에 항 t를 써 넣어 A[t/x]를 만듭니다. | 원래 배정 g에서 A[t/x]를 평가합니다. |
| 배정을 갱신하기 | 원래 g에서 t의 값 d를 구하고 x의 값을 d로 바꿉니다. | g[x↦d]에서 원래 식 A를 평가합니다. |
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 왼쪽 | 관계 | 오른쪽 |
|---|---|---|
| M,g⊨A[t/x] | 동치: 한쪽이 성립할 때 그리고 그때에만 다른 쪽도 성립 | M,g[x↦⟦t⟧ᴹ,g]⊨A |
오른쪽에서는 A의 글자를 그대로 두는군요. 대신 x가 맡는 대상이 바뀌어요.
정확합니다. 왼쪽과 오른쪽은 서로 다른 중간 단계를 거쳐 같은 대상들을 살펴봅니다. ⊨의 왼쪽에 적힌 배정까지 비교해야 이 정리의 뜻이 보입니다. A와 A[t/x]가 늘 논리적으로 동치다라는 말로 줄이면 잘못된 주장이 됩니다.
A=P(x), t=b일 때 두 경로는 각각 어느 사람의 제출 여부를 확인하나요?
답과 풀이 확인하기
두 경로 모두 보라의 제출 여부를 확인합니다.
왼쪽 P(b)는 bᴹ=보라를 사용합니다. 오른쪽은 x에 보라를 준 배정에서 P(x)를 사용합니다. 둘 다 이번 구조에서는 거짓입니다.
정리의 오른쪽에서 y의 값까지 d로 바꾸어도 되나요?
답과 풀이 확인하기
그럴 수 없습니다.
정리는 g[x↦d]를 사용합니다. 다른 자유변수의 값은 원래 g에서 유지되어야 두 경로가 같은 정보를 비교합니다.
넣을 항에 x가 들어 있으면 어느 배정에서 값을 구하나요?
원래 배정에서 항값을 한 번 구한 뒤 그 대상을 사용합니다.
t=f(x)라면 x를 바꾼 뒤 f(x)의 값도 다시 달라지지 않나요?
달라질 수 있으므로 순서를 지켜야 합니다. 정리는 원래 g에서 t의 값을 먼저 구합니다. 기본 g(x)=아라에서 f(x)의 값은 보라입니다. 따라서 d는 보라이고, 오른쪽에서는 x에 보라를 준 배정을 씁니다. 갱신한 뒤 f(x)를 다시 계산해 d를 바꾸지 않습니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 단계 | 내용 | 결과 |
|---|---|---|
| 원래 항값 | ⟦f(x)⟧ᴹ,g | 보라 |
| 왼쪽 | M,g에서 P(f(x)) | 거짓: 보라는 P가 아닙니다. |
| 오른쪽의 새 배정 h | h=g[x↦보라] | h(x)=보라 |
| 오른쪽 | M,h에서 원래 P(x) | 거짓: 보라는 P가 아닙니다. |
h에서 f(x)를 다시 계산하면 찬우가 나오네요. 그 찬우를 x에 넣으면 P(x)가 참이 되어 버려요.
그래서 원래 g라는 표시가 필요합니다. 그 재계산은 원래 정리와 다른 작업입니다. 한 번의 대입과 한 번의 배정 갱신을 비교해야 하며, 중간에 새 항값을 구해 다시 갱신하는 단계를 덧붙이지 않습니다.
A=P(f(x)), t=f(x)라면 왼쪽 대입식은 무엇이고, 기본 g에서 값은 어떤가요?
답과 풀이 확인하기
P(f(f(x)))이고 참입니다.
원래 x에 f(x)를 한 번 넣었습니다. g에서 f(f(x))는 찬우이며 찬우는 P입니다. 오른쪽에서는 x를 보라로 바꾸어 원래 P(f(x))를 평가하므로 f(x)=찬우가 되어 똑같이 참입니다.
위 연습에서 d를 구할 때 원래 A 안의 바깥 f까지 먼저 적용하나요?
답과 풀이 확인하기
d는 넣을 항 t=f(x)의 값만으로 구합니다.
원래 g에서 t의 값은 보라입니다. A 안의 바깥 f는 갱신된 배정에서 원래 A를 평가하는 과정에 남겨 둡니다. t와 A의 일부를 섞어 계산하지 않습니다.
항에 대한 대입 보조정리는 왜 성립하나요?
상수·변수·함수의 세 경우를 항의 구성 순서로 확인합니다.
식의 정리를 증명하기 전에 항의 값부터 확인해야 하나요?
네. 술어는 항들의 값을 받으므로, 대입 전후의 항값이 맞는지 먼저 보겠습니다. s와 t는 각각 항 전체를 대신하는 표시이고, d는 원래 g에서 구한 t의 값입니다. 항에 대해서는 양화사가 없으므로 포획 조건을 따로 검사할 곳도 없습니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 대입한 항을 원래 배정에서 | 일치 | 원래 항을 갱신한 배정에서 |
|---|---|---|
| ⟦s[t/x]⟧ᴹ,g | = | ⟦s⟧ᴹ,g[x↦d] |
| d=⟦t⟧ᴹ,g | 먼저 구한 같은 대상 | d를 새 배정에서 다시 계산하지 않습니다. |
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| s의 모양 | 두 경로가 같은 이유 |
|---|---|
| 상수기호 c | 대입해도 c이고, 어느 배정에서도 cᴹ를 가리킵니다. |
| 변수 x | 왼쪽은 t의 원래 값 d이고, 오른쪽은 갱신한 x의 값 d입니다. |
| 다른 변수 v | 대입으로 바뀌지 않고, 갱신도 v의 값을 바꾸지 않습니다. |
| 함수항 f(u) | 작은 항 u의 두 값이 같다고 하면, 양쪽에 같은 fᴹ를 적용한 결과도 같습니다. |
f(u)의 설명에서 u에 대한 결과를 미리 써도 괜찮나요?
u는 f(u)를 구성하는 더 작은 항입니다. 2편의 재귀적 구성에 맞추어, 작은 구성요소들에서 성질이 성립한다고 놓고 큰 항에서도 성립함을 보입니다. 이것이 구조에 따른 귀납의 한 단계입니다. 여러 자리 함수도 각 입력 항에 같은 설명을 적용합니다.
s=f(f(x)), t=f(x)일 때 왼쪽 항은 무엇인가요? 기본 g에서 두 경로의 값도 확인해 보세요.
답과 풀이 확인하기
왼쪽 항은 f(f(f(x)))이고, 두 경로의 값은 아라입니다.
왼쪽은 아라에서 함수를 세 번 적용합니다. 오른쪽은 d=보라로 x를 갱신한 뒤 원래 s=f(f(x))를 계산하므로 보라→찬우→아라입니다.
“몇 개의 함수표에서 시험했으니 모든 항에 대해 맞다”가 이 증명의 근거인가요?
답과 풀이 확인하기
그것이 일반 증명의 근거는 아닙니다.
상수·변수라는 시작 경우와, 모든 함수항의 구성에 적용되는 귀납 단계를 확인했기 때문에 모든 유한한 항에 대해 성립한다고 결론 내립니다. 작은 세계의 계산은 이해와 검산을 돕습니다.
식에서는 원자식과 연결사 단계를 어떻게 증명하나요?
항값의 일치를 만족의 일치로 이어갑니다.
항의 두 값이 같다는 것을 알았어요. 이제 P(s) 같은 식은요?
두 경로에서 s가 같은 대상을 가리키므로 같은 Pᴹ의 포함 여부를 확인합니다. R(s,u)라면 같은 순서쌍을 Rᴹ와 비교하고, s=u라면 같은 두 항값의 동일성을 비교합니다. 이로써 원자식의 경우를 얻습니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 식의 모양 | 항의 정리가 알려 주는 것 | 만족이 일치하는 이유 |
|---|---|---|
| P(s) | 두 경로의 s 값이 같음 | 같은 대상이 Pᴹ에 속하는지 봅니다. |
| R(s,u) | 두 경로의 s·u 값이 각각 같음 | 같은 순서쌍이 Rᴹ에 속하는지 봅니다. |
| s=u | 양쪽 항값을 두 경로에서 동일하게 얻음 | 대상이 같은지에 대한 결과도 같습니다. |
| ⊥ | 대입 후에도 ⊥ 그대로임 | 두 경로 모두에서 만족되지 않습니다. |
A가 B∧C이면 어떻게 올라가나요?
더 작은 B와 C 각각에 대해 정리가 모든 적절한 배정에서 성립한다고 가정합니다. 왼쪽의 B[t/x]와 C[t/x]가 원래 g에서 모두 만족되는 조건은, 오른쪽의 원래 B와 C가 같은 갱신 배정에서 모두 만족되는 조건과 같습니다. 양쪽을 ∧로 묶으면 전체 식의 정리가 됩니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 모양 | 작은 식들에서 큰 식으로 |
|---|---|
| ¬B | B의 만족 여부가 같으므로, 그것을 부정한 값도 같습니다. |
| B∧C | 두 부분이 각각 같은 값을 가지므로 모두 참인지도 같습니다. |
| B∨C | 두 부분이 각각 같은 값을 가지므로 적어도 하나가 참인지도 같습니다. |
| B→C | B가 참이고 C가 거짓인 경우가 두 경로에서 같습니다. |
| B↔C | 두 부분의 값이 서로 같은지에 대한 결과가 두 경로에서 같습니다. |
연언을 증명할 때 B에는 갱신한 배정, C에는 원래 배정을 사용해도 되나요?
답과 풀이 확인하기
그렇게 섞으면 안 됩니다.
정리의 오른쪽은 원래 전체 식 B∧C를 하나의 갱신 배정 g[x↦d]에서 평가합니다. 두 부분식에도 그 같은 배정을 적용해야 합니다.
귀납 가정은 “더 작은 식이 지금 g에서만 잘된다”로 충분한가요?
답과 풀이 확인하기
더 작은 식의 정리가 모든 적절한 배정에서 성립한다는 형태로 둡니다.
양화사 안에 들어가면 g에서 한 변수를 갱신한 새 배정에 귀납 가정을 적용해야 합니다. 현재 배정 하나에만 한정하면 그 단계를 연결할 수 없습니다.
대입할 변수와 양화사의 변수가 같으면 어떻게 되나요?
이미 묶인 자리는 대입하지 않고, 양화사의 갱신이 그 값을 맡습니다.
A=∀xB인 경우에는 [t/x]가 양화사 안으로 들어가지 않겠네요.
맞습니다. 식 전체에서 x의 출현은 그 ∀x에 묶이므로 (∀xB)[t/x]는 그대로 ∀xB입니다. 오른쪽에서 먼저 x를 d로 갱신하더라도, ∀x는 몸통을 읽을 때 다시 각 후보 e로 x를 갱신합니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 왼쪽의 몸통 평가 배정 | 오른쪽의 몸통 평가 배정 | 비교 |
|---|---|---|
| g[x↦e] | g[x↦d][x↦e] | 두 배정은 모든 변수에 같은 값을 줍니다. |
그래서 어떤 d를 먼저 넣었는지와 관계없이 모든 e를 살피는 결과가 같군요.
그렇습니다. ∃xB인 경우에도 같은 설명이 통합니다. 두 경로가 같은 후보 e에서 같은 몸통을 평가하므로, 증거가 있는지의 답도 같습니다. 일치 보조정리로 “전체 식에 자유 x가 없어서 시작 x 값에 의존하지 않는다”고 설명해도 됩니다.
(∀xR(x,y))[f(y)/x]의 결과는 무엇인가요?
답과 풀이 확인하기
∀xR(x,y) 그대로입니다.
식 전체에서 x는 모두 속박되어 있으므로 대입할 자유 출현이 없습니다. y가 자유롭게 남아 있어도 [f(y)/x]는 y를 대상으로 한 대입이 아닙니다.
이 경우 t에 y가 들어 있다는 이유만으로 대입을 금지해야 하나요?
답과 풀이 확인하기
그럴 필요가 없습니다.
대입할 자유로운 x가 없으므로 포획될 자리도 없습니다. 대입 가능성 조건은 실제로 바꿀 자유 출현을 기준으로 적용합니다.
다른 변수의 양화사를 지나갈 때에는 왜 조건이 필요한가요?
항값의 유지와 배정 갱신의 순서를 한 단계씩 확인합니다.
이번에는 A=∀zB이고 z와 x가 다른 경우네요. 여기서 포획 조건이 쓰이나요?
바로 여기서 쓰입니다. 먼저 x가 B에 자유롭게 등장하는 경우를 보겠습니다. t가 A의 x에 대입 가능하려면 z가 t에 들어 있지 않아야 합니다. 그래야 z의 값을 어떤 e로 바꾸어도 t의 값은 원래 d와 같습니다. 항의 변수 값에 대한 일치 성질을 사용합니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 확인할 사실 | 이유 |
|---|---|
| ⟦t⟧ᴹ,g[z↦e]=d | z가 t에 없으므로 z만 갱신해도 항값은 같습니다. |
| g[z↦e][x↦d]=g[x↦d][z↦e] | x와 z가 서로 다른 변수이고 같은 d·e를 넣으므로 최종 배정이 같습니다. |
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 단계 | 만족 조건 | 사용한 이유 |
|---|---|---|
| 1 | M,g⊨(∀zB)[t/x] | 확인할 왼쪽 |
| 2 | 모든 e∈D에 대해 M,g[z↦e]⊨B[t/x] | 대입 정의와 전칭 만족 정의 |
| 3 | 모든 e∈D에 대해 M,g[z↦e][x↦d]⊨B | 더 작은 B에 귀납 가정; t의 값은 계속 d |
| 4 | 모든 e∈D에 대해 M,g[x↦d][z↦e]⊨B | 서로 다른 두 변수의 갱신 순서 교환 |
| 5 | M,g[x↦d]⊨∀zB | 전칭 만족 정의로 다시 묶기 |
3번에서 새 배정 g[z↦e]에 귀납 가정을 쓰려면, 10절에서 말한 “모든 적절한 배정”이 필요하군요.
맞습니다. 그리고 ∃z의 경우에는 표의 “모든 e”를 “어떤 e”로 바꾸어 같은 과정을 밟습니다. x가 B에 자유롭게 등장하지 않는 경우에는 대입 결과가 그대로이고, 두 배정은 식의 모든 자유변수에 같은 값을 주므로 일치 보조정리로 바로 처리할 수 있습니다. 그 경우까지 z가 t에 없다고 요구할 필요는 없습니다.
A=∀zR(x,z), t=f(y)라면 왜 z를 갱신해도 t의 값이 그대로인가요?
답과 풀이 확인하기
t=f(y)에는 z가 없기 때문입니다.
g[z↦e]는 y의 값을 바꾸지 않고 구조의 f도 바꾸지 않습니다. 따라서 두 배정에서 f(y)는 같은 대상을 가리킵니다.
같은 A에 t=f(z)를 넣으려 하면 어느 연결이 위험해지나요?
답과 풀이 확인하기
z를 갱신해도 t의 값이 같다는 첫 연결이 보장되지 않습니다.
f(z)는 z의 값에 따라 달라질 수 있습니다. 동시에 자유 x 자리에 들어간 z가 ∀z에 묶이므로 원래 대입 가능성 조건도 어깁니다. 양화사의 변수 이름을 안전하게 먼저 바꾸어야 합니다.
이 보조정리는 양화 규칙과 어떻게 연결되나요?
영역의 대상을 고르는 의미와 항을 쓰는 문법을 연결합니다.
중급에서 ∀xP(x)에서 P(a)를 얻던 규칙도 이 정리와 관련이 있나요?
관련이 있습니다. 일반적인 몸통 A와 대입 가능한 항 t를 생각해 보세요. M,g⊨∀xA라면 영역의 모든 d에서 몸통이 만족됩니다. 특히 원래 g에서 구한 t의 값도 영역 안에 있으므로 그 d를 고를 수 있습니다. 대입 보조정리는 그 몸통 평가를 M,g⊨A[t/x]로 옮겨 줍니다.
표가 화면보다 넓으면 좌우로 움직여 수식과 풀이를 읽어 보세요.
| 방향 | 배정으로 읽는 중간 단계 | 도착 |
|---|---|---|
| ∀xA에서 A[t/x]로 | d=⟦t⟧ᴹ,g를 골라 g[x↦d]에서 A를 평가 | 대입 보조정리로 원래 g에서 A[t/x]를 얻습니다. |
| A[t/x]에서 ∃xA로 | 대입 보조정리로 g[x↦d]에서 A를 평가 | 그 d를 존재양화사의 증거로 삼습니다. |
함수가 모든 입력에 값을 주어야 한다는 약속도 쓰이네요.
네. 모든 항값이 D 안의 대상이므로 양화사가 살피는 후보로 사용할 수 있습니다. 이 설명은 대입 가능성 조건도 함께 유지합니다. 전칭 도입이나 존재 제거의 새 이름 조건까지 자동으로 해결한 것은 아니며, 그 규칙들의 참 보존은 이후에 별도로 살펴보겠습니다.
∀x∃yR(x,y)가 이번 M에서 참이라고 해서 ∃yR(y,y)를 전칭 제거의 결과로 써도 되나요?
답과 풀이 확인하기
그 결과는 허용되지 않습니다.
몸통 A=∃yR(x,y)에 항 y를 x 대신 넣으려면 대입 가능성을 검사해야 합니다. y가 안쪽 ∃y에 잡히므로 조건을 어깁니다. 실제로 원래 전칭문은 참이지만 자기 자신에게 인사한 사람은 없어 그 결과는 거짓입니다.
A의 속박 y를 먼저 z로 바꾸면, 항 y를 이용한 올바른 사례는 무엇인가요?
답과 풀이 확인하기
∃zR(y,z)입니다.
먼저 몸통을 ∃zR(x,z)로 안전하게 바꾼 뒤 자유 x 자리에 y를 넣습니다. y의 원래 배정값에 대해 인사 상대가 존재한다는 뜻을 유지합니다.
항·범위·배정을 함께 사용하는 연습을 해 볼까요?
식의 결과를 적은 다음 같은 세계에서 두 경로를 검산합니다.
이제 답을 보기 전에 대입 가능성부터 표시해 보겠습니다.
좋습니다. 아래 문제는 모두 1절의 기본 M,g를 사용합니다. 먼저 자유로운 x의 자리, 다음으로 넣을 항의 변수, 마지막으로 그 자리까지 지나는 양화사를 확인하세요. 조건을 충족하면 식을 바꾸고 원래 배정에서 계산합니다.
A=R(x,y)∧∀xQ(x), t=f(a)일 때 A[t/x]를 써 보세요.
답과 풀이 확인하기
R(f(a),y)∧∀xQ(x)입니다.
왼쪽 x만 자유롭습니다. f(a)에는 변수가 없어 포획 걱정이 없습니다. 오른쪽의 x는 ∀x가 맡으므로 그대로 둡니다. 이번 구조에서 ∀xQ(x)는 찬우 때문에 거짓이므로 전체 식도 거짓입니다.
A=∀yR(x,y)에 t=f(y)를 넣으려면 먼저 어떻게 고치나요?
답과 풀이 확인하기
안 쓰인 z로 A′=∀zR(x,z)를 만든 뒤 A′[f(y)/x]=∀zR(f(y),z)로 씁니다.
원래 식에서는 넣은 y가 ∀y에 잡힙니다. 안전하게 이름을 바꾸면 f(y)의 y는 자유롭게 남고, z만 양화사의 후보를 따라 움직입니다.
A=∃yR(x,y)에 t=f(y)를 넣는 경우를 검산해 보세요. 안전한 결과와 포획된 결과의 값은 무엇인가요?
답과 풀이 확인하기
안전한 결과 ∃zR(f(y),z)는 참이고, 포획된 글자 교체 결과 ∃yR(f(y),y)는 거짓입니다.
기본 g에서 f(y)=찬우이고, 찬우가 아라에게 인사했으므로 안전한 결과는 참입니다. 포획된 식은 아라·보라·찬우를 y로 넣을 때 각각 R(보라,아라), R(찬우,보라), R(아라,찬우)를 묻습니다. 이 세 쌍은 모두 Rᴹ에 없습니다.
A=P(f(x)), t=f(x)에서 대입한 식이 참이므로 원래 M,g⊨A도 참이라고 결론 내릴 수 있나요?
답과 풀이 확인하기
그렇게 결론 내릴 수 없습니다.
대입한 P(f(f(x)))는 찬우의 P를 묻기 때문에 참입니다. 원래 g에서 P(f(x))는 보라의 P를 묻기 때문에 거짓입니다. 정리는 원래 A를 x=보라로 갱신한 배정에서 평가했을 때의 참과 연결합니다.
A=∀xP(x), t=f(y)일 때 대입한 식과 원래 식의 값은 어떤가요?
답과 풀이 확인하기
대입 결과는 그대로 ∀xP(x)이며, 이번 구조에서는 둘 다 거짓입니다.
전체 식에 자유로운 x가 없어 대입할 자리가 없습니다. 어떤 시작 배정으로 평가해도 보라가 P를 만족하지 않아 전칭문이 거짓입니다.
대입을 검토할 때 어떤 순서로 확인할까요?
문법적 교체·안전한 이름 변경·의미론적 갱신을 연결해 정리합니다.
비슷하게 보이던 세 작업을 이제 나누어 말할 수 있을 것 같아요.
각 작업이 무엇을 바꾸는지 적어 보세요. 특히 대입 보조정리의 두 변에서 식과 배정 중 어느 쪽이 바뀌었는지를 찾아보면, “같은 뜻”이라는 말을 너무 넓게 쓰는 실수를 줄일 수 있습니다.
| 작업 | 바꾸는 것 | 지켜야 할 것 |
|---|---|---|
| 안전한 속박변수 이름 변경 | 한 양화사와 그 양화사가 맡는 변수 출현 | 자유 출현을 포획하지 않으며 같은 배정에서 만족을 유지합니다. |
| A[t/x]라는 대입 | A의 자유로운 x 출현에 항 t를 넣음 | 대입 가능성을 확인하고, 새 항을 한 번의 대입 안에서 다시 바꾸지 않습니다. |
| g[x↦d]라는 갱신 | 배정에서 x가 가리키는 대상 | 다른 변수의 값과 구조 M을 유지합니다. |
| 대입 보조정리 | 위의 대입과 갱신으로 얻는 두 평가를 비교 | d는 원래 g에서 t의 값을 먼저 구해 정합니다. |
대입 전에 적을 네 가지를 자기 말로 정리해 볼까요?
답과 풀이 확인하기
원래 식 A, 바꿀 자유변수 x, 넣을 항 t, t가 각 대입 자리에서 포획되지 않는지의 조건입니다.
그다음 필요하면 속박변수 이름을 안전하게 바꾸고, 허용된 대입 결과를 적습니다. 의미를 검산할 때는 원래 M,g에서 t의 값을 구해 갱신 배정을 만들고 원래 식과 비교합니다.
대입 보조정리를 증명하는 큰 순서는 무엇인가요?
답과 풀이 확인하기
항의 값에 대한 구조 귀납을 먼저 하고, 그 결과로 원자식을 처리한 뒤 연결사와 양화사 경우를 식의 구조에 따라 이어갑니다.
양화사 경우에는 같은 변수를 다시 묶는 경우와 다른 변수를 묶는 경우를 나눕니다. 다른 변수의 경우에는 포획 방지 조건이 항값 유지와 두 갱신의 교환을 가능하게 합니다. x의 자유 출현이 없는 경우도 따로 확인합니다.
이번에는 한 규칙의 작은 조건이 왜 필요한지 의미에서 확인했습니다. 다음 편에서는 명제논리의 추론 규칙 하나하나가 참을 보존하는지 살펴보고, 그 사실을 증명 전체의 길이에 대한 귀납으로 이어 보겠습니다. 양화 규칙 전체의 참 보존을 살필 때에도 오늘의 대입 보조정리가 다시 쓰입니다.
오늘 익힌 내용을 어떻게 설명할까요?
예시를 하나 정해서 설명해 보세요. 다시 생각해 보고 싶은 질문도 함께 적을 수 있습니다.
기록은 현재 브라우저에만 저장됩니다. 다른 기기에서는 보이지 않습니다.
참고한 논리학 자료
5개 자료개념의 정의와 기호의 뜻을 아래 자료로 확인했습니다. 대화와 생활 예시는 학습을 위해 작성했습니다.
01Open Logic Project, 《Open Logic Text》 · Substitution(대입)
항의 재귀적 대입, 식의 자유 출현에 대한 대입, 항이 변수에 대입 가능할 조건을 직접 확인했습니다. 포획이 생기는 경우에는 먼저 안전한 속박변수 이름 변경을 하고 조건을 다시 검사하는 방식으로 설명했습니다.
원문 확인02Open Logic Project, 《Open Logic Text》 · Extensionality(외연성)
항에 대한 명제 3과 식에 대한 명제 4의 대입 보조정리, 항값을 원래 배정에서 먼저 구하는 두 경로의 의미를 확인했습니다. 식의 양화사 증명 단계는 대입 가능성 조건을 명시하여 풀어 썼습니다.
원문 확인03Open Logic Project, 《Open Logic Text》 · Satisfaction of a Formula in a Structure(구조에서 식의 만족)
항값, 배정 갱신, 원자식·연결사·양화사의 만족 정의를 확인했습니다. 한 번의 대입과 한 번의 배정 갱신을 세 사람의 순환 함수로 비교했습니다.
원문 확인04Open Logic Project, 《Open Logic Text》 · Variable Assignments(변수 배정)
항값과 식의 만족이 관련 변수·자유변수의 값에만 의존한다는 성질을 확인했습니다. 양화사 변수와 대입 변수의 경우 구분 및 자유 출현이 없는 경우의 증명에 사용했습니다.
원문 확인05Open Logic Project, 《Open Logic Text》 · Free Variables and Sentences(자유변수와 문장)
전체 식에서의 자유 출현과 양화사의 몸통에서의 자유 출현을 구별하는 정의를 확인했습니다. 대입 대상의 범위와 속박변수 이름 변경을 예제로 설명했습니다.
원문 확인고급 논리학 · 제4편
대입은 언제 식의 뜻을 지켜 주나요?