Логическое программирование Семантика Пролога. Лекция 12 МарГТУ 2009 г. 1 Декларативная семантика Прологпрограмм Дизъюнкция целей Процедурная семантика Соотношение между процедурным и декларативным смыслом МарГТУ 2009 г. 2 Декларативная семантика Пролог-программ МарГТУ 2009 г. 3 Семантика Пролог-программ Семантика (смысл, понимание) Декларативная ЧТО должно быть результатом МарГТУ 2009 г. Процедурная КАК программа отвечает на вопросы 4 Декларативная семантика касается только отношений, определенных в программе; определяет, что должно быть результатом работы программы (не вдаваясь в подробности, как это достигается) МарГТУ 2009 г. 5 Декларативная семантика Пусть задано P: – Q, R. где P, Q, R – термы. Декларативный смысл: "P - истинно, если Q и R истинны." или "Из Q и R cледует Р." логические связи Голова :– цель1, цель2. МарГТУ 2009 г. 6 Декларативный смысл программы определяет, является ли данная цель истинной (достижимой), и если – да, то при каких значениях переменных она достигается. P: – Q, R. МарГТУ 2009 г. 7 Конкретизация предложения результат подстановки в него на место каждой переменной некоторого терма. Предложение С. haschild( X ):-parent( X ,Y). Конкретизацией I. I вар. haschild(tom):-parent(tom,Y). X=tom II вар. haschild(bob):-parent(bob,ann). X=bob, Y=ann МарГТУ 2009 г. 8 Определение Пусть дана некоторая программа и цель G. Тогда в соответствии с декларативной семантикой, можно утверждать, что: Цель G истинна тогда и только тогда, когда (1) в программе существует предложение С, такое, (2) что существует такая его (С) конкретизация I, что (а) голова I совпадает с G и (b) все цели в теле I истинны. МарГТУ 2009 г. 9 Пример female(ann). parent(ann, bob). C(I): mother(ann):-parent(ann, Y), female(ann). C: mother(X) :-parent(X, Y), female(X). ?- mother(ann). Список целей называется истинным (достижимым), если все цели в этом списке достижимы при одинаковых конкретизациях переменных. МарГТУ 2009 г. 10 Дизъюнкция целей МарГТУ 2009 г. 11 Дизъюнкция целей обозначается точкой с запятой ";". Логическое «ИЛИ»: истинна должна быть по крайней мере одна из целей. P:-Q;R. «Р истина, если Q - истина или R - истинна.» P:-R. P:-Q. Коньюнкция связывает цели сильнее, чем дизъюнкция. P:-Q, R;S, T, U. понимается как P:-(Q, R);(S, T, U). и имеет смысл P:-Q, R. P:-S, T, U. МарГТУ 2009 г. 12 Процедурная семантика МарГТУ 2009 г. 13 Процедурная семантика процедура вычисления списка целей с учетом программы определяет, как пролог-программа отвечает на вопросы. (Ответить на вопрос – значит удовлетворить цели. ) МарГТУ 2009 г. 14 Процедурная семантика программа список целей Процедура вычисления признак: успех, неудача конкретизация переменных МарГТУ 2009 г. 15 Соотношение между процедурным и декларативным смыслом МарГТУ 2009 г. 16 Пример вычисления Программа 1. 1.большой(медведь). 2.большой(слон). 3.маленький (кот). 4.бурый(медведь). 5.черный(кот). 6.серый(слон). 7.темный(Z):-черный(Z). 7.1 8.темный(Z):-бурый(Z). 8.1 9.?-темный(X),большой(X). 9.1 9.2 для вычисления целей потребовалось 7 сопоставлений и один откат. МарГТУ 2009 г. 17 Формальное описание процедуры вычисления целей. Пусть список целей G1 G2 … Gm Если список целей пуст, вычисление дает успех, если нет, то выполнятся пункт 2. 2. Берется первая цель G1 из списка. Пролог выбирает в базе данных, просматривая сначала, первое предложение С, С: H :- B1, B2, ..., Bn. голова которого, сопоставляется с целью G1. Если такого предложения нет, то неудача. Если есть, то переменные конкретизируются и цель G1 заменяется на список целей с конкретизированными значениями переменных. 1. B1’ МарГТУ 2009 г. B2’ … Bn’ 18 Формальное описание процедуры вычисления целей. 3. Рассматривается рекурсивно через п.2 новый список целей. B1’ B2’ … Bn’ G2 … Gm Если С – факт, то новый список короче на одну цель.(n=0) Если вычисление нового списка оканчивается успешно, то и исходный список целей выполняется успешно. Если нет, то новый список целей отбрасывается, снимается конкретизация переменных и происходит возврат к просмотру программы, но начиная с предложения, следующего за предложением С. Процесс возврата называется backtracking. МарГТУ 2009 г. 19 Соотношение между процедурным и декларативным смыслом Декларативный смысл определяет, что должно быть результатом программы, т.е. касается отношений, определенных в программе. Процедурный смысл определяет, как этот результат может быть достигнут, т.е. как отношения обрабатываются прологом. МарГТУ 2009 г. 20 Спасибо за внимание! Вопросы? МарГТУ 2009 г. 21