0% found this document useful (0 votes)
1 views

PDF&Rendition=1

The document discusses knowledge representation in artificial intelligence, focusing on knowledge-based agents that maintain an internal state of knowledge and perform reasoning to act intelligently. It introduces the Wumpus World as an example to illustrate the capabilities of knowledge-based agents, detailing their operations, architecture, and the use of propositional logic for knowledge representation. Additionally, it covers inference rules and the transition to first-order logic for more complex representations.

Uploaded by

vinaykavinayka7
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)
1 views

PDF&Rendition=1

The document discusses knowledge representation in artificial intelligence, focusing on knowledge-based agents that maintain an internal state of knowledge and perform reasoning to act intelligently. It introduces the Wumpus World as an example to illustrate the capabilities of knowledge-based agents, detailing their operations, architecture, and the use of propositional logic for knowledge representation. Additionally, it covers inference rules and the transition to first-order logic for more complex representations.

Uploaded by

vinaykavinayka7
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/ 20

UNIT – III

KNOWLEDGE REPRESENTATION
Knowledge-Based agents
• An intelligent agent needs knowledge about the real world for taking decisions and
reasoning to act efficiently.
• Knowledge-based agents are those agents who have the capability of maintaining an
internal state of knowledge, reason over that knowledge, update their knowledge after
observations and take actions. These agents can represent the world with some formal
representation and act intelligently.
Knowledge-based agents are composed of two main parts:
• Knowledge-base and
• Inference system.
A knowledge-based agent must able to do the following:
• An agent should be able to represent states, actions, etc.
• An agent Should be able to incorporate new precepts
• An agent can update the internal representation of the world
• An agent can perform appropriate actions.
The architecture of knowledge-based agent:

• The above diagram is representing a generalized architecture for a knowledge-based


agent. The knowledge-based agent (KBA) take input from the environment by
perceiving the environment.
• The input is taken by the inference engine of the agent and which also communicate
with KB to decide as per the knowledge store in KB. The learning element of KBA
regularly updates the KB by learning new knowledge.
• Knowledge base: Knowledge-base is a central component of a knowledge-based agent,
it is also known as KB. It is a collection of sentences. These sentences are expressed in
a language which is called a knowledge representation language.
Inference system

SAHANA K BGS FGC Mysuru


• Inference means deriving new sentences from old. Inference system allows us to add a
new sentence to the knowledge base. A sentence is a proposition about the world.
Inference system applies logical rules to the KB to deduce new information.

Operations Performed by KBA


Following are three operations which are performed by KBA in order to show the intelligent
behaviour:
TELL: This operation tells the knowledge base what it perceives from the environment.
ASK: This operation asks the knowledge base what action it should perform.
Perform: It performs the selected action.
A generic knowledge-based agent:

1. function KB-AGENT(percept):
2. persistent: KB - a knowledge base, t - a counter initially 0, indicating time
3. TELL(KB, MAKE-PERCEPT-SENTENCE(percept, t))
4. Action = ASK(KB, MAKE-ACTION-QUERY(t))
5. TELL(KB, MAKE-ACTION-SENTENCE(action, t))
6. t = t + 1
7. return action

Each time when the function is called, it performs its three operations:
• Firstly it TELLs the KB what it perceives.
• Secondly, it ASKS KB what action it should take
• Third agent program TELLS the KB that which action was chosen.
• The MAKE-PERCEPT-SENTENCE generates a sentence as setting that the agent
perceived the given percept at the given time.
• The MAKE-ACTION-QUERY generates a sentence to ask which action should be
done at the current time.
• MAKE-ACTION-SENTENCE generates a sentence which asserts that the chosen
action was executed.

The Wumpus World in Artificial intelligence


• The Wumpus world is a simple world example to illustrate the worth of a knowledge-
based agent and to represent knowledge representation.

Problem definition: The Wumpus world is a cave which has 4/4 rooms connected with
passageways. So there are total 16 rooms which are connected with each other. We have a
knowledge-based agent who will go forward in this world. The cave has a room with a beast

SAHANA K BGS FGC Mysuru


which is called Wumpus, who eats anyone who enters the room. The Wumpus can be shot by
the agent, but the agent has a single arrow. In the Wumpus world, there are some Pits rooms
which are bottomless, and if agent falls in Pits, then he will be stuck there forever. The exciting
thing with this cave is that in one room there is a possibility of finding a heap of gold. So the
agent goal is to find the gold and climb out the cave without fallen into Pits or eaten by
Wumpus. The agent will get a reward if he comes out with gold, and he will get a penalty if
eaten by Wumpus or falls in the pit.

There are also some components which can help the agent to navigate the cave. These
components are given as follows:
❖ The rooms adjacent to the Wumpus room are smelly, so that it would have some stench.
❖ The room adjacent to PITs has a breeze, so if the agent reaches near to PIT, then he will
perceive the breeze.
❖ There will be glitter in the room if and only if the room has gold.
❖ The Wumpus can be killed by the agent if the agent is facing to it.

PEAS description of Wumpus world:


Performance measure:
+1000 reward points if the agent comes out of the cave with the gold.
-1000 points penalty for being eaten by the Wumpus or falling into the pit.
-1 for each action, and -10 for using an arrow.
The game ends if either agent dies or came out of the cave.
Environment:
A 4*4 grid of rooms.
The agent initially in room square [1, 1], facing toward the right.
Actuators:
Left turn,

SAHANA K BGS FGC Mysuru


Right turn
Move forward
Grab
Release
Shoot.
Sensors:
The agent will perceive the stench if he is in the room adjacent to the Wumpus. (Not
diagonally).
The agent will perceive breeze if he is in the room directly adjacent to the Pit.
The agent will perceive the glitter in the room where the gold is present.
The Wumpus world Properties:
Partially observable: The Wumpus world is partially observable because the agent can
only perceive the close environment such as an adjacent room.
Deterministic: It is deterministic, as the result and outcome of the world are already
known.
Sequential: The order is important, so it is sequential.
Static: It is static as Wumpus and Pits are not moving.
Discrete: The environment is discrete.
Single agent: The environment is a single agent as we have one agent only and Wumpus
is not considered as an agent.

Exploring the Wumpus world:


Agent's First step:
Initially, the agent is in the first room or on the square [1,1], and we already know that
this room is safe for the agent, so to represent on the below diagram (a) that room is
safe we will add symbol OK. Symbol A is used to represent agent, symbol B for the
breeze, G for Glitter or gold, V for the visited room, P for pits, W for Wumpus.
At Room [1,1] agent does not feel any breeze or any Stench which means the adjacent
squares are also OK.

SAHANA K BGS FGC Mysuru


Agent's second Step:
Now agent needs to move forward, so it will either move to [1, 2], or [2,1]. Let's
suppose agent moves to the room [2, 1], at this room agent perceives some breeze
which means Pit is around this room. The pit can be in [3, 1], or [2,2], so we will
add symbol P? to say that, is this Pit room?
The agent will go back to the [1, 1] room. The room [1,1], and [2,1] are visited by
the agent, so we will use symbol V to represent the visited squares.
Agent's third step:
At the third step, now agent will move to the room [1,2] which is OK. In the room [1,2]
agent perceives a stench which means there must be a Wumpus nearby.
But Wumpus cannot be in [2,2] (Agent had not detected any stench when he was at
[2,1]). Therefore, agent infers that Wumpus is in the room [1,3], and in current state,
there is no breeze which means in [2,2] there is no Pit and no Wumpus. So, it is safe,
and we will mark it OK, and the agent moves further in [2,2].

Agent's fourth step:


At room [2,2], here no stench and no breezes present so let's suppose agent decides to
move to [2,3]. At room [2,3] agent perceives glitter, so it should grab the gold and climb
out of the cave.

Propositional Logic
• Propositional logic (PL) is the simplest form of logic where all the statements are made
by propositions.
• A proposition is a declarative statement which is either true or false. It is a technique of
knowledge representation in logical and mathematical form.
Example:
a) It is Sunday.
b) The Sun rises from West (False proposition)

SAHANA K BGS FGC Mysuru


Following are some basic facts about propositional logic:
• Propositional logic is also called Boolean logic as it works on 0 and 1.
• In propositional logic, we use symbolic variables to represent the logic, and we can use
any symbol for a representing a proposition, such A, B, C, P, Q, R, etc.
• Propositions can be either true or false, but it cannot be both.
• Propositional logic consists of an object, relations or function, and logical connectives.
• These connectives are also called logical operators.
• A proposition formula which is always true is called tautology, and it is also called a
valid sentence.
• A proposition formula which is always false is called Contradiction.
• A proposition formula which has both true and false values is called
• Statements which are questions, commands, or opinions are not propositions such as
"Where is Rohini", "How are you", "What is your name", are not propositions.

Syntax of propositional logic:


The syntax of propositional logic defines the allowable sentences for the knowledge
representation. There are two types of Propositions:
1) Atomic Propositions
2) Compound propositions
Atomic Proposition: Atomic propositions are the simple propositions. It consists of a single
proposition symbol. These are the sentences which must be either true or false.
Example:
a) 2+2 is 4, it is an atomic proposition as it is a true fact.
b) "The Sun is cold" is also a proposition as it is a false fact.
Compound proposition: Compound propositions are constructed by combining simpler or
atomic propositions, using parenthesis and logical connectives.
Example:
a) "It is raining today, and street is wet."
b) "Ankit is a doctor, and his clinic is in Mumbai."
Logical Connectives:
• Logical connectives are used to connect two simpler propositions or representing a
sentence logically.
• We can create compound propositions with the help of logical connectives. There are
mainly five connectives, which are given as follows:
1) Negation: A sentence such as ¬ P is called negation of P. A literal can be either Positive
literal or negative literal.
2) Conjunction: A sentence which has ∧ connective such as, P ∧ Q is called a conjunction.
Example: Rohan is intelligent and hardworking. It can be written as,
P= Rohan is intelligent,
SAHANA K BGS FGC Mysuru
Q= Rohan is hardworking. → P∧ Q.
3) Disjunction: A sentence which has ∨ connective, such as P ∨ Q. is called disjunction,
where P and Q are the propositions.
Example: "Ritika is a doctor or Engineer",
Here P= Ritika is Doctor. Q= Ritika is Doctor, so we can write it as P ∨ Q.
4) Implication: A sentence such as P → Q, is called an implication. Implications are also
known as if-then rules. It can be represented as
If it is raining, then the street is wet.
Let P= It is raining, and Q= Street is wet, so it is represented as P → Q
5) Biconditional: A sentence such as P⇔ Q is a Biconditional sentence, example If I am
breathing, then I am alive
P= I am breathing, Q= I am alive, it can be represented as P ⇔ Q.

A formal grammar of propositional logic

Propositional Logic: Semantics


• The semantics defines the rules for determining the truth of a sentence with respect to
a particular problem (model).
• The semantic for propositional logic must specify how to compute the truth value of
any sentence given a problem.

SAHANA K BGS FGC Mysuru


Truth Table:

A Simple Knowledge Base


•We have defined the semantics for propositional logic, we can construct a knowledge
base for the Wumpus world
• Let Pi,j be true if there is a Pit in the room [i, j].
• Let Bi,j be true if agent perceives breeze in [i, j], (dead or alive).
• Let Wi,j be true if there is wumpus in the square[i, j].
SAHANA K BGS FGC Mysuru
The knowledge base includes the following sentences
• There is no pit in [1,1]:

• A square is breezy if and only if there is a pit in a neighbouring square. This has to be
stated for each square; for now, we include just the relevant squares:

• Now we include the breeze percept for the first two squares visited in the specific world
the agent is in

• The knowledge base, then, consists of sentences R1 through R5.It can also be
considered as a single sentence-the conjunction R1 A Rz A R3 A R4 A R5-because it
asserts that all the individual sentences are true.

Inference
For propositional logic, models are assignments of true or false to every proposition symbol.
Returning to our wumpus-world example, the relevant proposition symbols are B1,1, B2,1, P1,1,
P1,2,P2,1, P2,2 and P3,1.With seven symbols, there are 27=128 possible models; in three of these,
KB is true.

Equivalence, validity, and satisfiability


Satisfiability: A formula is called satisfiable if it is true for at least one case.
Valid: A formula is called valid if it is true in all the cases or interpretation

SAHANA K BGS FGC Mysuru


Inference:
In artificial intelligence, we need intelligent computers which can create new logic from old
logic or by evidence, so generating the conclusions from evidence and facts is termed as
Inference.
Inference rules:
Inference rules are the templates for generating valid arguments. Inference rules are applied to
derive proofs in artificial intelligence, and the proof is a sequence of the conclusion that leads
to the desired goal.

Modus Ponens:

Example:
Statement-1: "If I am sleepy then I go to bed" ==> P→ Q
Statement-2: "I am sleepy" ==> P
Conclusion: "I go to bed." ==> Q.
Hence, we can say that, if P→ Q is true and P is true then Q will be true.

SAHANA K BGS FGC Mysuru


Proof by Truth table:

Modus Tollens:

Statement-1: "If I am sleepy then I go to bed" ==> P→ Q


Statement-2: "I do not go to the bed."==> ~Q
Statement-3: Which infers that "I am not sleepy" => ~P

Proof by Truth table:

And elimination:

Agent Based on Propositional Logic


Example proof by deduction (Wumpus World): Let us take a condition which says there is
breeze in [2,2] square and there is no breeze in [2,2] square.
By applying inference rules, we have to prove any from the above condition.
The steps are given below:

SAHANA K BGS FGC Mysuru


From the above proof it is proved that there is no pit in [2,1], [2,3], [1,2] and [3,2] square.
That means there is no breeze in [2,2] square.

First-Order Logic
• 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.
First-Order logic:
•First-order logic is another way of knowledge representation in artificial intelligence.
It is an extension to propositional logic.
SAHANA K BGS FGC Mysuru
• 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 an
easier 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:
1) Syntax
2) Semantics
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.
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 ∀, ∃

Example: "Evil King John ruled England in 1200."


Objects: John, England, 1200; Relation: ruled; Properties: evil, king.
Models for first-order logic
A model with five objects: Richard the Lionheart, King of England from 1189 1:o1199; his
younger brother, the evil King John, who ruled from 1199 to 1215; the left legs of Richard and
John; and a crown.

SAHANA K BGS FGC Mysuru


The objects in the model may be related in various ways. In the figure, Richard and John are
brothers.
Thus, the brotherhood relation in this model is the set { (Richard the Lionheart, King John),
(King John, Richard the Lionheart) ).

Objects: person King John


Person Richard
Crown
Relation: “on head” <the crown, king john>
“brother” <john, Richard>
Function: <John the king> -on-head (crown)
<John the king> - shoe(left-leg)

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

Complex Sentences:
Complex sentences are made by combining atomic sentences using connectives.
First-order logic statements can be divided into two parts:
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.
Example: >(1,2)V≤(1,2) => True

SAHANA K BGS FGC Mysuru


Sisters(geeta,seta)˄sisters(geeta,leela)

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.
There are two types of quantifier:
1. Universal Quantifier, (for all, everyone, everything)
2. 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.
• If x is a variable, then ∀x is read as:

o For all x
o For each x
o For every x.

Example: “All cat like fish”


Let us take a variable x which can take the value of “cat”. Let us take a predicate cat(x) which
is true if x is a cat. Similarly let us take another predicate likes(x,y) which is true if x likes y.
∀(x) cat(x) =>likes(x,y) [y is fish]
For all x, if x is cat, then x likes y

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 ∃. If x
is a variable, then existential quantifier will be ∃x or ∃(x). And it will be read as:
o There exists a 'x.'
o For some 'x.'
o For at least one 'x.'

Example: “Some student like ice cream”

Let us take a variable x which can take the value of “student”. Let us take a predicate student(x)
which is true if x is a student. Similarly let us take another predicate likes(x,y) which is true if
x likes y.

SAHANA K BGS FGC Mysuru


∃(x) student(x)˄likes(x,y) [y is ice cream]
There exists some x such that x is a student and also likes ice cream.

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.

Equality
We can use the equality symbol to make statements to the effect that two terms refer to the
same object. For example,
Father(John) = Henry
says that the object referred to by Father(John) and the object referred to by Henry are the same.

Using FOL
Sentences are added to a knowledge base using TELL, exactly as in propositional logic. Such
sentences are called assertions. For example, we can assert that John is a king and that kings
are persons:

We can ask questions of the knowledge base using ASK. For example,

should also return true.

Unification and Lifting


• 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.
• 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.
UNIFY (P, Q) =  where SUBST (, P) = SUBST(, Q)
E.g. Let's say there are two different expressions, P(x, y), and P(a, f(z)).

SAHANA K BGS FGC Mysuru


In this example, we need to make both above statements identical to each other. For this, we
will perform the substitution.
• 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].
Algorithm
Step.1: Initialize the substitution set to be empty.
Step.2: Recursively unify atomic sentences:
i. Check for Identical expression match.
ii. If one expression is a variable vi, and the other is a term ti which does not contain
variable vi, then:
I. Substitute ti / vi in the existing substitutions
II. Add ti /vi to the substitution setlist.
III. 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.
Example:
Given: Knows(Ram, X) is a predicate Whom does Ram knows?
The UNIFY algorithm will search all the related sentences in the knowledge base, which could
unify with Knows(Ram, X)
• UNIFY(Knows(Ram, X), Knows(Ram, Shyam)) = {X/Shyam}
Here X is substituted with shyam
• UNIFY (Knows(Ram, X), Knows(Y, Akash)) = {X/Akash, Y/Ram}
• Here X is substituted with Akash and Y is substituted with Ram
From the unification it is inferred that Ram knows Shyam and Akash
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.
Example: UNIFY Knows (Ram,X) with Brother (Laxman, Ram)
Fails because predicate is different
• Number of Arguments in both expressions must be identical.
Example: UNIFY hate (Marcus) with hate (Marcus, john)
Fails because number of arguments are different
• Unification will fail if there are two similar variables present in the same expression.
Example: UNIFY Knows (Ram, X) with Knows (X, Raman)

SAHANA K BGS FGC Mysuru


Inference Engine
• The inference engine is the component of the expert system in AI, which applies logical
rules to the knowledge base to infer new information from known facts.
• Forward and Backward chaining is the strategies used by the inference engine in
making the deductions.
Example of Inference chain
Rule 1: IF X is true
THEN A is true

Rule 2: IF A is true
AND B is true
AND C is true
THEN Y is true
Rule 3: IF Y is true
AND D is true
THEN Z is true

Forward Chaining:
• 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.
Properties of Forward-Chaining:
• It is a down-up approach, as it moves from bottom to top.
• It is a process of making a conclusion based on known facts or data, by starting from
the initial state and reaches the goal state.
• Forward-chaining approach is also called as data-driven as we reach to the goal using
available data.
Example:
Rule 1: IF student is excellent in academics
AND he is good in sports
THEN he is all rounder (Goal)
Rule 2: IF student gets marks > 80
AND he is good in genera knowledge
THEN he is excellent in academics
Rule 3: IF student is making centuries
THEN he is good in sports

SAHANA K BGS FGC Mysuru


Given following facts:
1. Student gets marks > 80
2. Student is making centuries
3. He is good in general knowledge
Explanation:
• In forward chaining we need to check the given facts in the IF statement, the first given
fact is present in the Rule 2 (i.e Student gets marks > 80).
• In the Rule 2 along with the first given fact, third given fact is also present (i.e, He is
good in general knowledge).
• From the Rule 2, it is inferred that he is excellent in academics (the subgoal).
• Now remaining fact should be checked (i.e, student is making centuries)
• This fact is present in the Rule 3. From that it is inferred that he is good in sports
(subgoal).
• The two inferred subgoals are given in the Rule 1 IF, AND statement.
• From this it is inferred that he is all rounder, which is the final goal.
Backward Chaining
A backward chaining algorithm is a form of reasoning, which starts with the goal and works
backward, chaining through rules to find known facts that support the goal.
Properties of backward chaining:
• It is known as a top-down approach.
• Backward-chaining is based on modus ponens inference rule.
• 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 selected
and used.
Example:
Rule 1: IF student is excellent in academics
AND he is good in sports
THEN he is all rounder (Goal)
Rule 2: IF student gets marks > 80
AND he is good in genera knowledge
THEN he is excellent in academics
Rule 3: IF student is making centuries
THEN he is good in sports
Given following facts:
1. Student gets marks > 80
2. Student is making centuries
SAHANA K BGS FGC Mysuru
3. He is good in general knowledge
Explanation:
• In Backward chaining from the goal we need to reach the given facts. Here the goal is
he is all rounder.
• First we need to check whether goal is present in given facts, if not the statements in IF,
AND condition should be treated as subgoals. In the given example IF student is
excellent in academics and AND he is good in sports are the subgoals.
• Next check the subgoals in IF statement, student is excellent in academics is present
in Rule 2 inferred part, so from that we got two given facts i.e student gets marks >
80 and he is good in genera knowledge.
• Next remaining subgoal (i.e he is good in sports) is checked in inferred part; it is
present in Rule 3. From this we got one more fact i.e, student is making centuries.
• Finally we got all the given facts from the inferred statements.

SAHANA K BGS FGC Mysuru

You might also like