ancestor(X,Y)

advertisement
Сошников Дмитрий Валерьевич
к.ф.-м.н., доцент
dmitryso@microsoft.com
Факультет Прикладной математики и физики
Кафедра Вычислительной математики и программирования
Московский авиационный институт (государственный технический университет)
©2009 Сошников Д.В.

Опишем предикат нахождения всех
предков и/или потомков
ancestor(X,Y) :- parent(X,Y).
ancestor(X,Y) :- parent(X,Z),
ancestor(Z,Y).


Рекурсия
Один предикат может использоваться как для
нахождения предков, так и для нахождения потомков
2
©2009 Сошников Д.В.

Логически-эквивалентная формула?
(X)(Y) (parent(X,Y) 
(Z)parent(X,Z)ancestor(Z,Y))
 ancestor(X,Y))
ancestor(X,Y) :- ancestor(Z,Y),
parent(X,Z).
ancestor(X,Y) :- parent(X,Y).
3
©2009 Сошников Д.В.

Декларативная семантика программы
задается соответствующей формулой
предикатов
 т.е. соответствует «общечеловеческому»
декларативному смыслу описания


Процедурная семантика определяется
механизмом вывода логического
интерпретатора
При реализации реальных программ
приходится обращать внимание на
декларативную и процедурную семантику
4

©2009 Сошников Д.В.

Располагать вначале нерекурсивное
правило, затем рекурсивное
Располагать рекурсивный вызов ближе к
концу правила, чтобы к моменту вызова
как можно больше переменных уже
конкретизировалось.
5
©2009 Сошников Д.В.


Вспомним логику предикатов
Посмотрим, как можно на ее основе создать систему
программирования
 (хотя сама логика – неразрешима!)
Изучим различные стратегии логического вывода
Синтаксис Пролога более формально
Списки, деревья
Логическое программирование с отрицанием
Типизация, язык Mercury, доказательства программ и вывод
типов
 Решение логических задач
 Решение задач методом поиска в пространстве состояний
 Приложения





 компьютерная алгебра
 анализ естественных и искусственных языка
 Экспертные системы
6
Усовершенствуйте пример с родословным
деревом, чтобы можно было для любых
двух человек определять их степень
родства.

(Hint: размышляйте в терминах
нормальных форм баз данных)
©2009 Сошников Д.В.

7
8
©2009 Сошников Д.В.
9
©2009 Сошников Д.В.
©2009 Сошников Д.В.

Аристотель: «Наука логики»
 Силлогизмы
▪ Все люди смертны
▪ Сократ – человек
▪ => Сократ – смертен
▪ Все математики изучали мат.лог.
▪ Вася - математик
▪ => Вася изучал мат.логику
 Один из 64-х видов силлогизмов, 19 модусов
10




©2009 Сошников Д.В.

Аристотель
Джордж Буль, де Морган
Фреже (понятие квантора, предиката)
Пеано (формализация арифметики)
Н.Бурбаки
11
12
©2009 Сошников Д.В.
13
©2009 Сошников Д.В.

©2009 Сошников Д.В.

Алфавит: {0,…,9,*,+,(,),}
ППФ:
 <цифра> ::= 0 | 1 | … | 9
 <число> ::= <цифра> | <цифра><число>
 <оператор> ::= + | *
 <выражение> :== <число> | (<выражение>) |
<выражение><оператор><выражение>
14
©2009 Сошников Д.В.

Аксиомы:
 <число>*1 = <число>
 <число>*0 = 0
…

Пример вывода:
 (12+0)*1 -> 12+0 -> 12
15
©2009 Сошников Д.В.
Формальная система имеет смысл, когда ее
формулам придается некоторая семантика
 Семантика задается с помощью
интерпретации
 Вывод в формальной системе обычно
сохраняет интерпретацию
 Пример:

 I : ППФ –> N
 F ├ G => I(F) = I(G) [ F ╞ G ] (корректность)
 F ╞ G => F ├ G – неверно (неполнота)
16
17
©2009 Сошников Д.В.

©2009 Сошников Д.В.

Если Петя опоздает на работу, то его уволят
или сделают выговор. Петя опоздает, если не
придет автобус, или не прозвонит будильник.
Обозначим:
 Опоздание: l
 Не пришел автобус: b
 Будильник не звонил: a
l  (ft)
(a  b)  l
 Уволили: f
 Сделали выговор: t
18
Будильник не прозвонил, Петя опоздал,
его уволили:
l  (ft)
=И
 { a=И, l=И, f=И, t=Л, b=Л }

©2009 Сошников Д.В.

(a  b)  l
=И
Будильник прозвонил, Петя опоздал, но
его не уволили и не сделали выговор:
 { a=И, l=И, f=Л, t=Л, b=Л }
l  (ft)
(a  b)  l
=Л
=И
19
Определение. Формула F называется общезначимой
(обозначается ╞ F), если она истина во всех
интерпретациях. Формула F называется выполнимой,
если она истина хотя бы в одной интерпретации.

Определение. Формула B следует из формулы A
(обозначают A╞ B), если в любой интерпретации, для
которой истинно A, оказывается истинным и B. Можно
распространить следствие на произвольное конечное
множество высказываний следующим образом: A1,...,An╞
B означает A1...  An╞ B.

Теорема. A╞ B <=> ╞ A B
©2009 Сошников Д.В.

20

Надо добавить аксиомы + правила вывода
Правило вывода:
 A, A  B ├ B

©2009 Сошников Д.В.

(modus ponens)
Аксиомы:
 p  (q  p)
 (p (q  r)) ((p  q) (p  r))
 (¬ p  ¬ q) (q  p)
21

©2009 Сошников Д.В.

Теорема о дедукции: G,A ├ B <=> G├ AB,
где G - произвольное множество формул
логики высказываний (в т.ч. множество
аксиом)
Следствие A╞ B <=>A├ B
22
Определение. Исчисление называется полным
(complete), если любая общезначимая формула A
выводима (т.е. ╞ A => ├ A)

Определение. Исчисление называется
формально (или внутренне) непротиворечивым
(consistent), если не существует такой формулы A,
что ├ A и ├¬ A.

Определение. Исчисление называется
семантически непротиворечивым или
достоверным (sound), если любая выводимая
формула является общезначимой, т.е. ├ A => ╞ A.
©2009 Сошников Д.В.

23
Нас интересует возможность доказать
общезначимость/выводимость формул

Синтаксический метод: пытаемся получить ├
A (построить вывод)
Семантический метод: пытаемся получить ╞
A (перебрать все интерпретации)


©2009 Сошников Д.В.

Исчисление разрешимо, если существует
алгоритм определения того, является ли
заданная формула общезначимой или нет
24


©2009 Сошников Д.В.
Если формула выводима, то всегда существует
алгоритм его построения за конечное число
шагов

Тем не менее, не любая формальная теория (т.е.
множество теорем) рекурсивно перечислима
Если формула не является теоремой (не
выводима), то может не существовать
алгоритма, устанавливающего, что формула не
является теоремой
25

©2009 Сошников Д.В.

Исчисление высказываний разрешимо
Доказательство: достаточно построить
алгоритм семантической проверки
общезначимости.
 Простой перебор 2n вариантов интерпретации
26
©2009 Сошников Д.В.

Расширим логику высказываний
следующими понятиями
 Предикат P(…) – высказывание, зависящее от
аргумента
 Аргументами могут быть термы: константы
(a,b,…) или функциональные термы вида
f(t1,…,tn), где ti – термы, f - функтор
 Кванторы  и 
▪ (x)P(x)
 Переменные x,y,…
27
28
©2009 Сошников Д.В.
©2009 Сошников Д.В.


Задается область интерпретации D.
После этого необходимо:
 Придать значения из области интерпретации всем
предметным константам ai, что описывается некоторой
функцией Ia: {ai}  D
 Придать некоторый смысл всем функциональным
символам fi(n) при помощи функции If: {fi(n)}  (Dn  D)
 Придать некоторые значения всем предикатным
символа Pi(n) в формуле, функцией Ip: {Pi(n)} (Dn {T,F})

Таким образом, интерпретация определяется как
совокупность I=<Ia, If, Ip>
29




Все люди смертны
Сократ – человек
=> Сократ – смертен
©2009 Сошников Д.В.


H(x)M(x)
H(сократ)
M(сократ)
D – множество всех существ и преметов /
множество людей
H(x) = { x – человек }
H(x) = { x – лысый}
M(x) = { x – смертен } M(x) = { x – умный}
30

©2009 Сошников Д.В.

Прикладное исчисление предикатов
расширяется некоторым набором аксиом
Например, формальная арифметика Пеано:
 0, s(x), +(x,y,z) – константа и функциональные
символы
 +(0,x,x)
 +(x,y,z) ├ +(s(x),y,s(z))

Пример:
 +(0,s(s(0)),s(s(0))) ├ +(s(0),s(s(0)),s(s(s(0)))) ├
+(s(s(0)),s(s(0)),s(s(s(s(0)))))
31
Теорема Исчисление предикатов непротиворечиво

Теорема Гёделя о полноте исчисления
предикатов. Чистое исчисление предикатов первого
порядка полно, т.е. любая общезначимая формула
выводима (╞ A => ├ A).

Теорема Гёделя о неполноте. Любая прикладная
теория первого порядка, содержащая формальную
арифметику, не является полной теорией, т.е.
существуют такие истинные формулы (╞ F), что ни F,
ни ¬ F не являются выводимыми в соответствующем
исчислении.
©2009 Сошников Д.В.

32




©2009 Сошников Д.В.

Пусть T – мн-во выводимых формул.
P(x) = { формула F : #F=x – невыводима }
Рассмотрим формулу F=P(#F)
Если FT, то она выводима => истинна =>
F-невыводима, т.е. FT
Если FT, то по определению P Fвыводима, т.е. FT
33
©2009 Сошников Д.В.
(теорема,
истина)
(теорема,
ложь)
(нетеорема,
истина)
(нетеорема,
ложь)
34
©2009 Сошников Д.В.

Возможно ли перебрать все
интерпретации?
35

©2009 Сошников Д.В.

Для любого множества формул есть
множество интерпретаций
Для многих вопросов естествено
рассматривать т.н. Эрбрановскую
интерпретацию
 D – эрбрановский универсум H=Hi
▪ H0 = {a,b,….}, Hi=Hi-1  {f(j)(t1,…,tn) | tiHi}
 Функции и константы интерпретируются самими
собою
 Интерес представляет только интерпретация
предикатов
36
Множество возможных Эрбрановских
интерпретаций счетно

Теорема Чёрча. Исчисление предикатов
является неразрешимой теорией, т.е. не
существует алгоритма установления
общезначимости произвольной формулы
логики предикатов.
©2009 Сошников Д.В.

37
Возвращаться к синтаксическому способу
доказательства

Рассматривать менее выразительное
подмножество логики предикатов
©2009 Сошников Д.В.

38
Download