SWP Logische Programme Alexander Felfernig, Stephan Gspandl Institut für Softwaretechnologie {alexander.felfernig,sgspandl}@ist.tugraz.at Institute for Software Technology
Inhalt Motivation Logische Programme (LP) Resolution Unifikation Logische Programme und Datenbanken Semantik Institute for Software Technology 2
LP: Motivation Komplexe und wissensintensive Anwendungen, bspw. Konfiguration von Autos Beispiel für Konfigurationswissensbasis: ~30.000 Komponenten ~17.500 Constraints ~Änderungsrate pro Jahr: 40% OO, prozedurale und funktionale Sprachen anwendbar, aber kostenintensiv (Faktor 10-1000)! Logische Programme: Trennung zwischen WAS? und WIE? Weitere Anwendungen? Institute for Software Technology 3
LP: Wissensrepräsentation Prädikatenlogik 1. Stufe (FOL) Programmierung: Formalisierung von Wissen der Anwendungsdomäne Programm = Reihe von Axiomen Berechnung = Beweis eines Statements Spezifikation des WAS? und nicht des WIE? Institute for Software Technology 4
Beispiel: (Bibel)Verwandtschaften Terach Sarah Abraham Nachor Haran Isaak Jiskah Milkah Lot "Abraham opfert Isaak": Ausschnitt eines Gemäldes von Laurent de La Hire (1606-1656). Institute for Software Technology 5
Formalisierung Prädikate: father, mother, male, female Verwendung für Relationen (mehrstellig) father(x,y).. X ist der Vater von Y mother(x,y).. X ist die Mutter von Y Eigenschaften (einstellig) male(x).. X ist männlich female(x).. X ist weiblich Institute for Software Technology 6
Wissensbasis (test.pl) father(terach,abraham). father(terach,nachor). father(terach,haran). father(abraham,isaak). father(haran,lot). father(haran,milkah). father(haran,jiskah). mother(sarah,isaak). male(terach). male(abraham). male(nachor). male(haran). male(isaak). male(lot). female(sarah). female(milkah). female(jiskah). Institute for Software Technology 7
Anfragen Stelle Fragen an die Wissensbasis Beispiele: 1. Ist Abraham der Vater von Isaak? 2. Wer ist die Mutter von Isaak? Antworten (direkt ableitbar): Zu 1.: JA Zu 2.: Sarah (ist die Mutter von Isaak) Institute for Software Technology 8
Beispiel in PROLOG BPROLOG: www.probp.com (MSDOS shell) Laden der Wissensbasis: consult(test). Abfragen Mutter von Isaak?- mother(x, isaak). X = sarah yes Kinder von Terach?- father(terach, X). X = abraham?; X = nachor?; X = haran yes Institute for Software Technology 9
Erweiterungen (Wissensbasis) Definition von Regeln Beispiel: brother(x,y) X ist der Bruder von Y, wenn X und Y die Kinder von einem Elternteil sind und X zusätzlich ein Mann ist. (parent(z,x) parent(z,y) male(x)) brother(x,y) (father(x,y) mother(x,y)) parent(x,y) Institute for Software Technology 10
Beispiel in PROLOG Erweiterte Prädikate X ist Bruder von Y brother(x,y):- parent(x,y):- parent(z,x), parent(z,y), male(x), X\=Y. father(x,y); mother(x,y). Brüder von Abraham?- brother(abraham,y). Y = nachor?; Y = haran? yes Institute for Software Technology 11
Weitere Beispiele Definiere natürliche Zahlen: 0 ist eine natürliche Zahl. Ist X eine natürliche Zahl, dann ist auch Ihr Nachfolger (s(x)) eine natürliche Zahl. Definiere Addition: 0 mit jeder beliebigen Zahl X addiert, ergibt X. Wenn X+Y=Z gilt, dann gilt auch s(x)+y=s(z). Institute for Software Technology 12
Beispiel in PROLOG 0 ist eine natürliche Zahl n(0). Ist X eine natürliche Zahl, dann ist auch Ihr Nachfolger (s(x)) eine natürliche Zahl n(s(x)):- n(x). /* n(x) n(s(x)) */ Abfrage?- n(x). X = 0?; X = s(0)?; X = s(s(0)) yes Institute for Software Technology 13
Beispiel in PROLOG (cont.) 0 mit jeder beliebigen Zahl Y addiert, ergibt Y plus(0,y,y). Wenn X+Y=Z gilt, dann gilt auch s(x)+y=s(z). plus(s(x),y,s(z)):- plus(x,y,z). Abfrage?- plus(s(0),s(0),s(s(0))). yes?- plus(s(0),x,s(s(s(0)))). X = s(s(0))? yes Institute for Software Technology 14
Zusammenfassung Deklarative Sichtweise: Beschreibung der gesuchten Lösung NICHT Beschreibung des Lösungswegs Wie können Anfragen automatisiert beantwortet werden? Institute for Software Technology 15
Beantworten von Anfragen ( erste Idee ) Versuche Anfrage aus den Regeln mittels logischer Schlüsse zu belegen. Ist das möglich, wird die Anfrage mit Ja beantwortet, ansonsten mit Nein. Beispiel: Sind Abraham und Haran Brüder? Formal: brother(abraham,haran)? Institute for Software Technology 16
father(terach,abraham) (father(x,y) mother(x,y)) parent(x,y) parent(terach,abraham) father(terach,haran) male(abraham) parent(terach,haran) (parent(x,y) parent(x,z) male(y)) brother(y,z) brother(abraham,haran) ANTWORT: Institute for Software Technology 17
Durchführung von logischen Schlüssen? Wie kann ich aus bestehenden Fakten und Regeln neues Wissen ableiten? In der Aussagenlogik: Beispiel: Aus regen und der Regel regen nass folgt nass. Formal: regen (regen nass) nass Institute for Software Technology 18
Schlüsse in der Aussagenlogik AL Interpretationsfunktion I: AL {T,F} Für beliebige Aussagen x,y gilt: I(x y)=t, wenn I(x)=I(y)=T I(x y)=t, wenn I(x)=T oder I(y)=T I(x y)=t, wenn I(x)=T und I(y)=T, oder wenn I(x)=F I( x)=t, wenn I(x)=F Institute for Software Technology 19
Schlüsse in AL (cont.) Beispiel: Was ist I(regen nass)? Der Wert hängt von der Interpretation der Aussagen ab, d.h. von I(regen) und I(nass). Zum Beispiel ist I(regen nass)=t, wenn I(regen)=F. Definition: Eine wahre Interpretation eines aussagelogischen Satzes heißt Modell. I(regen)=F, I(nass)=T ist ein Modell für obiges Beispiel. Institute for Software Technology 20
Schlüsse in AL (cont.) Ein aussagenlogischer Satz y folgt aus einem aussagenlogischen Satz x (x y), wenn alle Modelle von x auch Modelle von y sind. Beispiel: I(regen)=T, I(nass)=T ist das einzige Modell für regen (regen nass) und auch ein Modell fürnass. Daher gilt: regen (regen nass) nass Institute for Software Technology 21
Modus Ponens Regel Generalisierung der letzten Schlußfolgerung: x 1.. x n (x 1.. x n y) y Sie dient der Ableitung neuer Fakten aus der bestehenden Wissensbasis. Regeln dürfen nur die Form x 1.. x n y haben (Horn-Klauseln). Institute for Software Technology 22
Schlüsse in der Prädikatenlogik Unterschiede zwischen Prädikatenlogik und Aussagenlogik? Variablen Quantoren (All- und Existenzquantor) Objekte und Beziehungen Allgemeinere Aussagen sind möglich Einschränkung: Im Folgenden wird nur der Allquantor berücksichtigt. Institute for Software Technology 23
Variablensubstitution Variable können durch Werte substituiert werden. Eine Substitution ist eine Menge von Paaren x i t i, wo x i eine Variable und t i einen Term bezeichnet. Die Variable x i kommt dabei in der Menge nur maximal einmal vor und darf auch in keinem Term t k mit k i vorkommen. Institute for Software Technology 24
Definition (Term): Terme Konstanten sind Terme Variablen sind Terme Sind t 1,..,t n Terme und ist f ein n-stelliges Funktionensymbol, dann ist auch f(t 1,..,t n ) ein Term. Beispiele: 0, X, s(0), s(s(0)),... Institute for Software Technology 25
Substitutionsanwendung Sei Θ eine Substitution und t ein Term. Einen Term tθ erhält man, indem man alle Variablen x i in t, für die es einen Eintrag x i t i in Θ gibt, durch t i ersetzt. Der Term tθ wird auch Instanz von t genannt. Beispiel: Aus dem Term male(x) und der Substitution Θ={X terach} erhält man male(terach). Institute for Software Technology 26
Anfragen Anfrage: Wer ist die Mutter von Isaak? Formal: mother(x,isaak)? mother(x,isaak). {X sarah} mother(sarah,isaak) Institute for Software Technology 27
Beispiel - Wissensdarstellung Textuelle Angabe: 1. Alle Vögel sind Tiere. 2. Alle Adler sind Vögel. 3. Karl liebt Tiere. 4. Kurti ist ein Vogel. 5. Hansi ist ein Adler. Institute for Software Technology 28
Lösung tier(x) := vogel(x). vogel(x) := adler(x). liebt(karl,x) := tier(x). vogel(kurti). adler(hansi). Institute for Software Technology 29
Anmerkung zur Konversion von Texten in Logik (bzw. LP) Prädikate beschreiben Eigenschaften von Dingen oder deren Relation zu anderen Dingen. Wenn-Dann-Sätze werden zu Implikationen Wird ein Allquantor verwendet, folgt (oft/meist) eine Implikation. Institute for Software Technology 30