330 likes | 542 Views
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. ИНДУКЦИЯ. ОТ ЛОГИЧЕСКОГО К ОПЕРАЦИОННОМУ СМЫСЛУ. Логическая программа – набор продукционных правил для дедукции логической истины (порядок следования правил безразличен) Логическая программа – структура, следующая фиксированной стратегии
E N D
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ИНДУКЦИЯ
ОТ ЛОГИЧЕСКОГО К ОПЕРАЦИОННОМУ СМЫСЛУ Логическая программа – набор продукционных правил для дедукции логической истины (порядок следования правил безразличен) Логическая программа – структура, следующая фиксированной стратегии (порядок следования правил имеет значение)
СВОЙСТВА ОПЕРАЦИОННОЙ СЕМАНТИКИ Явность (soundness) : Если запрос А завершается успешно с подстановкой Θ, то результат применения подстановки Θ в А (записываемое как АΘ) является истинным в логической семантике, т.е. АΘ имеет доказательство. Полнота (completeness) : Если есть экземпляр запроса А, который имеет решение, запрос завершается успехом.
ИНДУКЦИЯ ПРАВИЛ Определение четных чисел: Суммирование: Доказать, что сумма двух четных чисел – четное число.
ВОЗМОЖНЫЕ СПОСОБЫ ДОКАЗАТЕЛЬСТВА что сумма двух четных чисел – четное число: • Для любыхm, nи s, еслиeven(m), even(n) и plus(m,n,s), то even(s). • Для любыхm, n если even(m) иeven(n) то существуетs такое, что plus(m,n,s) и even(s). Если бы мы знали, что plus дает единственное решение s над mиn, эти способы были бы эквивалентными.
ДОКАЗАТЕЛЬСТВО Теорема. Для любых m, n, если even(m) иeven(n), то существует такое s, чтоplus(m,n,s) иeven(s). Доказательство: Случай 1: even(n) - предположение plus(0,n,n) - следует из правила evz Таким образом, существует такое s, что plus(0,n,s) и even(s).
ДОКАЗАТЕЛЬСТВО (продолжение) Случай 2: even(n) - предположение plus(m’,n,s) и even(s’) для некоторых s - предположение plus(p(m’),n,p(s’))- из правила pvs plus(p(p(m’)),n,p(p(s’))) - из правила pvs even(p(p(s’)))- из правила evs Существует такое s, что plus(p(p(m’)),n,s) иeven(s) Теорема доказана.
ДОКАЗАТЕЛЬСТВО (проблемы остались) Почему доказательство делалось вручную? Почему на не использовали операционную семантику? В данном доказательстве есть алгоритм построения дедукций, но нет алгоритма конструирования обратного поиска.
ИНВЕРСИЯ • Некоторое утверждение истинно и удовлетворяет консеквенту только правила. Следовательно, все его антецеденты (условия) должны быть истинными. • Некоторое утверждение истинно и удовлетворяет консеквентам нескольких правил. Следует разбить доказательство на несколько случаев, по одному для каждого правила. Инверсию следует использовать с осторожностью (все случаи должны быть рассмотрены)
ИНВЕРСИЯ (ПРИМЕР) Докажем, что разность списков может быть определена единственным способом, если она существует.
ИНВЕРСИЯ (ПРИМЕР) Теорема. Для всех xs и zs, а также для всех ys и ys’, если append(xs, ys, zs) и append(xs, ys’, zs) то ys = ys’. Доказательство: Обозначимдедукцией D append(xs, ys, zs) и дедукцией Е append(xs, ys’, zs). Случай 1: где xs = [ ] и zs = ys. • append([ ], ys’, ys) - из дедукции E • ys’ = ys - из инверсии E (правило apnil)
ИНВЕРСИЯ (ПРИМЕР) Случай 2: append([x|xs1], ys’, [x|zs1]) - из дедукции E append(xs1, ys’, zs1 - из инверсии E (правило apcons) ys = ys’ - из индукции D1 Теорема доказана
ОПЕРАЦИОННЫЕ СВОЙСТВА Их невозможно строго доказать. Попробуем приблизиться . Цифры от 0 до 9 (Пеано) В нотации Пролога : digit(p(p(p(p(p(p(p(p(p(0)))))))))). digit(N) :- digit(p(N)).
ОПЕРАЦИОННЫЕ СВОЙСТВА Теорема. Любой запрос ?- digit(n) при n > 9 не завершается. Доказательство. Методом индукции. Если n > 9, то первое утверждение не может быть использовано. Следовательно, цель digit(n) должна быть редуцирована в подцель digit(p(n)) вторым правилом. Однако, p(n) > 9, если n > 9, и в процессе индукции гипотеза подцели не завершится. Следовательно, исходная цель также не завершится.
ПРЯМОЙ ВЫВОД И НАСЫЩЕНИЕ Прямой вывод: • начать с аксиом (в качестве которых выступают правила без предпосылок) как логической истины и применять все правила в прямом направлении, добавляя новые утверждения, порожденные этими правилами. Мы останавливаемся, когда применение правил перестает порождать новые факты. • В этом случае мы говорим, что база истинных утверждений насыщена.
ПРЯМОЙ ВЫВОД И НАСЫЩЕНИЕ (пример) digit((p(p(p(p(p(p(p(p(0)))))))))). digit(p(p(p(p(p(p(p(p(0))))))))). digit(p(p(p(p(p(p(p(0)))))))). digit(p(p(p(p(p(p(0))))))). digit(p(p(p(p(p(0)))))). digit(p(p(p(p(0))))). digit(p(p(p(0)))). digit(p(p(0))). digit(p(0)). digit(0). С этого места все попытки применить правила дадут только те факты, которые уже известны: база знаний насыщена.
ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ • Логический и операционный смысл • Дедукция • Индукция на структуре дедукции • Инверсия • Насыщение
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ОПЕРАЦИОННЫЕ СЕМАНТИКИ
ВЫБОР • Выбор подцелей слева направо. В терминах продукционных правил это означает, что сначала мы ищем доказательство первой предпосылки, затем второй и т.д. • Выбор утверждений от первого к последнему и бэктрекинг. В терминах продукционных правил это значит, что если применимы более одного правила, мы начинаем с первого, затем переходим ко второму и т.д. • Унификация. В терминах продукционных правил это означает, что когда мы решаем, как присвоит значения переменным в аргументах правила и неизвестным в цели, мы используем конкретный алгоритм для нахождения наиболее общего унификатора между консеквентом правила и целью. • Отсечение. Это не имеет аналога на уровне продукционных правил. Мы должны специфицировать, как мы приходим к конкретным выборам пока не встретили отсечение или другую управляющую конструкцию, например, условное утверждение. • Другие встроенные предикаты. Пролог имеет встроенные предикаты для арифметики, ввода-вывода, изменения программы во время выполнения, вызовы внешних функций и многое другое, что мы не будем описывать формально.
ДЕФИНИЦИОННЫЕ ИНТЕРПРЕТАТОРЫ Мы можем написать интерпретатор для языка на том же самом языке - дефиниционный интерпретатор (definitional interpreter), метаинтерпертатор или метациркулярный интерпретатор. Для Пролога простейший метаинтерпретатор : solve(A) :- A.
МЕТАИНТЕРПРЕТАТОР ПРОЛОГА Запятая – конъюнкция символов true – константа solve(true). solve((A,B)) :- solve(A), solve(B). solve(P) :- clause(P,B), solve(B). если clause(P,B) успешно, то P :- B это экземпляр утверждения в текущей программе
МЕТАИНТЕРПРЕТАТОР ПРОЛОГА: ПОРЯДОК ЦЕЛЕЙ Модифицированный предикат solve(A,S), где A – это цель, а S – стек пока еще не решенных целей. % - Если цель достигнута, и стек пуст, резолюция цели завершается успехом solve(true, true). % - Если текущая цель решена, а стек цели не пуст, мы извлекаем ближайшую подцель Aи решаем ее solve(true,(A,S)) :- solve(A,S). % - Если цель это конъюнкция, мы решаем первый конъюнкт, помещая второй в стек цели. solve((A,B),S) :- solve(A,(B,S)). % - Если цель атомарная, мы унифицируем ее с головой всех утверждений, решая тело утверждения как подцель. solve(P,S) :- clause(P,B), solve(B,S).
ПОРЯДОК ЦЕЛЕЙ: БОЛЕЕ АБСТРАКТНЫЙ ПОДХОД Вводные правила: Вводим бинарное утверждение A / Sи будем читать как A при S (A under S) Последнее правило – это семейство правил:
ПОРЯДОК ЦЕЛЕЙ: БОЛЕЕ АБСТРАКТНЫЙ ПОДХОД Важно: Определение истинности (A true) и доказуемости в стратегии поиска на основе стека (A / S) не зависят друг от друга, так что мы можем связывать их прямо Каждое правило в новом суждении A / S имеет либо одну, либо ни одной предпосылки ->вопрос о порядке подцелей не возникает.Он явно решается введением стека подцелей. Это отношение перехода является все еще недетерминистским, потому что более чем одно правило может соответствовать атомарному предикату.
ПОЛНОТА Теорема. ЕслиA / S тоA true и S true. Доказательство: Методом индукции на структуре дедукции DA / S. Случай 1: • A trueиз • S trueиз
ПОЛНОТА (продолжение) Случай 2: A trueиз A1 trueиS2trueиз гипотезы D2 A1 ˄S2true из правила ˄I S true поскольку S= A1 ˄S2
ПОЛНОТА (продолжение) Случай 3: A1 trueиA2˄Strue из гипотезы D1 A2true и Strue из инверсии (правило ˄I) A1 ˄A2true из правила ˄I
ПОЛНОТА (окончание) Случай 4: B1 ˄…˄Bm true и S true из гипотезы D’ B1true,…,Bmtrueприm -1инверсия если m>0 (˄I) P trueиз данного правила Если m=0, то правило для P не имеет предпосылок, и мы можем заключить, что P true без инвертированных шагов.
ЗАВЕРШЕННОСТЬ Теорема. Если A true и T / S то A / S. Доказательство: Методом индукции на структуре дедукции A true. Случай 1: T / S предположение A / S поскольку A / T
ЗАВЕРШЕННОСТЬ (продолжение) Случай 2: T / S предположение A2 / S из гипотезы в D2 T / A2˄S из правила A1 / A2˄S из гипотезы в D1 A1˄A2 / S из правила
ЗАВЕРШЕННОСТЬ (окончание) Случай 3: T / S предположение Bm / S из гипотезы в Dm T / Bm˄S из правила Bm-1 / Bm˄S из гипотезы в Dm-1 Bm-1˄Bm/S из правила T / (Bm-1˄Bm) ˄S из правила B1˄…˄Bm-1˄Bm /S повторение пред. 3 шагов
ЗАВЕРШЕННОСТЬ (выводы) • Выбор, которое правило применить в случае атомарной цели, остается недетерминистским -> эта теорема недетерминистская. • Более того, связывание схематичных переменных в правиле это «магия»: мы принимаем для целей семантики на данном уровне, что все цели достигнуты и семантики получат верные значения.
ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ • Дефиниционный интерпретатор • Порядок выбора целей • Полнота интерпретатора • Завершенность интерпретатора