На приведенном ниже примере проследим, как вдействительности правила используются Прологом.Спросим нашу программу, является ли Лизотпрыском Тома:

       ?  -  отпрыск( лиз,том).

В программе нет фактов об отпрысках, поэтомуединственный способ ответить на такой вопрос -это применить правило о них. Правилоуниверсально в том смысле, что оно применимо клюбым объектам X и Y, следовательно, его можноприменить и к таким конкретным объектам, как лизи том. Чтобы это сделать,нужно вместо Y подставить в него лиз,а вместо X - том. В этомслучае мы будем говорить, что переменные X и Yконкретизируются:

       X  =  том   и   Y  =  лиз

После конкретизации мы получаем частный случайнашего общего правила. Вот он:

       отпрыск( лиз, том) :-родитель( том, лиз).

Условная часть приняла вид:

       родитель( том, лиз)

Теперь пролог-система попытается выяснить,выполняется ли это условие (является ли оноистинным). Для этого исходная цель

        отпрыск( лиз, том)

заменяется подцелью

        родитель( том, лиз)

Эта (новая) цель достигается тривиально,поскольку такой факт можно найти в нашейпрограмме. Это означает, что утверждение,содержащееся в выводе правила, также истинно, исистема ответит на вопрос yes (да).

Добавим теперь в нашу программу-пример ещенесколько родственных отношений. Определениеотношения мать может быть основано наследующем логическом утверждении:

        Для всех X и Y

                Xявляется матерью Y, если

                Xявляется родителем Y и

                Х -женщина.



25 из 538