33
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ИНДУКЦИЯ 1

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

  • Upload
    mahon

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

ИНДУКЦИЯ

1

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

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

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

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

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

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

2

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

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

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

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

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

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

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

3

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

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

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

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

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

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

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

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

• Для любых 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

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

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

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

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

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

Случай 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

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

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

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

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

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

8

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

ИНВЕРСИЯ

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

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

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

9

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

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

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

10

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

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

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

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

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

Случай 2:

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

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

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

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

12

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

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

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

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

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

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

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

13

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

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

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

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

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

14

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

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

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

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

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

15

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

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

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

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

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

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

• Дедукция

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

• Инверсия

• Насыщение

17

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

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

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

18

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

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

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

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

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

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

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

19

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

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

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

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

solve(A) :- A.

20

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

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

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

true – константа

solve(true).

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

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

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

21

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

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

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

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

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

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

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

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

23

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

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

Важно:

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

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

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

24

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

ПОЛНОТА

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

A / S.

 

Случай 1:

• A true из

• S true из

25

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

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

Случай 2:

A true из

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

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

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

26

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

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

Случай 3:

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

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

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

27

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

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

Случай 4:

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

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

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

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

28

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

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

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

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

Случай 1:

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

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

29

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

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

Случай 2:

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

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

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

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

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

30

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

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

Случай 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

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

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

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

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

32

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

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

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

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

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

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

33