1차 논리(一次論理, first-order logic)
원소에만 한정 기호를 가할 수 있고, 술어에는 한정 기호를 가할 수 없는 술어 논리이다. 명제 논리와 달리 변수에 대하여 한정 기호를 사용할 수 있으나, 2차 논리와 달리 변수들의 집합에 대하여 한정 기호를 사용할 수 없다. 1차 논리의 경우, (2차 논리와 달리) 괴델의 완전성 정리 · 콤팩트성 정리 · 뢰벤하임-스콜렘 정리와 같은 중요한 성질들이 성립한다.
이외에 1차 술어 논리, 1계 논리 등으로도 불린다. 간단히 술어 논리(predicate logic)라 하면 1차 논리를 가리키는 경우가 많다.
정의
1차 논리는 다음의 요소들로 이루어진다.
특정 문자열들의 집합을 논리식의 집합이라고 한다. 논리식이 만족시켜야 하는 문법은 재귀적으로 정의된다.
특정 논리식 집합으로부터 다른 논리식을 추론할 수 있다. 이에 대한 규칙은 힐베르트 체계 및 다른 여러 방식으로 명시될 수 있다.
1차 논리 언어의 의미론이란 그 언어의 문장들에 대하여 참인지 여부를 일관적으로 부여하는 구조이다. 이는 보통 모형으로 주어진다.
명제논리 : 명제를 가지고 논리를 판별한다.
1. 명제 : 참과 거짓을 표현할 수 있는 식이나 문장
2. 단순명제 : 한가지 사실을 주장하는 명제
3. 합성명제 : 연결사를 사용하여 단순 명제를 이어서 만든 명제
4. 연결사 : ~, ->, ∨, ∧ 이런거를 연결사라고 한다.
5. 조건문 : p ⇒ q 에 관한 진리 조건이 있다.
술어 논리
술어는 ‘…은 ~이다/ ~하다/ ~한다’와 같은 문장의 구조에서 ‘~이다/ ~하다/ ~한다’에 해당하는 부분을 가리키고, 술어논리는 앞쪽 ‘…은/는’에 해당하는 부분인 주어와 뒤의 술어간의 관계를 다루는 논리체계라고 할 수 있다.
즉 술어 논리는 주어와 술어간의 관계를 다루는 논리 체계를 의미한다.
문장이라는 것은 자연어이고 이 자연어를 컴퓨터상의 표현 하기엔 많은 문제점이 존재한다.
이를 지식 표현이라고 한다. 지식표현은 컴퓨터와 사람이 동시에 이해할 수 있는 형태로 나타내는 것을 말한다.
앞서 배운 명제논리에 의해 사실을 표현시 모든 사실을 논리식으로 표현하여 기호화 할 수 있다. 그러나 기호화된 사실들이 서로 독립적이라서 상호 관계를 알 수 없다. 이를 해결하기 위해 술어 논리라는게 등장 했다.
논리 구성 요소
- 술어변수(혹은 관계)들의 집합. 각 술어변수는 알파벳 대문자 P, Q, R, ...등으로 나타내며, 각자 항수(arity)를 갖고 있다.
- 상수들의 집합. 각 상수는 소문자 a, b, c, ...등으로 나타낸다.
- 함수들의 집합. 각 함수는 소문자 f, g, h, ...등으로 나타내며, 함수의 항수는 1 이상이다.
- 변수들의 무한집합. 각 변수는 소문자 x, y, z, ...등으로 나타낸다.
- 논리 연산을 나타내는 기호: (논리적 부정), (논리곱), (논리합), →(조건기호), ↔(쌍조건기호).
- 한정기호를 나타내는 기호: (전칭기호), (존재기호).
- 좌측 괄호 "("와 우측 괄호 ")".
- 경우에 따라 동일성 기호 =를 포함시키기도 한다.
전칭기호
P(x)를 논의영역 D를 갖는 명제함수라고 할때 D에 속하는 모든 x에 대하여 p(x)는 참이다.
x P(x)라고 한다.
All를 뒤집은 것
존재기호
P(x)를 논의영역 D를 갖는 명제함수라고 할때 D에 속하는 어떤 x에 대하여 p(x)는 참이다.
wff
여기까지 기본적인 준비가 다 되엇고 이제 wff라고 불리는 정합 논리식을 배워보자
well-formed formula 논리식은
논리연산을 위하여 명제와 연결사 (connectives) 를 이용하여 만든 논리식을 의미한다.
이 논리식의 특징은
1. 모든 명제와 true false는 논리식
2,. A와 B가 논리식이면 ~A ,(AVB),(A -> B)등도 논리식이고
3. A와 B를 반복 적용한것도 논리식이다.
마르커스
1. Marcus was a man.
man(Marcus)
2. Marcus was a Pompeian.
Pompeian(Marcus)
3. All Pompeians were Romans.
∀x Pompeian(x) → Roman(x)
4. Caesar was a ruler.
ruler(Caesar)
5. All Romans were either loyal to Caesar or hated him.
∀x Roman(x) → ((loyalto(x, Caesar) ∨ hate(x, Caesar))
∧ ~(loyalto(x, Caesar) ∧ hate(x, Caesar))
6. Everyone is loyal to someone.
∀x∃y loyalto(x, y)
7. People only try to assassinate rulers they are not loyal to.
∀x∀y person(x) ∧ ruler(y) ∧ tryassassinate(x, y) → ~loyalto(x, y)
8. Marcus tried to assassinate Caesar.
tryassassinate(Marcus, Caesar)
Was Marcus loyal to Caesar? (마커스는 시이저에 충성하였는가?)