앱갈피

진리표 생성기

논리식을 넣으면 중간식 열까지 갖춘 진리표와 항진·모순 판정이 나옵니다

기호 키패드 — 커서 위치에 들어갑니다

예제

식을 입력하면 진리표와 판정이 나타납니다

광고

동치 비교

두 번째 식을 넣으면 논리적 동치인지 판정하고, 아니면 첫 반례 행을 짚어 줍니다.

모든 계산은 브라우저에서 처리되며 서버로 전송되지 않습니다

관련 계산기

이 계산기는 무엇인가요

진리표(truth table)는 논리식에 들어 있는 명제 변수들이 참·거짓을 가질 수 있는 모든 경우를 빠짐없이 늘어놓고, 각 경우에 그 식이 참인지 거짓인지를 적어 둔 표입니다. 변수가 n개면 경우의 수는 2의 n제곱이므로, 변수 3개짜리 식은 8행짜리 표가 됩니다. 이산수학·논리학·디지털논리회로 과목의 첫 단원이고, 고등학교 「명제」 단원에서 역·이·대우를 확인할 때도 같은 도구를 씁니다.

진리표를 손으로 그릴 때 사람이 틀리는 곳은 대개 계산이 아니라 두 가지입니다. 하나는 연산자 우선순위를 잘못 잡는 것이고(¬P ∧ Q를 ¬(P ∧ Q)로 읽는 실수가 가장 흔합니다), 다른 하나는 중간식을 건너뛰고 최종 열만 채우다 한 칸을 흘리는 것입니다. 이 계산기가 입력한 식을 어떻게 읽었는지 「읽음」·「결합」 두 줄로 먼저 보여 주고, 중간식(부분식) 열을 함께 내는 이유가 그것입니다.

입력은 키보드로 칠 수 있는 별칭을 넉넉히 받습니다. P and Q, P & Q, P && Q, P /\ Q, P ∧ Q가 모두 같은 식이 됩니다. 다만 뜻이 갈리는 기호는 받지 않습니다 — ^는 프로그래머에게 XOR, 수학 표기에서는 AND나 거듭제곱이라 한쪽으로 해석하면 에러 없이 틀린 표가 나오기 때문입니다. XOR은 xor 또는 ⊕로 써 주세요.

기본 논리연산자 진리표

PQP ∧ QP ∨ QP ⊕ QP → QP ↔ Q
TTTTFTT
TFFTTFF
FTFTTTF
FFFFFTT

행 순서는 국내 교재 관례에 따라 첫 행이 모두 참(T)입니다. ⊕는 배타적 논리합(XOR), →는 함의(조건), ↔는 동치(쌍조건)입니다.

연산자 우선순위와 결합 방향 — 괄호 없이 쓰면 이렇게 읽힙니다

입력한 식실제로 읽히는 결합
¬P ∧ Q((¬P) ∧ Q)
P ∧ Q ∨ R((P ∧ Q) ∨ R)
P ∨ Q ∧ R(P ∨ (Q ∧ R))
P ∨ Q ⊕ R((P ∨ Q) ⊕ R)
P → Q → R(P → (Q → R))
P ↔ Q ↔ R((P ↔ Q) ↔ R)

우선순위는 강한 쪽부터 ¬ > ∧ > ∨ > ⊕ > → > ↔ 입니다. 같은 연산자가 이어질 때 →만 오른쪽부터 묶고(우결합), 나머지는 왼쪽부터 묶습니다(좌결합).

자주 쓰이는 논리적 동치 — 그리고 동치가 아닌 것 하나

식 1식 2동치 여부이름
P → Q¬P ∨ Q동치함의 제거
P → Q¬Q → ¬P동치대우
¬(P ∧ Q)¬P ∨ ¬Q동치드모르간 법칙
¬(P ∨ Q)¬P ∧ ¬Q동치드모르간 법칙
P ∧ (Q ∨ R)(P ∧ Q) ∨ (P ∧ R)동치분배법칙
P ⊕ Q¬(P ↔ Q)동치배타적 논리합
P → QQ → P동치 아님

두 식이 모든 경우에 같은 값을 가지면 논리적 동치입니다. 마지막 줄은 「역」이 원명제와 동치가 아니라는 것을 보여 줍니다.

진리표 만드는 법 — 순서대로

첫째, 식에 들어 있는 서로 다른 명제 변수를 처음 나온 순서대로 적습니다. (P ∧ Q) → ¬R이면 P, Q, R 세 개이므로 표는 2의 3제곱인 8행이 됩니다.

둘째, 변수 열을 채웁니다. 국내 교재는 첫 행을 모두 참으로 두고 오른쪽 변수일수록 빨리 뒤집히게 적습니다. 변수가 3개면 P는 네 줄마다, Q는 두 줄마다, R은 한 줄마다 참·거짓이 바뀝니다.

셋째, 괄호 안쪽의 작은 식부터 열을 하나씩 늘려 갑니다. (P ∧ Q) → ¬R이라면 P ∧ Q 열, ¬R 열을 먼저 만들고 그 두 열을 재료로 최종 열을 채웁니다. 이 중간 열들을 건너뛰면 한 칸 틀렸을 때 어디서 틀렸는지 되짚을 수 없습니다.

넷째, 최종 열을 봅니다. 최종 열은 식 전체의 값이고, 그 열을 만든 연산자를 주논리연산자라고 부릅니다. 주논리연산자는 "가장 마지막에 계산되는" 연산자이지 "식의 맨 끝에 있는" 연산자가 아닙니다 — ¬(P → Q)에서 주논리연산자는 →가 아니라 맨 앞의 ¬입니다.

연산자 우선순위와 결합 방향 — 가장 많이 틀리는 곳

괄호가 없으면 강하게 묶는 연산자부터 계산합니다. 순서는 ¬ > ∧ > ∨ > ⊕ > → > ↔ 입니다. 부정 기호는 가장 강해서 바로 뒤에 오는 것 하나만 먹습니다. 그래서 ¬P ∧ Q는 (¬P) ∧ Q이고, ¬(P ∧ Q)와는 전혀 다른 식입니다. 두 식은 P가 거짓이고 Q가 거짓인 경우에 값이 갈립니다.

같은 연산자가 연달아 나오면 결합 방향이 필요합니다. 함의만 오른쪽부터 묶습니다 — P → Q → R은 P → (Q → R)입니다. (P → Q) → R로 읽으면 P가 거짓이고 R이 거짓인 경우에 답이 달라집니다. 동치를 비롯한 나머지 이항 연산자는 왼쪽부터 묶어서 P ↔ Q ↔ R은 (P ↔ Q) ↔ R입니다.

헷갈릴 때는 괄호를 직접 치는 편이 가장 안전합니다. 이 계산기는 괄호를 치지 않아도 「결합」 줄에 괄호를 전부 채운 형태를 보여 주므로, 파서가 내 의도대로 읽었는지를 표를 보기 전에 확인할 수 있습니다.

항진명제 · 모순명제 · 우연명제

최종 열이 모든 행에서 참이면 항진명제(tautology)입니다. P ∨ ¬P가 대표적입니다 — 배중률이라고 부르며, P가 무엇이든 참입니다.

최종 열이 모든 행에서 거짓이면 모순명제(contradiction)입니다. P ∧ ¬P가 그렇습니다. 어떤 명제와 그 부정이 동시에 참일 수는 없기 때문입니다.

참인 행과 거짓인 행이 섞여 있으면 우연명제(contingency)입니다. 일상적인 논리식은 대부분 여기 속합니다. 예를 들어 (P ∧ Q) → ¬R은 8행 중 7행이 참이고 1행이 거짓이라 우연명제입니다. 거짓이 되는 유일한 경우는 P·Q·R이 모두 참일 때입니다.

두 식이 동치인지 확인하고 싶다면 식 1 ↔ 식 2를 한 식으로 만들어 항진명제인지 보는 방법도 있습니다. 항진명제라면 두 식은 논리적 동치입니다.

역 · 이 · 대우와 필요충분조건 — 고등학교 「명제」 단원

P → Q라는 명제가 있을 때, Q → P를 역, ¬P → ¬Q를 이, ¬Q → ¬P를 대우라고 합니다. 진리표로 확인하면 원명제와 대우는 언제나 값이 같고(논리적 동치), 역과 이는 원명제와 동치가 아닙니다. 대신 역과 이는 서로 대우 관계라서 그 둘끼리는 동치입니다.

원명제가 참이라고 해서 역이 참인 것은 아니라는 사실이 이 단원의 핵심입니다. P → Q와 Q → P를 이 계산기의 동치 비교에 넣어 보면 두 번째 행(P가 참, Q가 거짓)에서 값이 갈리는 것을 반례로 짚어 줍니다. 그 한 행이 "역은 성립하지 않는다"의 증거입니다.

P → Q가 참일 때 P를 Q이기 위한 충분조건, Q를 P이기 위한 필요조건이라고 부릅니다. P → Q와 Q → P가 모두 참이면, 즉 P ↔ Q가 항진명제이면 P와 Q는 서로 필요충분조건이고 두 명제는 논리적으로 동치입니다.

증명 문제에서 대우를 이용한 증명(대우법)이 자주 등장하는 이유도 여기 있습니다. 원명제를 직접 보이기 어려울 때 동치인 대우를 대신 보이면 됩니다.

자주 묻는 질문

진리표에서 첫 행이 모두 참인가요, 모두 거짓인가요?
교재마다 다릅니다. 국내 이산수학·논리학 교재는 첫 행을 모두 참(T)으로 두는 경우가 많고, 이 계산기도 그 관례를 따릅니다. 행 순서는 표의 모양만 바꿀 뿐 항진·모순·동치 판정에는 영향을 주지 않습니다.
¬P ∧ Q와 ¬(P ∧ Q)는 왜 다른가요?
부정 기호가 논리곱보다 우선순위가 높아 바로 뒤의 P 하나만 부정하기 때문입니다. 앞의 식은 (¬P) ∧ Q이고 뒤의 식은 P ∧ Q 전체의 부정입니다. P가 거짓, Q가 거짓인 경우 앞의 식은 거짓, 뒤의 식은 참이 되어 값이 갈립니다.
P → Q → R은 어느 쪽부터 계산하나요?
함의는 오른쪽부터 묶는 우결합이라 P → (Q → R)로 읽습니다. 다른 이항 연산자는 왼쪽부터 묶어서 P ↔ Q ↔ R은 (P ↔ Q) ↔ R이 됩니다. 의도가 다르다면 괄호를 직접 쓰는 편이 안전합니다.
변수는 몇 개까지 넣을 수 있나요?
고유 변수 8개까지입니다. 8개면 2의 8제곱인 256행이 되고, 여기서 하나만 더 늘어도 512행이라 화면에서 읽기 어렵습니다. 변수가 5개를 넘어가면 계산 전에 몇 행짜리 표가 나오는지 미리 알려 줍니다.
T와 F를 참·거짓 상수로 쓸 수 있나요?
이 계산기에서 T와 F는 변수로 읽습니다. 표기 토글이 T/F를 진리값 표시에 쓰기 때문에 상수까지 T·F로 두면 "변수 T의 값이 F"인 표가 나오기 때문입니다. 참·거짓 상수는 1과 0(또는 ⊤과 ⊥)으로 써 주세요.