1/19 Inference in first-order logic Chapter 9- Part2 Modified by Vali Derhami
2/19 Backward chaining algorithm SUBST(COMPOSE(θ 1, θ 2 ), p) = SUBST(θ 2, SUBST(θ 1, p)) ترکیب جایگزینی معادل تاثیر به کارگیری هر یک از جایگزینها به نوبت است
3/19 Backward chaining example
4/19 Backward chaining example
5/19 Backward chaining example
6/19 Backward chaining example
7/19 Backward chaining example
8/19 Backward chaining example
9/19 Backward chaining example
10/19 Backward chaining example
11/19 Properties of backward chaining Depth-first recursive proof search: space is linear in size of proof Incomplete due to infinite loops (even for Datalog) – fix by checking current goal against every goal on stack Inefficient due to repeated subgoals (both success and failure) – fix using caching of previous results (extra space) (جوابهای هدفهای فرعی در حین تولید نگهداری، در هنگام تکرار هدفهای فرعی از انها استفاده) Widely used for logic programming
12/19 Logic programming: Prolog Algorithm = Logic + Control Basis: backward chaining with Horn clauses Uses uppercase letters for variables and lowercase for constants. Clauses are written with the head preceding the body; ": -" is used for left- implication, commas separate literals in the body, and ‘.’ for end of a sentence. Widely used in Europe, Japan Program = set of clauses = head :- literal 1, … literal n. criminal(X) :- american(X), weapon(Y), sells(X,Y,Z), hostile(Z). Depth-first, left-to-right backward chaining Built-in predicates for arithmetic etc., e.g., X is Y*Z+3
13/19 Prolog Built-in predicates that have side effects (e.g., input and output predicates, assert/retract predicates) Closed-world assumption ("negation as failure") –e.g., given alive(X) :- not dead(X). –alive(joe) succeeds if dead(joe) fails Appending two lists to produce a third: 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=[]
14/19 Resolution: brief summary Full first-order version: l 1 ··· l k, m 1 ··· m n ( l 1 ··· l i-1 l i+1 ··· l k m 1 ··· m j-1 m j+1 ··· m n )θ where Unify ( l i, m j ) = θ. The two clauses are assumed to be standardized apart so that they share no variables. For example: Rich(x) Unhappy(x) Rich(Ken) Unhappy(Ken) with θ = {x/Ken} Apply resolution steps to CNF(KB α); complete for FOL
15/19 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)]
16/19 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)]
17/19 Resolution proof: definite clauses R1: American(x) Weapon(y) Sells(x,y,z) Hostile(z) Criminal(x) R2: Missile(x1) Owns(Nono,x1) Sells(West,x1,Nono) R3: Missile(x2) Weapon(x2) R4: Enemy(x3,America) Hostile(x3) Owns(Nono,M1) Missile(M1) American(West) Enemy(Nono,America)
18/19 Resolution proof: definite clauses R1: American(x) Weapon(y) Sells(x,y,z) Hostile(z) Criminal(x) R2: Missile(x1) Owns(Nono,x1) Sells(West,x1,Nono) R3: Missile(x2) Weapon(x2) R4: Enemy(x3,America) Hostile(x3) Owns(Nono,M1) Missile(M1) American(West) Enemy(Nono,America)
19/19 تمارین فصل 9: 4، 9، 18 و سوالات تستی