모든 사람은 죽는다. + 소크라테스는 사람이다.
라는 두 명제가 주어질 때 소크라테스는 죽는다 라는 것을 증명하기엔 아직 부족함
객체 특진 관계 등이 필요함. "추론"
술어논리:
명제 함수는 명제의 일반화.
-개발자 적인 시각에서 보자면 P는 함수 x는 변수이자 P의 인자 값
변수 X에 할당되는 값에 다라 P(x)의 명제 진리값이 달라짐.
예를 들어 P(x)를 X > 0 이라고 하고, 정의역(domain)을 정수라 하면
그냥 진짜 함수의 개념과 똑같음.
인자를 넣어 Boolean 타입을 반환하는 함수
*만약 인자에 변수가 들어왔으면 해당 명제 함수는 명제라 할 수 없음.
진리값을 구할 수 없기 때문.
P(x1, x2, x3.....xn) 형태의 문장을 n-튜플이라고 함.
n-변수 술어나 n-항 술어 라고도 함.
한정에 사용되는 단어는 all some many none과 같이 직접적인 수량, 특징이 아닌 포괄적인 것을 지칭하는 것
∀x P(x): "정의역에 속하는 x의 모든 값에 대하여 P(x) 이다"
∃x P(x): 정의역에 속하는 적어도 하나의 값 x에 대하여 P(x) 이다.
∀x p(x): 모든 x는 P(x) 이다.
P(x)가 x > 0 일 때 U가 자연수라면 모든 x는 0 이하이다.
∃!x P(x)는 오직 딱 하나의 X라는 의미.
한정 기호의 정의역이 유한하면, 모든 원소들을 나열할 수 있어서, 한정된 문장을 명제 논리로 표현할 수 있다.
정의역이 무한이더라도 이러한 방식으로 한정되지 않은 값을 통해 무한한 정의역이 존재할 수 있다.
한정기호 ∀와 ∃는 명제 논리의 모든 논리 연산자보다 상위의 우선순위를 갖는다.
EX) ∀x P(x) v Q(x) = (∀x P(x)) v Q(x) != ∀x ((Px) v Q(x))
아쉽게도 이런 우선순위를 고려하지 않고 그냥 ∀x P(x) v Q(x)로 쓰는 사람도 많으나 틀린 것임.
이 수업의 모든 학생들은 자바 수업을 듣는다.
정의역 U?
U: 이 수업의 모든 학생
J(x): 자바 수업을 듣는다.
∀x J(x)
U: 모든 사람
S(x): x는 이 수업 안의 모든 학생
∀x (S(x) -> J(x))
∀x (S(x) ^ J(x)) ?
and 연산자와 if 연산자라 진리값은 같게 나오나 문장을 영어로 풀어내면 다르게 나옴.
두 개의 서로 다른 논리식이 같은 진리값을 가진다면 동치임.
∀x ㄱㄱS(x) === ∀x S(x)
∀x J(x): 이산수학을 듣는 모든 학생은 자바 수업을 듣는다.
J(x): x는 자바 수업을 듣는다
U: 이 수업의 모든 학생
모든 학생이 듣지는 않는다와 일부 학생은 듣지 않는다 는 동치임
ㄱ∀x J(x) === ∃x ㄱJ(x)
수학은 명제들의 집합이다. 말과 같이 모호한 부분이 없다.
Q: Some student in this class has visited Mexico
A: ∃x(S(x)^M(x))
술어 논리는 시스템이 충족해야하는 속성을 지정하는데 사용.
다음의 시스템 명세를 술어와 한정기호로 표현:
some example
Prolog(from Programming in Logic)는 1970년대 인공지능(AI) 연구자들이 개발한 프로그래밍 언어.
논리 프로그래밍을 할 수 있는 언어: Prolog facts(명제, 사실) 과 Prolog rules(규칙)을 주는 방식으로 개발
초창기 개발은 논리 그 자체들을 가지고 개발하려 했음.
그냥 한정기호가 연속되는 것
∃x ∀y~~
추론을 하는 방법 등을 다루는 부문.
재미는 있으나 어렵고 철학적 내용도 많이 다루기에 넘어감.
증명은 어떤 문장의 참을 입증하는 유효 논증이다.
수학, CS 및 기타 분야에서는, 일반적으로 더 짧은, 비형식적 증명이 사용된다. (책이나 이런 곳에선 상당히 구체적이고 까다로운 증명이 사용됨)
증명의 단계에서 하나 이상의 추론 규칙이 사용된다.
증명의 응용
정리(theorem)란 다음을 이용하여 참임을 보일 수 있는 문장:
- 정의(definitions)
- 다른 정리
- 공리(axioms) (참임을 "가정"한 문장)
- 추론의 규칙
보조 정리(lemma)는 "helping throrem" 혹은 다른 정리를 증명하기 위해 필요한 결과(한 정리가 너무 길면 가독성이 떨어지니까 따로 뺀 정리)
따름 정리(corollary)는 어떤 정리로 부터 직접적으로 귀결될 수 있는 정리.(정리를 하다보니 나오는 정리?)
propositions는 덜 중요한 정리(정리,...는 아니지만 어느정도 참인 그런거)
가설(conjecture)은 참이라고 제안된 문장. 증명이 발견되면 정리가 됨. 거짓으로 판명될 수도 있음. (증명은 되지 않았으나 참으로 추정되는 것)
정의역의 모든 원소들에 대하여 어떤 성질이 성립함을 확고히 한다.
수학에서는 이를 생략함.
예를 들면 x > y 이면 x**2 > y**2 는 생략함
명제 ∀x(P(x) -> Q(x))를 증명하기 위해서는,
c가 정의역에 속한 임의의 원소일 때,
P(c) -> Q(c)가 성립함을 보이고,
전칭 일반화를 적용한다.
그러므로, 다음 형태의 문장을 증명해야함: p -> q
쉽게 말하자면 ∀x(P(x) -> q(x)) 를 분해하며 기초부분인 p -> q 부터 단계별로 참임을 증명해야함.
만약 q가 참이라면 p -> q 도 참이다.
q가 참이면 뭐가 됐든 진리값은 참으로 나오기에 q가 참인 것만 보여주자!
만약 p 가 거짓이면, p -> q 는 참이다.
[이러한 예가 어리석은 것 처럼 보이지만 사소하고 공허한 증명이 수학적 귀납법(5장)에서 자주 사용된다.]
p나 q가 참이거나 거짓이라는 것을 보여주기가 쉽지 않을 떄 쓰는 것.
p가 참이라고 가정.
추론, 공리, 논리적 동치 등을 사용하여 q가 참임을 보임.
Q: 만약 n이 홀수인 정수라면 n 2은 홀수인 정수이다.
A: n이 홀수라고 가정. 홀수의 정의에 의하여 n = 2k + 1 인 정수 K가 존재한다. n = 2k + 1의 양변을 제곱하면:
n 2 = (2k + 1) 2 = 4k 2 + 4k + 1 = 2(2k 2 + 2k) + 1 = 2r + 1,
단 r = 2k 2 + 2k인 정수
그러므로, n ** 2은 홀수인 정수이다.
정의: 만약 q != 0 인 정수 p 와 q가 존재하면, 실수 r = p/q 은 유리수이다.
유리수란? 두 정수의 비율로 나타낼 수 있는 수
무리수란? 이해할 수 없는 수
정수 / 정수 가 가능하면 유리수임.(단 분모는 0일 수 없음.)
r + s = p / q + t / u = pu + qt / qu
ㄱq가 참이라고 가정했을 때, ㄱp이 참임을 증명.
간접 증명이라고도 함.
ㄱp -> ㄱq === p -> q
예제: N이 정수이고 3n + 2 이 홀수라면, n은 홀수
풀이: N이 짝수라고 가정. 그러면, 임의의 정수 K에 대해 n = 2k
따라서 3n + 2 = 3(2k) + 2 = 6k + 2 = 2(3k+1) = 2j for j = 3k + 1
그러므로 3n + 2는 짝수. ㄱq -> ㄱp가 참임을 보였으므로, p -> q 역시 참이다.
p가 참임을 증명하기 위해, ㄱp가 참이라고 가정하고 p ^ ㄱp 와 같은 모순을 유도(간접 증명).
상호조건문인 p <-> q의 정리를 증명하기 위해서는, p -> q와 q -> p를 둘 다 증명하게 된다.
모든 경우를 구하여 증명하기
(P1 v p2 v p3 ... v pn) -> q 를 증명하라.
항진명제 사용
만약 a >= b 이면, a @ b = max{a, b} = a 이고
글치 않으면 a @ b = max{a, b} = b 이다.
(즉, 연산자 @는 결합법칙이 성립)
EX: x와 y가 정수이고 x,y와 x + y가 모두 짝수이면 x와 y가 모두 짝수임을 보여라.
증명: 대우를 이용한 증명. x와 y가 모두 짝수가 아니라고 가정하면 하나 혹은 둘 다 홀수. 일반성을 잃지 않고 x가 홀수라고 가정. 그러면, x = 2m + 1.
하나의 예재만 보여줘도 상관이 없을 떄 사용
생산적 존재 증명:
P(c)를 참으로 하는 c가 존재하지 않는다고 가정하고, 모순을 유도한다.
∃xㄱP(x) === ㄱ∀xP(x)
ㄱ∀xP(x)가 참(혹은, ∀xP(x)이 거짓) 인 것을 보이기 위해서는 ㄱP(c)가 참 혹은 P(c)가 거짓인 c를 찾는다.
방법 선택
1. 직접 증명 방법 시도.
2. 직접 증명으로 부족하면, 간접 증명법으로 시도(ex: 대우 증명법)
오똔 방법이든, 전략을 선택.
1. 전향 추론을 시도.
미해결 문제는 수학에 많은 동기를 부여했다. 그 중 하나가 페르마가 300년 전에 제시한 가설이다.
x^n + y^n = z^n 은 n > 2인 정수 x, y, z(xyz != 0)에 대해서 해를 갖지 않는다.
증명은 1990년대에 Andrew Wiles에 의해 발견되었다.
나중에 빈 부분 있으면 말해줘. 검색해서 채워 넣을거임