0% found this document useful (0 votes)
48 views29 pages

Unit - 3 - Ai

Uploaded by

Arpit Chaudhary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views29 pages

Unit - 3 - Ai

Uploaded by

Arpit Chaudhary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

First-Order Logic in Artificial intelligence


In the topic of Propositional logic, we have seen that how to represent statements using
propositional logic. But unfortunately, in propositional logic, we can only represent the facts,
which are either true or false. PL is not sufficient to represent the complex sentences or natural
language statements. The propositional logic has very limited expressive power. Consider the
following sentence, which we cannot represent using PL logic.

"Some humans are intelligent", or

"Sachin likes cricket."

To represent the above statements, PL logic is not sufficient, so we required some more powerful
logic, such as first-order logic.

First-Order logic:

First-order logic is another way of knowledge representation in artificial intelligence. It is an


extension to propositional logic.

FOL is sufficiently expressive to represent the natural language statements in a concise way.

First-order logic is also known as Predicate logic or First-order predicate logic. First-order
logic is a powerful language that develops information about the objects in a more easy
way and can also express the relationship between those objects.

First-order logic (like natural language) does not only assume that the world contains facts
like propositional logic but also assumes the following things in the world:

Objects: A, B, people, numbers, colors, wars, theories, squares, pits, wumpus, ......

Relations: It can be unary relation such as: red, round, is adjacent, or n-any
relation such as: the sister of, brother of, has color, comes between

Function: Father of, best friend, third inning of, end of, ......

As a natural language, first-order logic also has two main parts:

a. Syntax

b. Semantics

https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 2/11
04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

Syntax of First-Order logic:


The syntax of FOL determines which collection of symbols is a logical expression in first-order
logic. The basic syntactic elements of first-order logic are symbols. We write statements in short-
hand notation in FOL.

Basic Elements of First-order logic:

Following are the basic elements of FOL syntax:

Constant 1, 2, A, John, Mumbai, cat,....

Variables x, y, z, a, b,....

Predicates Brother, Father, >,....

Function sqrt, LeftLegOf, ....

Connectives ∧, ∨, ¬, ⇒, ⇔

Equality ==

Quantifier ∀, ∃

Atomic sentences:

Atomic sentences are the most basic sentences of first-order logic. These sentences are
formed from a predicate symbol followed by a parenthesis with a sequence of terms.

We can represent atomic sentences as Predicate (term1, term2, ......, term n).

Example: Ravi and Ajay are brothers: => Brothers(Ravi, Ajay).


Chinky is a cat: => cat (Chinky).

Complex Sentences:

Complex sentences are made by combining atomic sentences using connectives.

First-order logic statements can be divided into two parts:

https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 3/11
04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

Subject: Subject is the main part of the statement.

Predicate: A predicate can be defined as a relation, which binds two atoms together in a
statement.

Consider the statement: "x is an integer.", it consists of two parts, the first part x is the subject
of the statement and second part "is an integer," is known as a predicate.

Quantifiers in First-order logic:

A quantifier is a language element which generates quantification, and quantification


specifies the quantity of specimen in the universe of discourse.

These are the symbols that permit to determine or identify the range and scope of the
variable in the logical expression. There are two types of quantifier:
a. Universal Quantifier, (for all, everyone, everything)

b. Existential quantifier, (for some, at least one).

Universal Quantifier:

Universal quantifier is a symbol of logical representation, which specifies that the statement within
its range is true for everything or every instance of a particular thing.

The Universal quantifier is represented by a symbol ∀, which resembles an inverted A.

Note: In universal quantifier we use implication "→".

If x is a variable, then ∀x is read as:

For all x

For each x

https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 4/11
04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

For every x.

Example:

All man drink coffee.

Let a variable x which refers to a cat so all x can be represented in UOD as below:

∀x man(x) → drink (x, coffee).

It will be read as: There are all x where x is a man who drink coffee.

Existential Quantifier:
Existential quantifiers are the type of quantifiers, which express that the statement within its scope
is true for at least one instance of something.

It is denoted by the logical operator ∃, which resembles as inverted E. When it is used with a
predicate variable then it is called as an existential quantifier.

Note: In Existential quantifier we always use AND or Conjunction symbol (∧).

https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 5/11
04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

If x is a variable, then existential quantifier will be ∃x or ∃(x). And it will be read as:

There exists a 'x.'

For some 'x.'

For at least one 'x.'

Example:

Some boys are intelligent.

∃x: boys(x) ∧ intelligent(x)

It will be read as: There are some x where x is a boy who is intelligent.

Points to remember:

The main connective for universal quantifier ∀ is implication →.

The main connective for existential quantifier ∃ is and ∧.

Properties of Quantifiers:
In universal quantifier, ∀x∀y is similar to ∀y∀x.

In Existential quantifier, ∃x∃y is similar to ∃y∃x.


https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 6/11
04/03/2024, 10:19 First-order logic in Artificial Intelligence - Javatpoint

∃x∀y is not similar to ∀y∃x.

Some Examples of FOL using quantifier:

1. All birds fly.


In this question the predicate is "fly(bird)."
And since there are all birds who fly so it will be represented as follows.
∀x bird(x) →fly(x).

2. Every man respects his parent.


In this question, the predicate is "respect(x, y)," where x=man, and y= parent.
Since there is every man so will use ∀, and it will be represented as follows:
∀x man(x) → respects (x, parent).

3. Some boys play cricket.


In this question, the predicate is "play(x, y)," where x= boys, and y= game. Since there are some
boys so we will use ∃, and it will be represented as:
∃x boys(x) → play(x, cricket).

4. Not all students like both Mathematics and Science.


In this question, the predicate is "like(x, y)," where x= student, and y= subject.
Since there are not all students, so we will use ∀ with negation, so following representation for
this:
¬∀ (x) [ student(x) → like(x, Mathematics) ∧ like(x, Science)].

5. Only one student failed in Mathematics.


In this question, the predicate is "failed(x, y)," where x= student, and y= subject.
Since there is only one student who failed in Mathematics, so we will use following representation
for this:
∃(x) [ student(x) → failed (x, Mathematics) ∧∀ (y) [¬(x==y) ∧ student(y) → ¬failed
(x, Mathematics)].

Free and Bound Variables:


The quantifiers interact with variables which appear in a suitable way. There are two types of
variables in First-order logic which are given below:

Free Variable: A variable is said to be a free variable in a formula if it occurs outside the scope of
the quantifier.
https://www.javatpoint.com/first-order-logic-in-artificial-intelligence 7/11
04/03/2024, 10:20 Inference in First-Order Logic - Javatpoint

Inference in First-Order Logic


Inference in First-Order Logic is used to deduce new facts or sentences from existing sentences.
Before understanding the FOL inference rule, let's understand some basic terminologies used in
FOL.

Substitution:

Substitution is a fundamental operation performed on terms and formulas. It occurs in all


inference systems in first-order logic. The substitution is complex in the presence of quantifiers in
FOL. If we write F[a/x], so it refers to substitute a constant "a" in place of variable "x".

Note: First-order logic is capable of expressing facts about some or all objects in the universe.

Equality:

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:

Universal Generalization

Universal Instantiation

Existential Instantiation

https://www.javatpoint.com/ai-inference-in-first-order-logic 2/8
04/03/2024, 10:20 Inference in First-Order Logic - Javatpoint

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).

It can be represented as: .

This rule can be used if we want to show that every element has a similar property.

In this rule, x must not appear as a free variable.

Example: Let's represent, P(c): "A byte contains 8 bits", so for ∀ x P(x) "All bytes contain 8
bits.", it will also be true.

2. Universal Instantiation:

Universal instantiation is also called as universal elimination or UI is a valid inference rule. It


can be applied multiple times to add new sentences.

The new KB is logically equivalent to the previous KB.

As per UI, we can infer any sentence obtained by substituting a ground term for the
variable.

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.

IF "Every person like ice-cream"=> ∀x P(x) so we can infer that


"John likes ice-cream" => P(c)

Example: 2.

Let's take a famous example,

"All kings who are greedy are Evil." So let our knowledge base contains this detail as in the form of
FOL:

https://www.javatpoint.com/ai-inference-in-first-order-logic 3/8
04/03/2024, 10:20 Inference in First-Order Logic - Javatpoint

∀x king(x) ∧ greedy (x) → Evil (x),

So from this information, we can infer any of the following statements using Universal
Instantiation:

King(John) ∧ Greedy (John) → Evil (John),

King(Richard) ∧ Greedy (Richard) → Evil (Richard),

King(Father(John)) ∧ Greedy (Father(John)) → Evil (Father(John)),

3. Existential Instantiation:

Existential instantiation is also called as Existential Elimination, which is a valid inference rule
in first-order logic.

It can be applied only once to replace the existential sentence.

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.

The above used K is a constant symbol, which is called Skolem constant.

The Existential instantiation is a special case of Skolemization process.

4. Existential introduction

An existential introduction is also known as an existential generalization, which is a valid


inference rule in first-order logic.

https://www.javatpoint.com/ai-inference-in-first-order-logic 4/8
04/03/2024, 10:20 Inference in First-Order Logic - Javatpoint

This rule states that if there is some element c in the universe of discourse which has a
property P, then we can infer that there exists something in the universe which has the
property P.

It can be represented as:

Example: Let's say that,


"Priyanka got good marks in English."
"Therefore, someone got good marks in English."

Generalized Modus Ponens Rule:


For the inference process in FOL, we have a single inference rule which is called Generalized
Modus Ponens. It is lifted version of Modus ponens.

Generalized Modus Ponens can be summarized as, " P implies Q and P is asserted to be true,
therefore Q must be True."

According to Modus Ponens, for atomic sentences pi, pi', q. Where there is a substitution θ such
that SUBST (θ, pi',) = SUBST(θ, pi), it can be represented as:

Example:

We will use this rule for Kings are evil, so we will find some x such that x is king, and x is
greedy so we can infer that x is evil.

Here let say, p1' is king(John) p1 is king(x)


p2' is Greedy(y) p2 is Greedy(x)
θ is {x/John, y/John} q is evil(x)
SUBST(θ,q).

← Prev Next →

https://www.javatpoint.com/ai-inference-in-first-order-logic 5/8
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

Resolution in FOL
Resolution
Resolution is a theorem proving technique that proceeds by building refutation proofs, i.e., proofs
by contradictions. It was invented by a Mathematician John Alan Robinson in the year 1965.

Resolution is used, if there are various statements are given, and we need to prove a conclusion of
those statements. Unification is a key concept in proofs by resolutions. Resolution is a single
inference rule which can efficiently operate on the conjunctive normal form or clausal form.

Clause: Disjunction of literals (an atomic sentence) is called a clause. It is also known as a unit
clause.

Conjunctive Normal Form: A sentence represented as a conjunction of clauses is said to be


conjunctive normal form or CNF.

Note: To better understand this topic, firstly learns the FOL in AI.

The resolution inference rule:


The resolution rule for first-order logic is simply a lifted version of the propositional rule.
Resolution can resolve two clauses if they contain complementary literals, which are assumed to
be standardized apart so that they share no variables.

Where li and mj are complementary literals.

This rule is also called the binary resolution rule because it only resolves exactly two literals.

Example:

We can resolve two clauses which are given below:

[Animal (g(x) V Loves (f(x), x)] and [¬ Loves(a, b) V ¬Kills(a, b)]


https://www.javatpoint.com/ai-resolution-in-first-order-logic 2/10
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

Where two complimentary literals are: Loves (f(x), x) and ¬ Loves (a, b)

These literals can be unified with unifier θ= [a/f(x), and b/x] , and it will generate a resolvent
clause:

[Animal (g(x) V ¬ Kills(f(x), x)].

Steps for Resolution:


1. Conversion of facts into first-order logic.

2. Convert FOL statements into CNF

3. Negate the statement which needs to prove (proof by contradiction)

4. Draw resolution graph (unification).

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.

b. Apple and vegetable are food

c. Anything anyone eats and not killed is food.

d. Anil eats peanuts and still alive

e. Harry eats everything that Anil eats.


Prove by resolution that:

f. John likes peanuts.

Step-1: Conversion of Facts into FOL

In the first step we will convert all the given statements into its first order logic.

https://www.javatpoint.com/ai-resolution-in-first-order-logic 3/10
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

Step-2: Conversion of FOL into CNF

In First order logic resolution, it is required to convert the FOL into CNF as CNF form makes easier
for resolution proofs.

Eliminate all implication (→) and rewrite


a. ∀x ¬ food(x) V likes(John, x)

b. food(Apple) Λ food(vegetables)

c. ∀x ∀y ¬ [eats(x, y) Λ ¬ killed(x)] V food(y)

d. eats (Anil, Peanuts) Λ alive(Anil)

e. ∀x ¬ eats(Anil, x) V eats(Harry, x)

f. ∀x¬ [¬ killed(x) ] V alive(x)

g. ∀x ¬ alive(x) V ¬ killed(x)

h. likes(John, Peanuts).

Move negation (¬)inwards and rewrite


a. ∀x ¬ food(x) V likes(John, x)

b. food(Apple) Λ food(vegetables)

c. ∀x ∀y ¬ eats(x, y) V killed(x) V food(y)

d. eats (Anil, Peanuts) Λ alive(Anil)

e. ∀x ¬ eats(Anil, x) V eats(Harry, x)

f. ∀x ¬killed(x) ] V alive(x)

g. ∀x ¬ alive(x) V ¬ killed(x)

https://www.javatpoint.com/ai-resolution-in-first-order-logic 4/10
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

h. likes(John, Peanuts).

Rename variables or standardize variables

a. ∀x ¬ food(x) V likes(John, x)

b. food(Apple) Λ food(vegetables)

c. ∀y ∀z ¬ eats(y, z) V killed(y) V food(z)

d. eats (Anil, Peanuts) Λ alive(Anil)

e. ∀w¬ eats(Anil, w) V eats(Harry, w)

f. ∀g ¬killed(g) ] V alive(g)

g. ∀k ¬ alive(k) V ¬ killed(k)

h. likes(John, Peanuts).

Eliminate existential instantiation quantifier by elimination.


In this step, we will eliminate existential quantifier ∃, and this process is known as
Skolemization. But in this example problem since there is no existential quantifier so all the
statements will remain same in this step.

Drop Universal quantifiers.


In this step we will drop all universal quantifier since all the statements are not implicitly
quantified so we don't need it.
a. ¬ food(x) V likes(John, x)

b. food(Apple)

c. food(vegetables)

d. ¬ eats(y, z) V killed(y) V food(z)

e. eats (Anil, Peanuts)

f. alive(Anil)

g. ¬ eats(Anil, w) V eats(Harry, w)

h. killed(g) V alive(g)

i. ¬ alive(k) V ¬ killed(k)

j. likes(John, Peanuts).

https://www.javatpoint.com/ai-resolution-in-first-order-logic 5/10
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

Note: Statements "food(Apple) Λ food(vegetables)" and "eats (Anil, Peanuts) Λ alive(Anil)" can
be written in two separate statements.

Distribute conjunction ∧ over disjunction ¬.


This step will not make any change in this problem.

Step-3: Negate the statement to be proved

In this statement, we will apply negation to the conclusion statements, which will be written as
¬likes(John, Peanuts)

Step-4: Draw Resolution graph:

Now in this step, we will solve the problem by resolution tree using substitution. For the above
problem, it will be given as follows:

Hence the negation of the conclusion has been proved as a complete contradiction with the given
set of statements.

https://www.javatpoint.com/ai-resolution-in-first-order-logic 6/10
04/03/2024, 10:22 Resolution in First-order logic - Javatpoint

Explanation of Resolution graph:


In the first step of resolution graph, ¬likes(John, Peanuts) , and likes(John, x) get
resolved(canceled) by substitution of {Peanuts/x}, and we are left with ¬ food(Peanuts)

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) V
killed(y) .

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) .

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) .

In the last step of the resolution graph ¬ alive(Anil) and alive(Anil) get resolved.

← Prev Next →

For Videos Join Our Youtube Channel: Join Now

Feedback

Send your Feedback to [email protected]

Help Others, Please Share

Learn Latest Tutorials

https://www.javatpoint.com/ai-resolution-in-first-order-logic 7/10
Unification and Lifting

Craig Eminger

Propositional approach = not efficient.


Ex.) ∀ x King(x) ∧ Greedy(x) ⇒ Evil(x)
King(John)
Greedy(John)
Brother(Richard, John)

The query is Evil(x).

Apply Universal Instantiation and we get:

King(John) ∧ Greedy(John) ⇒ Evil(John)


King(Richard) ∧ Greedy(Richard) ⇒ Evil(Richard)

By applying a complete propositional algorithm (chapter 7),


we can determine Evil(John).

1
What happens when we add Siblings(Peter, Sharon) to
our knowledge base?

∀x King(x) ∧ Greedy(x) ⇒ Evil(x)


King(John)
Greedy(John)
Brother(Richard, John)
Siblings(Peter, Sharon)

∀x King(x) ∧ Greedy(x) ⇒ Evil(x)


King(John)
Greedy(John)
Brother(Richard, John)
Siblings(Peter, Sharon)
2 new values in our vocabulary = “Peter” and “Sharon”.

Apply Universal Instantiation and we get:


King(John) ∧ Greedy(John) ⇒ Evil(John)
King(Richard) ∧ Greedy(Richard) ⇒ Evil(Richard)
King(Peter) ∧ Greedy(Peter) ⇒ Evil(Peter)
King(Sharon) ∧ Greedy(Sharon) ⇒ Evil(Sharon)

These sentences are not all necessary in our KB.


We can teach the computer to make better inferences.

2
We want an X where X is a King and X is Greedy (then X is
evil).

Ideally, we want = {substitution set}.


θ

i.e.) = {x/ John}

∀y Greedy(y) = “for all values y, y is greedy”


Or basically, “everyone is greedy.”

Now our = {x/ John, y/ John}, so we can infer Evil(x)

The inference rule that encapsulates this process called


Generalized Modus Ponens.

Generalized Modus Ponens:

For atomic sentences pi, pi', and q, where there is a


θ

substitution such that SU


θ θ

, pi) = SUBST( , pi'), for all i,

p1', p2', … , pn', ( p1 ∧ p2 ∧ … ∧ pn ⇒ q )


 θ

SUBST( , q)

N + 1 premises = N atomic sentences + one implication.


θ

Applying SUBST( , q) yields the conclusion we seek.

3
p1' = King(John) p2' = Greedy(y)
p1 = King(x) p2 = Greedy(x)
θ

= {x / John, y/ John} q = Evil(x)


θ

SUBST( , q) is Evil(John)

Generalized Modus Ponens = lifted Modus Ponens


Lifted - transformed from:
Propositional Logic → First-order Logic

(Note: Backwards chaining, forwards chaining, and resolution


algorithms also have lifted forms you will see later)

How do we determine substitution ? → unification.


θ

Unification = process we use to find substitutions that make


different logical expressions look identical
Algorithm: UNIFY(p, q) = θ where SUBST( , p) = SUBST( , q)
θ θ

is our unifier value (if one exists).

Ex.) “Who does John know?”


UNIFY(Knows(John, x), Knows(John, Jane) ) = {x/ Jane}.
UNIFY(Knows(John, x), Knows(y, Bill) ) = {x/Bill, y/ John}.
UNIFY(Knows(John, x), Knows(y, Mother( y ) ) ) = {x/Bill, y/ John}.

4
Can anyone see the problem with the next example?
UNIFY(Knows(John, x), Knows(x, Elizabeth) ) = FAIL.

What can we do to fix it?

Both use the same variable, X. X can’t equal both John and
Elizabeth.

The solution: change the variable X to Y (or any other value)


in Knows(X, Elizabeth)

Knows(X, Elizabeth) → Knows(Y, Elizabeth)


Still means the same.

This is called standardizing apart.

5
Another problem = sometimes possible for > 1 unifier returned:
UNIFY(Knows(John, x), Knows(y, z) ) = ???
This can return two possible unifications:
{y/ John, x/ z} which means Knows(John, z)
OR
{y/ John, x/ John, z/ John} which means Knows(John, John).

For each unifiable pair of expressions there is a single most


general unifier (MGU). (algorithm on page 278)

Occur check: makes sure same variable isn’t used twice


increases time complexity

Storage and Retrieval:


What we do Function Primative
Store info in KB TELL STORE
Get info from KB ASK FETCH

Easy way to implement:


Store all sentences in a long list, browse list one sentence at a time
with UNIFY on an ASK query.
Easy way = inefficient.

Any ideas how to improve this?

6
Problem: On a FETCH, you would compare your query
sentence with sentences that have no chance of unification.
i.e.) Knows(John, x) vs. Brother(Richard, John)
Not compatible.
Solution: categorize sentences w/ indexing.

Predicate indexing - one method of such


• store facts in “buckets”
• buckets stored in hash table
• accessed by index keys
• best w/ lots of predicate symbols & few clauses for each

More clauses for symbols → Multiple index keys


Ex.) Employs(nameOfCompany, nameOfEmployee)

Given Employs(AIMA.org, Richard), can answer:

Employs(AIMA.org, Richard) Does AIMA.org employ Richard?


Employs(x, Richard) Who employs Richard?
Employs(AIMA.org, y) Whom does AIMA.org employ?
Employs(x, y) Who employs whom?

We can arrange this into a subsumption lattice.


(the lattice for this example is shown on page 280)

7
A subsumption lattice has the following properties:
•child of any node obtained from its parents by one substitution
•the “highest” common descendant of any two nodes is the result of
applying their most general unifier
•predicate with n arguments contains O(2n) nodes (in our example,
we have two arguments, so our lattice has four nodes)
•repeated constants = slightly different lattice [see Lattice b]

Adding function symbols:


•creates new lattice structures
•lattice gains in complexity (size increases exponentially)
•indexing benefit lost by a > cost for storing/maintaining indices

8
04/03/2024, 10:21 Unification in First-order logic - Javatpoint

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𝜎, then it can be expressed as UNIFY(Ψ1,
Ψ2).

Example: Find the MGU for Unify{King(x), King(John)}

Let Ψ1 = King(x), Ψ2 = King(John),

Substitution θ = {John/x} is a unifier for these atoms and applying this substitution, and both expressions will be identical.

The UNIFY algorithm is used for unification, which takes two atomic sentences and returns a unifier for those sentences (If
any exist).

Unification is a key component of all first-order inference algorithms.

It returns fail if the expressions do not match with each other.

The substitution variables are called Most General Unifier or MGU.

E.g. Let's say there are two different expressions, P(x, y), and P(a, f(z)).

In this example, we need to make both above statements identical to each other. For this, we will perform the substitution.

P(x, y)......... (i)


P(a, f(z))......... (ii)

Substitute x with a, and y with f(z) in the first expression, and it will be represented as a/x and f(z)/y.

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.

Number of Arguments in both expressions must be identical.

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

https://www.javatpoint.com/ai-unification-in-first-order-logic 2/6
04/03/2024, 10:21 Unification in First-order logic - Javatpoint

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:

a. Check for Identical expression match.

b. If one expression is a variable vi, and the other is a term ti which does not contain variable vi, then:

a. Substitute ti / vi in the existing substitutions

b. Add ti /vi to the substitution setlist.

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))}

Here, Ψ1 = p(b, X, f(g(Z))) , and Ψ2 = p(Z, f(Y), f(Y))


S0 => { p(b, X, f(g(Z))); p(Z, f(Y), f(Y))}
SUBST θ={b/Z}

https://www.javatpoint.com/ai-unification-in-first-order-logic 3/6
04/03/2024, 10:21 Unification in First-order logic - Javatpoint

S1 => { p(b, X, f(g(b))); p(b, f(Y), f(Y))}


SUBST θ={f(Y) /X}

S2 => { p(b, f(Y), f(g(b))); p(b, f(Y), f(Y))}


SUBST θ= {g(b) /Y}

S2 => { p(b, f(g(b)), f(g(b)); p(b, f(g(b)), f(g(b))} Unified Successfully.


And Unifier = { b/Z, f(Y) /X , g(b) /Y}.

3. Find the MGU of {p (X, X), and p (Z, f(Z))}

Here, Ψ1 = {p (X, X), and Ψ2 = p (Z, f(Z))


S0 => {p (X, X), p (Z, f(Z))}
SUBST θ= {X/Z}
S1 => {p (Z, Z), p (Z, f(Z))}
SUBST θ= {f(Z) / Z}, Unification Failed.

Hence, unification is not possible for these expressions.

4. Find the MGU of UNIFY(prime (11), prime(y))

Here, Ψ1 = {prime(11) , and Ψ2 = prime(y)}


S0 => {prime(11) , prime(y)}
SUBST θ= {11/y}

S1 => {prime(11) , prime(11)} , Successfully unified.


Unifier: {11/y}.

5. Find the MGU of Q(a, g(x, a), f(y)), Q(a, g(f(b), a), x)}

Here, Ψ1 = Q(a, g(x, a), f(y)), and Ψ2 = Q(a, g(f(b), a), x)


S0 => {Q(a, g(x, a), f(y)); Q(a, g(f(b), a), x)}
SUBST θ= {f(b)/x}
S1 => {Q(a, g(f(b), a), f(y)); Q(a, g(f(b), a), f(b))}

SUBST θ= {b/y}
S1 => {Q(a, g(f(b), a), f(b)); Q(a, g(f(b), a), f(b))}, Successfully Unified.

Unifier: [a/a, f(b)/x, b/y].

6. UNIFY(knows(Richard, x), knows(Richard, John))

Here, Ψ1 = knows(Richard, x), and Ψ2 = knows(Richard, John)


S0 => { knows(Richard, x); knows(Richard, John)}
SUBST θ= {John/x}
S1 => { knows(Richard, John); knows(Richard, John)}, Successfully Unified.
Unifier: {John/x}.

https://www.javatpoint.com/ai-unification-in-first-order-logic 4/6
01/04/2024, 11:32 Difference Between Backward Chaining and Forward Chaining - Javatpoint

Difference between backward chaining and forward


chaining
Following is the difference between the forward chaining and backward chaining:

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.

Forward chaining is called a data-driven inference technique, whereas backward chaining is


called a goal-driven inference technique.

Forward chaining is known as the down-up approach, whereas backward chaining is known
as a top-down approach.

Forward chaining uses breadth-first search strategy, whereas backward chaining uses
depth-first search strategy.

Forward and backward chaining both applies Modus ponens inference rule.

Forward chaining can be used for tasks such as planning, design process monitoring,
diagnosis, and classification, whereas backward chaining can be used for classification and
diagnosis tasks.

Forward chaining can be like an exhaustive search, whereas backward chaining tries to avoid
the unnecessary path of reasoning.

In forward-chaining there can be various ASK questions from the knowledge base, whereas in
backward chaining there can be fewer ASK questions.

Forward chaining is slow as it checks for all the rules, whereas backward chaining is fast as it
checks few required rules only.

S. Forward Chaining Backward Chaining


No.

https://www.javatpoint.com/difference-between-backward-chaining-and-forward-chaining 2/7
01/04/2024, 11:32 Difference Between Backward Chaining and Forward Chaining - Javatpoint

1. Forward chaining starts from known facts Backward chaining starts from the goal and
and applies inference rule to extract more works backward through inference rules to
data unit it reaches to the goal. find the required facts that support the goal.

2. It is a bottom-up approach It is a top-down approach

3. Forward chaining is known as data-driven Backward chaining is known as goal-driven


inference technique as we reach to the technique as we start from the goal and
goal using the available data. divide into sub-goal to extract the facts.

4. Forward chaining reasoning applies a Backward chaining reasoning applies a


breadth-first search strategy. depth-first search strategy.

5. Forward chaining tests for all the Backward chaining only tests for few required
available rules rules.

6. Forward chaining is suitable for the Backward chaining is suitable for diagnostic,
planning, monitoring, control, and prescription, and debugging application.
interpretation application.

7. Forward chaining can generate an infinite Backward chaining generates a finite number
number of possible conclusions. of possible conclusions.

8. It operates in the forward direction. It operates in the backward direction.

9. Forward chaining is aimed for any Backward chaining is only aimed for the
conclusion. required data.

← Prev Next →

https://www.javatpoint.com/difference-between-backward-chaining-and-forward-chaining 3/7

You might also like