Вы находитесь на странице: 1из 8

Universal instantiation (UI)

Every instantiation of a universally quantified sentence is entailed by it:


∀v α
Inference in first-order logic Subst({v/g}, α)
for any variable v and ground term g
E.g., ∀ x King(x) ∧ Greedy(x) ⇒ Evil(x) yields
Chapter 9 King(John) ∧ Greedy(John) ⇒ Evil(John)
King(Richard) ∧ Greedy(Richard) ⇒ Evil(Richard)
King(F ather(John)) ∧ Greedy(F ather(John)) ⇒ Evil(F ather(John))
..

Chapter 9 1 Chapter 9 4

Outline Existential instantiation (EI)


♦ Reducing first-order inference to propositional inference For any sentence α, variable v, and constant symbol k
that does not appear elsewhere in the knowledge base:
♦ Unification
∃v α
♦ Generalized Modus Ponens
Subst({v/k}, α)
♦ Forward and backward chaining E.g., ∃ x Crown(x) ∧ OnHead(x, John) yields
♦ Logic programming Crown(C1) ∧ OnHead(C1, John)
♦ Resolution provided C1 is a new constant symbol, called a Skolem constant
Another example: from ∃ x d(xy )/dy = xy we obtain
d(ey )/dy = ey
provided e is a new constant symbol

Chapter 9 2 Chapter 9 5

A brief history of reasoning Existential instantiation contd.

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 αθ = βθ

Instantiating the universal sentence in all possible ways, we have


King(John) ∧ Greedy(John) ⇒ Evil(John) p q θ
King(Richard) ∧ Greedy(Richard) ⇒ Evil(Richard) Knows(John, x) Knows(John, Jane)
King(John) Knows(John, x) Knows(y, OJ)
Greedy(John) Knows(John, x) Knows(y, M other(y))
Brother(Richard, John) Knows(John, x) Knows(x, OJ)

The new KB is propositionalized: proposition symbols are


King(John), Greedy(John), Evil(John), King(Richard) etc.

Chapter 9 7 Chapter 9 10

Reduction contd. Unification



Claim: a ground sentence is entailed by new KB iff entailed by original KB 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)
Claim: every FOL KB can be propositionalized so as to preserve entailment
θ = {x/John, y/John} works
Idea: propositionalize KB and query, apply resolution, return result
Unify(α, β) = θ if αθ = βθ
Problem: with function symbols, there are infinitely many ground terms,
e.g., F ather(F ather(F ather(John)))
Theorem: Herbrand (1930). If a sentence α is entailed by an FOL KB, p q θ
it is entailed by a finite subset of the propositional KB Knows(John, x) Knows(John, Jane) {x/Jane}
Knows(John, x) Knows(y, OJ)
Idea: For n = 0 to ∞ do Knows(John, x) Knows(y, M other(y))
create a propositional KB by instantiating with depth-n terms Knows(John, x) Knows(x, OJ)
see if α is entailed by this KB
Problem: works if α is entailed, loops if α is not entailed
Theorem: Turing (1936), Church (1936), entailment in FOL is semidecidable

Chapter 9 8 Chapter 9 11

Problems with propositionalization Unification


Propositionalization seems to generate lots of irrelevant sentences. We can get the inference immediately if we can find a substitution θ
E.g., from such that King(x) and Greedy(x) match King(John) and Greedy(y)
∀ x King(x) ∧ Greedy(x) ⇒ Evil(x) θ = {x/John, y/John} works
King(John)
∀ y Greedy(y) Unify(α, β) = θ if αθ = βθ
Brother(Richard, John)
it seems obvious that Evil(John), but propositionalization produces lots of p q θ
facts such as Greedy(Richard) that are irrelevant Knows(John, x) Knows(John, Jane) {x/Jane}
Knows(John, x) Knows(y, OJ) {x/OJ, y/John}
With p k-ary predicates and n constants, there are p · nk instantiations
Knows(John, x) Knows(y, M other(y))
With function symbols, it gets nuch much worse! Knows(John, x) Knows(x, OJ)

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

Unification Example knowledge base


We can get the inference immediately if we can find a substitution θ The law says that it is a crime for an American to sell weapons to hostile
such that King(x) and Greedy(x) match King(John) and Greedy(y) nations. The country Nono, an enemy of America, has some missiles, and
all of its missiles were sold to it by Colonel West, who is American.
θ = {x/John, y/John} works
Prove that Col. West is a criminal
Unify(α, β) = θ if αθ = βθ

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

Generalized Modus Ponens (GMP) Example knowledge base contd.


. . . it is a crime for an American to sell weapons to hostile nations:
p10, p20, . . . , pn0, (p1 ∧ p2 ∧ . . . ∧ pn ⇒ q)
where pi0θ = piθ for all i

p10 is King(John) p1 is King(x)


p20 is Greedy(y) p2 is Greedy(x)
θ is {x/John, y/John} q is Evil(x)
qθ is Evil(John)
GMP used with KB of definite clauses (exactly one positive literal)
All variables assumed universally quantified

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

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, i.e., ∃ x Owns(N ono, x) ∧ M issile(x): Nono . . . has some missiles, i.e., ∃ x Owns(N ono, x) ∧ M issile(x):
Owns(N ono, M1) and M issile(M1) Owns(N ono, M1) and M issile(M1)
. . . all of its missiles were sold to it by Colonel West . . . 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”:
Enemy(x, America) ⇒ Hostile(x)
West, who is American . . .
American(W est)
The country Nono, an enemy of America . . .
Enemy(N ono, America)

Chapter 9 20 Chapter 9 23

Example knowledge base contd. Forward chaining algorithm


. . . it is a crime for an American to sell weapons to hostile nations:
function FOL-FC-Ask(KB, α) returns a substitution or false
American(x)∧W eapon(y)∧Sells(x, y, z)∧Hostile(z) ⇒ Criminal(x)
repeat until new is empty
Nono . . . has some missiles, i.e., ∃ x Owns(N ono, x) ∧ M issile(x):
new ← { }
Owns(N ono, M1) and M issile(M1) for each sentence r in KB do
. . . all of its missiles were sold to it by Colonel West ( p 1 ∧ . . . ∧ p n ⇒ q) ← Standardize-Apart(r)
∀ x M issile(x) ∧ Owns(N ono, x) ⇒ Sells(W est, x, N ono) for each θ such that (p 1 ∧ . . . ∧ p n )θ = (p 01 ∧ . . . ∧ p 0n )θ
Missiles are weapons: for some p 01, . . . , p 0n in KB
q 0 ← Subst(θ, q)
if q 0 is not a renaming of a sentence already in KB or new then do
add q 0 to new
φ ← Unify(q 0, α)
if φ is not fail then return φ
add new to KB
return false

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

American(West) Missile(M1) Owns(Nono,M1) Enemy(Nono,America)

Chapter 9 25 Chapter 9 28

Forward chaining proof Efficiency of forward chaining


Simple observation: no need to match a rule on iteration k
if a premise wasn’t added on iteration k − 1
⇒ match each rule whose premise contains a newly added literal
Matching itself can be expensive
Weapon(M1) Sells(West,M1,Nono) Hostile(Nono) Database indexing allows O(1) retrieval of known facts
e.g., query M issile(x) retrieves M issile(M1)
Matching conjunctive premises against known facts is NP-hard

American(West) Missile(M1) Owns(Nono,M1) Enemy(Nono,America) Forward chaining is widely used in deductive databases

Chapter 9 26 Chapter 9 29

Forward chaining proof Hard matching example

Criminal(West) Diff(wa, nt) ∧ Diff(wa, sa) ∧


Diff(nt, q)Diff(nt, sa) ∧
NT
Q
Diff(q, nsw) ∧ Diff(q, sa) ∧
WA Diff(nsw, v) ∧ Diff(nsw, sa) ∧
SA NSW Diff(v, sa) ⇒ Colorable()
Weapon(M1) Sells(West,M1,Nono) Hostile(Nono)
V
Victoria Diff(Red, Blue) Diff(Red, Green)
Diff(Green, Red) Diff(Green, Blue)
T
Diff(Blue, Red) Diff(Blue, Green)
American(West) Missile(M1) Owns(Nono,M1) Enemy(Nono,America) Colorable() is inferred iff the CSP has a solution
CSPs include 3SAT as a special case, hence matching is NP-hard

Chapter 9 27 Chapter 9 30
Backward chaining algorithm Backward chaining example

function FOL-BC-Ask(KB, goals, θ) returns a set of substitutions Criminal(West) {x/West}


inputs: KB, a knowledge base
goals, a list of conjuncts forming a query (θ already applied)
θ, the current substitution, initially the empty substitution { }
local variables: answers, a set of substitutions, initially empty
if goals is empty then return {θ} American(West) Weapon(y) Sells(x,y,z) Hostile(z)
q 0 ← Subst(θ, First(goals)) {}
for each sentence r in KB
where Standardize-Apart(r) = ( p 1 ∧ . . . ∧ p n ⇒ q)
and θ0 ← Unify(q, q 0) succeeds
new goals ← [ p 1, . . . , p n |Rest(goals)]
answers ← FOL-BC-Ask(KB, new goals, Compose(θ 0 , θ)) ∪ answers
return answers

Chapter 9 31 Chapter 9 34

Backward chaining example Backward chaining example

Criminal(West) Criminal(West) {x/West}

American(West) Weapon(y) Sells(West,M1,z)


Sells(x,y,z) Hostile(Nono)
Hostile(z)
{}

Missile(y)

Chapter 9 32 Chapter 9 35

Backward chaining example Backward chaining example

Criminal(West) {x/West} Criminal(West) {x/West, y/M1}

American(x) Weapon(y) Sells(x,y,z) Hostile(z) American(West) Weapon(y) Sells(West,M1,z)


Sells(x,y,z) Hostile(Nono)
Hostile(z)
{}

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

Backward chaining example Prolog systems

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.

American(West) Weapon(y) Sells(West,M1,z) Hostile(Nono) criminal(X) :- american(X), weapon(Y), sells(X,Y,Z), hostile(Z).


{} { z/Nono } Efficient unification by open coding
Efficient retrieval of matching clauses by direct linking
Depth-first, left-to-right backward chaining
Missile(y) Missile(M1) Owns(Nono,M1) Enemy(Nono,America) Built-in predicates for arithmetic etc., e.g., X is Y*Z+3
{ y/M1 } {} {} {} Closed-world assumption (“negation as failure”)
e.g., given alive(X) :- not dead(X).
alive(joe) succeeds if dead(joe) fails

Chapter 9 38 Chapter 9 41

Properties of backward chaining Prolog examples


Depth-first recursive proof search: space is linear in size of proof Depth-first search from a start state X:
Incomplete due to infinite loops dfs(X) :- goal(X).
⇒ fix by checking current goal against every goal on stack dfs(X) :- successor(X,S),dfs(S).
Inefficient due to repeated subgoals (both success and failure) No need to loop over S: successor succeeds for each
⇒ fix using caching of previous results (extra space!)
Appending two lists to produce a third:
Widely used (without improvements!) for logic programming
append([],Y,Y).
append([X|L],Y,[X|Z]) :- append(L,Y,Z).

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

Conversion to CNF contd.


3. Standardize variables: each quantifier should use a different one
∀ x [∃ y Animal(y) ∧ ¬Loves(x, y)] ∨ [∃ z Loves(z, x)]
4. Skolemize: a more general form of existential instantiation.
Each existential variable is replaced by a Skolem function
of the enclosing universally quantified variables:
∀ x [Animal(F (x)) ∧ ¬Loves(x, F (x))] ∨ Loves(G(x), x)
5. Drop universal quantifiers:
[Animal(F (x)) ∧ ¬Loves(x, F (x))] ∨ Loves(G(x), x)
6. Distribute ∧ over ∨:
[Animal(F (x)) ∨ Loves(G(x), x)] ∧ [¬Loves(x, F (x)) ∨ Loves(G(x), x)]

Chapter 9 45

Вам также может понравиться