When you try to compare two variables X and Y using =
operator, Prolog tries to unify the variables.
If X and Y are two variables, then prolog follow below
rules to unify them.
a. If X is uninstantiated variable and Y is some
instantiated term, then X and Y are equal. X will be instantiated with the term
pointed out by Y.
7 ?- capital(delhi, india) = X. X = capital(delhi, india). 8 ?- write($X). capital(delhi,india) X = capital(delhi, india).
As you see above example, Since X is uninstantiated
variable, = (unifying operator) initialize the structure capital(delhi, india)
to X.
b. Numbers are always equal to themselves.
11 ?- 10 = 10. true. 12 ?- 123.4 = 123.4. true. 13 ?- 12e34 = 12e34. true.
c. Atoms are always equal to themselves.
14 ?- krishna = krishna. true. 15 ?- laptop = mobile. false. 16 ?- pen = pen. true.
d. Two structures are equal,
1. If they
have same function
2. They
have same number of components
3. All the
components are equal.
17 ?- employee(1, personalDetails(krishna, gurram), projectDetails(cpcs, 10)) = employee(1, personalDetails(krishna, gurram), projectDetails(cpcs, 10)). true.
As I said, = operator tries to unify the variables. Below
pattern maps Id, PersonalDetails and ProjectDetails.
18 ?- employee(1, personalDetails(krishna, gurram), projectDetails(cpcs, 10)) = employee(Id, PersonalDetails, ProjectDetails). Id = 1, PersonalDetails = personalDetails(krishna, gurram), ProjectDetails = projectDetails(cpcs, 10).
No comments:
Post a Comment