술어 논리: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
잔글편집 요약 없음
1번째 줄:
{{다른 뜻 설명|[[1차 논리]]를 술어 논리라고 일컫기도 한다.}}
 
{{정리 필요|날짜=2019-02-14}}
''' 술어 논리'''(述語論理, {{llang|en|predicate logic}}) 또는 '''함수 논리'''(函數論理) 또는 '''양화 논리'''(量化論理)는 명제에 '주어'와 '술어'의 구조가 존재하고, '주어'가 될 수 있는 대상에 대한 한정 기호를 사용할 수 있는 논리이다. [[1차 논리]] · [[2차 논리]] · [[고차 논리]] 따위가 있다. [[명제 논리]]와는 달리 명제의 내부 구조 분석에 의한 [[추론 규칙]]이 존재한다.
 
== 술어논리의 표현 ==
하나의 명제를 [[술어]]와 [[객체]]로 분리하여 표현한다. 하나의 술어는 하나 이상의 객체를 수식할 수 있다. 또한 객체에는 상수가 사용될 수도 있고 [[변수]]가 사용될 수도 있다.
: x가 한국인 이라면 x는 인간이다. : Korean(x) -> Man(x)
변수 x가 나타내는 객체의 집합 D를 [[정의역]](domain)이라 한다. 이 정의역 (x의 범위) 내에서 “한국인”인 x만을 지정하는 기호로 '∃'와 '∀'를 사용할 수 있다. '∃x'는 '적어도 어느 하나의 x가 존재함'을 나타내며 '존재기호'라 부른다. '∀x'는 '모든 x에 대하여'라는 의미로 사용되며 '전칭기호'라 부른다.
 
'∃'와 '∀'를 총칭하여 '한정기호'라 하며 한정기호를 포함하고 있는 논리식에 대해서는 다음의 등식이 성립힌다.
 
# ~(∃x)P(x)≡(∀x){~P(x)}
# ~(∀x)P(x)≡(∃x){~P(x)}
# (∀x){P(x)∧Q(x)}≡(∀x)P(x)∧(∀x)Q(x)
# (∃x){P(x)∨Q(x)}≡(∃x)P(x)∨(∃x)Q(x)
# (∀x)P(x)≡(∀y)P(y)
# (∃x)P(x)≡(∃y)P(y)
 
또한 다음과 같이 술어논리에서는 객체사이의 관계를 나타내는 함수기호를 사용할 수 있다.
: father(John)
는 'John'의 아버지에 해당되는 객체를 나타낸다.
 
== 명제논리와 술어논리의 차이 ==
[[명제논리]]에서는 명제가 최소 단위이므로 명제의 내부구조에 대한 분석은 이루어질 수 없다. 예를 들어 다음과 같은 두 명제논리
: '소크라테스는 사람이다.'
: '플라톤은 사람이다.'
는 완전히 별개의 사실이며, 이것으로부터 '소크라테스'와 '플라톤'이 모두 사람이라는 유사점을 발견할 수 없다. 즉, 명제논리는 지식표현을 일반화할 수 없다. 따라서
: '모든 사람은 죽는다.'
라는 명제를 추가할 때, 이 세 명제로부터 소크라테스와 플라톤은 죽는다는 사실을 유도해 낼 수 없게 되는 것이다.
 
술어논리는 명제논리의 이러한 문제를 해결할 수 있다. 술어논리는 하나의 명제를 술어와 그 술어의 수식을 받는 객체로 분리하여 '술어(객체)'의 형태로 표현한다. 예를 들면 앞의 세 명제는 다음과 같이 술어논리식으로 표현될 수 있다.
 
: '소크라테스는 사람이다 : Man(SOCRATES)'
: '플라톤은 사람이다 : Man(PLATO)'
: '모든 사람은 죽는다 : <math>\forall</math>x{Man(x)->Die(x)}'
여기서 Man은 '사람이다'라는 술어에 해당되고, SOCRATES와 PLATO는 각각 '소크라테스'와 '플라톤'을 나타내는 객체가 된다. 이때 SOCRATES와 PLATO는 모두 Man이라는 공통된 술어의 수식을 받고 있다. 이때 Man(SOCRATES), Man(PLATO)가 모두 참이라면 <math>\forall</math>x{Man(x)->Die(x)}에 의해 Die(SOCRATES)와 Die(PLATO)가 모두 참이라는 사실을 유도해 낼 수 있다.