Inference in first-order logic
CE417: Introduction to Artificial Intelligence Sharif University of Technology Spring 2017
“Artificial Intelligence: A Modern Approach”, 3rd Edition, Chapter 9
Inference in first-order logic CE417: Introduction to Artificial - - PowerPoint PPT Presentation
Inference in first-order logic CE417: Introduction to Artificial Intelligence Sharif University of Technology Spring 2017 Soleymani Artificial Intelligence: A Modern Approach , 3 rd Edition, Chapter 9 Outline Reducing first-order
CE417: Introduction to Artificial Intelligence Sharif University of Technology Spring 2017
“Artificial Intelligence: A Modern Approach”, 3rd Edition, Chapter 9
Potentially great expense
Unification Generalized Modus Ponens KB of Horn clauses
Forward chaining Backward chaining
General KB
Resolution
2
3
First order inference by converting the knowledge base to PL
Universel Instantiation Existential Instantiation
𝑇𝑣𝑐𝑡𝑢
𝐿𝑗𝑜(𝐾𝑝ℎ𝑜) ∧ 𝐻𝑠𝑓𝑓𝑒𝑧(𝐾𝑝ℎ𝑜) ⇒ 𝐹𝑤𝑗𝑚(𝐾𝑝ℎ𝑜)
𝑇𝑣𝑐𝑡𝑢(
𝐿𝑗𝑜(𝑆𝑗𝑑ℎ𝑏𝑠𝑒) ∧ 𝐻𝑠𝑓𝑓𝑒𝑧(𝑆𝑗𝑑ℎ𝑏𝑠𝑒) ⇒ 𝐹𝑤𝑗𝑚(𝑆𝑗𝑑ℎ𝑏𝑠𝑒)
𝑇𝑣𝑐𝑡𝑢(
𝐿𝑗𝑜(𝐺𝑏𝑢ℎ𝑓𝑠(𝐾𝑝ℎ𝑜)) ∧ 𝐻𝑠𝑓𝑓𝑒𝑧(𝐺𝑏𝑢ℎ𝑓𝑠(𝐾𝑝ℎ𝑜)) ⇒ 𝐹𝑤𝑗𝑚(𝐺𝑏𝑢ℎ𝑓𝑠(𝐾𝑝ℎ𝑜)) 4
𝑇𝑣𝑐𝑡𝑢
𝐷𝑠𝑝𝑥𝑜(𝐷1) ∧ 𝑃𝑜𝐼𝑓𝑏𝑒(𝐷1, 𝐾𝑝ℎ𝑜) 𝐷1 is a new constant symbol, called a Skolem constant
5
6 KB of FOL sentences:
𝑦 𝐿𝑗𝑜 𝑦 𝐻𝑠𝑓𝑓𝑒𝑧 𝑦 𝐹𝑤𝑗𝑚 𝑦
𝐿𝑗𝑜 𝐾𝑝ℎ𝑜
𝐻𝑠𝑓𝑓𝑒𝑧 𝐾𝑝ℎ𝑜
𝐶𝑠𝑝𝑢ℎ𝑓𝑠 𝑆𝑗𝑑ℎ𝑏𝑠𝑒, 𝐾𝑝ℎ𝑜
𝑦 𝐷𝑠𝑝𝑥𝑜(𝑦) ∧ 𝑃𝑜𝐼𝑓𝑏𝑒(𝑦, 𝐾𝑝ℎ𝑜)
A universally quantified sentence is replaced by all possible instantiations & an
𝐿𝑗𝑜(𝐾𝑝ℎ𝑜) 𝐻𝑠𝑓𝑓𝑒𝑧(𝐾𝑝ℎ𝑜) ⇒ 𝐹𝑤𝑗𝑚(𝐾𝑝ℎ𝑜)
𝐿𝑗𝑜(𝑆𝑗𝑑ℎ𝑏𝑠𝑒) 𝐻𝑠𝑓𝑓𝑒𝑧(𝑆𝑗𝑑ℎ𝑏𝑠𝑒) ⇒ 𝐹𝑤𝑗𝑚(𝑆𝑗𝑑ℎ𝑏𝑠𝑒)
𝐿𝑗𝑜(𝐾𝑝ℎ𝑜)
𝐻𝑠𝑓𝑓𝑒𝑧(𝐾𝑝ℎ𝑜)
𝐶𝑠𝑝𝑢ℎ𝑓𝑠(𝑆𝑗𝑑ℎ𝑏𝑠𝑒, 𝐾𝑝ℎ𝑜)
𝐷𝑠𝑝𝑥𝑜 𝐷1 𝑃𝑜𝐼𝑓𝑏𝑒 𝐷1, 𝐾𝑝ℎ𝑜
7
Algorithms for deciding PL entailment can be used
Infinite set of possible ground-term substitution due to function symbols
e.g., 𝐺𝑏𝑢ℎ𝑓𝑠(… 𝐺𝑏𝑢ℎ𝑓𝑠(𝐺𝑏𝑢ℎ𝑓𝑠(𝐾𝑝ℎ𝑜)))
Theorem (Herbrand, 1930): If a sentence 𝛽 is entailed by an FOL KB,
8
Algorithms exist that say yes to every entailed sentence, but no
𝐿𝑗𝑜 𝑆𝑗𝑑ℎ𝑏𝑠𝑒 𝐻𝑠𝑓𝑓𝑒𝑧 𝑆𝑗𝑑ℎ𝑏𝑠𝑒 𝐹𝑤𝑗𝑚 𝑆𝑗𝑑ℎ𝑏𝑠𝑒 is irrelevant.
𝑞 × 𝑜𝑙 instantiations
9
10
E.g., generalized Modus Ponens
Instantiating variables only as far as necessary for the proof.
11
12
13
14
T
Standardizing apart: renaming the variables causing name clashes in
More than one unifier
Most General Unifier (MGU)
15
16
For atomic sentences 𝑞𝑗 , 𝑞𝑗
′, 𝑟 & 𝑇𝑣𝑐𝑡𝑢 𝜄, 𝑞𝑗 ′ = 𝑇𝑣𝑐𝑡𝑢 𝜄, 𝑞𝑗
′, 𝑞2 ′ , … , 𝑞𝑜 ′ ,
′: 𝐿𝑗𝑜(𝐾𝑝ℎ𝑜)
′ : 𝐻𝑠𝑓𝑓𝑒𝑧(𝑧)
17
′ ∧ … ∧ 𝑞𝑜 ′
′
′ )
′, 𝑞2 ′ , … , 𝑞𝑜 ′ ,
18
19
20
Atomic: 𝑄 1, 𝑄2, … Implication:
1 ∧ 𝑄2 ∧ … ∧ 𝑄𝑙 ⇒ 𝑄𝑙+1
𝐿𝑗𝑜 𝑦 ∧ 𝐻𝑠𝑓𝑓𝑒𝑧 𝑦 ⇒ 𝐹𝑤𝑗𝑚 𝑦 𝐿𝑗𝑜(𝐾𝑝ℎ𝑜) 𝐶𝑠𝑝𝑢ℎ𝑓𝑠(𝐾𝑝ℎ𝑜, 𝑆𝑗𝑑ℎ𝑏𝑠𝑒)
21
22
23
24
25
26
27
28
29
function FOL_FC_ASK(𝐿𝐶, 𝛽) returns a substitution or 𝑔𝑏𝑚𝑡𝑓 inputs: 𝐿𝐶, a set of first-order definite clauses 𝛽, the query, an atomic sentence repeat until 𝑜𝑓𝑥 = {} 𝑜𝑓𝑥 = {} for each 𝑠𝑣𝑚𝑓 in 𝐿𝐶 do (𝑞1 ∧ ⋯ ∧ 𝑞𝑜 ⇒ 𝑟) ← STANDARDIZE_VARS(𝑠𝑣𝑚𝑓) for each 𝜄 such that SUBST 𝜄, 𝑞1 ∧ ⋯ ∧ 𝑞𝑜 = SUBST(𝜄, 𝑞′1 ∧ ⋯ ∧ 𝑞′𝑜) for some 𝑞′1, … , 𝑞′𝑜 in 𝐿𝐶 𝑟′ ← SUBST(𝜄, 𝑟) if 𝑟′ does not unify with some sentence already in 𝐿𝐶 or 𝑜𝑓𝑥 then add 𝑟′ to 𝑜𝑓𝑥 𝜒 ← UNIFY(𝑟′, 𝛽) if 𝜒 is not 𝑔𝑏𝑗𝑚 then return 𝜒 add 𝑜𝑓𝑥 to 𝐿𝐶 return 𝑔𝑏𝑚𝑡𝑓
30
1) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
31
1) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 2) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 3) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 4) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
32
1) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 2) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 3) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 4) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦) {𝑦/𝑁1} {𝑦/𝑁1} {𝑦/𝑂𝑝𝑜𝑝} {𝑦/𝑋𝑓𝑡𝑢, 𝑧/𝑁1,𝑨/𝑂𝑝𝑜𝑝}
For Datalog KBs, proof is fairly easy.
Datalog KBs contain first-order definite clauses with no function symbols FC reaches a fix point for Datalog KBs after finite number of iterations
It may not terminate in general if 𝛽 is not entailed (query has no answer)
entailment with definite clauses is also semi-decidable 33
E.g., conjunct ordering
Every new fact inferred on iteration 𝑢 must be derived from at least
Check a rule only if its premise includes a newly inferred fact (at iteration 𝑢
34
35
OR: any rule 𝑚ℎ𝑡 ⇒ 𝑝𝑏𝑚 in KB can be used to prove the goal AND: all conjuncts in 𝑚ℎ𝑡 must be proved.
36
function FOL_BC_ASK(𝐿𝐶, 𝑟𝑣𝑓𝑠𝑧) returns a generator of substitutions return FOL_BC_OR(𝐿𝐶, 𝑟𝑣𝑓𝑠𝑧, {}) generator FOL_BC_OR(𝐿𝐶, 𝑝𝑏𝑚, 𝜄) yields a substitution for each rule (𝑚ℎ𝑡 ⇒ 𝑠ℎ𝑡) in FETCH_RULES_FOR_GOAL(𝐿𝐶, 𝑝𝑏𝑚) do (𝑚ℎ𝑡, 𝑠ℎ𝑡) ← STANDARDIZE_VARS(𝑚ℎ𝑡, 𝑠ℎ𝑡) for each 𝜄′ in FOL_BC_AND(𝐿𝐶, 𝑚ℎ𝑡, UNIFY(𝑠ℎ𝑡, 𝑝𝑏𝑚, 𝜄) do yield 𝜄′ generator FOL_BC_AND(𝐿𝐶, 𝑝𝑏𝑚𝑡, 𝜄) yields a substitution if 𝜄 = 𝑔𝑏𝑗𝑚𝑣𝑠𝑓 then return else if LENGTH 𝑝𝑏𝑚𝑡 = 0 then yield 𝜄 else do 𝑔𝑗𝑠𝑡𝑢 ← FIRST 𝑝𝑏𝑚𝑡 𝑠𝑓𝑡𝑢 ← REST 𝑝𝑏𝑚𝑡 for each 𝜄′ in FOL_BC_OR(𝐿𝐶, SUBST 𝜄, 𝑔𝑗𝑠𝑡𝑢 , 𝜄) do for each 𝜄′′ in FOL_BC_AND(𝐿𝐶, 𝑠𝑓𝑡𝑢, 𝜄′) do yield 𝜄′′
37
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
38
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
39
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
40
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
41
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
42
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
43
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
44
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
45
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
Repeated subgoals (both success and failure)
Solution: caching of previous results
Incompleteness due to infinite loops
Solution: checking current goal against every goal on stack 46
47
48
Clauses are assumed to be standardized apart (sharing no variables).
49
50
51
Complete when used in combination with factoring
Factoring in PL: reduces two literals to one if they are identical Factoring in FOL: reduces two literals to one if they are
52
1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∧ 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∧ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∧ 𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ⇒ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) 𝐹𝑜𝑓𝑛𝑧(𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦) 1) 𝐹𝑜𝑓𝑛𝑧(𝑂𝑝𝑜𝑝, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏) 2) 𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑁1 ∧ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑁1 3) 𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑋𝑓𝑡𝑢 4) ¬ 𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∨ ¬𝑃𝑥𝑜𝑡 𝑂𝑝𝑜𝑝, 𝑦 ∨ 𝑇𝑓𝑚𝑚𝑡 𝑋𝑓𝑡𝑢, 𝑦, 𝑂𝑝𝑜𝑝 5) ¬𝐵𝑛𝑓𝑠𝑗𝑑𝑏𝑜 𝑦 ∨ ¬𝑋𝑓𝑏𝑞𝑝𝑜 𝑧 ∨ ¬𝑇𝑓𝑚𝑚𝑡 𝑦, 𝑧, 𝑨 ∨ ¬𝐼𝑝𝑡𝑢𝑗𝑚𝑓 𝑨 ∨ 𝐷𝑠𝑗𝑛𝑗𝑜𝑏𝑚 𝑦 6) ¬𝑁𝑗𝑡𝑡𝑗𝑚𝑓 𝑦 ∨ 𝑋𝑓𝑏𝑞𝑝𝑜 𝑦 7) ¬𝐹𝑜𝑓𝑛𝑧 𝑦, 𝐵𝑛𝑓𝑠𝑗𝑑𝑏 ∨ 𝐼𝑝𝑡𝑢𝑗𝑚𝑓(𝑦)
53
54
𝑦 [∀𝑧 𝐵𝑜𝑗𝑛𝑏𝑚(𝑧) ⇒ 𝑀𝑝𝑤𝑓𝑡(𝑦, 𝑧)] [𝑧 𝑀𝑝𝑤𝑓𝑡(𝑧, 𝑦)]
𝑦 [∃𝑨 𝐵𝑜𝑗𝑛𝑏𝑚(𝑨) ∧ 𝐿𝑗𝑚𝑚𝑡(𝑦, 𝑨)] [∀𝑧 ¬𝑀𝑝𝑤𝑓𝑡(𝑧, 𝑦)]
𝑦 𝐵𝑜𝑗𝑛𝑏𝑚(𝑦) 𝑀𝑝𝑤𝑓𝑡(𝐾𝑏𝑑𝑙, 𝑦)
𝐿𝑗𝑚𝑚𝑡 𝐾𝑏𝑑𝑙, 𝑈𝑣𝑜𝑏
𝐷𝑏𝑢(𝑈𝑣𝑜𝑏)
𝐿𝑗𝑚𝑚𝑡(𝐷𝑣𝑠𝑗𝑝𝑡𝑗𝑢𝑧, 𝑈𝑣𝑜𝑏)
55
𝐵𝑜𝑗𝑛𝑏𝑚(𝐺(𝑦)) ∨ 𝑀𝑝𝑤𝑓𝑡(𝐻(𝑦), 𝑦) ¬𝑀𝑝𝑤𝑓𝑡(𝑦, 𝐺(𝑦)) ∨ 𝑀𝑝𝑤𝑓𝑡(𝐻(𝑦), 𝑦) ¬𝑀𝑝𝑤𝑓𝑡(𝑧, 𝑦) ∨ ¬𝐵𝑜𝑗𝑛𝑏𝑚(𝑨) ∨ ¬𝐿𝑗𝑚𝑚𝑡(𝑦, 𝑨) ¬𝐵𝑜𝑗𝑛𝑏𝑚(𝑦) ∨ 𝑀𝑝𝑤𝑓𝑡(𝐾𝑏𝑑𝑙, 𝑦) 𝐿𝑗𝑚𝑚𝑡 𝐾𝑏𝑑𝑙, 𝑈𝑣𝑜𝑏
𝐷𝑏𝑢(𝑈𝑣𝑜𝑏) ¬ 𝐿𝑗𝑚𝑚𝑡(𝐷𝑣𝑠𝑗𝑝𝑡𝑗𝑢𝑧, 𝑈𝑣𝑜𝑏)
𝛽: ∃𝑥 𝐿𝑗𝑚𝑚𝑡(𝑥, 𝑈𝑣𝑜𝑏) The binding {𝑥/𝐷𝑣𝑠𝑗𝑝𝑡𝑗𝑢𝑧} in one of steps
56
𝛽: ∃𝑥 𝐿𝑗𝑚𝑚𝑡(𝑥, 𝑈𝑣𝑜𝑏) The binding {𝑥/𝐷𝑣𝑠𝑗𝑝𝑡𝑗𝑢𝑧} in one of steps
Depth-first, left-to-right BC
Fact
e.g., american(west).
Rule: head :- literal1, … ,literaln.
e.g., criminal(X) :- american(X), weapon(Y), sells(X,Y,Z),
57
Appending two lists to produce a third:
query:
answers:
58
59
Forward chaining Backward chaining
Resolution