술어 논리

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 찾기

술어 논리(predicate logic)는 \forall, \exists 등의 술어 기호를 사용하는 논리 구조를 의미한다. 일반적으로 사용되는 구조에는 1차 논리가 있으며, 이외에도 2차 논리 등이 사용된다.

함수논리 또는 양화(量化)의 논리라고도 하며, 보통 명제 논리(命題論理)보다 한 단계 위쪽에 놓인다.

명제논리에서의 명제는 단위로 취급되어 그 내부구조 속으로 파고들어간 분석은 이루어질 수 없다. 예를 들어 다음 명제논리는 '소크라테스는 사람이다' '플라톤은 사람이다' 이들 두명제는 완전히 별개의 사실이며, 이것으로부터 '소크라테스'와 '플라톤'이 모두 사람이라는 유사점을 발견할 수 없다. 즉, 명제논리는 지식표현의 일반화 측면에서 문제가 있다. 따라서 '모든 사람은 죽는다' 라는 명제가 있을 때, 이 세 명제로부터 소크라테스와 플라톤은 죽는다는 사실을 유도해 낼 수 없게 되는 것이다.

술어논리는 명제 논리의 이러한 문제를 해결할 수 있다. 술어논리는 하나의 명제를 술어와 그 술어의 수식을 받는 객체로 분리하여 '술어(객체)'의형태로 표현한다. 예를 들면 앞의 명제들은 다음과 같이 술어논리식으로 표현될 수 있다.

소크라테스는 사람이다 -> Man(SOCRATES),
플라톤은 사람이다 -> Man(PLATO),
모든 사람은 죽는다 -> \forallx{man(x)->Die(x)},

여기서 Man은 '사람이다'라고 하는술어에 해당되고, SOCRATES와 PLATO는 각각 '소크라테스'와 '플라톤'을나타내는 객체가 된다. 이때 SOCRATES와 PLATO는 모두 Man이라는 공통된 술어에 의해 수식을 받고 있다. 이때 Man(SOCRATES), Man(PLATO)이 모두 참이라면 \forallx{man(x)->Die(x)}에 의해 Die(SOCRATES)와 Die(PLATO)가 모두 참이라는 사실을 유도해 낼 수 있다.

- 술어논리의 표현 하나의 명제를 술어와 객체로 분리하여 표현한다. 하나의 술어는 한개 이상의 객체를 수식할 수 있다. 또한 객체는 상수가 사용될 수도 있고 변수가 사용될 수도 있다. 예) x가 한국인이라면 x는 인간이다. -> Korean(x) -> Man(x) 이 문장에서 사용된 변수 x가 어느 범위의 객체를 대상으로 하는가를 결정해야 한다. 이 객체의 집합 D를 정의역(domain)이라 한다. 이 범위를 지정하는 기호로 사용되는 것이 '∃'와 '∀'가 있다. '∃x'는 '적어도 어느 하나의 x가 존재함'을 나타내며 '존재기호'라 부른다. '∀x'는 '모든 x에 대하여'라는 의미로 사용되며 '전칭기호'라 부른다.

'∃'와 '∀'를 총칭하여 '한정기호'라 하며 한정기호를 포함하고 있는 논리식에 대해서는 다음의 등식이 성립힌다.

1. ~(∃x)P(x)≡(∀x){~P(x)} 2. ~(∀x)P(x)≡(∃x){~P(x)} 3. (∀x){P(x)∧Q(x)}≡(∀x)P(x)∧(∀x)Q(x) 4. (∃x){P(x)∨Q(x)}≡(∃x)P(x)∨(∃x)Q(x) 5. (∀x)P(x)≡(∀y)P(y) 6. (∃x)P(x)≡(∃y)P(y)

또한 술어논리에서는 객체사이의 관계를 나타내는 함수기호를 사용할 수 있다.

예)father(철수) 는 '철수'의 아버지에 해당되는 객체를 나타낸다.