AI Unit-III Chapter-II Inference in First-Order Logic
AI Unit-III Chapter-II Inference in First-Order Logic
First-Order logic does not only use predicate and terms for making atomic
sentences but also uses another way, which is equality in FOL. For this, we
can use equality symbols which specify that the two terms refer to the
same object.
Example: Brother(John) = Smith.
As in the above example, the object referred by the Brother(John) is
similar to the object referred by Smith. The equality symbol can also be
used with negation to represent that two terms are not the same objects.
Example: ¬ (x=y) which is equivalent to x ≠y.
FOL inference rules for quantifier:
As propositional logic we also have inference rules in first-order logic,
so following are some basic inference rules in FOL:
1. Universal Generalization
2. Universal Instantiation
3. Existential Instantiation
4. Existential introduction
1. Universal Generalization:
Universal generalization is a valid inference rule which states that if
premise P(c) is true for any arbitrary element c in the universe of
discourse, then we can have a conclusion as ∀ x P(x).
This rule can be used if we want to show that every element has a similar
property.
The UI rule state that we can infer any sentence P(c) by substituting a
ground term c (a constant within domain x) from ∀ x P(x) for any object in
the universe of discourse.
It can be represented as:
Example-1:
"All kings who are greedy are Evil." So let our knowledge base contains
this detail as in the form of FOL: ∀x king(x) ∧ greedy(x) → Evil (x),
So, from this information, we can infer any of the following statements
using Universal instantiation:
o King(John) ∧ Greedy(John) → Evil (John),
The new KB is not logically equivalent to old KB, but it will be satisfiable
if old KB was satisfiable.
This rule states that one can infer P(c) from the formula given in the form
of ∃x P(x) for a new constant symbol c.
The restriction with this rule is that c used in the rule must be a new term
for which P(c) is true.
It can be represented as:
Example:
From the given sentence: ∃x Crown(x) ∧ OnHead(x, John),
So we can infer: Crown(K) ∧ OnHead( K, John), as long as K does not
appear in the knowledge base.
o The above used K is a constant symbol, which is called Skolem constant.
What is Unification?
Unification is a process of making two different logical atomic expressions
identical by finding a substitution. Unification depends on the substitution
process.
It takes two literals as input and makes them identical using substitution.
Let Ψ1 and Ψ2 be two atomic sentences and 𝜎 be a unifier such that, Ψ1𝜎 = Ψ2𝜎,
With both the substitutions, the first expression will be identical to the
second expression and the substitution set will be: [a/x, f(z)/y].
Conditions for Unification:
Following are some basic conditions for unification:
Predicate symbol must be same, atoms or expression with different
predicate symbol can never be unified.
Unification will fail if there are two similar variables present in the same
expression.
Unification Algorithm:
Algorithm: Unify(Ψ1, Ψ2)
Step. 1: If Ψ1 or Ψ2 is a variable or constant, then:
a) If Ψ1 or Ψ2 are identical, then return NIL.
b) Else if Ψ1is a variable,
a. then if Ψ1 occurs in Ψ2, then return FAILURE
b. Else return {(Ψ2/ Ψ1)}.
c) Else if Ψ2 is a variable,
a. If Ψ2 occurs in Ψ1 then return FAILURE,
b. Else return {(Ψ1/ Ψ2)}.
d) Else return FAILURE.
Step. 2: If the initial Predicate symbol in Ψ1 and Ψ2 are not
same, then return FAILURE.
Step. 3: IF Ψ1 and Ψ2 have a different number of arguments, then
return FAILURE.
Step. 4: Set Substitution set(SUBST) to NIL.
Step. 5: For i=1 to the number of elements in Ψ1.
a) Call Unify function with the ith element of Ψ1 and ith
element of Ψ2, and put the result into S.
b) If S = failure then returns Failure
c) If S ≠ NIL then do,
a. Apply S to the remainder of both L1 and L2.
b. SUBST= APPEND(S, SUBST).
Step. 6: Return SUBST.
Implementation of the Algorithm
Step-1: Initialize the substitution set to be empty.
Step-2: Recursively unify atomic sentences:
Check for Identical expression match.
If one expression is a variable vi, and the other is a term ti which does not contain
c. If both the expressions are functions, then function name must be similar, and
the number of arguments must be the same in both the expression.
For each pair of the following atomic sentences
find the most general unifier (If exist).
1. Find the MGU of {p(f(a), g(Y)) and p(X, X)}
Sol: S0 => Here, Ψ1 = p(f(a), g(Y)), and Ψ2 = p(X, X)
SUBST θ= {f(a) / X}
S1 => Ψ1 = p(f(a), g(Y)), and Ψ2 = p(f(a), f(a))
SUBST θ= {f(a) / g(y)}, Unification failed.
Unification is not possible for these expressions.
2. Find the MGU of {p(b, X, f(g(Z))) and p(Z, f(Y), f(Y))}
SUBST θ= {b/y}
S1 => {Q(a, g(f(b), a), f(b)); Q(a, g(f(b), a), f(b))}, Successfully Unified.
To better understand all the above steps, we will take an example in which
we will apply resolution.
Example:
a. John likes all kind of food.
In First order logic resolution, it is required to convert the FOL into CNF as
CNF form makes easier for resolution proofs.
o Eliminate all implication (→) and rewrite
1. ∀x ¬ food(x) V likes(John, x) 7. ∀x ¬ alive(x) V ¬ killed(x)
5. ∀x ¬ eats(Anil, x) V eats(Harry, x)
1. ∀x ¬ food(x) V likes(John, x)
2. food(Apple) Λ food(vegetables)
5. ∀x ¬ eats(Anil, x) V eats(Harry, x)
6. ∀x ¬killed(x) ] V alive(x)
7. ∀x ¬ alive(x) V ¬ killed(x)
8. likes(John, Peanuts).
o Rename variables or standardize variables
1. ∀x ¬ food(x) V likes(John, x)
2. food(Apple) Λ food(vegetables)
6. ∀g ¬killed(g) ] V alive(g)
7. ∀k ¬ alive(k) V ¬ killed(k)
8. likes(John, Peanuts).
o Eliminate existential instantiation quantifier by elimination.
5. eats(Anil, Peanuts)
6. alive(Anil)
o Distribute conjunction ∧ over disjunction ¬.
This step will not make any change in this problem.
Step-3: Negate the statement to be proved
o In the second step of the resolution graph, ¬ food(Peanuts) , and food(z) get resolved
(canceled) by substitution of { Peanuts/z}, and we are left with ¬ eats(y, Peanuts) ∨
killed(y) .
o In the third step of the resolution graph, ¬ eats(y, Peanuts) and eats (Anil,
Peanuts) get resolved by substitution {Anil/y}, and we are left with Killed(Anil) .
o In the fourth step of the resolution graph, Killed(Anil) and ¬ killed(k) get resolve by
substitution {Anil/k}, and we are left with ¬ alive(Anil) .
o In the last step of the resolution graph ¬ alive(Anil) and alive(Anil) get resolved.
FORWARD CHAINING AND BACKWARD CHAINING IN AI
In artificial intelligence, forward and backward chaining is one of the
important topics, but before understanding forward and backward chaining
lets first understand that from where these two terms came.
Inference engine:
The inference engine is the component of the intelligent system in artificial
intelligence, which applies logical rules to the knowledge base to infer new
information from known facts.
The first inference engine was part of the expert system. Inference engine
commonly proceeds in two modes, which are:
A. Forward chaining
B. Backward chaining
Horn Clause and Definite clause:
Horn clause and definite clause are the forms of sentences, which enables
knowledge base to use a more restricted and efficient inference algorithm.
Logical inference algorithms use forward and backward chaining approaches,
which require KB in the form of the first-order definite clause.
Definite clause: A clause which is a disjunction of literals with exactly
one positive literal is known as a definite clause or strict horn clause.
Horn clause: A clause which is a disjunction of literals with at most one
positive literal is known as horn clause. Hence all the definite clauses are
horn clauses.
Example: (¬ p ∨ ¬ q ∨ k).
It has only one positive literal k.
It is equivalent to p ∧ q → k.
A. Forward Chaining
Forward chaining is also known as a forward deduction or forward
reasoning method when using an inference engine. Forward chaining
is a form of reasoning which start with atomic sentences in the
knowledge base and applies inference rules (Modus Ponens) in the
forward direction to extract more data until a goal is reached.
The Forward-chaining algorithm starts from known facts, triggers all
rules whose premises are satisfied, and add their conclusion to the
known facts. This process repeats until the problem is solved.
Properties of Forward-Chaining:
It is a down-up approach, as it moves from bottom to top.
Example:
"As per the law, it is a crime for an American to sell weapons to
hostile nations. Country A, an enemy of America, has some
missiles, and all the missiles were sold to it by Robert, who is an
American citizen."
Prove that "Robert is criminal."
To solve the above problem, first, we will convert all the above facts
into first-order definite clauses, and then we will use a forward-
chaining algorithm to reach the goal.
Facts Conversion into FOL:
o It is a crime for an American to sell weapons to hostile nations. (Let's say p, q, and
r are variables)
American (p) ∧ weapon(q) ∧ sells (p, q, r) ∧ hostile(r) → Criminal(p) ...
(1)
o Robert is American
American(Robert). ..........(8)
Forward chaining proof:
Step-1:
In the first step we will start with the known facts and will choose the
sentences which do not have implications, such as: American(Robert),
Enemy(A, America), Owns(A, T1), and Missile(T1). All these facts
will be represented as below.
Step-2:
At the second step, we will see those facts which infer from available facts and with
satisfied premises.
Rule-(1) does not satisfy premises, so it will not be added in the first iteration.
Rule-(2) and (3) are already added.
Rule-(4) satisfy with the substitution {p/T1}, so Sells (Robert, T1, A) is added,
which infers from the conjunction of Rule (2) and (3).
In backward chaining, the goal is broken into sub-goal or sub-goals to prove the
facts true.
o Missile(T1)
o American(Robert). ..........(8)
Backward-Chaining proof:
In Backward chaining, we will start with our goal predicate, which
is Criminal(Robert), and then infer further rules.
Step – 1:
At the first step, we will take the goal fact. And from the goal fact, we will infer
other facts, and at last, we will prove those facts true.
So our goal fact is "Robert is Criminal," so following is the predicate of it.
Step – 2:
At the second step, we will infer other facts form goal fact which satisfies the
rules.
So as we can see in Rule-1, the goal predicate Criminal (Robert) is present with
substitution {Robert/P}.
So we will add all the conjunctive facts below the first level and will replace p
with Robert.
Forward chaining as the name suggests, start from the known facts and move forward by
applying inference rules to extract more data, and it continues until it reaches to the goal,
whereas backward chaining starts from the goal, move backward by using inference rules
to determine the facts that satisfy the goal.