Unification - Artificial intelligence:
We have said that the laws of inference for propositional logic detailed in the previous lecture can also be used in first-order logic. However, we have to clear that a little. One important distinction between propositional and first-order logic is that the latter has predicates with expressions as arguments. So, one explanation we have to form is that we may use the inference lawsas long as the predicates and Arguments match up. That's why, not only do we have to check for the right kinds of sentence before we may carry out a law of inference, we also need to check that the arguments do not prohibit the inference.
For instance, let it in our knowledge base, we have the these two statements:
Knows (john) -> hates(john, X)
Knows(john, marry)
and we need to use the Modus Ponens law to infer something latest. In this case, there is no difficulty, and we may infer that, because john hates everybody he knows, and he knows Mary, then he should hate Mary, i.e., we may infer that hates(john, mary) is right.
However, let it instead that we had these two sentences:
knows(john,X) -> hates(john, X)
knows(jack, mary)
Here, the predicate names have not altered, but the arguments are handling us back from forming any deductive inference. In the first case above, we might allow the variable X to be instantiated to marry during the assumption, and the constant john before and after the assumption also matched without error. However, in the second case, although we might still instantiate X to marry, we could no longer match john and jack, because they are two dissimilar constants. So we cannot deduce anything for john (or anyone else) from the latter two statements.
The problem here arises from our incapability to make the arguments in knows(john, X) and the arguments in knows(jack, marry) match up. When we may make two predicates match up, we say that we have combined them, and we will look at an algorithm for unifying two predicates (if they can be combined) in this section. Remember that unification acts a part in the way Prolog searches for matches to queries.