Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis STUCZNA INTELIGENCJA Elementy programowania w logice Literatura [1] Clocksin W.F, Mellish C.S., Prolog. Programo- -wanie, Wyd. Helion, Gliwice, 2003. [2] Bartoszek J., Cybulka J., Programowanie deklaratywne, Wydawnictwo PP, 1999. [3] Brzykcy G., Meissner A., Programowanie w Prologu i programowanie funkcyjne, Wyd. PP, 1999. [4] Nilsson U., Małuszyński J., Logic, Programming and Prolog (2ed), John Wiley & Sons Ltd, 1995. [5] Sterling L., Shapiro E., The Art of Prolog, The MIT Press, 1999. [6] Wójcik M.: Zasada rezolucji; teoria, praktyka, kierunki rozwoju; raport IPI PAN 662, czerwiec 1989. 1
Wprowadzenie programowanie w logice stanowi szczególny przypadek programowania deklaratywnego program jest opisem rozpatrywanego problemu, a nie opisem jego rozwiązania program ma postać skończonego zbioru klauzul, będących odpowiednimi formułami logiki pierwszego rzędu najpopularniejszym językiem programowania w logice jest Prolog przykładowe obszary zastosowań progr. w logice dedukcyjne bazy danych, systemy eksperckie transformowanie programów analiza języka naturalnego zalety programowania w logice stosunkowa łatwość weryfikowania intuicyjnej i formalnej poprawności programu zwolnienie (częściowe) programisty z obowiązku znalezienia rozwiązania problemu możliwość programowania na wysokim poziomie ogólności zwięzłość programu i krótki czas implementowania wady programowania w logice dość mała efektywność wykonywania programu pewna niekonwencjonalność stylu programowania. 2
Reguła rezolucji Def. (literał, literał pozytywny, literał negatywny) Literałem nazywa się formułę atomową lub formułę atomową z negacją. Formuła atomowa jest literałem pozytywnym, a formuła atomowa z negacją jest literałem negatywnym. Dowolne literały postaci A oraz stanowią parę literałów komplementarnych. Def. (klauzula) Klauzulą nazywa się dowolną formułę, przyjmującą jedną z wymienionych postaci: 1. ( x 1 )... ( x m ) L 1 L n dla n > 1, 2. ( x 1 )... ( x m ) L 1 3. Formuła pusta (tzw. klauzula pusta, oznaczana symbolem ) przy założeniu, że L 1,, L n dla n > 1 są dowolnymi literałami, nie zawierającymi żadnych zmiennych oprócz x 1,, x m dla m 1. Przyjmuje się, że kwantyfikatory w zapisie klauzuli mogą być pominięte. Def. (reguła rezolucji, rezolwenta, literał aktywny) Niech A B 1 B m oraz A C 1 C n będą dowolnymi klauzulami, gdzie A jest formułą atomową a B 1,, B m i C 1,, C n to dowolne literały. Regułę wnioskowania postaci A B 1 B m, A C 1 C n B 1 B m C 1 C n nazywa się regułą rezolucji. Formuła B 1 B m C 1 C n nosi nazwę rezolwenty a literały A oraz A noszą nazwę literałów aktywnych. 3
Unifikacja 2017 Adam Meissner Def. (przypisanie) Przypisaniem nazywa się parę x/t, gdzie x jest zmienną, zaś t jest dowolnym termem, który stanowi wartość przypisaną zmiennej x. Def. (podstawienie) Podstawieniem nazywa się skończony zbiór przypisań = {x 1 /t 1,..., x n /t n }, w którym wszystkie zmienne x 1,..., x n są różne i żadna zmienna x i (i = 1,, n) nie występuje w żadnym termie t j (j = 1,, n). W szczególnym przypadku podstawienie może być zbiorem pustym, co oznacza się za pomocą symbolu. Def. (wyrażenie) Wyrażeniem nazywa się formułę lub term. Def. (wynik zastosowania podstawienia) Niech W będzie dowolnym wyrażeniem a podstawieniem postaci = {x 1 /t 1,..., x n /t n }. Wynikiem zastosowania podstawienia do wyrażenia W (ozn. W ) nazywa się wyrażenie W = W powstające przez zastąpienie w wyrażeniu W wszystkich wystąpień każdej zmiennej x i takiej, że x i /t i przez term t i. Def. (złożenie podstawień) Niech = {x 1 /t 1,..., x n /t n } i = {y 1 /s 1,..., y m /s m } będą podstawieniami. Podstawienie nazywane złożeniem podstawień i (ozn. = ), uzyskuje się ze zbioru {x 1 /t 1,..., x n /t n, y 1 /s 1,..., y m /s m } poprzez usunięcie wszystkich przypisań x i /t i, takich że x i t i oraz wszystkich przypisań y j /s j, takich że y j {x 1,..., x n }. 4
Def. (ogólność podstawienia) Podstawienie jest tak samo lub bardziej ogólne niż podstawienie, jeżeli istnieje takie podstawienie, że =. Def. (unifikator, najogólniejszy unifikator) Podstawienie nazywa się unifikatorem wyrażeń U i W, jeżeli W = U. Podstawienie nazywa się najogólniejszym unifikatorem wyrażeń U i W, jeżeli dla każdego podstawienia będącego unifikatorem U i W istnieje takie podstawienie, że =. Przykład 1 oznaczenia: p symbol predykatowy; a, b, c stałe; r, v, w, x, y, z zmienne; f, g symbole funkcyjne; W = p(x, x, y, z), = { x/a, y/g(b), z/v }, W = p(a, a, g(b), v), = { x/f(y,v), r/z }, = { x/a, y/b, v/c, w/c, z/r }, = { x/f(b,c), y/b, v/c, w/c, z/r}. Unifikatorami zbioru wyrażeń { p(a, x, y), p(z, b, y) } są np. podstawienia { x/b, y/c, z/a } lub { x/b, y/d, z/a }. Najogólniejszym unifikatorem tego zbioru jest podstawienie {x/b, z/a}. 5
Strategie wnioskowania rezolucyjnego Def. (rezolucja liniowa) Rezolucja liniowa jest to strategia wnioskowania za pomocą reguły rezolucji, w której każdą, kolejną parę przesłanek tworzą następujące dwa elementy: (1) w pierwszym kroku - negacja hipotezy, w każdym kolejnym kroku - rezolwenta uzyskana w kroku poprzednim, (2) dowolny aksjomat, negacja hipotezy lub dowolna rezolwenta skonstruowana wcześniej. Przykład 2 (zastosowanie rezolucji liniowej) teoria : {A 1 A 2, A 1 A 2 } hipoteza: A 1 A 1 A 1 A 2 A 2 A 1 A 2 A 1 A 1 Def. (rezolucja źródłowa) Rezolucja źródłowa jest to strategia wnioskowania za pomocą reguły rezolucji, w której każdą, kolejną parę przesłanek tworzą następujące dwa elementy: (1) w pierwszym kroku - negacja hipotezy, w każdym kolejnym kroku - rezolwenta uzyskana w kroku poprzednim, (2) dowolny aksjomat. 6
Przykład 3 (niepełność rezolucji źródłowej) teoria : T = {A 1 A 2, A 1 A 2 } hipoteza: A 1 A 1 A 1 A 2 A 1 A 1 A 2 A 2 A 1 A 2 A 2 A 1 A 2 A 1 A 1 Hipotezy A 1, dowodliwej w teorii T, nie można udowodnić za pomocą rezolucji źródłowej (tj. uzyskać klauzuli pustej) bez względu na sposób konstruowania wywodu (czyli kolejność wyboru przesłanek). Rezolucja źródłowa dla klauzul horna Def. (klauzula Horna) Klauzula Horna jest to dowolna klauzula, zawierająca co najwyżej jeden literał pozytywny. Def. (implikacyjna postać klauzuli Horna) Dowolną klauzulę Horna A A 1 A m, gdzie A oraz A 1,, A m są formułami atomowymi, można zapisać w postaci A A 1 A m lub równoważnie ( x 1 )... ( x n ) (A ( y 1 )... ( y p ) A 1 A m ) gdzie x 1,, x n to wszystkie zmienne występujące w formule A a y 1,, y p są wszystkimi zmiennymi, które występują wyłącznie w formule A 1 A m. 7
Def. (SLD-rezolucja) Rezolucja źródłowa w zbiorze klauzul Horna z określoną strategią wyboru literału aktywnego nosi nazwę SLD-rezolucji [4] (ang. Linear resolution with Selection function for Definite clauses). Def. (nagłówek klauzuli, ciało klauzuli) Niech A A 1 A m będzie klauzulą Horna w postaci implikacyjnej. Formułę atomową A nazywa się nagłówkiem klauzuli, a koniunkcję atomów A 1 A m określa się mianem ciała klauzuli. Def. (fakt, reguła, klauzula pusta) W szczególnym przypadku ciało klauzuli może być formułą pustą; A klauzule takie nazywa się faktami. Dla rozróżnienia, klauzule o niepustych ciałach określa się mianem reguł. Klauzula o pustym ciele i pustym nagłówku reprezentuje klauzulę pustą, którą oznacza się symbolem. Def. (program w logice) Program w logice jest skończonym zbiorem faktów lub reguł. Def. (definicja predykatu w programie) Definicją predykatu o nazwie r i arności n (co oznacza się jako r/n) w programie P jest zbiór wszystkich klauzul z programu P, których nagłówki zawierają predykat r/n Def. (zapytanie, cel) Celem nazywa się klauzulę o pustym nagłówku A 1 A m Formuła A 1 A m nosi nazwę zapytania, a wchodzące w jej skład literały to podcele. 8
Przykład 4 2017 Adam Meissner Poniższy, przykładowy program w logice opisuje relacje rodzinne w pewnym zbiorze osób. ojciec(x, y) rodzic(x, y) mężczyzna(x) męski_potomek(x, y) rodzic(y, x) mężczyzna(x) męski_potomek(x, y) rodzic(y, z) męski_potomek(x, z) rodzic(adam, piotr) rodzic(ewa, piotr) rodzic(anna, wanda) rodzic(jan, wanda) rodzic(piotr, maria) rodzic(piotr, roman) rodzic(wanda, maria) rodzic(wanda, roman) mężczyzna(adam) mężczyzna(piotr) mężczyzna(jan) mężczyzna(roman) Przykłady zapytań do programu: męski_potomek(x, adam) - kto jest męskim potomkiem Adama? rodzic(wanda, x) - czyim rodzicem jest Wanda? Def. (odpowiedź) Niech B będzie dowolnym celem. Odpowiedzią dla zapytania B i programu P nazywa się najogólniejsze podstawienie, takie że P ( )B. 9
Def. (reguła SLD-rezolucji) 2017 Adam Meissner Niech A 1... A i... A m będzie dowolnym celem; niech będzie dany program, do którego należą klauzule A A 1... A n oraz A. Ponadto zakłada się, że istnieje podstawienie będące najogólniejszym unifikatorem atomów A i A i. Regułę SLD-rezolucji określa się następująco (w dwóch wariantach) A 1... A i... A m, A A 1... A n (A 1... A i 1 A 1... A n A i + 1... A m ) A 1... A i... A m, A (A 1... A i 1 A i + 1... A m ) Def. (wywód SLD-rezolucyjny) Niech B i oznacza dowolną koniunkcję literałów pozytywnych, a i niech będzie podstawieniem. Wywodem SLD-rezolucyjnym dla celu G i programu P nazywa się (być może nieskończony) ciąg par: ( B 0, 0 ), ( B 1, 1 ), ( B 2, 2 ),... gdzie B 0 = G, 0 =, zaś w stosunku do każdego elementu ( B i + 1, i + 1 ), gdzie i 0, przyjmuje się założenie, że istnieje klauzula C P i podstawienie takie, że formuła B i + 1 jest wnioskiem uzyskanym poprzez zastosowanie reguły SLD-rezolucji do wybranego aktywnego literału w B i i C przy użyciu najogólniejszego unifikatora, zaś i+ 1 jest złożeniem podstawień i, z którego zostały usunięte wszystkie przypisania zmiennych nie występujących w G. 10
Def. (dowód SLD-rezolucyjny) Dowodem SLD-rezolucyjnym dla celu G i programu P nazywa się wywód SLD-rezolucyjny dla G i P, którego ostatnim elementem jest para (, ). Def. (odpowiedź obliczona) Odpowiedzią obliczoną dla zapytania B i programu P, nazywa się podstawienie takie, że istnieje dowód SLD-rezolucyjny dla celu B i programu P, którego ostatnim elementem jest para (, ). Przykład 5 W przykładzie przedstawia się dowód SLD-rezolucyjny dla celu męski_potomek(x,adam) i programu z przykładu 4. ( męski_potomek(x,adam), ), ( rodzic(adam,x) mężczyzna(x), ), ( mężczyzna (piotr), {x/piotr}), (, {x/piotr}) Odpowiedzią na postawione zapytanie jest podstawienie {x/piotr} wchodzące w skład ostatniego elementu dowodu. Def. (drzewo wywodów SLD-rezolucyjnych) Drzewem wywodów SLD-rezolucyjnych dla programu P i celu G nazywa się drzewo, którego wierzchołkami są elementy wywodów dla P i G. Korzeniem drzewa jest para (G, ). Niech V będzie dowolnym wierzchołkiem drzewa, zawierającym rezolwentę z jednym, wybranym literałem aktywnym. Wierzchołek V przylega do wierzchołka V wtedy i tylko wtedy, gdy istnieje wywód dla P i G, w którym V i V występują jako kolejne elementy. 11
Przykład 6 Fragment (tj. niektóre gałęzie) drzewa wywodów dla celu męski_potomek(x,adam) i programu z przykładu 4; skróty: p męski_potomek, m mężczyzna, r rodzic, ad adam, ma maria, pi piotr, ro roman. ( p(x,ad), ) ( r(ad,x) m(x), ) ( r(ad,z) p(x,z), ) ( m(pi), {x/pi}) ( p(x,pi), ) (, {x/pi}) ( r(pi,x) m(x), ) sukces ( m(ro), {x/ro}) ( m(ma), {x/ma}) porażka (, {x/ro}) sukces Reprezentacja klauzul w Prologu reguła meski_potomek(x, Y) rodzic(y, X), mezczyzna(x) fakt mezczyzna(adam) cel meski_potomek(x, Y) 12
Przykład 7 program stypendysta(x):- student(x), bardzo_dobry(x). bardzo_dobry(x):- srednia(x,s), S >= 4.0. student(adam). student(jan). srednia(jan,4.3). srednia(adam,3.9). cel :- stypendysta(x). drzewo wywodów (:- stypendysta(x)., ) (:- student(x), bardzo_dobry(x)., ) (:- bardzo_dobry(adam)., {X/adam}) (:- bardzo_dobry(jan)., {X/jan}) (:- srednia(adam,s)., S>=4.0., {X/adam}) (:- srednia(jan,s)., S>=4.0., {X/jan}) (:- 3.9 >= 4.0., {X/adam}) (:- 4.3 >= 4.0., {X/jan}) porażka odpowiedź = { X/jan} (, {X/jan}) sukces 13