Процедурная семантика определяет, как
пролог-система отвечает на вопросы. Ответить на вопрос - это значит удовлетворить список целей. Этого можно добиться, приписав встречающимся переменным значения таким образом, чтобы цели логически следовали из программы. Можно сказать, что процедурная семантика Пролога - это процедура вычисления списка целей с учетом заданной программы. "Вычислить цели" это значит попытаться достичь их.
Назовем эту процедуру вычислить. Как показано на рис. 2.9, входом и выходом этой процедуры являются:
входом - программа и список целей,
выходом - признак успех/неуспех и подстановка переменных.
Рис. 2. 9. Входы и выходы процедуры вычисления списка целей.
Смысл двух составляющих выхода такой:
(1) Признак успех/неуспех принимает значение "да", если цели достижимы, и "нет" - в противном случае. Будем говорить, что "да" сигнализирует об успешном
завершении и "нет" - о неуспехе.
(2) Подстановка переменных порождается только в случае успешного завершения; в случае неуспеха подстановка отсутствует.
line();
ПРОГРАММА
большой( медведь).
% Предложение 1
большой( слон).
% Предложение 2
маленький( кот).
% Предложение 3
коричневый ( медведь).
% Предложение 4
черный ( кот).
% Предложение 5
серый( слон).
% Предложение 6