(2) существует такая его (С) конкретизация I, что
(a) голова I совпадает с G и
(б) все цели в теле I истинны.
Это определение можно распространить на
вопросы следующим образом. В общем случае вопрос
к пролог-системе представляет собой
Таким образом, запятая между целями обозначает
Р :- Q; R.
читается так: Р - истинно, если истинно
Q
Р :- Q.
Р :- R.
Запятая связывает (цели) сильнее, чем точка с запятой. Таким образом, предложение
Р :- Q, R; S, Т, U.
понимается как:
Р :- ( Q, R); (S, Т, U).
и имеет тот же смысл, что и два предложения
Р :- Q, R.
Р :- S, T, U.
Упражнения
2. 6. Рассмотрим следующую программу:
f( 1, один).
f( s(1), два).
f( s(s(1)), три).
f( s(s(s(X))), N) :-
f(X, N).
Как пролог-система ответит на следующие вопросы? Там, где возможны несколько ответов, приведите по крайней мере два.
(a) ?- f( s( 1), A).
(b) ?- f( s(s(1)), два).
(c) ?- f( s(s(s(s(s(s(1)))))), С).
(d) ?- f( D, три).
Посмотреть ответ
2. 7. В следующей программе говорится, что два человека являются родственниками, если
(a) один является предком другого, или
(b) у них есть общий предок, или
(c) у них есть общий потомок.
родственники( X, Y) :-
предок( X, Y).
родственники( X, Y) :-
предок( Y, X).
родственники( X, Y) :-
% X и Y имеют общего предка
предок( Z, X),
предок( Z, Y).
родственники( X, Y) :-
% X и Y имеют общего потомка
предок( X, Z),
предок( Y, Z).
Сможете ли вы сократить эту программу, используя запись с точками с запятой?
Посмотреть ответ
2. 8. Перепишите следующую программу, не пользуясь точками с запятой.
преобразовать( Число, Слово) :-
Число = 1, Слово = один;
Число = 2, Слово = два;
Число = 3, Слово = три.
Посмотреть ответ
Назад | Содержание | Вперёд
Назад | Содержание | Вперёд
2. 4. Процедурная семантика
Процедурная семантика определяет,
цели логически следовали из программы. Можно
сказать, что процедурная семантика Пролога - это
процедура вычисления списка целей
с учетом заданной программы. "Вычислить цели" это значит попытаться достичь их.
Назовем эту процедуру вычислить. Как показано на рис. 2.9, входом и выходом этой процедуры являются:
входом - программа и список целей,
выходом - признак успех/неуспех и подстановка переменных.
Рис. 2. 9. Входы и выходы процедуры вычисления списка целей.
Смысл двух составляющих выхода такой:
(1) Признак успех/неуспех принимает
значение "да", если цели достижимы, и
"нет" - в противном случае. Будем говорить,
что "да" сигнализирует об
(2) Подстановка переменных порождается только в случае успешного завершения; в случае неуспеха подстановка отсутствует.
ПРОГРАММА
большой( медведь). % Предложение 1
большой( слон). % Предложение 2
маленький( кот). % Предложение 3
коричневый ( медведь). % Предложение 4
черный ( кот). % Предложение 5
серый( слон). % Предложение 6
темный( Z) :- % Предложение 7:
черный( Z). % любой черный
% объект является темным
темный( Z) :- % Предложение 8:
коричневый( Z). % Любой коричневый
% объект является темным
ВОПРОС
?- темный( X), большой( X) % Кто одновременно темный
% и большой?
ШАГИ ВЫЧИСЛЕНИЯ
(1) Исходный список целевых утверждений:
темный( X), большой( X).