Общий принцип выполнения программ на Прологе заключается в поиске ответа на вопросы, задаваемые базе знаний, состоящей из фактов и правил, путем проверки соответствия предикатов вопроса предложениям из базы знаний. Напомним, что в Прологе все объекты представляются термами, а, следовательно, для поиска ответа выполняется попарное соответствие между термами, один из которых является целью, а другой принадлежит базе знаний. Установление соответствия между термами является основной операцией при вычислении цели. Эта операция осуществляется следующим образом: на каждом шаге выбирается очередной терм и отыскивается соответствующее выражение в базе знаний. При этом переменные либо могут получить значение, либо вновь стать свободными. Этот процесс можно представить в виде выполнения подстановок соответствующего терма вместо некоторой переменной Y.
Свободными переменными в Прологе называются переменные, которым не были присвоены значения, а все остальные переменные называются связанными переменными. Переменная становится связанной только во время унификации, переменная вновь становится свободной, когда унификация оказывается неуспешной или цель оказывается успешно вычисленной. В Прологе присваивание значений переменным выполняется внутренними подпрограммами унификации. Переменные становятся свободными, как только для внутренних подпрограмм унификации отпадает необходимость связывать некоторое значение с переменной для выполнения доказательства подцели.
Правила унификации термов:
1. Если термы term1 и term2 – константы, то они унифицируемы(сопоставимы), только если они равны.
2. Если term1 – терм, а Y – переменная, то они унифицируемы, при этом Y принимает значение term1.
3. Если term1 и term2 – составные термы, то они унифицируемы тогда и только тогда, когда у них одинаковые имена функторов, набор аргументов и каждая пара аргументов унифицируема.
В Прологе есть особый предикат, это предикат равенство «=», который используется для отождествления двух термов, который интерпретируется как оператор присваивания или как оператор проверки на равенство в зависимости от того, являются ли значения термов свободными или связанными. Он ведет себя подобно внутренним подпрограммам унификации при сопоставлении целей или подцелей с фактами и правилами программы.