Логическое программирование на языке Visual Prolog. Солдатова О.П - 21 стр.

UptoLike

21
Рекурсивное определение предиката обязательно должно содержать
нерекурсивную часть, иначе оно будет логически некорректным и программа
зациклится. Чтобы избежать зацикливания, следует также позаботиться о
порядке выполнения предложений, поэтому практически полезно, а порой и
необходимо придерживаться принципа: «сначала нерекурсивные
выражения».
Программа на Прологе - это конечное множество предложений.
2.3 Использование дизъюнкции и
отрицания.
Чистый Пролог разрешает применять в правилах и целях только
конъюнкцию, однако, язык, используемый на практике, допускает
применение дизъюнкции и отрицания в телах правил и целях. Для
достижения цели, содержащей дизъюнкцию, Прологсистема сначала
пытается удовлетворить левую часть дизъюнкции, а если это не удается, то
переходит к поиску решения для правой
части дизъюнкции. Аналогичные
действия производятся при выполнении тела правил, содержащих
дизъюнкцию. Для обозначения дизъюнкции используется символ « ; ».
В Прологе отрицание имеет имя «not» и для представления отрицания
какого-либо предиката P используется запись not(P). Цель not(P) достижима
тогда и только тогда, когда не удовлетворяется предикат (цель) P. При
этом переменным значения не присваиваются. В
самом деле, если
достигается P, то не достигается not(P), значит надо стереть все
присваивания, приводящие к данному результату. Наоборот, если P не
достигается, то переменные не принимают никаких значений.
2.4 Унификация в Прологе.
Общий принцип выполнения программ на Прологе прост:
производится поиск ответа на вопросы, задаваемые БД, состоящей из фактов
и правил, то
есть проверяется соответствие предикатов вопроса
предложениям из БД. Это частный случай метода резолюций.
Отметим, что в Прологе не проводится синтаксического различия
между предикатом и функцией (составным термом), а также между
нечисловой константой и функцией без аргументов. Следовательно, суть
действия состоит в том, что ищется попарное соответствие между термами,
один из
которых является целью, а другой принадлежит БД.
Установление соответствия между термами является основной
операцией при вычислении цели. Она осуществляется следующим образом:
на каждом шаге выбирается очередной терм и отыскивается
соответствующее выражение в БД. При этом переменные получают или
теряют значения. Этот процесс можно описать в терминах текстуальных
подстановок: «подставить терм t вместо
переменной Y». Свободными
переменными в Прологе называются переменные, которым не были
присвоены значения, а все остальные переменные называются связанными