국가직무능력표준(NCS) 문제 중에서 명제논리(숨은 전제 찾기, 결론 찾기) 문제가 있다. 이런 문제 유형은 NCS 뿐 아니라 많은 기업에서도 직무적성에 출제하고 있다. 문제의 유형은 바로 자연어로 쓴 삼단논법의 전제나 결론을 비워두고, 보기 중에서 올바른 문장을 찾아 넣는 것이다.

 

풀이나 해설을 찾아보면 집합 관계를 이용해 해설하거나 약식으로 해설하는 경우가 많은 데, 이 글에서는 1차 논리(FOL, first-order logic)를 이용해 좀 더 엄밀하게 풀이 과정을 알아보고자 한다. 0차 논리라고 할 수 있는 명제 논리를 일부 고등학교 수학에서 배우기 때문에 자세한 내용은 이번 글에서는 생략한다.

 

FOL로 문제를 풀이하기 위해서는 자연어를 FOL로 번역해야 한다. NCS의 명제논리 문제들은 "모든"이나 "어떤"과 같은 표현을 사용하기 때문에 이런 유형의 문장을 FOL로 번역하는 요령을 먼저 알아두는 것이 좋다. 자연어를 FOL 언어로 표현하는 방법은 그리스 철학자 아리스토텔레스(https://plato.stanford.edu/entries/aristotle-logic/)가 이미 정형화 해둔 것이 있다. 본래 네 가지 유형이 있지만 약식으로 두 가지만 써보면, 아래와 같다. 이 때 "어떤"의 경우에 주의할 점은 "그리고"라는 개념이 생략되어 있다는 점이다. 또 하나 주의할 점이 많은 문제들에서 "모든"이라는 단어 자체를 생략한다는 것이다.

 

- 모든 P는 Q다. => x (P(x) Q(x))

- 어떤 P는 Q다. => x (P(x) Q(x))

 

그러면 예시 문제를 하나 보자(출처 링크: https://blog.naver.com/jing_june/222290694453).

 

위 문제에는 전제가 하나 빠져 있는데, 결론의 의미론(semantic)이 참(True)이 되려면 2번 "성실한 어떤 사람은 직장인이다"가 필요하다.

 

자연어는 애매 모호한 점이 있기 때문에 위에서 강조한 것 처럼 FOL로 변환해서 생각해보면 엄밀한 증명이 쉬워진다. 

 

전제 "점심밥을 먹지 않으면 직장인이 아니다."라는 문장에는 "모든"이 생략되어 있다는 점을 주의해야 한다. 그래서 "모든"이라는 개념을 넣어서 생각해보면, "사람"에 해당하는 변수 x를 이용하여, "사람이 점심을 먹는다", "사람은 직장인이 아니다"라는 문장의 구성 요소가 아리스토텔레스 방식의 P와 Q에 각각 해당한다. 이 때 P와 Q에 "부정(negation)"이 들어가므로 FOL로 변환해보면 아래와 같다.

 

점심밥을 먹지 않으면 직장인이 아니다.

=> 모든 사람에 대해서 그 사람이 점심밥을 먹지 않으면, 그 사람은 직장인이 아니다.

=> 모든 사람에 대해서 ( 그 사람이 점심밥을 먹지 않다. -> 그 사람은 직장인이 아니다. )

=> ∀x (¬Lunch(x) → ¬Worker(x))

 

한편, 답에 해당하는 필요한 전제 2번 "성실한 어떤 사람은 직장인이다"는 역시 아리스토텔레스 방식으로 바꾸면 아래와 같다.

 

성실한 어떤 사람은 직장인이다.

=> 어떤 사람에 대해서 그 사람은 성실하고, 그 사람은 직장인이다.

=> 어떤 사람에 대해서 (그 사람은 성실하다 '그리고' 그 사람은 직장인이다)

=> ∃x (Worker(x) ∧ Industrious(x))

 

마지막으로 결론도 위와 같은 요령에 따라 바꾸면 아래와 같다.

 

성실한 어떤 사람은 점심밥을 먹는다.

=> 어떤 사람에 대해서 그 사람은 성실하고, 그 사람은 점심밥을 먹는다.

=> 어떤 사람에 대해서 (그 사람은 성실하다 '그리고' 그 사람은 점심밥을 먹는다)

=> ∃x (Industrious(x) ∧ Lunch(x))

 

FOL로 변환이 끝났으면, 이 문법을 이용하여, 왜 2번 문장이 들어가면 결론이 참이 되는지 증명을 해보면 아래와 같다. 

 

한 줄씩 해설을 해보면, 위 그림에서 1번과 2번 줄은 전제에 해당하고, 11번 줄은 결론에 해당한다. 그리고 그 사이의 문장들이 결론이 참이라는 과정을 이끌어 내기 위한 중간 증명들이다.

 

위 삼단 논법에서 2번 줄에 우리가 정답으로 골랐던 전제를 이용한다. 3번 줄과 같이 어떤 a라는 사람을 가정한다. 즉, 전제에 따라서 "a라는 사람은 직장인이고, 성실하다"라는 점을 가정하는 것이다.

 

먼저 1번 줄에 써둔 전제에 따라서 "a라는 사람이 점심을 먹지 않으면, a는 직장인이 아니다" (5번 줄). 이걸 명제의 대우(contrapositive)에 의해 "a라는 사람이 직장인이면, a는 점심을 먹는다"라는 게 참이라는 걸 알아낼 수 있다(6번 줄).

 

한편, 3번 줄에 가정한 바에 따르면, "a라는 사람은 직장인이다"(4번 줄). 이런 사실과 6번 줄에서 이끌어낸 진실 "a라는 사람이 직장인이면, a는 점심을 먹는다"로부터 "a는 점심을 먹는다"라는 사실을 이끌낼 수 있다(7번 줄).

 

다시 3번 줄의 가정에서 "a는 성실하다"가 사실이라는 사실을 알았다(8번 줄).

 

"a는 점심을 먹는다" 그리고 "a는 성실하다"라는 사실은 동시에 참이 되므로 묶어(conjunction)줄 수 있다. 즉, "a는 성실하고, 점심을 먹는다"가 참이 된다(9번 줄). 즉, "어떤 사람에 대해서 그 사람이 성실하고, 점심을 먹는다(성실한 어떤 사람은 점심밥을 먹는다)"라는 문장이 참이 된다(10번 줄).

 

마지막으로 "성실한 어떤 사람은 점심밥을 먹는다."라는 전제가 있을 때(2번 줄), a라는 사람을 가정하면(3-10번 줄), " 성실한 어떤 사람은 점심밥을 먹는다"가 참이라는 점을 알 수 있는 것이다(11번 줄).

 

 

위 예시 문제를 훨씬 간략하게 표현하면 아래 처럼 표현할 수 있다.

 

전제 1. ∀x (¬P(x) → ¬Q(x))

전제 2. ∃x (Q(x) ∧ R(x))

결론. ∃x (R(x) ∧ P(x))

 

위 예시를 통해 증명을 해보았으므로, 자연어로 어떻게 표현이 되었든지 간에 FOL로 간략화해서 어떤 변수 x를 꾸며주는 술어 P, Q, R의 위치와 부정( ¬ negation)의 유무의 위치를 주의하고,  추가로 "그리고"에 해당하는 ∧ (conjunction)의 앞 뒤는 교환법칙이 성립한다는 점 만 잘 확인하면 답은 쉽게 골라낼 수 있을 걸로 생각이 든다.

Posted by 공돌이pooh
,