Сошников Дмитрий Валерьевич к.ф.-м.н., доцент [email protected] Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования Московский авиационный институт (государственный технический университет) Метод резолюции 2 ©2009 Сошников Д.В. Нет ориентации на результат Мы начинаем с известного множества формул и «расширяем» это множество Формула, которую требуется доказать, не учитывается На каждом шаге можно применить: Правило вывода к любым двум формулам Произвольную замену переменной 3 Сведение всех правил вывода + замены переменной к одному универсальному правилу вывода Замена многократного перебора минимально возможным Исходим из целевой формулы и пытаемся придти к исходным посылкам ©2009 Сошников Д.В. 4 ©2009 Сошников Д.В. Modus ponens: A, AB ├ B Modus tollens: A B, ¬ B ├ ¬ A Эквивалентная форма записи: ¬ AB, ¬ B ├ ¬ A Расширенное правило резолюции: L1 ... Ln ¬ A, M1 ... Mk A ├ L1 ... Ln M1 ... Mk Li, Mk – литеры (с отрицанием или без) 5 ©2009 Сошников Д.В. Если Петя опоздает на работу, то его уволят или сделают выговор. Петя опоздает, если не придет автобус, или не прозвонит будильник. l (ft) (a b) l l (ft) = ¬lft (a b) l = ¬(a b)l = (¬a¬b)l = (¬al)(¬bl) 6 ©2009 Сошников Д.В. Рассмотрим случай, когда будильник не прозвонил и Петю не уволили ¬lft ¬al ¬bl a ¬f ¬al ¬lt ¬at a t Получили вывод – Пете сделали выговор При этом мы все равно «думали», какие правила выбирать для вывода 7 ©2009 Сошников Д.В. Необходимо привести формулу к эквивалентному множеству дизьюнктов Возникает возможность «замены переменной» внутри предиката Переход к предваренной (пренексной) нормальной форме Сколемизация Приведение к коньюнктивной нормальной форме (КНФ) Получение множества дизьюнктов 8 ©2009 Сошников Д.В. Предваренной (или пренексной) нормальной формой формулы исчисления предикатов называется формула вида (⊠ x1)...(⊠ xn) F(x1,...,xn) (4) где ⊠ - квантор общности или существования, F(x1,...,xn) - формула, не содержащая кванторов. Для любой замкнутой формулы существует эквивалентная ПНФ (x)(P(x)((y)Q(x,y) ( y)R(x,y))) = (x)(P(x) (( y1)Q(x,y1) ( y2)R(x,y2))) = (x)( y1)( y2)(P(x)(Q(x,y1) R(x,y2))) 9 A= ( x)( y) Q(x,y) Рассмотрим формулу B = ( x) Q(x,f(x)) Свойство: A выполнима <=> B выполнима Алгоритм Сколемизации: ©2009 Сошников Д.В. Выбирается самое левое вхождение квантора существования. Пусть, например, это будет квантор по переменной xk. Выбирается не входящий в формулу F функциональный символ f(k-1), и все вхождения переменной xk в формулу F заменяются на f(k-1)(x1,...,xk-1), т.е. формула приобретает вид F(x1, ..., xk-1,f(k-1)(x1,...,xk-1),xk+1,...,xn). Процесс повторяется с шага 1 до полного исключения кванторов существования. 10 ©2009 Сошников Д.В. (x)(AB) = ((x)A) ((x)B) Сколемовская нормальная форма (x1)...(xn) (A1 … Am) невыполнима <=> невыполнимо множество дизьюнктов {(x1)...(xn) A1,…, (x1)...(xn) Am} Каждая формула Ai – это дизьюнкт L1.. Lk 11 ©2009 Сошников Д.В. Произвольную формулу логики предикатов A можно преобразовать в множество дизьюнктов SA : A несовместна <=> SA несовместна 12 ©2009 Сошников Д.В. Необходимо доказать формулу A, т.е. Г ├ A Для этого докажем несовместность ¬A, т.е. противоречивость Г {¬A} Преобразуем формулу к множеству дизьюнктов S Из множества дизьюнктов надо вывести противоречие, или пустой тождественно ложный дизьюнкт 13 (x) H(x) M(x) H(Сократ) Как применить правило резолюции в этим формулам? Необходимо совершить замену переменной x=Сократ Чтобы формализовать этот процесс, вводят понятие унификации ©2009 Сошников Д.В. ¬H(x)M(x) H(Сократ) 14 ©2009 Сошников Д.В. Подстановкой θ={X1/t1,...,Xn/tn} называется множество пар переменных Xi и соответствующих им термов ti, где ( i j) Xi Xj, ti Xi. Применением θ к формуле или терму F (обозначается F θ) называется формула или терм (строго определяемые рекурсивно), в которой все вхождения Xi заменены на соответствующие термы ti. Композиция унификаторов θ=στ, если для всех формул F : Fθ = (Fσ)τ Подстановка θ называется унификатором для формул или термов F и G, если F θ = G θ. Формулы, для которых существует унификатор, называются унифицирующимися. 15 ©2009 Сошников Д.В. f(X,g(a,X)) и f(b,Y) - {X/b,Y/g(a,b)} f(X,g(a,X)) и f(c,g(a,b)) – не унифицируются f(X,X) и f(Z,Y) – {X/Z, Y/Z} или {X/a,Z/a,Y/a} 16 ©2009 Сошников Д.В. Очевидно, что если существует унификатор θ формул F и G, то существует бесконечное множество унификаторов Определим отношение порядка : τ <=> σ : τ=σ Наиболее общий унификатор mgu(F,G)=sup { | F=G } Пример: f(X,Y) и f(g(Z),Z) 1={X/g(Z),Y/Z}, 2={X/g(a),Y/a,Z/a} 2={Z/a} 1 => 1 - наиболее общий 17 ©2009 Сошников Д.В. L1... Ln¬ A, M1... Mk B ├ (L1... LnM1... Mk) где =mgu(A,B) ¬H(x)M(x) и H(Сократ) mgu(H(x),H(Сократ)) = { x/Сократ } M(x){x/Сократ} = M(Сократ) 18 ©2009 Сошников Д.В. Линейная стратегия резолюции (L-резолюция) - это стратегия, при которой на каждом шаге резолюции в качестве одной из посылок используется формула, полученная на предыдущем. Для первого шага в качестве посылки берется добавленное к множеству формул отрицание доказываемого предложения. Резолюцией с выбирающим правилом (S-резолюцией) называется стратегия, при которой литера для применения резолюции выбирается в соответствии с некоторым правилом В упорядоченной стратегии резолюции значение имеет порядок литер в дизъюнктах, которых сохраняется при применении правила вывода; при этом разрешается в качестве общего дизъюнкта использовать только самую левую литеру. Упорядоченная стратегия является частным случаем S-резолюции. 19 ©2009 Сошников Д.В. ¬f ¬lft ¬al ¬bl a ¬f ¬a ¬l t t ¬b t t 20 Оказывается, резолюция для логики предикатов обладает свойством полноты и непротиворечивости только для определенного вида дизьюнктов Фразой Хорна (или дизъюнктом Хорна, Definite Clause) называется дизъюнкт вида A ¬ B1 ... ¬ Bn B1... Bn A ©2009 Сошников Д.В. 21 ©2009 Сошников Д.В. Нет возможности делать заключения с отрицаниями: «это число не делится на 3» Мы всегда имеем дело с «позитивными» утверждениями Из множества посылок может быть только одно заключение т.к. если бы было несколько, то возникало бы множество различных вариантов Логическое программирование с отрицаниями – позднее в нашем курсе! 22 ©2009 Сошников Д.В. ¬H(x)M(x) (1) H(Сократ) (2) Попробуем найти все решения, для этого добавим отрицание запроса ¬M(z) (3) 1 шаг: начинаем с (3), подходит (1) {z/x} 2 шаг: ¬H(z) (4) 3 шаг: (4) и (2), {z/Сократ} 23 ©2009 Сошников Д.В. speciality(X,tech_translator) :studied_languages(X),studied_technical(X). speciality(X,programmer) :studied(X,mathematics),studied(X, compscience). speciality(X,lit_translator) :studied_languages(X),studied(X,literature). studied_technical(X) studied_technical(X) studied_languages(X) studied_languages(X) ::::- studied(X,mathematics). studied(X,compscience). studied(X,english). studied(X,german). studied(petya,mathematics). studied(petya,compscience). studied(petya,english). studied(vasya,german). studied(vasya,literature). 24 25 ©2009 Сошников Д.В. 26 ©2009 Сошников Д.В. Для поиска решений в полученном дереве нужно совершить его обход Обход в глубину – движение по левой ветке с возвратом в случае необходимости Обход в ширину – одновременное рассмотрение нескольких решений ©2009 Сошников Д.В. 27 Теорема О достоверности SLD-резолюции. Пусть P - множество фраз Хорна, G - запрос. Если в процессе SLD-резолюции было получено решение в виде подстановки , то формула G будет являться логическим следствием P (P╞ G). Теорема О полноте SLD-резолюции. Пусть P логическая программа (множество фраз Хорна), G запрос. Если P╞ Gσ, то существует SLDрезолютивный опровергающий вывод G с вычисляемой подстановкой , такой, что G является частным случаем Gσ. ©2009 Сошников Д.В. 28 ©2009 Сошников Д.В. На прошлой лекции мы видели, что в некоторых случаях решение не находится! 29 30 ©2009 Сошников Д.В. 31 ©2009 Сошников Д.В. ©2009 Сошников Д.В. Теорема о полноте гарантирует присутствие всех решений в (потенциально бесконечном) дереве вывода Более «правильный» обход дерева позволяет во многих случаях находить такие решения даже для бесконечных деревьев Хотя всегда можно построить контр-пример! Процедурная семантика языка должны учитывать стратегии генерации и обхода дерева вывода 32 33