# Inference in Propositional Logic

Document Sample

```					    Inference in Propositional Logic
Which one is valid?
„ If there are no bugs, then the program compiles
There are no bugs
The program compiles
„ If there are no bugs, then the program compiles
The program compiles
There are no bugs
Inference in Propositional Logic
„ 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
1.   Modus Ponens หรือ Implication-Elimination   , 
2.   And-Elimination           1 2 ,…  n 
i
3.   And-Introduction          1, 2 ,… , n
1 2 ,…  n
4.   Or-Introduction                   i
1 2 ,…  n
5.   Double-Negation Elimination ¬¬ 

6.   Unit Resolution             , ¬ 

7.   Resolution                  , ¬   

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.
1. John likes all kind of 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)
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} จะ general กว่า จะเรียกว่า “Most General Unifier (MGU)”
„   {x/John, z/y}
„   {x/John, y/Jane, z/Jane}
„   {x/John, y/Smith, z/Smith}
Prove โดย Backward Chaining
„ ต้องการ prove ว่า “John likes Peanuts” เราอาจต้องเพิ่มกฏเข้าไป
อีกว่า
7. x,y Alive(x)  Killed-by(x,y) แล้วทาการ prove โดย
Backward Chaining
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 { }
จากตัวอย่างเดิม

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
„ ต้องการ 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)
From 1 {x1/Peanuts}
Food(Peanuts)
From 2 {y2/Peanuts}
Eat(x2,Peanuts)  Killed-by(x2,Peanuts)
From 3b {x2/Bill}
Eat(Bill, Peanuts)
From 3a eat(Bill, Peanuts)
เกิด Contradiction   ดังนั้นสรุปได้ว่า John 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
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
„ 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 ดังนี้
1.   apartment(X) :- pet(X), small(X).
2.   pet(X) :- cat(X).
3.   pet(X) :- dog(X).
4.   small(X) :- poodle(X).
5.   dog(X) :- poodle(X).
6.   poodle(puff).
โจทย์
„   ? ‟ apartment(X).
„   ใช้วิธี depth-first search with backtracking
„   rules จะประกอบไปด้วย variable
„   facts จะมีแค่ constant
„                            ่
จะไปหา fact ของสิ่งทีต้องการหาก่อน
„   ถ้าไม่มี fact จะไปเริ่มหาที่ rule ข้อที่ 1 แล้วทาไป
เรื่อยๆ ถ้าหาไม่ได้ก็จะย้อนกลับมา
ตัวอย่าง
1.   grandson(X, Y) :- parent(Z, X) , parent(Y, Z).
2.   parent(X, Y) :- son(Y, X).
3.   parent(X,Y) :- mother(X,Y).
4.   parent(X,Y) :- father(X,Y).
5.   son(john, tom).
6.   son(paul, john).
7.   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

```
DOCUMENT INFO
Shared By:
Categories:
Stats:
 views: 578 posted: 1/5/2010 language: English pages: 30
How are you planning on using Docstoc?