Академический Документы
Профессиональный Документы
Культура Документы
Chapter 9 1 Chapter 9 4
Chapter 9 2 Chapter 9 5
450b.c. Stoics propositional logic, inference (maybe) UI can be applied several times to add new sentences;
322b.c. Aristotle “syllogisms” (inference rules), quantifiers the new KB is logically equivalent to the old
1565 Cardano probability theory (propositional logic + uncertainty)
EI can be applied once to replace the existential sentence;
1847 Boole propositional logic (again)
the new KB is not equivalent to the old,
1879 Frege first-order logic
but is satisfiable iff the old KB was satisfiable
1922 Wittgenstein proof by truth tables
1930 Gödel ∃ complete algorithm for FOL
1930 Herbrand complete algorithm for FOL (reduce to propositional)
1931 Gödel ¬∃ complete algorithm for arithmetic
1960 Davis/Putnam “practical” algorithm for propositional logic
1965 Robinson “practical” algorithm for FOL—resolution
Chapter 9 3 Chapter 9 6
Reduction to propositional inference Unification
Suppose the KB contains just the following: We can get the inference immediately if we can find a substitution θ
such that King(x) and Greedy(x) match King(John) and Greedy(y)
∀ x King(x) ∧ Greedy(x) ⇒ Evil(x)
King(John) θ = {x/John, y/John} works
Greedy(John)
Brother(Richard, John) Unify(α, β) = θ if αθ = βθ
Chapter 9 7 Chapter 9 10
Chapter 9 8 Chapter 9 11
Chapter 9 9 Chapter 9 12
Unification Soundness of GMP
We can get the inference immediately if we can find a substitution θ Need to show that
such that King(x) and Greedy(x) match King(John) and Greedy(y)
p10, . . . , pn0, (p1 ∧ . . . ∧ pn ⇒ q) |= qθ
θ = {x/John, y/John} works
provided that pi0θ = piθ for all i
Unify(α, β) = θ if αθ = βθ
Lemma: For any definite clause p, we have p |= pθ by UI
1. (p1 ∧ . . . ∧ pn ⇒ q) |= (p1 ∧ . . . ∧ pn ⇒ q)θ = (p1θ ∧ . . . ∧ pnθ ⇒ qθ)
p q θ
Knows(John, x) Knows(John, Jane) {x/Jane} 2. p10, . . . , pn0 |= p10 ∧ . . . ∧ pn0 |= p10θ ∧ . . . ∧ pn0θ
Knows(John, x) Knows(y, OJ) {x/OJ, y/John}
3. From 1 and 2, qθ follows by ordinary Modus Ponens
Knows(John, x) Knows(y, M other(y)) {y/John, x/M other(John)}
Knows(John, x) Knows(x, OJ)
Chapter 9 13 Chapter 9 16
p q θ
Knows(John, x) Knows(John, Jane) {x/Jane}
Knows(John, x) Knows(y, OJ) {x/OJ, y/John}
Knows(John, x) Knows(y, M other(y)) {y/John, x/M other(John)}
Knows(John, x) Knows(x, OJ) f ail
Standardizing apart eliminates overlap of variables, e.g., Knows(z17, OJ)
Chapter 9 14 Chapter 9 17
Chapter 9 15 Chapter 9 18
Example knowledge base contd. Example knowledge base contd.
. . . it is a crime for an American to sell weapons to hostile nations: . . . it is a crime for an American to sell weapons to hostile nations:
American(x)∧W eapon(y)∧Sells(x, y, z)∧Hostile(z) ⇒ Criminal(x) American(x)∧W eapon(y)∧Sells(x, y, z)∧Hostile(z) ⇒ Criminal(x)
Nono . . . has some missiles Nono . . . has some missiles, i.e., ∃ x Owns(N ono, x) ∧ M issile(x):
Owns(N ono, M1) and M issile(M1)
. . . all of its missiles were sold to it by Colonel West
∀ x M issile(x) ∧ Owns(N ono, x) ⇒ Sells(W est, x, N ono)
Missiles are weapons:
M issile(x) ⇒ W eapon(x)
An enemy of America counts as “hostile”:
Chapter 9 19 Chapter 9 22
Chapter 9 20 Chapter 9 23
Chapter 9 21 Chapter 9 24
Forward chaining proof Properties of forward chaining
Sound and complete for first-order definite clauses
(proof similar to propositional proof)
Datalog = first-order definite clauses + no functions (e.g., crime KB)
FC terminates for Datalog in poly iterations: at most p · nk literals
May not terminate in general if α is not entailed
This is unavoidable: entailment with definite clauses is semidecidable
Chapter 9 25 Chapter 9 28
American(West) Missile(M1) Owns(Nono,M1) Enemy(Nono,America) Forward chaining is widely used in deductive databases
Chapter 9 26 Chapter 9 29
Chapter 9 27 Chapter 9 30
Backward chaining algorithm Backward chaining example
Chapter 9 31 Chapter 9 34
Missile(y)
Chapter 9 32 Chapter 9 35
Missile(y)
{ y/M1 }
Chapter 9 33 Chapter 9 36
Backward chaining example Logic programming
Criminal(West) {x/West, y/M1, z/Nono} Sound bite: computation as inference on logical KBs
Logic programming Ordinary programming
1. Identify problem Identify problem
2. Assemble information Assemble information
3. Tea break Figure out solution
American(West) Weapon(y) Sells(West,M1,z) Hostile(z) 4. Encode information in KB Program solution
{} { z/Nono } 5. Encode problem instance as facts Encode problem instance as data
6. Ask queries Apply program to data
7. Find false facts Debug procedural errors
Missile(y) Missile(M1) Owns(Nono,M1)
Should be easier to debug Capital(N ewY ork, U S) than x := x + 2 !
{ y/M1 }
Chapter 9 37 Chapter 9 40
Criminal(West) {x/West, y/M1, z/Nono} Basis: backward chaining with Horn clauses + bells & whistles
Widely used in Europe, Japan (basis of 5th Generation project)
Compilation techniques ⇒ approaching a billion LIPS
Program = set of clauses = head :- literal1, . . . literaln.
Chapter 9 38 Chapter 9 41
query: append(A,B,[1,2]) ?
answers: A=[] B=[1,2]
A=[1] B=[2]
A=[1,2] B=[]
Chapter 9 39 Chapter 9 42
Resolution: brief summary Resolution proof: definite clauses
Full first-order version: American(x) Weapon(y) Sells(x,y,z) Hostile(z) Criminal(x) Criminal(West)
>
>
>
>
L
L
`1 ∨ · · · ∨ ` k , m1 ∨ · · · ∨ m n
American(West) American(West) Weapon(y) Sells(West,y,z) Hostile(z)
>
>
>
L
L
(`1 ∨ · · · ∨ `i−1 ∨ `i+1 ∨ · · · ∨ `k ∨ m1 ∨ · · · ∨ mj−1 ∨ mj+1 ∨ · · · ∨ mn)θ
Missile(x) Weapon(x) Weapon(y) Sells(West,y,z) Hostile(z)
>
>
>
L
L
where Unify(`i, ¬mj ) = θ.
Missile(M1) Missile(y) Sells(West,y,z) Hostile(z)
>
>
L
L
For example,
¬Rich(x) ∨ U nhappy(x) Missile(x) Owns(Nono,x) Sells(West,x,Nono) Sells(West,M1,z) Hostile(z)
>
>
>
L
L
Rich(Ken)
Missile(M1) Missile(M1) Owns(Nono,M1) Hostile(Nono)
>
>
L
L
U nhappy(Ken)
Owns(Nono,M1) Owns(Nono,M1) Hostile(Nono)
>
L
L
with θ = {x/Ken}
Enemy(x,America) Hostile(x) Hostile(Nono)
Apply resolution steps to CN F (KB ∧ ¬α); complete for FOL
>
L
L
Enemy(Nono,America) Enemy(Nono,America)
Chapter 9 43 Chapter 9 46
Conversion to CNF
Everyone who loves all animals is loved by someone:
∀ x [∀ y Animal(y) ⇒ Loves(x, y)] ⇒ [∃ y Loves(y, x)]
1. Eliminate biconditionals and implications
∀ x [¬∀ y ¬Animal(y) ∨ Loves(x, y)] ∨ [∃ y Loves(y, x)]
2. Move ¬ inwards: ¬∀ x, p ≡ ∃ x ¬p, ¬∃ x, p ≡ ∀ x ¬p:
∀ x [∃ y ¬(¬Animal(y) ∨ Loves(x, y))] ∨ [∃ y Loves(y, x)]
∀ x [∃ y ¬¬Animal(y) ∧ ¬Loves(x, y)] ∨ [∃ y Loves(y, x)]
∀ x [∃ y Animal(y) ∧ ¬Loves(x, y)] ∨ [∃ y Loves(y, x)]
Chapter 9 44
Chapter 9 45