
На приведенном ниже примере проследим, как вдействительности правила используются Прологом.Спросим нашу программу, является ли Лизотпрыском Тома:
? - отпрыск( лиз,том).
В программе нет фактов об отпрысках, поэтомуединственный способ ответить на такой вопрос -это применить правило о них. Правилоуниверсально в том смысле, что оно применимо клюбым объектам X и Y, следовательно, его можноприменить и к таким конкретным объектам, как лизи том. Чтобы это сделать,нужно вместо Y подставить в него лиз,а вместо X - том. В этомслучае мы будем говорить, что переменные X и Yконкретизируются:
X = том и Y = лиз
После конкретизации мы получаем частный случайнашего общего правила. Вот он:
отпрыск( лиз, том) :-родитель( том, лиз).
Условная часть приняла вид:
родитель( том, лиз)
Теперь пролог-система попытается выяснить,выполняется ли это условие (является ли оноистинным). Для этого исходная цель
отпрыск( лиз, том)
заменяется подцелью
родитель( том, лиз)
Эта (новая) цель достигается тривиально,поскольку такой факт можно найти в нашейпрограмме. Это означает, что утверждение,содержащееся в выводе правила, также истинно, исистема ответит на вопрос yes (да).
Добавим теперь в нашу программу-пример ещенесколько родственных отношений. Определениеотношения мать может быть основано наследующем логическом утверждении:
Для всех X и Y
Xявляется матерью Y, если
Xявляется родителем Y и
Х -женщина.
