3.iai Unit-III First-Order Logic
3.iai Unit-III First-Order Logic
First-Order Logic
In the topic of Propositional logic, we have seen 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 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.
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:
➢ 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.
➢ Constants: Constants represent specific objects within the domain of discourse. For
example, in each domain, Alice, 2, and New York could be constants.
➢ Variables: Variables stand for unspecified objects in the domain. Commonly used
symbols for variables include x, y, and z.
➢ Predicates: Predicates are functions that return true or false, representing properties of
objects or relationships between them.
➢ For example, Likes (Alice, Bob) indicates that Alice likes Bob, and Greater than (x,
2) means that x is greater than 2.
➢ Functions: Functions map objects to other objects. For instance, Mother of(x) might
denote the mother of x.
➢ Quantifiers: Quantifiers specify the scope of variables. The two main quantifiers are:
➢ Universal Quantifier (∀): Indicates that a predicate applies to all elements in the
domain.
➢ For example, ∀x (Person(x) → Mortal(x)) means “All persons are mortal.”
➢ Existential Quantifier (∃): Indicates that there is at least one element in the
domain for which the predicate holds.
➢ For example, ∃x (Person(x) ∧ Likes(x, IceCream)) means “There exists a person who
likes ice cream.”
➢ Logical Connectives: Logical connectives include conjunction (∧), disjunction (∨),
implication (→), biconditional (↔), and negation (¬). These connectives are used to form
complex logical statements.
Atomic sentences:
o 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.
o We can represent atomic sentences as Predicate (term1, term2, ......, term n).
Complex Sentences:
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:
o 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:
Universal Quantifier:
statement within its range is true for everything or every instance of a particular thing.
o For all x
o For each x
o 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:
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
Example:
Some boys are intelligent.
Points to remember:
o The main connective for universal quantifier ∀ is implication →.
o The main connective for existential quantifier ∃ is and ∧.
Properties of Quantifiers:
o In universal quantifier, ∀x∀y is similar to ∀y∀x.
o In Existential quantifier, ∃x∃y is similar to ∃y∃x.
o ∃x∀y is not similar to ∀y∃x.
Some Examples of FOL using quantifier:
∀x bird(x) →fly(x).
Since there is every man so will use ∀, and it will be represented as follows:
∀x man(x) → respects (x, parent).
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
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.
structure for many theorem proving systems, enabling them to verify software
and hardware correctness, prove mathematical theorems, and more.
formal, logical manner. This allows AI systems to perform tasks such as question
answering, machine translation, and text summarization.
4. Expert Systems: Expert systems encode expert knowledge using FOL and reason
about it to make decisions. For example, a legal expert system might use FOL to
represent legal rules and infer outcomes based on given facts, aiding in legal
decision-making processes.
5. Semantic Web: The Semantic Web uses FOL to describe relationships between
content.
Advanced Concepts in First-Order Logic:
that the original statement is true. Resolution is a powerful method for proving
logical theorems in FOL.
express programs. These languages allow for declarative programming, where the
programmer specifies what needs to be done rather than how to do it. Logic
learns what concepts are important in that domain, and creates a formal representation of
the objects and relations in the domain.
In this topic, we will understand the Knowledge engineering process in an electronic circuit
domain, which is already familiar. This approach is mainly suitable for creating a special-
Knowledge engineering projects vary widely in content, scope, and difficulty, but all such
1. Identify the task. The knowledge engineer must set the range of questions that the
knowledge base will support and the kinds of facts that will be available for each specific
problem instance. For example, does the wumpus knowledge base need to be able to
choose actions or is it required to answer questions only about the contents of the
environment? Will the sensor facts include the current location? The task will determine
what knowledge must be represented to connect problem instances to answers. This step
is analogous to the PEAS process for designing agents in the previous chapter.
expert in the domain or might need to work with real experts to extract what they know—
formally. The idea is to understand the scope of the knowledge base, as determined by the
task, and to understand how the domain works. For the wumpus world, which is defined
by an artificial set of rules, the relevant knowledge is easy to identify. (Notice, however,
that the definition of adjacency was not supplied explicitly in the wumpus -world rules.)
For real domains, the issue of relevance can be quite difficult—for example, a system for
simulating VLSI designs might or might not need to consider stray capacitances and skin
effects.
3. Decide on a vocabulary of predicates, functions, and constants: That is, translate the
important domain-level concepts into logic-level names. This involves many questions of
knowledge-engineering style. Like programming style, this can have a significant impact
on the eventual success of the project. For example, should pits be represented by objects
predicate? Should the wumpus’s location depend on time? Once the ONTOLOGY choices
have been made, the result is a vocabulary that is known as the ontology of the domain.
The word ontology means a particular theory of the nature of being or existence. The
ontology determines what kinds of things exist but does not determine their specific
4. Encode general knowledge about the domain: The knowledge engineer writes down
the axioms for all the vocabulary terms. This pins down (to the extent possible) the
meaning of the terms, enabling the expert to check the content. Often, this step reveals
misconceptions or gaps in the vocabulary that must be fixed by returning to step 3 and
5. Encode a description of the specific problem instance: If the ontology is well thought
out, this step will be easy. It will involve writing simple atomic sentences about instances of
concepts that are already part of the ontology. For a logical agent, problem instances are
data.
6. Pose queries to the inference procedure and get answers: This is where the reward
is: we can let the inference procedure operate on the axioms and problem-specific facts to
derive the facts we are interested in knowing. Thus, we avoid the need for writing an
7. Debug the knowledge base: Alas, the answers to queries will not often be correct on
the first try. More precisely, the answers will be correct for the knowledge base as written,
assuming that the inference procedure is sound, but they will not be the ones that the user
is expecting.
For example, if an axiom is missing, some queries will not be answerable from the
axioms that are too weak can be easily identified by noticing places where the chain of
reasoning stops unexpectedly. For example, if the knowledge base includes a diagnostic
∀ s Smelly(s) ⇒ Adjacent(Home(Wumpus), s) ,
instead of the biconditional, then the agent will never be able to prove the absence of
wumpuses. Incorrect axioms can be identified because they are false statements about the
∀ x NumOfLegs(x, 4) ⇒ Mammal(x)
is false for reptiles, amphibians, and, more importantly, tables. The falsehood of this
sentence can be determined independently of the rest of the knowledge base. In contrast,
a typical error in a program looks like this: offset = position + 1. It is impossible to tell
whether this statement is correct without looking at the rest of the program to see
whether, for example, offset is used to refer to the current position, or to one beyond the
current position, or whether the value of position is changed by another statement and so
offset should also be changed again. To understand this seven-step process better, we
We will develop an ontology and knowledge base that allows us to reason about digital
circuits of the kind shown in the following figure. We follow the seven-step process for
knowledge engineering.
The first step of the process is to identify the task, and for the digital circuit, there are
At the first level or highest level, we will examine the functionality of the circuit:
Does the circuit add properly?
What will be the output of gate A2, if all the inputs are high?
At the second level, we will examine the circuit structure details such as:
In the second step, we will assemble the relevant knowledge which is required for digital
➢ In this logic circuit, there are four types of gates used: AND, OR, XOR, and NOT.
➢ All these gates have one output terminal and two input terminals (except NOT gate,
3. Decide on vocabulary:
The next step of the process is to select functions, predicate, and constants to represent
the circuits, terminals, signals, and gates. Firstly we will distinguish the gates from each
other and from other objects. Each gate is represented as an object which is named by a
constant, such as, Gate(X1). The functionality of each gate is determined by its type, which
is taken as constants such as AND, OR, XOR, or NOT. Circuits will be identified by a
For gate input, we will use the function In(1, X1) for denoting the first input terminal of the
gate, and for output terminal we will use Out (1, X1).
The function Arity(c, i, j) is used to denote that circuit c has i input, j output.
The connectivity between gates can be represented by predicate Connect(Out(1, X1), In(1,
X1)).
We use a unary predicate On (t), which is true if the signal at a terminal is on.
To encode the general knowledge about the logic circuit, we need some following rules:
➢ If two terminals are connected then they have the same input signal, it can be
represented as:
∀ t1, t2 Terminal (t1) ∧ Terminal (t2) ∧ Connect (t1, t2) → Signal (t1) = Signal (2).
➢ Signal at every terminal will have either value 0 or 1, it will be represented as:
∀ g Gate(g) ∧ Type(g) = XOR → Signal (Out(1, g)) = 1 ⇔ Signal (In(1, g)) ≠ Signal (In(2, g)).
➢ All the gates in the above circuit have two inputs and one output (except NOT
gate).
∀ g Gate(g) ∧ r =Type(g) ∧ (r= AND ∨r= OR ∨r= XOR) → Arity (g, 2, 1).
Now we encode the problem of circuit C1, firstly we categorize the circuit and its gate
components. This step is easy if ontology about the problem is already thought. This step
involves the writing simple atomics sentences of instances of concepts, which is known as
ontology.
For the given circuit C1, we can encode the problem instance in atomic sentences as
below:
Since in the circuit there are two XOR, two AND, and one OR gate so atomic sentences for
In this step, we will find all the possible set of values of all the terminal for the adder
What should be the combination of input which would generate the first output of circuit
∃ i1, i2, i3 Signal (In(1, C1))=i1 ∧ Signal (In(2, C1))=i2 ∧ Signal (In(3, C1))= i3
Now we will debug the knowledge base, and this is the last step of the complete process.
sentences. Before understanding the FOL inference rule, let's understand some basic
Substitution:
all inference systems in first-order logic. The substitution is complex in the presence 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.
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.
o Universal Generalization
o Universal Instantiation
o Existential Instantiation
o Existential introduction
1. Universal Generalization:
o 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).
Example: Let's represent, P(c): "A byte contains 8 bits", so for ∀ x P(x) "All bytes
2. Universal Instantiation:
o As per UI, we can infer any sentence obtained by substituting a ground term
for the variable.
o 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.
Example:1.
"All kings who are greedy are Evil." So let our knowledge base contains this detail as in
So from this information, we can infer any of the following statements using Universal
Instantiation:
3. Existential Instantiation:
o The new KB is not logically equivalent to old KB, but it will be satisfiable if old KB
was satisfiable.
o This rule states that one can infer P(c) from the formula given in the form of ∃x
o The restriction with this rule is that c used in the rule must be a new term for
Example:
So we can infer: Crown(K) ∧ OnHead( K, John), as long as K does not appear in the
knowledge base.
4. Existential introduction
o 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
Generalized Modus Ponens can be summarized as, " P implies Q and P is asserted to be
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,
4. SUBST(θ,q).
Unification
o Unification is a process of making two different logical atomic expressions
process.
o It takes two literals as input and makes them identical using substitution.
o Let Ψ1 and Ψ2 be two atomic sentences and 𝜎 be a unifier such that, Ψ1𝜎 = Ψ2𝜎,
Substitution θ = {John/x} is a unifier for these atoms and applying this substitution,
o The UNIFY algorithm is used for unification, which takes two atomic sentences
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
o With both the substitutions, the first expression will be identical to the second
o Unification will fail if there are two similar variables present in the same
expression.
Unification Algorithm:
For each pair of the following atomic sentences find the most general unifier (If exist).
SUBST θ= {11/y}
Unifier: {11/y}.
5. Find the MGU of Q(a, g(x, a), f(y)), Q(a, g(f(b), a), x)}
SUBST θ= {f(b)/x}
SUBST θ= {b/y}
S1 => {Q(a, g(f(b), a), f(b)); Q(a, g(f(b), a), f(b))}, Successfully Unified.
SUBST θ= {John/x}
Unifier: {John/x}.
Forward Chaining and backward chaining
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
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
a. Forward chaining
b. Backward chaining
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
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.
Forward Chaining:
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 rule whose
premises are satisfied, and add their conclusion to the known facts. This process repeats
Properties of Forward-Chaining:
Consider the following famous example which we will use in both approaches:
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 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.
o It is a crime for an American to sell weapons to hostile nations. (Let's say p, q, and
r are variables)
Missile(T1) .......(3)
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-(4) satisfy with the substitution {p/T1}, so Sells (Robert, T1, A) is added, which infers
from the conjunction of Rule (2) and (3).
Rule-(6) is satisfied with the substitution (p/A), so Hostile (A) is added and which infers
from Rule-(7).
Step-3:
At step-3, as we can check Rule-(1) is satisfied with the substitution {p/Robert, q/T1, r/A},
so we can add Criminal(Robert) which infers all the available facts. And hence we reached
Backward Chaining:
reasoning, which starts with the goal and works backward, chaining through rules to
➢ In backward chaining, the goal is broken into sub-goal or sub-goals to prove the
facts true.
➢ It is called a goal-driven approach, as a list of goals decides which rules are
The backward-chaining method mostly used a depth-first search strategy for proof.
Example:
In backward-chaining, we will use the same above example, and will rewrite all the rules.
o Missile(T1)
Backward-Chaining proof:
In Backward chaining, we will start with our goal predicate, which is Criminal(Robert),
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.
Step-3: At step-3, we will extract further fact Missile(q) which infer from Weapon(q), as it
satisfies Rule-(5). Weapon (q) is also true with the substitution of a constant T1 at q.
Step-4:
At step-4, we can infer facts Missile (T1) and Owns(A, T1) form Sells(Robert, T1, r) which
satisfies the Rule- 4, with the substitution of A in place of r. So these two statements are
proved here.
Step-5:
At step-5, we can infer the fact Enemy(A, America) from Hostile(A) which satisfies Rule-
6. And hence all the statements are proved true using backward chaining.
Resolution
Resolution is a theorem proving technique that proceeds by building refutation proofs,
Resolution is used, if there are various statements are given, and we need to prove a
Clause: Disjunction of literals (an atomic sentence) is called a clause. It is also known as
a unit clause.
Resolution can resolve two clauses if they contain complementary literals, which are
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:
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:
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 the first step we will convert all the given statements into its first order logic.
In First order logic resolution, it is required to convert the FOL into CNF as CNF form
b. food(Apple) Λ food(vegetables)
e. ∀x ¬ eats(Anil, x) V eats(Harry, x)
g. ∀x ¬ alive(x) V ¬ killed(x)
h. likes(John, Peanuts).
o Move negation (¬) inwards and rewrite
a. ∀x ¬ food(x) V likes (John, x)
f. ∀x ¬killed(x)] V alive(x)
g. ∀x ¬ alive(x) V ¬ killed(x)
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
In this step we will drop all universal quantifier since all the statements are not
b. food(Apple)
c. food(vegetables)
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).
In this statement, we will apply negation to the conclusion statements, which will be
Now in this step, we will solve the problem by resolution tree using substitution. For the
food(Peanuts)
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) V 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.