งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

# Inference in Propositional Logic

## งานนำเสนอเรื่อง: "Inference in Propositional Logic"— ใบสำเนางานนำเสนอ:

Inference in Propositional Logic
Which one is valid? If there are no bugs, then the program compiles There are no bugs The program compiles

Inference in Propositional Logic
How about these? p  q, ¬q r, r; p p (q r), q; p  r ให้  = A  B ให้ KB = (AC) (B¬C) หาว่า KB 

Inference Rules for Propositional Logic
Modus Ponens หรือ Implication-Elimination   ,  And-Elimination 1 2 ,…  n And-Introduction 1, 2 ,… , n Or-Introduction Double-Negation Elimination ¬¬  Unit Resolution   , ¬  Resolution   , ¬    i 1 2 ,…  n i 1 2 ,…  n   

Limitation of Propositional Logic
Consider a classic argument All men are mortal = P Sam is a man = Q Therefore, Joe is mortal Can we prove its validity using propositional logic?

Example All elephants are mammals. Some elephants are mammals.
Some elephants are not mammals. No elephants are mammals. Not all elephant are mammals. There exists a white elephant. There exists two white elephants. There uniquely exists a white elephant.

Example(ต่อ) All elephants are mammals. x elephant (x)  mammals (x)
Some elephants are mammals. x elephant (x)  mammals (x) Some elephants are not mammals. x elephant (x)   mammals (x)

Example(ต่อ) No elephants are mammals. x elephant (x)   mammals (x)
Not all elephant are mammals. x elephant (x)  mammals (x) There exists a white elephant. x white-elephant (x)

Example(ต่อ) There exists two white elephants.
x white-elephant (x)  y white-elephant (y)  (xy) There uniquely exists a white elephant. x white-elephant (x)  y white-elephant (y)  (x=y)

Homework John likes all kind of food. Apple are food.
Chicken are food. Anything anyone eats and isn’t killed by is food. Bill eat peanuts and still alive. Sue eats everything Bill eats.

Answer John likes all kind of food. 2. Apple are food.
x Food(x)  Like(John,x) 2. Apple are food. x Apple(x)  Food(x) หรือ Food(Apple) 3. Chicken are food. x Chicken(x)  Food(x) หรือ Food(Chicken)

Answer 4. Anything anyone eats and isn’t killed by is food.
x y Eat(x,y)  Killed-by(x,y)  Food(y) 5. Bill eat peanuts and still alive. 5a. Eat(Bill,Peanuts) 5b. Alive(Bill) 6. Sue eats everything Bill eats. x Eat(Bill, x)  Eat(Sue, x)

Unification Knows (John, x), Knows (y, Jane) {x/Jane, y/John}
ถ้า Predicate แทนด้วย constant ไม่ได้จะทำอย่างไร P (x, x), P (y, z) unify (x, y) {x/y} unify (x, z) {x/z} ผิด unify (y, z) {y/z} หลังจากแทน y ด้วย z แล้ว จะได้ P (y, y), P (y, z) เป็น P (z, z), P (z, z)

หลักการของ Most General Unifier
hate (x, y) hate (John, z) {x/John, y/z} {x/John, z/y} {x/John, y/Jane, z/Jane} {x/John, y/Smith, z/Smith} จะ general กว่า จะเรียกว่า “Most General Unifier (MGU)”

Prove โดย Backward Chaining
ต้องการ prove ว่า “John likes Peanuts” เราอาจต้องเพิ่มกฏเข้าไปอีกว่า 7. x,y Alive(x)  Killed-by(x,y) แล้วทำการ prove โดย Backward Chaining

Eat(Bill, Peanuts) Killed-by(Bill, Peanuts)
Like(John, Peanuts) ...from 1 , {x/Peanuts} Food(Peanuts) ...from 4 , {y/Peanuts} Eat(Bill, Peanuts) Killed-by(Bill, Peanuts) ...from 5a { } ...from 7 , {x/Bill} alive(Bill) ...from 5b { }

3.Eat(Bill,Peanuts)  Killed-by(Bill,Peanuts)
จากตัวอย่างเดิม 1.x Food(x)  Like(John,x) 2.x y Eat(x,y)  Killed-by(x,y)  Food(y) 3.Eat(Bill,Peanuts)  Killed-by(Bill,Peanuts) 4. x Eat(Bill, x)  Eat(Sue, x)

Prove แบบ Resolution 3.a. Eat(Bill,Peanuts)
ต้องการ prove ว่า Does John like peanuts? จะได้ like(John, peanuts) 1. Food(x1)  Like(John,x1) 2. Eat(x2,y2)  Killed-by(x2,y2)  Food(y2) 3.a. Eat(Bill,Peanuts) b. Killed-by(Bill,Peanuts) 4. Eat(Bill, x3)  Eat(Sue, x3)

โดยวิธี Backward Chaining
like(John, Peanuts) Food(Peanuts) Eat(x2,Peanuts)  Killed-by(x2,Peanuts) Eat(Bill, Peanuts) From 1 {x1/Peanuts} From 2 {y2/Peanuts} From 3b {x2/Bill} eat(Bill, Peanuts) From 3a เกิด Contradiction ดังนั้นสรุปได้ว่า John likes peanuts.

ดังนั้นสรุปได้ว่า Sue likes peanuts.
Prove แบบ Resolution What food does Sue like? ให้ prove แบบวิธี Resolution 4. Eat(Bill, x3)  Eat(Sue, x3) 3a.Eat(Bill,Peanuts) {x/Peanuts} eat(Sue, Peanuts) ดังนั้นสรุปได้ว่า Sue likes peanuts.

Prolog มาจาก PROgramming in LOGic เป็น logic programming language
แทน variable ด้วยตัวพิมพ์ใหญ่ เช่น X constant แทนด้วย ตัวเล็กหรือขึ้นต้นด้วยตัวเลขได้ ทุกๆ rule ต้องจบด้วย .

ข้อแตกต่างระหว่าง Logic และ Prolog
p  q q :- p (and) , (comma) (or) ไม่มี xy q(x,y) p(x) p(X) :- q(X,Y) Control strategy is not fixed Depth-first search with backtracking cat(meaw) Close world assumption(CWA)

ตัวอย่าง x pet(x)  small(x)  apartment(x)
x cat(x)  dog(x)  pet(x) x poodle(x)  small(x)  dog(x) poodle(puff)

แปลงเป็น Prolog x pet(x)  small(x)  apartment(x)
apartment(X) :- pet(X), small(X). x cat(x)  dog(x)  pet(x) (cat(x) dog(x))  pet(x) (cat(x)  dog(x))  pet(x) (cat(x)  pet(x)) ( dog(x)  pet(x)) cat(x)  pet(x) dog(x)  pet(x) pet(X) :- cat(X) pet(X) :- dog(X).

แปลงเป็น Prolog small(X) :- poodle(X). dog(X) :- poodle(X).
x poodle(x)  small(x)  dog(x) poodle(x)  (small(x)  dog(x)) (poodle(x)  small(x))  (poodle(x) dog(x)) poodle(x)  small(x) poodle(x)  dog(x) small(X) :- poodle(X) dog(X) :- poodle(X).

ดังนั้นได้เป็นภาษา Prolog ดังนี้
apartment(X) :- pet(X), small(X). pet(X) :- cat(X). pet(X) :- dog(X). small(X) :- poodle(X). dog(X) :- poodle(X). poodle(puff).

โจทย์ ? – apartment(X). ใช้วิธี depth-first search with backtracking
rules จะประกอบไปด้วย variable facts จะมีแค่ constant จะไปหา fact ของสิ่งที่ต้องการหาก่อน ถ้าไม่มี fact จะไปเริ่มหาที่ rule ข้อที่ 1 แล้วทำไปเรื่อยๆ ถ้าหาไม่ได้ก็จะย้อนกลับมา

ตัวอย่าง grandson(X, Y) :- parent(Z, X) , parent(Y, Z).
parent(X, Y) :- son(Y, X). parent(X,Y) :- mother(X,Y). parent(X,Y) :- father(X,Y). son(john, tom). son(paul, john). mother(john, mary).

?- grandson(U, tom). 1. grandson(U, tom) :- parent(Z, U) , parent(tom, Z). {X/U, Y/tom} 2. parent(Z, U) :- son(U, Z). 5. son(john, tom). {U/john, Z=tom} 2. parent(tom, tom) :- son(tom,tom). 5. fail ไม่สามารถแทน (john, tom) กับ (tom, tom) ได้ 6. fail ไม่สามารถแทน (paul, john) กับ (tom, tom) ได้ จะ backtracking กลับไปที่ข้อ 3 เพราะว่าแทนข้อ 2 ไม่ได้แล้ว

?- grandson(U, tom). 3. <backtracking> parent(tom, tom) :- mother(tom,tom). 7. fail 4. <backtracking> parent(tom, tom) :- father(tom,tom). fail เพราะไม่มี rule เกี่ยวกับ father 6. <backtracking> son(paul, john) {U/paul, Z/john} 2. parent(tom, john) :- son(john, tom) 5. success { } ดังนั้น U = paul

งานนำเสนอที่คล้ายกัน