Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS 2002 1 Grundsätze der Logikprogrammierung.

Ähnliche Präsentationen


Präsentation zum Thema: "Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS 2002 1 Grundsätze der Logikprogrammierung."—  Präsentation transkript:

1 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Grundsätze der Logikprogrammierung

2 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Logische Programmierung ein Prologprogramm besteht aus Fakten, mit denen Eigenschaften von Objekten und Beziehungen zwischen diesen relational beschrieben werden „wenn-dann“ Regeln, mit denen logische Verhältnisse zwischen den Eigenschaften und Beziehungen beschrieben werden Prolog-Interpreter sucht nach Antworten und Lösungen für vom Benutzer eingegebene Anfragen Prolog-Interpreter setzt beim Scheitern eines Lösungsweges die Berechnungen zurück und führt den Suchvorgang an anderer Stelle fort in der deklarativen Sprache Prolog wird beschrieben, was das Problem ist. Das Wie der Lösung geschieht automatisch ohne Zutun des Programmierers

3 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Imperatives Programm REPEAT WRITE(´Number; ´); READLN(value); IF ((value > 0) AND (value < 3) OR (value > 5) AND (value < 10)) THEN WRITELN(´Valid value!´); ELSE WRITELN(´No valid value!´); WRITE(´More numbers? Type yes or no: ´); READLN(answer); UNTIL answer = no;

4 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Prolog-Programm possible_slot(0,3). possible_slot(5,10). valid_value(X) :- possible_slot(Low,High), X > Low, X < High. Mögliche Abfragen: | ?- valid_value(2) Yes | ?- valid_value(4) No

5 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Interferenzsysteme in der Logikprogrammierung für ein gegebenes Prolog-Programm P und einer Abfrage A 1,...,A n versucht man die existentielle Formel P  x A 1  …  A n zu beweisen es gilt: P  x A 1  …  A n gdw. P   x  (A 1  …  A n ) widersprüchlich ist Das von Prolog verwendete Resolutionskalkül basiert auf nur einer korrekten Interferenzregel ist nur auf einer speziellen syntaktischen Form, der Klauselform, anwendbar

6 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Klausellogik die Klausellogik verwendet zur Beschreibung der Formeln eine Normalform, in der logische Verknüpfungen auf die elementaren Operatoren ,  und  reduziert sind alle Quantoren entfernt sind ein Literal ist entweder eine atomare Formel (positives Literal) oder eine negierte atomare Formel (negatives Literal) eine Formel heißt in Klauselform, wenn Präfix eine Sequenz von All-Quantifizierungen und Matrix eine quantorenfreie Konjunktion von Formeln, die wiederum nur aus Disjunktionen von Literalen zusammengesetzt sind

7 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Klauselform  x  y (likes(chris,x)  ¬likes(x,logic))  likes(chris,logic)  likes(bob,logic)  (likes(x,y)  ¬likes(x,y)) Darstellung als Menge von Klauseln: {{likes(chris,x),¬likes(x,logic)}, {likes(chris,logic)}, {likes(bob,logic)}, {likes(x,y),¬likes(x,y)}}

8 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Klauselform eine Klausel ist Menge von disjunktiv verknüpften Literalen eine definite Klausel ist eine Klausel, die genau ein positives und beliebig viele negative Literale enthält A  ¬B 1 ...  ¬B n Eine definite Klausel ohne negative Literale heißt Einheitsklausel A eine negative Klausel enthält beliebig viele negative Literale und kein positives Literal ¬B 1 ...  ¬B n die leere Klausel  ist jene Klausel, die keine Literale enthält eine Hornformel ist eine definite oder negative Klausel

9 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Klauselform und Logikprogrammierung ein Logikprogramm P ist eine Menge von definiten Klauseln ein Fakt A in P steht für eine Einheitsklausel A eine Regel A :- B 1,..., B n in P steht für A  B 1 ...  B n  A  ¬B 1 ...  ¬B n da zum Beweis einer Anfrage A 1,..., A n ein Widerspruch gefunden werden muss, handelt es sich bei einer Anfrage um eine negative Klausel  x  (A 1 ...  A n )  ¬A 1 ...  ¬A n für ein Logikprogramm P und eine Abfrage A muss man zeigen, dass die Klauselmenge P  A widersprüchlich ist

10 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Aussagenlogische Resolution Sei p ein Literal und A und B jeweils eine Klausel: Amit p  A Bmit ¬p  B (A  B) – {p, ¬p} (A  B) – {p, ¬p} heißt Resolvente der Klauseln A und B bzgl. des Literals p wegen der Korrektheit und Widerlegungsvollständigkeit der Schnittregel gilt in der Aussagenlogik für eine Formel F: X F gdw. X  {¬ F} ist widersprüchlich gdw. X  {¬ F} S

11 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Resolutionsgraph {p} {¬p,q} {¬q,r} {¬r} {r} {r} {} {¬p} {¬p} {q} {  q} {  p,r}

12 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Unifikation eine Substitution  ist eine Abbildung, die endlich vielen Variablen x 1,...,x n (evtl. variablenbehaftete) Terme t 1,...,t n zuordnet:  = {x 1  t 1,..., x n  t n } eine Substitution  heißt Unifikator zweier Ausdrücke E 1 und E 2, falls E 1  E 2  existiert ein Unifikator für E 1 und E 2, so heißen E 1 und E 2 unifizierbar ein Unifikator  für E 1 und E 2 heißt allgemeinster Unifikator (mgu), falls für jeden anderen Unifikator  von E 1 und E 2 eine Substitution p existiert, derart dass gilt  p

13 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Unifikationsalgorithmus (MGU zweier Ausdrücke)  :=  ; S := t 1  t 2.NIL; failure := false; while S  (t 1  t 2.S´) != NIL begin S := S´; case t 1  VAR: if t 1 = t 2 then goto label else if t 1  var(t 2 ) then S := S {t 1  t 2 };  :=  {t 1  t 2 }; else failure := true; goto label2; end; case t 2  VAR: if t 2  var(t 1 ) then S := S {t 2  t 1 };  :=  {t 2  t 1 }; else failure := true; goto label2; end; case t 1 = t 2  Konst: goto label; case t 1 = f(u 1,..., u n ); t 2 = f(v 1,..., v n ): S := (u 1  v 2,..., u n  v n ).S; otherwise: failure := true goto label 2; label: end; label2: if failure = true then return error else return  ;

14 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Unifikation zweier Terme t 1 = f(Y,h(g(X,X),k(Y))) und t 2 = f(g(U,V),h(Z,k(Z)))

15 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Prädikatenlogische Resolution Sei p ein Literal und A und B jeweils eine Klausel: Amit p  A Bmit ¬q  B und p  q  ((A  B) – {p, ¬p})  mit dem allgemeinsten Unifikator  Regel darf nur auf Klauseln angewendet werden, die keine Variablen gemeinsam haben (eventuell Umbenennung nötig) Beispiel: 1. {P(X),Q(X,Y)} 2. {¬P(a),R(b,Z)} 3. {Q(a,Y),R(b,Z)} 1,2 mit der Substitution X  a.

16 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Resolutionsprozedur die prädikatenlogische Resolutionsregel ist syntaktisch korrekt und widerlegungsvollständig Widerlegungsvollständigkeit der Resolutionsregel: Eine Menge von Klauseln ist unerfüllbar, wenn aus ihr vermöge Resolution die leere Klausel  ableitbar ist. um also zu zeigen, dass ein vorgegebener Sachverhalt F logische Konsequenz einer konsistenten Klauselmenge F´ ist, sucht man nach einer Widerlegung der Komplementaussage ¬F. Vorgehensweise: man bringt ¬ F in Skolem-Normalform Sk( ¬ F) und versucht dann mit Resolution aus F´  Sk( ¬ F) die Klausel  abzuleiten

17 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Resolution auf Logikprogrammen Anfragen an ein Logikprogramm von der Form |? - A 1  A n werden interpretiert als Zielklauseln:  x A 1  A n für ein gegebenes Logikprogramm P versucht man mittels Resolution zu zeigen: P  {  x A 1  A n }  (**) Korrekt berechnete Antworten: Jede erfolgreiche Abarbeitung der Anfrage A 1  A n an das Logikprogramm P liefert eine Substitution  * mit: P  x((A 1  A n )  *) Die Antwortsubstitution  * wird durch Komposition der Unifikatoren in der Ableitung zu (**) konstruiert.

18 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Resolution auf Logikprogrammen Logikprogramm P C1: append(nil, W, W). C2:append(cons(U,X), Y, cons(U,Z)) :- append(X,Y,Z). Anfrage: ? append(t 1,t 2,t 3 ), wobei t 1,..., t 3 beliebige Terme seien enthalten die Terme t 1,..., t 3 keine Variablen, so ist die Abfrage äquivalent zu ¬ append(t 1,t 2,t 3 ) enthalten t 1,..., t 3 die Variablen X 1,..., X n, so gilt  X 1...  X n ¬ append(t 1,t 2,t 3 )  ¬  X 1...  X n append(t 1,t 2,t 3 )

19 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Resolutionsgraph Anfrage: Q1: ? append(cons(V,L1),L2,cons(V,cons(a,nil))) Q1C2 C1Q2C2 Q3:? append(X2,L2,nil)C1 

20 Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Beispiel: Antwortsubstitution  Q3:? append(X2,L2,nil)  Q1: ? append(cons(V,L1),L2,cons(V,cons(a,nil))) Q2: ? append(L1,L2,,cons(a,nil)) s1 = {U1  V, X1  L1, Y1  L2, Z1  cons(a,nil)} s2 = {L1  nil, L2  cons(a,nil)}s3 = {L1  cons(U2,X2), Y2  L2, U2  a, Z2  nil} s4 = {X2  nil, L2  nil} P  append(cons(V,L1),L2,cons(V,cons(a,nil)))  * mit  * = s1  s3  s4


Herunterladen ppt "Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS 2002 1 Grundsätze der Logikprogrammierung."

Ähnliche Präsentationen


Google-Anzeigen