SlideShare une entreprise Scribd logo
1  sur  52
이산수학 박 민욱
1.4 술어 논리
	P1 ∧P2 ∧P3 ∧..... ∧Pn -> Q 타당한 논증이 되려면  	- 논증의 내부 구조에 기초하여 P1, ..., Pn으로부터 Q가 논리적으로 유도 되어야한다.
술어 논리의 유도 규칙
예제25 술어 논리를 사용하여 논증의 타당성을 증명하라 (∀x)R(x) ∧ [(∀x)R(x) -> (∀x)S(x)] -> (∀x)S(x) 1. (∀x)R(x)			hyp 2. (∀x)R(x) -> (∀x)S(x)	hyp 3. (∀x)S(x)			1, 2 mp
전체 사례화 - ui (∀x)P(x)로부터P(x), P(y), P(z), P(a)등을 유도 할수 있음을 말한다.
예제 26 	"모든 인간은 죽는다. 소크라테스는 인간이다. 따라서, 소크라테스도 죽는다.“ 	H(x): x는 인간이다.  	s는 상수(소크라테스) 기호이다.  	M(x): x는 죽는다.
	(∀x)[H(x) -> M(x)] ∧ H(s) -> M(s) 	1. (∀x)H(x) -> M(x)	hyp 	2. H(s)				hyp 	3. H(s) -> M(s)		1, ui 	4. M(s)				2, 3, mp
존재 사례화 - ei 존재 한정사를 제거하는 것을 허용한다.  이것은(∃x)P(x)로부터 새로운 이름이거나 혹은 상수 기호이면 P(a), P(b), P(c), P등을 유도 할수 있음을 말한다.
예제 27 	1. (∀x)[P(x) -> Q(x)] 	hyp 	2. (∃x)P(y)			hyp 	3. P(a)				2, ei 	4. P(a) -> Q(a)		1, ui 	5. Q(a)				3, 4, mp
전체일반화 - ug 전체 일반화는 전체 한정사가 삽입되는 것을 허용한다.
예제 28 	(∀x)[P(x) -> Q(x)] ∧ (∀x)P(x) -> (∀x)Q(x) 	1. (∀x)[P(x) -> Q(x)] 	hyp 	2. (∀x)P(x)			hyp 	3. P(x) -> Q(X)		1, ui 	4. P(x)				2, ui 	5. Q(x)				3, 4, mp 	6. (∀x)Q(x)			5, ug
전체 일반화에는 두개의 제약 사항들이 있다.  1. P(x)		hyp 2. (∀x)P(x)	올바르지 않은 일반화;  ,[object Object],자동차 도메인에서P(x)는 "x는 노란색이다."
	1. (∀x)(∃y)Q(x, y)		hyp 	2. (∃y)Q(x, y)		hyp 	3. Q(x, t)			2, ei 	4. (∀x)Q(x, t)			 ,[object Object],(57p 참고)
존재 일반화 - eg 존재 한정사의 삽입을 허용한다.
예제 29 	(∀x)P(x) -> (∃x)P(x)를 증명하라 	1. (∀x)P(x)			hyp 	2. P(x)				1, ui 	3. (∃x)P(x)			2, eg 	(57p 참고)
규칙의 활용 존재 사례화의 부적절한 사용 1. (∃x)P(x) ∨ (∃x)Q(x)	hyp 2. P(a) ∨ Q(a) 1. (∀x)(∃x)Q(x, y)		hyp 2. (∀x)Q(x, a)	 (57p 참고)
예제 30 	(∀x)[P(x) ∧ Q(x)] -> (∀x)P(x) ∧ (∀x)Q(x) 	1. (∀x)[P(x) ∧ Q(x)]		hyp 	2. P(x) ∧ Q(x)			1, ui 	3. P(x)				2, sim 	4. Q(x)				2, sim 	5. (∀x)P(x)			3, ug 	6. (∀x)Q(x)			4, ug 	7. (∀x)P(x) ∧ (∀x)Q(x)	5, 6, con
예제 31 	[P(x) -> (∀y)Q(x, y)] -> (∀y)[P(x) -> Q(x, y)] 	1. P(x) -> (∀x)Q(x, y)	hyp 	2. P(x)				temporary hyp 	3. (∀x)Q(x, y)			1, 2, mp 	4. Q(x, y)				3, ui 5. P(x) -> Q(x, y)	temp. hyp discharged 	6. (∀y)[P(x) -> Q(x, y)]	5, ug 	(59p 참고)
예제 32 	[(∃x)A(x)]' <-> (∀x)[A(x)]'  양방향에서 함의를 증명해야 한다. 	a. [(∃x)A(x)]' ->(∀x)[A(x)]' 	b. [(∀x)A(x)]' ->(∃x)[A(x)]'
	[(∃x)A(x)]' ->(∀x)[A(x)]‘ 	1. [(∃x)A(x)]'		hyp 	2. A(x)			temporary hyp 	3. (∃x)A(x)		2, eg 	4. A(x) -> (∃x)A(x)	temporary hyp discharged 	5. [A(x)]'			1, 4, mt 	6. (∀x)[A(x)]'		5, ug
	[(∀x)A(x)]' ->(∃x)[A(x)]‘ 	1. [(∀x)A(x)]'			hyp 	2. (∃x)A(x)			temporary hyp 	3. A(a)				2, ei 	4. [A(a)]'				1, ui 5. [(∀X)[A(x)]']'			3, 4, inc 	6. (∃x)A(x) -> [(∀X)[A(x)]']'	temporary hyp discharged 	7. [((∀X)[A(x)]')']'		1, dn 	8. [(∃x)A(x)]'			6, 7, mt
예제33 wff(∀x)[P(x) ∨ Q(x)] -> (∃x)P(x) ∨ (∃x)Q(x) 타당한지 증명하거나 반증하라 	(∀x)[P(x) ∨ Q(x)] -> [[(∃x)P(x)]' -> (∀x)Q(x)] 	1. (∀x)[P(x) ∨ Q(x)] 		hyp 	2. [(∃x)P(x)]'			hyp 	3. (∀x)[P(x)]'			2, neg <- 어디서 굴러온놈? 	4. [P(x)]'			3, ui 	5. P(x) ∨ Q(x)		1, ui 	6. [[P(x)]']' ∨ Q(x)		5, dn 	7. [P(x)]' -> Q(x)		6, imp 	8. Q(X)			4, 7, mp 	9, (∀x)Q(x)			8, ug 	(61p참고)
예제 34 wff(∃x)P(x) ∧ (∃x)Q(x) -> (∃x)[P(x) ∧ Q(x)] 	1. (∃x)P(x)			hyp 	2. (∃x)Q(x)			hyp 	3. P(a)				1, ei (61p 볼것)
구두 논증 	verbal argumentation (말에 의한 논증)
예제 35  "모든 컴퓨터는 직렬 인터페이스 포트를 가졌다. 어떤 마이크로 컴퓨터들은 병렬 포트를 가졌다. 따라서 어떤 마이크로 컴퓨터들은 직렬 포트와 병렬 포트 두가지를 다 갖는다.“ 	M(x): x는 마이크로 컴퓨터이다. 	S(x) : x는 직렬 포트를 갖는다. 	P(x) : x는 병렬 포트를 갖는다.
(∀x)[M(x) -> S(x)] ∧ (∃x)[M(x) ∧ P(x)] -> (∃x)[M(x) ∧ S(x) ∧ P(x)] 1. (∀x)[M(x) -> S(x)]		hyp 2. (∃x)[M(x) ∧ P(x)]		hyp 3. M(a) ∧ P(a)			2, ei 4. M(a) -> S(a)			1, ui 5. M(a)				3, sim 6. S(a)				4, 5, mp 7. M(a) ∧ P(a) ∧ S(a)		3, 6, con 8. M(a) ∧ S(a) ∧ P(a)		7, comm 9. (∃x)[M(x) ∧ S(x) ∧ P(x)]	8, eg
1.5 논리 프로그래밍
	PROLOG (Programming in Logic) 	eat(bear, fish) 	eat(bear, fox) 	eat(break, grass) 	animal(bear) animal(fish) 	animal(fox) 	animal(deer) 	plant(grass)
예제 37 	is (animal (bear)) 데이터 베이스에 있는지를 묻는다.  is (eat (deer, grass)) 	yes 	is (eat (bear, rabit)) 	no
예제 38 	which (x: eat (bear, x)) 	fish 	fox
Horn 절과 논리 융합 	E(b, fi) 	E(b , fo) 	E(d, g) 	A(b) 	A(fi) 	A(fo) 	A(d) 	P(g) 	E(y, x) ∧ A(x) -> Pr(x) 	y가 x를 먹고 x는 동물이면 x는 먹이다.
	Horn절은 술어와 혹은 술어의 부정이 논리합으로 결합되어 있는 wff를 말한다. 	[E(y, x)]’ ∨ [A(x)]’ ∨ Pr(x) 드모르간 법칙 [E(y, x)] ∧ [A(x)]’∨ Pr(x) 동치관계 	E(y, x) ∧ A(x) -> Pr(x)
예제 39 	Eat(beer, fish) 	Eat(fish, little-fish) 	Eat(little-fish, algae) 	Eat(raccoon, fish) 	Eat(bear, raccoon) 	Eat(bear, fox) 	Eat(fox, rabbit) 	Eat(rabbit, grass) 	Eat(bear, deer) 	Eat(deer, grass) 	Eat(wildcat, deer) 	Animal(beer) 	Animal(fish) 	Animal(little-fish) 	Animal(raccoon) 	Animal(fox) 	Animal(rabbit) 	Animal(deer) 	Animal(wildcat) 	Animal(grass) 	Animal(algae) 	Prey(x) if eat(y, x) and animal(x)
	is(animal(rabbit)) 	yes 	is(eat(wildcat, grass)) 	no 	which(x: eat (x, fish)) 	bear 	raccoon 	which(x, y: eat(x, y) and plant(y)) 	little-fish algae 	rabbit grass 	deer grass 	which(x:prey(x)) 	fish 	little-fish 	fish 	raccoon 	fox 	rabbit 	deer 	deer
재귀 예제 39의 생태학 데이터베이스에서 “y는 x의 먹이 사슬에 있다.” In-food-chain(x, y) x가 y를 직접적으로 먹는다. X가 어떤 거을 먹고 그것은 어떤 것을 먹고 그것은 어떤것을 먹고…. 그거은y를 먹는다. 다시 말하면 2’.  X는 z를 먹고 y는 z의먹이 사슬에 있다.
먹이 사슬에 대해 Prolog 규칙은 In-food-chain(x, y) if eat(x, y) In-food-chain(x, y) if eat(x, z) and in-food-chain(z, y)
예제 40 	Which (y: in-food-chain (bear, y)) 1. Fish 	2. Raccoon 	3. Fox 	4. Deer 	5. Little-fish 	6. Algae 	7. Fish 	8. Little-fish 	9. Algae 	10. Rabbit 11. Grass 	12. Grass   	In-food-chain (bear, y) if eat(bear, y)
	1 부터 4까지는바로 얻어낼수 있다. 재귀적 경우로 이동하면, 	in-food-chain(bear, y) if eat(bear, z) and in-food-chain(z, y) z를 “fish”일 때 재귀가 발생한다. (75p참고)
	Bear	fish 	Bearraccoon	 	Bear	fox 	Bear	deer 	Bear	fish 	 | 			Fish	little-fish | 		Little-fish	algae
1.6 정확성의 증명
단언 	{Q}P{R} 영국의 컴퓨터 과학자 안쏘니호아레에 의해 이름지어진Hoare 삼중쌍이라고 한다. 	Q : 사전 조건 	R : 사후 조건
	Q, R1, R2,…..Rn = R 일때 	{Q} S0 	{R1} S1 	{R2} … Sn-1 	{R}
예제 41 	{x - 1 > 0} 		x= x – 1 	{x > 0}   	{x -1 > 0}x = x – 1{x > 0}
예제 42 	{x – 1 > 0} 	X = x – 1 	{x > 0} 	{x -1 > 0}x = x – 1{x > 0} 에서 사후 조건은 x > 0이다.  사후 조건을 통해 x – 1을 x로 치환하면 사전 조건은 X – 1 > 0 또는 x > 1이 된다.
예제 43 	X와 y의 교환하는 다음 프로그램 세그먼트의 정확성을 검증하라 	Temp = x 	X = y 	Y = temp
	{y = 1b, x = a} 	Temp = x 	{y = b, temp = a} 	X = y 	{x = b, temp = a} 	Y = temp 	{x = b, y = a}
조건부 규칙 조건부 서술(conditional statement) 	If condition B then 	P1 	else 	P2 	End if
예제 45 	{n = 5} 	If n >= 10 then 		Y = 100 	Else 		Y = n + 1 	End if 	{y = 6} {n = 5 그리고 n < 10} y = n + 1 {y = 6}
예제 46 	Max(x, y) 두개의 값 x와 y중 최대값을 구하는 다음의 프로그램 세그먼트의 정확성을 검증하라 	{x != y} 	If x > y then 		Max = x 	Else 		Max = y 	End if
	{x != y and x >= y} max = x {(x > y and max = x) or (x < y and max = y)} 	{x != y and x < y} max = y {(x > y and max = x) or (x < y and max = y)} 	(x > y ∧ x = x) ∨ (x < y ∧ x = y) 두번째 논리합은 항상 거짓이기 때문에 이것은 (x > y ∧ x = x) 와 동치이다.
end

Contenu connexe

Tendances

[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이NAVER D2
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceJae-yeol Lee
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdfkd19h
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number TheoryJae-yeol Lee
 
이산치3보고서
이산치3보고서이산치3보고서
이산치3보고서KimChangHoen
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Jae-yeol Lee
 
Random walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equationRandom walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equation창호 손
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보csungwoo
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리suitzero
 
쏙 알고스터디 01
쏙 알고스터디 01쏙 알고스터디 01
쏙 알고스터디 01Jisu Lee
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법홍준 김
 

Tendances (16)

[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
 
이산치2번
이산치2번이산치2번
이산치2번
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
Linear algebra
Linear algebraLinear algebra
Linear algebra
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
 
이산치3보고서
이산치3보고서이산치3보고서
이산치3보고서
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
Random walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equationRandom walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equation
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
Tda jisu kim
Tda jisu kimTda jisu kim
Tda jisu kim
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리
 
쏙 알고스터디 01
쏙 알고스터디 01쏙 알고스터디 01
쏙 알고스터디 01
 
2012 Ds 06
2012 Ds 062012 Ds 06
2012 Ds 06
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
 

이산수학

  • 3. P1 ∧P2 ∧P3 ∧..... ∧Pn -> Q 타당한 논증이 되려면 - 논증의 내부 구조에 기초하여 P1, ..., Pn으로부터 Q가 논리적으로 유도 되어야한다.
  • 5. 예제25 술어 논리를 사용하여 논증의 타당성을 증명하라 (∀x)R(x) ∧ [(∀x)R(x) -> (∀x)S(x)] -> (∀x)S(x) 1. (∀x)R(x) hyp 2. (∀x)R(x) -> (∀x)S(x) hyp 3. (∀x)S(x) 1, 2 mp
  • 6. 전체 사례화 - ui (∀x)P(x)로부터P(x), P(y), P(z), P(a)등을 유도 할수 있음을 말한다.
  • 7. 예제 26 "모든 인간은 죽는다. 소크라테스는 인간이다. 따라서, 소크라테스도 죽는다.“ H(x): x는 인간이다. s는 상수(소크라테스) 기호이다. M(x): x는 죽는다.
  • 8. (∀x)[H(x) -> M(x)] ∧ H(s) -> M(s) 1. (∀x)H(x) -> M(x) hyp 2. H(s) hyp 3. H(s) -> M(s) 1, ui 4. M(s) 2, 3, mp
  • 9. 존재 사례화 - ei 존재 한정사를 제거하는 것을 허용한다. 이것은(∃x)P(x)로부터 새로운 이름이거나 혹은 상수 기호이면 P(a), P(b), P(c), P등을 유도 할수 있음을 말한다.
  • 10. 예제 27 1. (∀x)[P(x) -> Q(x)] hyp 2. (∃x)P(y) hyp 3. P(a) 2, ei 4. P(a) -> Q(a) 1, ui 5. Q(a) 3, 4, mp
  • 11. 전체일반화 - ug 전체 일반화는 전체 한정사가 삽입되는 것을 허용한다.
  • 12. 예제 28 (∀x)[P(x) -> Q(x)] ∧ (∀x)P(x) -> (∀x)Q(x) 1. (∀x)[P(x) -> Q(x)] hyp 2. (∀x)P(x) hyp 3. P(x) -> Q(X) 1, ui 4. P(x) 2, ui 5. Q(x) 3, 4, mp 6. (∀x)Q(x) 5, ug
  • 13.
  • 14.
  • 15. 존재 일반화 - eg 존재 한정사의 삽입을 허용한다.
  • 16. 예제 29 (∀x)P(x) -> (∃x)P(x)를 증명하라 1. (∀x)P(x) hyp 2. P(x) 1, ui 3. (∃x)P(x) 2, eg (57p 참고)
  • 17. 규칙의 활용 존재 사례화의 부적절한 사용 1. (∃x)P(x) ∨ (∃x)Q(x) hyp 2. P(a) ∨ Q(a) 1. (∀x)(∃x)Q(x, y) hyp 2. (∀x)Q(x, a) (57p 참고)
  • 18. 예제 30 (∀x)[P(x) ∧ Q(x)] -> (∀x)P(x) ∧ (∀x)Q(x) 1. (∀x)[P(x) ∧ Q(x)] hyp 2. P(x) ∧ Q(x) 1, ui 3. P(x) 2, sim 4. Q(x) 2, sim 5. (∀x)P(x) 3, ug 6. (∀x)Q(x) 4, ug 7. (∀x)P(x) ∧ (∀x)Q(x) 5, 6, con
  • 19. 예제 31 [P(x) -> (∀y)Q(x, y)] -> (∀y)[P(x) -> Q(x, y)] 1. P(x) -> (∀x)Q(x, y) hyp 2. P(x) temporary hyp 3. (∀x)Q(x, y) 1, 2, mp 4. Q(x, y) 3, ui 5. P(x) -> Q(x, y) temp. hyp discharged 6. (∀y)[P(x) -> Q(x, y)] 5, ug (59p 참고)
  • 20. 예제 32 [(∃x)A(x)]' <-> (∀x)[A(x)]' 양방향에서 함의를 증명해야 한다. a. [(∃x)A(x)]' ->(∀x)[A(x)]' b. [(∀x)A(x)]' ->(∃x)[A(x)]'
  • 21. [(∃x)A(x)]' ->(∀x)[A(x)]‘ 1. [(∃x)A(x)]' hyp 2. A(x) temporary hyp 3. (∃x)A(x) 2, eg 4. A(x) -> (∃x)A(x) temporary hyp discharged 5. [A(x)]' 1, 4, mt 6. (∀x)[A(x)]' 5, ug
  • 22. [(∀x)A(x)]' ->(∃x)[A(x)]‘ 1. [(∀x)A(x)]' hyp 2. (∃x)A(x) temporary hyp 3. A(a) 2, ei 4. [A(a)]' 1, ui 5. [(∀X)[A(x)]']' 3, 4, inc 6. (∃x)A(x) -> [(∀X)[A(x)]']' temporary hyp discharged 7. [((∀X)[A(x)]')']' 1, dn 8. [(∃x)A(x)]' 6, 7, mt
  • 23. 예제33 wff(∀x)[P(x) ∨ Q(x)] -> (∃x)P(x) ∨ (∃x)Q(x) 타당한지 증명하거나 반증하라 (∀x)[P(x) ∨ Q(x)] -> [[(∃x)P(x)]' -> (∀x)Q(x)] 1. (∀x)[P(x) ∨ Q(x)] hyp 2. [(∃x)P(x)]' hyp 3. (∀x)[P(x)]' 2, neg <- 어디서 굴러온놈? 4. [P(x)]' 3, ui 5. P(x) ∨ Q(x) 1, ui 6. [[P(x)]']' ∨ Q(x) 5, dn 7. [P(x)]' -> Q(x) 6, imp 8. Q(X) 4, 7, mp 9, (∀x)Q(x) 8, ug (61p참고)
  • 24. 예제 34 wff(∃x)P(x) ∧ (∃x)Q(x) -> (∃x)[P(x) ∧ Q(x)] 1. (∃x)P(x) hyp 2. (∃x)Q(x) hyp 3. P(a) 1, ei (61p 볼것)
  • 25. 구두 논증 verbal argumentation (말에 의한 논증)
  • 26. 예제 35 "모든 컴퓨터는 직렬 인터페이스 포트를 가졌다. 어떤 마이크로 컴퓨터들은 병렬 포트를 가졌다. 따라서 어떤 마이크로 컴퓨터들은 직렬 포트와 병렬 포트 두가지를 다 갖는다.“ M(x): x는 마이크로 컴퓨터이다. S(x) : x는 직렬 포트를 갖는다. P(x) : x는 병렬 포트를 갖는다.
  • 27. (∀x)[M(x) -> S(x)] ∧ (∃x)[M(x) ∧ P(x)] -> (∃x)[M(x) ∧ S(x) ∧ P(x)] 1. (∀x)[M(x) -> S(x)] hyp 2. (∃x)[M(x) ∧ P(x)] hyp 3. M(a) ∧ P(a) 2, ei 4. M(a) -> S(a) 1, ui 5. M(a) 3, sim 6. S(a) 4, 5, mp 7. M(a) ∧ P(a) ∧ S(a) 3, 6, con 8. M(a) ∧ S(a) ∧ P(a) 7, comm 9. (∃x)[M(x) ∧ S(x) ∧ P(x)] 8, eg
  • 29. PROLOG (Programming in Logic) eat(bear, fish) eat(bear, fox) eat(break, grass) animal(bear) animal(fish) animal(fox) animal(deer) plant(grass)
  • 30. 예제 37 is (animal (bear)) 데이터 베이스에 있는지를 묻는다. is (eat (deer, grass)) yes is (eat (bear, rabit)) no
  • 31. 예제 38 which (x: eat (bear, x)) fish fox
  • 32. Horn 절과 논리 융합 E(b, fi) E(b , fo) E(d, g) A(b) A(fi) A(fo) A(d) P(g) E(y, x) ∧ A(x) -> Pr(x) y가 x를 먹고 x는 동물이면 x는 먹이다.
  • 33. Horn절은 술어와 혹은 술어의 부정이 논리합으로 결합되어 있는 wff를 말한다. [E(y, x)]’ ∨ [A(x)]’ ∨ Pr(x) 드모르간 법칙 [E(y, x)] ∧ [A(x)]’∨ Pr(x) 동치관계 E(y, x) ∧ A(x) -> Pr(x)
  • 34. 예제 39 Eat(beer, fish) Eat(fish, little-fish) Eat(little-fish, algae) Eat(raccoon, fish) Eat(bear, raccoon) Eat(bear, fox) Eat(fox, rabbit) Eat(rabbit, grass) Eat(bear, deer) Eat(deer, grass) Eat(wildcat, deer) Animal(beer) Animal(fish) Animal(little-fish) Animal(raccoon) Animal(fox) Animal(rabbit) Animal(deer) Animal(wildcat) Animal(grass) Animal(algae) Prey(x) if eat(y, x) and animal(x)
  • 35. is(animal(rabbit)) yes is(eat(wildcat, grass)) no which(x: eat (x, fish)) bear raccoon which(x, y: eat(x, y) and plant(y)) little-fish algae rabbit grass deer grass which(x:prey(x)) fish little-fish fish raccoon fox rabbit deer deer
  • 36. 재귀 예제 39의 생태학 데이터베이스에서 “y는 x의 먹이 사슬에 있다.” In-food-chain(x, y) x가 y를 직접적으로 먹는다. X가 어떤 거을 먹고 그것은 어떤 것을 먹고 그것은 어떤것을 먹고…. 그거은y를 먹는다. 다시 말하면 2’. X는 z를 먹고 y는 z의먹이 사슬에 있다.
  • 37. 먹이 사슬에 대해 Prolog 규칙은 In-food-chain(x, y) if eat(x, y) In-food-chain(x, y) if eat(x, z) and in-food-chain(z, y)
  • 38. 예제 40 Which (y: in-food-chain (bear, y)) 1. Fish 2. Raccoon 3. Fox 4. Deer 5. Little-fish 6. Algae 7. Fish 8. Little-fish 9. Algae 10. Rabbit 11. Grass 12. Grass   In-food-chain (bear, y) if eat(bear, y)
  • 39. 1 부터 4까지는바로 얻어낼수 있다. 재귀적 경우로 이동하면, in-food-chain(bear, y) if eat(bear, z) and in-food-chain(z, y) z를 “fish”일 때 재귀가 발생한다. (75p참고)
  • 40. Bear fish Bearraccoon Bear fox Bear deer Bear fish | Fish little-fish | Little-fish algae
  • 42. 단언 {Q}P{R} 영국의 컴퓨터 과학자 안쏘니호아레에 의해 이름지어진Hoare 삼중쌍이라고 한다. Q : 사전 조건 R : 사후 조건
  • 43. Q, R1, R2,…..Rn = R 일때 {Q} S0 {R1} S1 {R2} … Sn-1 {R}
  • 44. 예제 41 {x - 1 > 0} x= x – 1 {x > 0}   {x -1 > 0}x = x – 1{x > 0}
  • 45. 예제 42 {x – 1 > 0} X = x – 1 {x > 0} {x -1 > 0}x = x – 1{x > 0} 에서 사후 조건은 x > 0이다. 사후 조건을 통해 x – 1을 x로 치환하면 사전 조건은 X – 1 > 0 또는 x > 1이 된다.
  • 46. 예제 43 X와 y의 교환하는 다음 프로그램 세그먼트의 정확성을 검증하라 Temp = x X = y Y = temp
  • 47. {y = 1b, x = a} Temp = x {y = b, temp = a} X = y {x = b, temp = a} Y = temp {x = b, y = a}
  • 48. 조건부 규칙 조건부 서술(conditional statement) If condition B then P1 else P2 End if
  • 49. 예제 45 {n = 5} If n >= 10 then Y = 100 Else Y = n + 1 End if {y = 6} {n = 5 그리고 n < 10} y = n + 1 {y = 6}
  • 50. 예제 46 Max(x, y) 두개의 값 x와 y중 최대값을 구하는 다음의 프로그램 세그먼트의 정확성을 검증하라 {x != y} If x > y then Max = x Else Max = y End if
  • 51. {x != y and x >= y} max = x {(x > y and max = x) or (x < y and max = y)} {x != y and x < y} max = y {(x > y and max = x) or (x < y and max = y)} (x > y ∧ x = x) ∨ (x < y ∧ x = y) 두번째 논리합은 항상 거짓이기 때문에 이것은 (x > y ∧ x = x) 와 동치이다.
  • 52. end