명제함수 (Propositional Function) 혹은 술어 (Predicate)
명제는 참이나 거짓이 결정되어 있어야 한다. 예를 들어 " $ P $ : $ n $ 은 짝수이다" 같은 형태는 $ n $ 에 따라 $ P $ 가 True 혹은 False 로 결정되기 때문에 명제라 할 수 없다.
이러한 문장 " $ P $ : $ n $ 은 짝수이다"를 바꾸어서 $ P(x) $ 와 같이 형태로 표현할 수 있다. 이 $ P(x) $ 와 집합 $ D $ 가 주어졌을 때, 각 $ x \in D $ 에 대해 $ P(x) $ 가 명제이면 $ P $ 를 ($ D $ 에 대한) 명제함수, 혹은 술어라 한다. 또한 $ D $ 를 $ P $ 의 논의영역(the domain of discourse)이라 한다.
전칭한정 (Universal Quantifier) 및 존재한정 (Existential Quantifier)
전칭한정은 논의영역에 속하는 모든 객체에 대해 어떤 명제함수 $ P(x) $ 가 항상 성립함을 나타낸다. 수학적 기호로는 모든 것을 뜻하는 기호 $ \forall $ 을 사용하여 $ \forall x P(x) $ 라 표기한다.
전칭한정된 문장은 논의영역의 모든 $ x $ 에 대해 $ P(x) $ 가 참일 때 참이고, 하나라도 $ P(x) $ 를 거짓으로 만드는 $ x $ 가 있다면 거짓이다. 이때 전칭한정된 문장을 거짓으로 만드는 특정한 값 $ x $ 를 반례(counterexample)라 한다.
명제함수 $ P(x) $ 에서 변수 $ x $ 를 자유변수(free variable)이라 하고, 전칭 한정된 문장 $ \forall x P(x) $ 에서 변수 $ x $ 를 구속변수(bound variable)이라 한다. 이는 $ x $ 가 한정기호 $ \forall $ 에 구속된다는 의미이다. 자유변수가 포함된 명제는 $ x $ 가 논의영역에서 자유롭게 선택될 수 있기 때문에 명제가 아니며, 자유변수가 없는, 즉 모든 변수가 한정된 문장은 명제이다.
전칭한정된 문장은 다음과 같이 증명될 수 있다. 예를 들어 "모든 실수 $ x $ 에 대해 만약 $ x > 1 $ 이면 $ x + 1 > 1 $ 이다." 라는 전칭한정된 조건 명제를 증명해보자. $ x $ 를 임의의 실수로 생각하고 케이스를 나누어 증명할 수 있다. $ x $ 는 임의의 실수이므로 $ x > 1 $ 혹은 $ x \leq 1 $ 중 하나가 참이다. 만약 $ x \leq 1 $ 이 참이라면 조건 명제의 전제인 $ x > 1 $ 이 거짓이므로 조건 명제의 진리값은 참이된다. 만약 $ x > 1 $ 이 참이라면 $ x $ 값에 상관없이 $ x + 1 > x $ 이고, $ x > 1 $ 이므로 $ x + 1 > 1 $ 이 되고 조건 명제의 전제와 결과 모두 참이되기 때문에 해당 조건 명제의 진리값은 참이다. 모든 실수 $ x $ 에 대해 이 명제가 참임을 보였기 때문에 이 전칭 한정된 문장은 참이다.
존재한정은 논의영역에 속하는 어떤 객체에 대해 명제함수 $ P(x) $ 가 성립함을 나타낸다. 수학적 기호로는 존재한다는 것을 뜻하는 기호 $ \exists $ 를 사용하여 $ \exists x P(x) $ 라 표기한다.
존재한정된 문장은 논의영역 $ D $ 를 가진 명제함수 $ P(x) $ 에서 논의영역에 속하는 적어도 하나의 어떤 $ x $ 가 $ P(x) $ 를 참으로 만든다면 이 존재한정된 문장은 참이고, 논의영역 $ D $ 에 속하는 모든 $ x $ 에 대해 $ P(x) $ 가 거짓이면 거짓이다.
존재한정된 문장은 특정 $ x $ 를 찾기만 하면 참임을 증명할 수 있다. 반대로 존재한정된 문장이 거짓임을 증명하는 것은 전칭한정된 문장을 증명하는 것과 같다.
이러한 한정된 명제에 대한 의사코드를 다음과 같이 표현할 수 있다.
$ P $ 가 논의영역이 집합 $ \{ d_1, d_2, \dots , d_n \} $ 인 명제함수라 하자. 다음의 의사코드는 $ \forall x P(x) $ 가 참인지 거짓인지 결정한다.
for i = 1 to n
if (not P(d_i))
return false
return true
다음의 의사코드는 $ \exists x P(x) $ 가 참인지 거짓인지 결정한다.
for i = 1 to n
if (P(d_i))
return true
return false
만약 $ P $ 가 논의영역 $ D $ 를 가진 명제함수라면 일반화된 드모르간의 법칙(generalized de morgan’s laws for logic)에 의해 다음이 성립한다.
$$ \lnot \text{ } (\forall x P(x)) \equiv \exists x \lnot \text{ } P(x) $$
$$ \lnot \text{ } (\exists x P(x)) \equiv \forall x \lnot \text{ } P(x) $$
한정된 문장의 부정
한정된 문장을 부정하여 사용할 수도 있다. 예를 들어 "어떤 새들은 날 수 있다"는 문장이 있다고 가정하자. 이 문장을 수식으로 표현하면 $ \exists x P(x) $, $ P(x) $: "$ x $ 는 날 수 있다.", $ D $: "새" 로 표현할 수 있다. 이 문장을 부정하면 "어떤 새들은 날 수 없다"가 되어 $ \exists x \lnot \text{ } P(x) $ 로 표현된다.
위 문장을 다시 부정해보자. $ \lnot (\exists x \lnot \text{ } P(x)) $ 로 표기한다. 이는 드모르간의 법칙을 적용하면 $ \forall x \lnot \lnot \text{ } P(x) $ 로 나타낼 수 있으며, 다시 이는 $ \forall x P(x) $ 로 나타낼 수 있다. 이는 문장으로 풀어쓰면 "모든 새는 날 수 있다"가 된다.
한정된 문장에 대한 추론 규칙
- 전칭 예시화 (Universal Instantiation)
$$ \begin{align*} & \forall x P(x) \\ \hline & \therefore P(d) \text{ if } d \in D \end{align*} $$
- 전칭 일반화 (Univarsal Generalization)
$$ \begin{align*} & P(x) \text{ for every } d \in D \\ \hline & \therefore \forall x P(x) \end{align*} $$
- 존재 예시화 (Existential Instantiation)
$$ \begin{align*} & \exists x P(x) \\ \hline & \therefore P(d) \text{ for some } d \in D \end{align*} $$
- 존재 일반화 (Existential Generalization)
$$ \begin{align*} & P(d) \text{ for some } d \in D \\ \hline & \therefore \exists x P(x) \end{align*} $$
다중 한정기호
두 개 이상의 한정기호를 사용하여 복잡한 명제나 논리적 관계를 표현 할 수 있다. 두 개 이상의 한정기호를 사용하기 때문에 전칭한정이 여러 개 사용될 수도, 전칭한정과 존재한정이 같이 사용될 수도, 존재한정이 여러 개 사용될 수도 있다.
- $ \forall x \forall y P(x, y) $
모든 $ x \in X $ 와 모든 $ y \in Y $ 에 대해 $ P(x, y) $ 가 참이면 참이다. 즉 적어도 하나의 $ x \in X $ 와 적어도 하나의 $ y \in Y $ 에 대하여 $ P(x, y) $ 가 거짓이면 거짓이다.
- $ \forall x \exists y P(x, y) $
모든 $ x \in X $ 에 대해 적어도 하나의 $ y \in Y $ 가 존재하여 $ P(x, y) $ 가 참이면 참이다. 즉 모든 $ y \in Y $ 에 대해 $ P(x, y ) $ 가 거짓이 되는 $ x \in X $ 가 존재한다면 거짓이다.
- $ \exists x \exists y P(x, y) $
적어도 하나의 $ x \in X $ 와 적어도 $ y \in Y $ 가 존재하여 $ P(x, y) $ 가 참이면 참이다. 즉 모든 $ x \in X $ 와 모든 $ y \in Y $ 에 대해 $ P(x, y) $ 가 거짓이면 거짓이다.
이러한 다중 한정된 명제에 대해 다음과 같이 의사 코드로 나타낼 수도 있다.
$ P $ 가 논의영역이 $ \{ d_1, d_2, \dots, d_n \} \times \{ d_1, d_2, \dots, d_n \} $ 인 명제함수라 하자. 다음의 의사코드는 $ \forall x \forall y P(x, y) $ 가 참인지 거짓인지 결정한다.
for i = 1 to n
for j = 1 to n
if (not P(d_i, d_j))
return false
return true
다음의 의사코드는 $ \forall x \exists y P(x, y) $ 가 참인지 거짓인지 결정한다.
exists_dj(i) {
for j = 1 to n
if (P(d_i, d_j))
return true
return false
}
for i = 1 to n
if (not exists_dj(d_i))
return false
return true
한정된 문장에서 적용할 수 있었던 드모르간의 법칙은 다중 한정된 문장에서 다음과 같이 적용할 수 있다.
$$ \lnot \text{ } (\forall x \exists y P(x, y)) \equiv \exists x \lnot \text{ } (\exists y P(x, y)) \equiv \exists x \forall y \lnot \text{ } P(x, y) $$
'Mathematics > Discrete Mathematics' 카테고리의 다른 글
[Discrete Mathematics] 바닥 함수와 천장 함수 (0) | 2024.10.07 |
---|---|
[Discrete Mathematics] 여러가지 증명(proof) 및 수학적 귀납법 (0) | 2024.09.22 |
[Discrete Mathematics] 논법(argument)과 추론 규칙(rule of inference) (0) | 2024.09.10 |
[Discrete Mathematics] 명제(proposition)와 논리 연산 (0) | 2024.09.05 |
[Discrete Mathematics] 집합(Set)의 개념과 성질 (0) | 2024.09.03 |