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

UptoLike

22
переменными. Переменная становится связанной только во время
унификации, переменная вновь становится свободной, когда унификация
оказывается неуспешной или цель оказывается успешно вычисленной. В
Прологе присваивание значений переменным выполняется внутренними
подпрограммами унификации. Переменные становятся свободными, как
только для внутренних подпрограмм унификации отпадает необходимость
связывать некоторое значение с переменной для выполнения доказательства
подцели
.
Правила унификации.
1. Если x и y-константы, то они унифицируемы, только если они
равны.
2. Если x- константа или функция, а Y-переменная, то они
унифицируемы, при этом Y принимает значение x .
3. Если x и y -функции, то они унифицируемы тогда и только тогда,
когда у них одинаковые имена функций (функторы) и набор аргументов и
каждая
пара аргументов функций унифицируемы.
Есть особый предикат «=», который используется в Прологе для
отождествления двух термов. Использование оператора «=» поможет лучше
понять процесс означивания переменной. В Прологе оператор «=»
интерпретируется как оператор присваивания или как оператор проверки на
равенство в зависимости от того, являются ли значения термов свободными
или связанными.
Пример 17: X=Y, если X и Y – связанные
переменные, то производится
проверка на равенство, например: если X=5 и Y=5, то результат ДА
(истина); если X=6 а Y=5, то результат НЕТ(ложь). Если одна из
переменных X или Y – свободная, то ей будет присвоено значение другой
переменной, для Пролога несущественно слева или справа от знака «=»
стоит связанная переменная.
Оператор «=» ведет себя точно так, как внутренние
подпрограммы
унификации при сопоставлении целей или подцелей с фактами и правилами
программы.
2.5 Вычисление цели. Механизм возврата.
Каноническая форма цели (вопроса) является конъюнкцией атомарных
предикатов, то есть последовательностью подцелей, разделенных запятыми
[1]:
Q=Q
1
, Q
2
,…, Q
n
.
Пролог пытается вычислить цель при помощи унификации термов
предикатов подцелей с соответствующими элементами в фактах и заголовках
правил. Поиск ответа на вопрос напоминает поиск пути в лабиринте: следует
поворачивать налево в каждой развилке лабиринта до тех пор, пока не
попадете в тупик. В этом случае следует вернуться к последней развилке
и