5강 / 20강
한정기호 — 모든 것과 어떤 것
∀ 와 ∃, 그리고 그 부정
1강에서 남겨 둔 숙제가 있었죠. x > 3 은 x를 모르니
참·거짓을 말할 수 없어 명제가 아니었습니다. 이런 것을
명제함수 P(x) 라고 부릅니다 — 값을 넣어야 참·거짓이 정해지는 틀이에요.
그런데 x를 정하지 않고도 명제로 만드는 방법이 있습니다.
범위 전체에 대해 말해 버리는 거예요.
파이썬에는 이 둘이 그대로 들어 있습니다 — all() 과 any() 예요.
all() 이 ∀, any() 가 ∃ 입니다.
Python
브라우저에서 실행
🎮 범위를 바꿔 가며 확인해 보세요
학생 명단을 놓고 조건을 걸어 보세요. ∀는 반례 하나에 무너지고, ∃는 증인 하나면 선다는 것을 눈으로 확인할 수 있습니다.
3강의 '공허한 참'이 여기서 다시 나옵니다.
Python
브라우저에서 실행
부정하면 뒤바뀝니다
이 강의에서 가장 실수하기 쉬운 부분입니다. 천천히 봅시다.
¬(∀x P(x)) ≡ ∃x ¬P(x)
"모든 학생이 왔다"의 부정은 "안 온 학생이 한 명이라도 있다"입니다. "모든 학생이 안 왔다"가 아닙니다.¬(∃x P(x)) ≡ ∀x ¬P(x)
"지각한 학생이 있다"의 부정은 "모든 학생이 지각하지 않았다"입니다.
드모르간 법칙(2강)의 확장판이라고 보면 됩니다. ∀는 무한한 ∧이고, ∃는 무한한 ∨니까요.
반례를 하나 찾으면 ∀ 명제는 끝납니다.
Python
브라우저에서 실행
🤔 확인 문제
"모든 서버가 정상이다"의 부정으로 옳은 것은?
해설
¬∀ ≡ ∃¬ 입니다. 단 한 대만 이상해도 "모든 서버가 정상"은 무너집니다. ①처럼 전부 비정상일 필요는 전혀 없어요.🤔 확인 문제
all(x > 0 for x in []) 의 결과는?해설 공허한 참입니다. ∀는 "어기는 것이 하나도 없다"는 뜻인데, 원소 자체가 없으니 어길 것도 없어요. 반대로
any()는 증인이 필요하므로 빈 목록에서 False가 됩니다.🤔 확인 문제
"어떤 사람은 모든 언어를 안다" 와 "모든 언어는 그것을 아는 사람이 있다" 의 관계는?
해설 앞은 천재 한 명이 있다는 강한 주장(∃∀)이고, 뒤는 언어마다 전문가가 따로 있으면 되는 약한 주장(∀∃)입니다. 한정기호의 순서가 뜻을 바꿉니다.