ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Preview:

DESCRIPTION

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. ИНДУКЦИЯ. ОТ ЛОГИЧЕСКОГО К ОПЕРАЦИОННОМУ СМЫСЛУ. Логическая программа – набор продукционных правил для дедукции логической истины (порядок следования правил безразличен) Логическая программа – структура, следующая фиксированной стратегии - PowerPoint PPT Presentation

Citation preview

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ИНДУКЦИЯ

1

ОТ ЛОГИЧЕСКОГО К ОПЕРАЦИОННОМУ СМЫСЛУ

Логическая программа – набор продукционных правил для дедукции логической истины

(порядок следования правил безразличен)

Логическая программа – структура, следующая фиксированной стратегии

(порядок следования правил имеет значение)

2

СВОЙСТВА ОПЕРАЦИОННОЙ СЕМАНТИКИ

Явность (soundness) :Если запрос А завершается успешно с подстановкой Θ, то

результат применения подстановки Θ в А (записываемое как АΘ) является истинным в логической семантике, т.е.

АΘ имеет доказательство.

Полнота (completeness) :Если есть экземпляр запроса А, который имеет решение,

запрос завершается успехом.

3

ИНДУКЦИЯ ПРАВИЛОпределение четных чисел:

Суммирование:

Доказать, что сумма двух четных чисел – четное число.

4

( )

(0) ( ( ( )))

even Nevz evs

even even p p N

( , , )

(0, , ) ( ( ), , ( )))

plus M N Spz ps

plus N N plus p M N p S

ВОЗМОЖНЫЕ СПОСОБЫ ДОКАЗАТЕЛЬСТВА

что сумма двух четных чисел – четное число:

• Для любых 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, эти способы были бы эквивалентными.

5

ДОКАЗАТЕЛЬСТВО

Теорема. Для любых 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).

6

, если 0(0)

D evz meven

ДОКАЗАТЕЛЬСТВО (продолжение)

Случай 2:

even(n) - предположение

plus(m’,n,s) и even(s’) для некоторых s - предположение

plus(p(m’),n,p(s’)) - из правила pvsplus(p(p(m’)),n,p(p(s’))) - из правила pvseven(p(p(s’))) - из правила evs

Существует такое s, что plus(p(p(m’)),n,s) и even(s)

Теорема доказана.

7

'

( '), ( ( ')).

( ( ( ')))

D

even mD evs где m p p m

even p p m

ДОКАЗАТЕЛЬСТВО (проблемы остались)

Почему доказательство делалось вручную?

Почему на не использовали операционную семантику?

В данном доказательстве есть алгоритм построения дедукций, но нет алгоритма конструирования обратного поиска.

8

ИНВЕРСИЯ

• Некоторое утверждение истинно и удовлетворяет консеквенту только правила. Следовательно, все его антецеденты (условия) должны быть истинными.

• Некоторое утверждение истинно и удовлетворяет консеквентам нескольких правил. Следует разбить доказательство на несколько случаев, по одному для каждого правила.

Инверсию следует использовать с осторожностью (все случаи должны быть рассмотрены)

9

ИНВЕРСИЯ (ПРИМЕР)

Докажем, что разность списков может быть определена единственным способом, если она существует.

10

ИНВЕРСИЯ (ПРИМЕР)

Теорема. Для всех 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)

11

ИНВЕРСИЯ (ПРИМЕР)

Случай 2:

append([x|xs1], ys’, [x|zs1]) - из дедукции E

append(xs1, ys’, zs1 - из инверсии E (правило apcons)

ys = ys’ - из индукции D1

Теорема доказана

12

ОПЕРАЦИОННЫЕ СВОЙСТВА

Их невозможно строго доказать. Попробуем приблизиться .

Цифры от 0 до 9 (Пеано)

В нотации Пролога :

digit(p(p(p(p(p(p(p(p(p(0)))))))))).

digit(N) :- digit(p(N)).

13

ОПЕРАЦИОННЫЕ СВОЙСТВА

Теорема. Любой запрос ?- digit(n) при n > 9 не завершается.

Доказательство. Методом индукции.

Если n > 9, то первое утверждение не может быть использовано. Следовательно, цель digit(n) должна быть редуцирована в подцель digit(p(n)) вторым правилом. Однако, p(n) > 9, если n > 9, и в процессе индукции гипотеза подцели не завершится. Следовательно, исходная цель также не завершится.

14

ПРЯМОЙ ВЫВОД И НАСЫЩЕНИЕ

Прямой вывод: • начать с аксиом (в качестве которых выступают

правила без предпосылок) как логической истины и применять все правила в прямом направлении, добавляя новые утверждения, порожденные этими правилами. Мы останавливаемся, когда применение правил перестает порождать новые факты.

• В этом случае мы говорим, что база истинных утверждений насыщена.

15

ПРЯМОЙ ВЫВОД И НАСЫЩЕНИЕ (пример)

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).С этого места все попытки применить правила дадут

только те факты, которые уже известны: база знаний насыщена.

16

ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ

• Логический и операционный смысл

• Дедукция

• Индукция на структуре дедукции

• Инверсия

• Насыщение

17

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ОПЕРАЦИОННЫЕ СЕМАНТИКИ

18

ВЫБОР• Выбор подцелей слева направо. В терминах продукционных правил это

означает, что сначала мы ищем доказательство первой предпосылки, затем второй и т.д.

• Выбор утверждений от первого к последнему и бэктрекинг. В терминах продукционных правил это значит, что если применимы более одного правила, мы начинаем с первого, затем переходим ко второму и т.д.

• Унификация. В терминах продукционных правил это означает, что когда мы решаем, как присвоит значения переменным в аргументах правила и неизвестным в цели, мы используем конкретный алгоритм для нахождения наиболее общего унификатора между консеквентом правила и целью.

• Отсечение. Это не имеет аналога на уровне продукционных правил. Мы должны специфицировать, как мы приходим к конкретным выборам пока не встретили отсечение или другую управляющую конструкцию, например, условное утверждение.

• Другие встроенные предикаты. Пролог имеет встроенные предикаты для арифметики, ввода-вывода, изменения программы во время выполнения, вызовы внешних функций и многое другое, что мы не будем описывать формально.

19

ДЕФИНИЦИОННЫЕ ИНТЕРПРЕТАТОРЫ

Мы можем написать интерпретатор для языка на том же самом языке - дефиниционный интерпретатор (definitional interpreter), метаинтерпертатор или метациркулярный интерпретатор.

Для Пролога простейший метаинтерпретатор :

solve(A) :- A.

20

МЕТАИНТЕРПРЕТАТОР ПРОЛОГА

Запятая – конъюнкция символов

true – константа

solve(true).

solve((A,B)) :- solve(A), solve(B).

solve(P) :- clause(P,B), solve(B).

если clause(P,B) успешно, то P :- B это экземпляр утверждения в текущей программе

21

МЕТАИНТЕРПРЕТАТОР ПРОЛОГА: ПОРЯДОК ЦЕЛЕЙ

Модифицированный предикат 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).

22

ПОРЯДОК ЦЕЛЕЙ: БОЛЕЕ АБСТРАКТНЫЙ ПОДХОД

Вводные правила:

Вводим бинарное утверждение A / S и будем читать как A при S (A under S)

Последнее правило – это семейство правил:

23

ПОРЯДОК ЦЕЛЕЙ: БОЛЕЕ АБСТРАКТНЫЙ ПОДХОД

Важно:

Определение истинности (A true) и доказуемости в стратегии поиска на основе стека (A / S) не зависят друг от друга, так что мы можем связывать их прямо

Каждое правило в новом суждении A / S имеет либо одну, либо ни одной предпосылки ->вопрос о порядке подцелей не возникает. Он явно решается введением стека подцелей.

Это отношение перехода является все еще недетерминистским, потому что более чем одно правило может соответствовать атомарному предикату.

24

ПОЛНОТА

Теорема. Если A / S то A true и S true. Доказательство: Методом индукции на структуре дедукции D

A / S.

 

Случай 1:

• A true из

• S true из

25

ПОЛНОТА (продолжение)

Случай 2:

A true из

A1 true и S2 true из гипотезы D2

A1 ˄S2 true из правила ˄I

S true поскольку S= A1 ˄S2

26

ПОЛНОТА (продолжение)

Случай 3:

A1 true и A2˄S true из гипотезы D1

A2 true и S true из инверсии (правило ˄I)

A1 ˄A2 true из правила ˄I

27

ПОЛНОТА (окончание)

Случай 4:

B1 ˄…˄Bm true и S true из гипотезы D’

B1 true,…,Bm true при m -1 инверсия если m>0 (˄I)

P true из данного правила

Если m=0, то правило для P не имеет предпосылок, и мы можем заключить, что P true без инвертированных шагов.

28

ЗАВЕРШЕННОСТЬ

Теорема. Если A true и T / S то A / S.

Доказательство: Методом индукции на структуре дедукции A true.

Случай 1:

T / S предположение

A / S поскольку A / T

29

ЗАВЕРШЕННОСТЬ (продолжение)

Случай 2:

T / S предположение

A2 / S из гипотезы в D2

T / A2 ˄S из правила

A1 / A2 ˄S из гипотезы в D1

A1 ˄ A2 / S из правила

30

ЗАВЕРШЕННОСТЬ (окончание)

Случай 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 шагов

31

ЗАВЕРШЕННОСТЬ (выводы)

• Выбор, которое правило применить в случае атомарной цели, остается недетерминистским -> эта теорема недетерминистская.

• Более того, связывание схематичных переменных в правиле это «магия»: мы принимаем для целей семантики на данном уровне, что все цели достигнуты и семантики получат верные значения.

32

ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ

• Дефиниционный интерпретатор

• Порядок выбора целей

• Полнота интерпретатора

• Завершенность интерпретатора

33

Recommended