?-телефон(иванов,т123456).
и ответ будет «Нет», так как константа т123456 не согласуется ни с одним фактом.
Если к базе знаний (пример 3)
нравится(сергей ,рэп).
нравится(юрий,джаз).
носит(сергей,блейзер).
носит(юрий,пиджак).
крутойпарень(Х) : - нравится(Х,рэп),носит(Х,блейзер).
задать вопрос
?-крутойпарень(юрий).
то будет получен ответ «Нет». В самом деле, в результате резолюции утверждение в этом вопросе согласно правилу заменится конъюнкцией утверждений
нравнтся(юрий,рэп), носит(юрий,блейзер).
(переменная Х в правиле получила значение «юрий»). Эти утверждения не согласуются с остальными фактами базы знаний. Для вопроса
? - крутойпарень(сергей).
будет получен ответ «Да», так как в этом случае противоречий при согласовании вопроса и базы знаний не возникает.
Вопрос, в котором имеются переменные, является частным: «для каких значений переменных факт ... имеет место ?». В процессе сопоставлений при выполнении программы переменные получат значения тех констант (конкретизируются), для которых сопоставление запроса, в целом, успешно, и будут выведены на экран. Так, в ответ на вопрос
? - телефон(иванов,Х).
к базе знаний примера 1 на экране появится сообщение Х=т561532 и будет дан ответ «Да».
Если к базе знаний примера 3 задать вопрос в форме
?- крутойпарень(А).
то свободная переменная А в вопросе сопоставляется со свободной переменной Х в правиле и совмещается с ней, т.е. становится одним и тем же. В результате резолюции согласно правилу произойдет замена
крутойпарень(А)
на
нравится(А,рэп), носит(А,блейзер),
а затем предикат «нравнтся(А.рэп)» успешно согласуется с фактом «нравится(сергей,рэп)>>, и при этом переменная А конкретизируется значением «Сергей»; от вопроса теперь остается «носит(сергей,блейзер)», а в базе знаний имеется соответствующий факт.