✖

명제 논리 예제

이 글에서는 몇 가지 논리식과 그 진릿값 할당을 진리표를 이용한 방법으로 살펴본다.

첫 번째 예제

다음 논리식이 언제 참인지 알아보자: ϕ = (p ∧ q) ∨ ¬q. 먼저 표에 명제 변수 p와 q를 적는다.

pq11100100

다음으로 논리식의 첫 부분 (p ∧ q), 부정 ¬q, 그리고 논리식 전체를 표에 덧붙인다.

pqp∧q¬qϕ11100100

이제 세 번째 열의 값을 구한다. 세 번째 열은 단순한 논리곱이다. 부정의 값도 함께 구하는데, 두 번째 열의 값을 뒤집어 적기만 하면 된다.

pqp∧q¬qϕ1110100101000001

마지막으로 맨 끝 열의 값을 구한다. 이 열이 논리식 전체이다. 이 표에서는 “세 번째 열과 네 번째 열의” 논리합을 계산하는 셈이다. 결과는 다음과 같다.

pqp∧q¬qϕ11101100110100000011

두 번째 예제

같은 문제를 다른 논리식으로 풀어 보자: ϕ = (p ∧ ¬q) ⇔ (¬p ⇒ q). 이 논리식에는 명제 변수 p, q와 그 부정이 있다. 그래서 먼저 두 변수와 그 부정으로 표를 만든다.

pq¬p¬q1100100101100011

다음으로 논리식 p ∧ ¬q와 ¬p ⇒ q를 덧붙인다. 표에 각 명제와 그 부정의 진릿값이 모두 있으므로 값을 쉽게 구할 수 있다. 표는 다음과 같다.

pq¬p¬q(p∧¬q)(¬p⇒q)110001100111011001001100

마지막으로 논리식 전체의 값을 구한다. 논리식 전체는 마지막 두 열의 동치이다.

pq¬p¬q(p∧¬q)(¬p⇒q)ϕ1100010100111101100100011001

세 번째 예제

세 번째 예제는 조금 더 복잡하다. 명제 변수가 세 개라서 표를 계산하기가 더 번거롭다. 논리식은 다음과 같다: ϕ = (¬(p ⇒ q)) ∧ (r ⇔ (¬p ∨ q)).

명제 변수가 세 개이므로 가능한 진릿값 할당은 모두 8가지이다.

pqr111110101100011010001000

그다음은 앞의 예제와 같은 방법으로, 각 열의 값을 8개의 행 모두에서 구한다. 완성된 표는 다음과 같다.

pqr¬p(p⇒q)(¬p∨q)¬(p⇒q)(r⇔(¬p∨q))ϕ111011010110011000101000100100000111011111010010111000001111010000111000

네 번째 예제

이번에는 논리식을 그냥 주지 않고 문장제로 낸다. 세 친구가 신나는 파티에 가려고 한다. 그런데 셋은 서로 그다지 사이가 좋지 않아서, 파티에 갈 조건을 서로 내걸었다. 세 사람의 이름은 민준, 지호, 푸름이다. 규칙은 다음과 같다.

  1. 민준이가 가면 지호도 간다.
  2. 푸름이가 파티에 오거나, 또는 민준이가 오면 지호는 오지 않는다.
  3. 푸름이는 민준이가 오지 않거나 지호가 오지 않을 때 그리고 그때에만 온다.

세 사람이 모두 파티에 올 수 있을까? 올 수 없다면, 어떤 규칙도 어기지 않고 파티에 갈 수 있는 사람은 누구일까?

먼저 위의 문장을 명제 변수와 논리식으로 바꿔 써야 한다. 명제 변수를 M, J, P(민준, 지호, 푸름의 로마자 머리글자)라고 하자. 각 기호는 “민준이가 파티에 간다” 같은 명제를 나타낸다. 첫 번째 규칙은 M ⇒ J, 즉 “M이면 J”, 다시 말해 “민준이가 파티에 가면 지호도 파티에 간다”로 쓸 수 있다.

두 번째 규칙은 다음과 같이 바꿔 쓴다. 규칙은 “푸름이가 파티에 오거나…”로 시작하므로 논리합이 필요하다는 것을 알 수 있다. 우선 P ∨ …라고 적어 두자. 문장의 나머지 부분은 “민준이가 오면 지호는 오지 않는다”이다. 이 부분은 조건문이고, 오른쪽에는 부정을 써야 한다. “지호는 오지 않는다”는 ¬J이다. 조건문 전체는 M ⇒ ¬J가 된다. 이것을 앞의 논리합에 이으면 P ∨ (M ⇒ ¬J)이다.

세 번째 규칙은 다음과 같이 바꿔 쓴다. “푸름이는 … 때 그리고 그때에만 온다”는 동치를 뜻한다: P ⇔ … 그다음은 “민준이가 오지 않거나 지호가 오지 않는다”이고, 이는 ¬M ∨ ¬J로 쓴다. 합치면 (P ⇔ (¬M ∨ ¬J))이다.

이제 모든 논리식을 표에 넣고 값을 구한다.

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))111110110101101011100010011111010110001111000110

물음은 세 친구가 모두 신나는 파티에 갈 수 있느냐였다. 답은 첫 번째 행에 있다. 첫 번째 행은 세 사람이 모두 가는 경우로, 앞의 세 열이 모두 1이다. 조건은 모두 만족될까? 첫 번째 조건은 만족되고(네 번째 열), 두 번째 조건도 만족되지만(다섯 번째 열), 마지막 조건은 만족되지 않는다(마지막 열이 0이다). 즉 세 사람이 모두 가면 세 번째 조건이 만족되지 않는다.

따라서 조건을 나타내는 자리(마지막 세 열)가 모두 1인 행을 찾으면 된다. 1은 조건이 만족된다는 뜻이다. 그런 행은 두 개이다. 지호와 푸름이는 가고 민준이는 가지 않는 경우, 그리고 푸름이만 가는 경우이다.

표에 세 조건의 논리곱인 논리식 ϕ를 덧붙여 구할 수도 있다. 이 논리식은 ϕ = ((M ⇒ J) ∧ (P ∨ (M ⇒ ¬J)) ∧ (P ⇔ (¬M ∨ ¬J)))이다. 이 식은 모든 논리식(모든 조건)이 만족되어야 한다는 요구를 그대로 나타낸다. 표는 다음과 같다.

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))ϕ11111001101010101011010001000111111010110000111110001100

진리표를 이용한 방법의 예제 몇 가지

주어진 논리식에서 진리표 전체를 자동으로 만들어 주는 프로그램을 작성해 두었으니, 이를 활용해 풀어 본 논리식 몇 개를 더 소개한다.

논리식: ((a ∧ ¬b) ∨ (b ∧ (b ⇒ a))). 진리표:

ab(a∧¬b)(b∧(b⇒a))((a∧¬b)∨(b∧(b⇒a)))11011101010100000000

논리식: (a ∨ ¬a) ⇔ (b ∧ ¬b). 진리표:

ab(a∨¬a)(b∧¬b)((a∨¬a)⇔(b∧¬b))11100101000110000100

논리식: ¬(a ∨ b) ⇔ (¬b ∧ ¬a). 진리표:

ab¬(a∨b)(¬b∧¬a)(¬(a∨b)⇔(¬b∧¬a))11001100010100100111

논리식: ϕ = (¬p ⇔ (q ∧ r)) ⇒ (p ∨ ¬(p ∧ q)). 진리표:

pqr(q∧r)¬(p∧q)(¬p⇔(q∧r))(p∨¬(p∧q))ϕ1111001111000111101011111000111101111111010010110010101100001011

논리식: ϕ = ¬(p ⇔ ¬q) ∧ (r ⇒ ¬p) ∧ (p ∨ r). 진리표:

pqr¬(p⇔¬q)(r⇒¬p)(p∨r)ϕ11110101101111101001010001100110110010010000111110001100

목차: 명제 논리, 논리식의 참, 거짓, 명제 논리 예제