진리표
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
진리표는 논리 연산의 결과를 시각적으로 나타내는 표로, 찰스 샌더스 퍼스가 1883년에 처음 고안한 것으로 알려져 있다. 루트비히 비트겐슈타인이 1921년 출판한 '논리 철학 논고'에서 진리 함수를 설명하는 데 사용하면서 널리 알려졌으며, 단항 및 이항 연산을 포함한 다양한 논리 연산의 결과를 표현하는 데 사용된다. 진리표는 논리적 동치 증명, 디지털 회로 설계, 디지털 전자공학 등 다양한 분야에 응용되며, 입력 변수가 증가함에 따라 표의 크기가 지수적으로 증가하는 특징을 갖는다. 진리표는 명제 변수의 진리값 조합을 체계적으로 나타내며, 번갈아 작성하거나 조합하는 방법으로 작성할 수 있다.
루트비히 비트겐슈타인이 1921년 논리 철학 논고를 출판하여 진리 함수를 논할 때 사용하면서 널리 알려지게 되었다.[11] 그러나 찰스 샌더스 퍼스를 비롯한 다른 논리학자들도 이미 초기 형태를 고안한 바 있으며, 에밀 포스트 역시 비트겐슈타인과는 독립적으로 진리표 체계를 완성하였다.
2. 역사
2. 1. 초기 형태
어빙 아넬리스의 연구에 따르면, 1883년에 찰스 샌더스 퍼스가 진리표 행렬을 고안한 최초의 논리학자로 보인다.[4] 1997년, 존 쇼스키는 버트런드 러셀의 1912년 강의 "논리적 원자론의 철학"의 타이핑된 기록에서 진리표 행렬을 발견했다. 부정에 대한 행렬은 러셀의 것이고, 그 옆에는 루트비히 비트겐슈타인의 손으로 쓴 물질적 함의에 대한 행렬이 있었다. 1893년에 퍼스가 작성한 것으로 확인된 미출판 원고에는 존 쇼스키가 발견한 물질적 함의에 대한 행렬과 동일한 진리표 행렬이 포함되어 있음이 밝혀졌다. 1883–84년에 작성된 것으로 확인된 퍼스의 미출판 원고에는 조건문의 간접 진리표 예시가 포함되어 있는데, 이는 1885년 ''미국 수학 저널''에 실린 퍼스의 "논리 대수학에 관하여: 표기법 철학에 대한 기여"의 작성을 위한 것이었다.[4]
2. 2. 독립적 발전과 확산
루트비히 비트겐슈타인이 1921년 논리 철학 논고를 출판하여 진리 함수를 논할 때 사용하면서 널리 알려지게 되었다.[11] 그러나 찰스 샌더스 퍼스를 비롯한 다른 논리학자들도 이미 초기 형태를 고안한 바 있으며, 에밀 포스트 역시 비트겐슈타인과는 독립적으로 진리표 체계를 완성하였다.
어빙 아넬리스의 연구에 따르면, 1883년에 C.S. 퍼스가 진리표 행렬을 고안한 최초의 논리학자로 보인다.[4] 1997년, 존 쇼스키는 버트런드 러셀의 1912년 강의 "논리적 원자론의 철학"의 타이핑된 기록에서 진리표 행렬을 발견했는데, 부정에 대한 행렬은 러셀의 것이고 그 옆에는 루트비히 비트겐슈타인이 직접 쓴 물질적 함의에 대한 행렬이 있었다.[4]
논리-철학 논고 5.101절에서[11] 비트겐슈타인은 진리표를 다음과 같이 나열했다.
진리값 | 연산자 | 연산 이름 | 논고[12] | |||
---|---|---|---|---|---|---|
0 | (F F F F)(p, q) | ⊥ | 거짓 | Opq | 모순 | p 그리고 not p; 그리고 q 그리고 not q |
1 | (F F F T)(p, q) | NOR | p ↓ q | Xpq | 논리합 부정 | p도 q도 아님 |
2 | (F F T F)(p, q) | ↚ | p ↚ q | Mpq | 역 비함축 | q 그리고 not p |
3 | (F F T T)(p, q) | ¬p, ~p | ¬p | Np, Fpq | 부정 | not p |
4 | (F T F F)(p, q) | ↛ | p ↛ q | Lpq | 물질적 비함축 | p 그리고 not q |
5 | (F T F T)(p, q) | ¬q, ~q | ¬q | Nq, Gpq | 부정 | not q |
6 | (F T T F)(p, q) | XOR | p ⊕ q | Jpq | 배타적 논리합 | p 또는 q, 하지만 둘 다는 아님 |
7 | (F T T T)(p, q) | NAND | p ↑ q | Dpq | 논리곱 부정 | p와 q 둘 다 아님 |
8 | (T F F F)(p, q) | AND | p ∧ q | Kpq | 논리곱 | p 그리고 q |
9 | (T F F T)(p, q) | XNOR | p iff q | Epq | 논리적 쌍조건자 | 만약 p면 q; 그리고 만약 q면 p |
10 | (T F T F)(p, q) | q | q | Hpq | 투영 함수 | q |
11 | (T F T T)(p, q) | p → q | 만약 p면 q | Cpq | 물질적 함축 | 만약 p면 q |
12 | (T T F F)(p, q) | p | p | Ipq | 투영 함수 | p |
13 | (T T F T)(p, q) | p ← q | 만약 q면 p | Bpq | 역 함축 | 만약 q면 p |
14 | (T T T F)(p, q) | OR | p ∨ q | Apq | 논리합 | p 또는 q |
15 | (T T T T)(p, q) | ⊤ | 참 | Vpq | 항진명제 | 만약 p면 p; 그리고 만약 q면 q |
진리표는 여러 논리 연산의 결과를 표현하는 데 사용된다.
3. 기본 논리 연산
두 개의 불리언 변수 P와 Q의 가능한 16가지 진리 함수 중 가장 일반적으로 사용되는 7가지에 대한 정의는 다음과 같다.[9]P Q T T T T F T T T T T F F T T F F T F F T F T T F T F F F F F F F T T T T P Q AND(결합) OR(분리) XOR(배타적 OR) XNOR(배타적 NOR) 조건부
"if-then"조건부
"if"쌍조건부
"if-and-only-if"
축약된 형태의 진리표도 사용될 수 있는데, 행 머리글과 열 머리글이 피연산자를 지정하고 표 셀이 결과를 지정하는 방식이다. 예를 들어 불 대수에서는 다음과 같은 표기법을 사용한다.[9]
{|
|-
|
|∧ T F T T F F F F
|
|∨ T F T T T F T F
|}
이러한 표기법은 연산이 교환적일 때 유용하다. 여기서 T는 참, F는 거짓을 의미한다.
다음은 두 개의 부울 변수 ''p''와 ''q''에 대한 16개의 가능한 모든 진리 함수를 정의하는 확장된 진리표이다.[9]
:p q style="background:black" | 거짓0 NOR1 ↚2 ¬p3 NIMPLY4 ¬q5 XOR6 NAND7 AND8 XNOR9 q10 IMPLY11 p12 ←13 OR14 참15 T T style="background:black" | F F F F F F F F T T T T T T T T T F style="background:black" | F F F F T T T T F F F F T T T T F T style="background:black" | F F T T F F T T F F T T F F T T F F style="background:black" | F T F T F T F T F T F T F T F T colspan="19" style="background:black" | 교환 법칙 style="background:black" | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ 결합 법칙 style="background:black" | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ 수반 연산자 style="background:black" | F0 NOR1 ↛4 ¬q5 ↚2 ¬p3 XOR6 NAND7 AND8 XNOR9 p12 ←13 q10 →11 OR14 T15 부정 style="background:black" | T15 OR14 ←13 p12 IMPLY11 q10 XNOR9 AND8 NAND7 XOR6 ¬q5 NIMPLY4 ¬p3 ↚2 NOR1 F0 쌍대 연산 style="background:black" | T15 NAND7 →11 ¬p3 ←13 ¬q5 XNOR9 NOR1 OR14 XOR6 q10 ↚2 p12 ↛4 AND8 F0 왼쪽 항등원 style="background:black" | F F T T T,F T F 오른쪽 항등원 style="background:black" | F F T T T,F T F
여기서[10]
:T = 참
:F = 거짓
:위첨자 0부터 15는 4개의 진릿값을 F = 0과 T = 1로 하는 이진수로 읽은 결과이다.
:'''Com''' 행은 연산자 '''op'''가 교환 법칙 - '''P op Q = Q op P'''를 따르는지 여부를 나타낸다.
:'''Assoc''' 행은 연산자 '''op'''가 결합 법칙 - '''(P op Q) op R = P op (Q op R)'''를 따르는지 여부를 나타낸다.
:'''Adj''' 행은 '''P op Q = Q op2 P'''를 만족하는 연산자 '''op2'''를 보여준다.
:'''Neg''' 행은 '''P op Q = ¬(P op2 Q)'''를 만족하는 연산자 '''op2'''를 보여준다.
:'''Dual''' 행은 T를 F로, AND를 OR로 바꾸어 얻은 쌍대 연산을 보여준다.
:'''L id''' 행은 연산자에 왼쪽 항등원이 있는 경우 - '''I op Q = Q'''를 만족하는 값 '''I'''를 보여준다.
:'''R id''' 행은 연산자에 오른쪽 항등원이 있는 경우 - '''P op I = P'''를 만족하는 값 '''I'''를 보여준다.
3. 1. 단항 연산
단항 연산은 하나의 입력값에 대해 연산을 수행한다. 대표적인 단항 연산에는 항등(identity)과 부정(negation)이 있다.
p | p |
---|---|
T | T |
F | F |
- 부정(negation, NOT)은 입력값의 반대 진리값을 출력한다. 입력값이 참이면 거짓을, 거짓이면 참을 출력한다. NOT p는 ¬p, Np, Fpq, ~p 등으로 표기한다.
p | ¬p |
---|---|
T | F |
F | T |
3. 2. 이항 연산
(p ∧ q)(p ∨ q)
(p ⊕ q)
(p ↔ q)
(p → q)
(p ↑ q)
(p ↓ q)