
1.4 Исполнение программ на Прологе
Вернёмся к методу резолюций.
Независимо от решаемой задачи программа всегда выполняется по одной и той же схеме, определяемой методом резолюции - тем методом поиска решения, который использует система логического программирования Пролог.
Поиск решения осуществляется следующим образом. Делаем запрос к программе или, по-другому, ставим цель.
Среди всех элементов множества предложений S отыскивается первое предложение, которое имеет такое же имя, как и первая цель в запросе.
Если предложение - правило, то это имя должно быть именем головы, или если это предложение факт, то именем факта.
Проверяется существование подстановки унифицирующей цель запроса и этого предложения, т.е., конкретной подстановки, которая делает их совпадающими.
Если такой подстановки не существует, то делается попытка найти следующее по порядку предложение с таким же именем.
Если такая подстановка найдена, то резольвентой оказывается
или тело найденного правила, в случае, когда предложение оказалось правилом
или пустой дизъюнкт, если предложение оказалось фактом.
Далее просматриваются цели в теле правила, также как если бы это были цели в запросе.
Просмотр целей осуществляется слева направо.
Чтобы раскрыть именно сущность метода резолюций приведем пример работы следующей программы.
Пусть нам даны правила (мы их буквенно пронумеруем)
P Q1,Q2. (a)
P Q3. (b)
U Q3. (c)
U P,R. (d)
И даны факты
R. (e)
Q1. (f)
Q3. (g)
И мы делаем такой запрос
?- U. (h)
Смысл запроса. «А правда ли, что U?»
Ответ может быть или «Да!!» или «Нет, это ложь!»
Обратите внимание, что эти предложения записаны в иной форме, чем предложения рассмотренные нами ранее (1)-(7), хотя обе эти записи эквивалентны.
Система Пролог отыскивает ПЕРВОЕ ПО ПОРЯДКУ вхождение U.
В данной программе таковым оказывается предложение (c). Но мы ничего не знаем о Q3.
Что это за утверждение?
Поэтому далее делается попытка удовлетворить условия найденного правила, то есть, что-нибудь выяснить относительно Q3. Для чего вновь просматривается вся наша программа, но теперь с целью поиска первого предложения, начинающегося с Q3.
Таковым предложением оказывается формула (g).
Оказывается, что Q3 – это факт для нашей программы. Против факта, как говориться …
Итак, ответ – «Да».
Так система находит первое решение.
Некоторые Пролог системы автоматически отыскивает все возможные решения.
В данном случае альтернативные решения могут получиться за счет правила (d), в котором тоже определяется U.
Ещё раз отметим, что приведенный процесс лишь схематично иллюстрирует работу системы Пролог, не затрагивая, особенности написания, влияние порядка предложений в программе на результат её работы и т.п.
Но этого мы коснемся подробнее, когда займемся конкретной реализацией Пролога, которой в нашем случае будет SWI-Prolog.