|
НАЗАД
Таким образом, запятая между целями обозначает конъюнкцию целей: они все должны быть истинными. Однако в Прологе возможна и дизъюнкция целей: должна быть истинной по крайней мере одна из целей. Дизъюнкция обозначается точкой с запятой. Например:
P:-Q;R.
читается так: Р - истинно, если истинно Q или истинно R, То есть смысл такого предложения тот же, что и смысл следующей пары предложений:
P:-Q.
P:-R.
Запятая связывает (цели) сильнее, чем точка с запятой.
Таким образом, предложение: P:-Q, R; S, T, U.
понимается как: P:-(Q, R); (S, T, U).
и имеет тот же смысл, что и два предложения:
P:-Q,R.
P:-S, T, U.
Процедурная семантика Пролог программы состоит в интерпретации входящих в программу утверждений с точки зрения процесса установления истинностных значений задаваемых в вопросе утверждений. Процедурная семантика - это процедура вычисления списка целей на основе заданной декларативной программы. Назовем эту процедуру именем «Вычислить».
Входными данными процедуры «Вычислить» являются логическая программа и список целей (вопрос).

Рисунок1 - Структура процедуры «Вычислить»
Выходные данные процедуры «Вычислить» признак Успех/неуспех и конкретизация переменных.
Процедурная семантика языка Пролог определяет встроенные в Пролог-систему механизмы логического вывода. Рассмотрим простейшие механизмы логического вывода.
Факты в программе не содержат переменных, а вопрос простой и основной. В этом случае используется правило совпадения: вопрос выводим из программы, если в программе имеется совпадающий с вопросом факт.
Факты в программе не содержат переменные, а вопрос простой и неосновной. В этом случае для вывода можно применить правило обобщения факта: вопрос Q выводим из программы, если найдется подстановка, что вопрос Q выводим из программы. Процедура поиска ответа на простой, неосновной вопрос из программы, состоящей из фактов без переменных, сводится к поиску факта, являющегося примером вопроса. Побочным эффектом доказательства будет конкретизация переменных, входящих в вопрос. Конкретизацией называется присвоение переменной значения в процессе выполнения программы.
Факты в программе не содержат переменных, а вопросконъюнктивный и неосновной:
?G1,G2.
Процедура поиска ответа на конъюнктивный, неосновной вопрос из программы, состоящей из фактов без переменных, сводится к поиску факта, являющегося примером цели G1, а затем после подстановки значений общих переменных в цель G2 производится поиск факта, являющегося примером цели G2 данного вопроса. Если такой факт обнаруживается, то выполняется конкретизация переменных цели G2, которые не являются общими с целью G1, и вычисление конъюнктивного вопроса завершается успешно.
ЧИТАТЬ ДАЛЕЕ
НАЗАД
|