Normalformen der Prädikatenlogik prädikatenlogische Ausdrücke können in äquivalente Ausdrücke umgeformt werden Beispiel "X (mensch(x) Æ sterblich(x)) "X (ÿ mensch(x) sterblich(x)) "X (ÿ (mensch(x) Ÿ ÿ sterblich(x))) ÿ $ X (mensch(x) Ÿ ÿ sterblich(x))) Normalformen für prädikatenlogische Ausdrücke? Klauselform 1
Normalformen: Pränexform Pränexform Ein prädikatenlogischer Ausdruck ist in Pränexform, wenn er die Form Q 1 X 1 (Q 2 X 2... (Q n X n (A)...) hat, wobei Q i Quantoren sind, X i Variable und A keine Quantoren enthält. Beispiel ÿ "X (p(x,y)) Ÿ q(u) Ÿ ÿ ("Z (r(z)) s(w)) [Regel: ÿ "X (p(x)) $X (ÿ p(x))] [Regel: ÿ (P Ÿ Q) (ÿ P ÿ Q)] $X (ÿ p(x,y)) Ÿ q(u) Ÿ ÿ "Z (r(z)) Ÿ ÿ s(w) [Regel: ÿ ("X (p(x))) $X (ÿ p(x))] $X (ÿ p(x,y)) Ÿ q(u) Ÿ $Z (ÿ r(z)) Ÿ ÿ s(w) [Regel: ($X P) Ÿ Q $X (P Ÿ Q)] [Regel: Assoziativität von Ÿ] $X $Z (ÿ p(x,y) Ÿ q(u) Ÿ ÿ r(z) Ÿ ÿ s(w)) Zu jeder prädikatenlogischen Formel gibt es (mindestens) eine logisch äquivalente Pränexform. Klauselform 2
Normalformen: Klauselform Klauselform Ein geschlossener prädikatenlogischer Ausdruck ist in Klauselform, wenn er die Form "X1 ("X2..."Xn A)...) hat, wobei Xi alle Variablen sind, die in A auftauchen, A keine Quantoren enthält und die Form einer Disjunktion von atomaren Ausdrücken oder deren Negation hat. Beispiel Ausdruck "X (mensch(x) Æ sterblich(x)) Pränexform wie gegeben Klauselform "X (ÿ mensch(x) sterblich(x)) Klauselform 3
Umwandlung in Klauselform Eine Menge von prädikatenlogischen Ausdrücken kann in eine Menge von Klauseln transformiert werden, die genau dann konsistent ist, wenn die Ausgangsmenge konsistent ist. Die Umwandlung eines Ausdrucks in Klauselform geschieht in 8 Schritten Beispiel " X (" Y p(x, Y) Æ (" Y (q(x, Y) Æ r(x, Y)))) 1. Wir eliminieren Æ und erhalten " X ( " Y p(x, Y) (" Y ( q(x, Y) r(x, Y)))) [Regel: (p Æ q) ( p q)] 2. Wir verteilen die Negationen, sodass jede Negation nur auf ein Atom wirkt, und erhalten " X ($ Y p(x, Y) $ Y (q(x, Y) Ÿ r(x, Y))) [Regel: ÿ "X (p(x)) $X (ÿ p(x))] [Regel: ÿ $X (p(x)) "X (ÿ p(x))] [Regel: p p] [Regel: De Morgan] 3. Wir benennen die Variablen um, sodass jede Variable nur einmal quantifiziert wird, und erhalten " X ($ Y p(x, Y) $ Z (q(x, Z) Ÿ r(x, Z))) Klauselform 4
Umwandlung in Klauselform 4. Wir eliminieren alle existentiellen Quantoren. Wenn ein existentieller Quantor nicht im Gültigkeitsbereich eines universellen Quantors vorkommt, ersetzen wir jedes Auftauchen der quantifizierten Variablen durch eine bisher nicht verwendete Konstante (Skolemkonstante). [Regel: $ X p(x) Æ p(a)] Wenn ein existentieller Quantor im Gültigkeitsbereich universeller Quantoren vorkommt, dann ist es möglich, dass die existentiell quantifizierte Variable von den universell quantifizierten abhängt. Wir ersetzen sie daher durch eine bisher nicht verwendete Funktion der universell quantifizierten Variablen (Skolemfunktion). [Regel: " X ($ Y p(x, Y)) Æ " X p(x, f(x))] Ergebnis für das Beispiel: " X ( p(x, f1(x)) (q(x, f2(x)) Ÿ r(x, f2(x)))) 5. Alle verbleibenden Variablen sind nun universell quantifiziert. Wir können die universellen Quantoren daher auch fortlassen. Alle Variablen werden implizit als universell quantifiziert betrachtet. p(x, f1(x)) (q(x, f2(x)) Ÿ r(x, f2(x))) Klauselform 5
Umwandlung in Klauselform 6. Wir bringen den Satz in konjunktive Normalform d.h. eine Konjunktion von Disjunktionen. ( p(x, f1(x)) q(x, f2(x))) Ÿ ( p(x, f1(x)) r(x, f2(x))) [Regel: (p (q Ÿ r)) ((p q) Ÿ (p r))] 7. Wir eliminieren alle konjunktiven Konnektoren und schreiben die Konjunktion als eine Menge von Klauseln. { p(x, f1(x)) q(x, f2(x)), p(x, f1(x)) r(x, f2(x))} 8. Zum Schluss benennen wir die Variablen noch einmal um, sodass keine Variable in mehr als einer Klausel auftaucht. { p(x, f1(x)) q(x, f2(x)), p(y, f1(y)) r(y, f2(y))} (NB. Wird in Prolog nicht immer gemacht.) Die Umwandlung eines Ausdrucks in Klauselform kann automatisch ausgeführt werden, z.b. bei der Umwandlung von natürlichsprachlichen Ausdrücken in Prädikatenlogik und dann in Klauselform. Klauselform 6
Klauselform der Prädikatenlogik Klausel ist Aussage der Form P 1 P 2... P n ÿ N 1 ÿ N 2... ÿ N m Pi und Ni sind logische Atome Pi positive Literale, ÿ N i negative Literale alle Variablen sind implizit vor der Klausel universell quantifiziert äquivalente Formen P 1 P 2... P n ÿ N 1 ÿ N 2... ÿ N m P 1 P 2... P n ÿ (N 1 Ÿ N 2 Ÿ... Ÿ N m ) N 1 Ÿ N 2 Ÿ... Ÿ N m Æ P 1 P 2... P n Notation der logischen Programmierung P 1 P 2... P n ÿ N 1 ÿ N 2... ÿ N m P 1, P 2,..., P n N 1, N 2,..., N m (Kommata auf der linken Seite bedeuten Disjunktion, auf der rechten Seite Konjunktion) Klauselform 7
Definite Klauseln definite Klauseln enthalten genau ein positives Literal H ÿ B 1 ÿ B 2... ÿ B n werden meistens als nach links gerichtete Implikation geschrieben H B 1, B 2,..., B n. (n 0) (Prolog: :- statt ) Notationen Atom H heisst Kopf Konjunktion B 1, B 2,..., B n Körper Kommata stehen für die logische Konjunktion alle Variablen sind implizit vor der Klausel universell quantifiziert Klausel heisst Regel, wenn n>0 Klausel heisst Fakt, wenn n=0 ( wird dann oft fortgelassen) Fakt kann als Regel mit dem Körper true betrachtet werden Klauselform 8
Definite Programme Ein definites Programm ist eine endliche Menge von definiten Klauseln. Beispiel pfad(x, Y) verbunden(x, Y). pfad(x, Y) verbunden(x, Z), pfad(z, Y). verbunden(a, b). Prolog-Programme sind definite Programme In Prolog werden üblicherweise die gleichen Variablennamen in den Klauseln eines Prädikats verwendet. Es wird dabei vorausgesetzt, dass X in den Klauseln für verschiedene Variablen steht. D.h. der Skopus einer Variablen ist die Klausel, in der sie steht. Klauselform 9
Zielklauseln, Anfragen Klauseln, die nur negative Literale enthalten "(ÿg 1 ÿg 2... ÿg m ) können zu ÿ$ X 1... X k (G 1 Ÿ G 2 Ÿ... Ÿ G m ) ("universelle Hülle) umgeformt werden, wobei X 1... X k die Variablen der Klausel sind Die Klausel behauptet, dass es keine Instanzen der Variablen X 1... X k gibt, sodass die Konjunktion der Ziele G i wahr ist. Eine solche Klausel wird definite Zielklausel genannt und als Anfrage verstanden, die durch Widerspruch beantwortet werden kann. Meistens geschrieben G 1, G 2,..., G n. (Prolog:?- G 1, G 2,..., G n.) Beispiel pfad(a, b). Definite Klauseln und definite Zielklauseln werden zusammen Horn-Klauseln genannt. Klauselform 10
Semantik definiter Programme Die Semantik eines definiten Programms P kann durch Modelltheorie definiert werden, d.h. durch die Abbildung von Elementen des Programms P auf Elemente eines Bereichs. Der einfachste Bereich, der nur von der Sprache L abhängt, in der P geschrieben ist, wird Herbrand- Universum U(P) genannt. Er besteht aus allen variablenfreien Termen, die aus den Konstanten und Funktionssymbolen von L gebildet werden können. Beispielprogramm P 1 pfad(x, Y) verbunden(x, Y). pfad(x, Y) verbunden(x, Z), pfad(z, Y). verbunden(a, b). Herbrand-Universum U(P 1 ) = {a, b} Herbrand-Basis B(P) ist die Menge aller variablenfreien Atome von P. B(P 1 ) = {pfad(a,a), pfad(a,b), pfad(b,a), pfad(b,b), verbunden(a,a), verbunden(a,b), verbunden(b,a), verbunden(b,b)} Klauselform 11
Semantik definiter Programme Jede Teilmenge der Herbrand-Basis B(P) wird als Herbrand-Interpretation I bezeichnet. I enthält die Atome, die als wahr interpretiert werden. Eine Herbrand-Interpretation I ist ein Herbrand-Modell eines Programms P genau dann, wenn I das Programm P erfüllt. Für P 1 gibt es 28 verschiedene Herbrand-Interpretationen I 1 = {} I 2 = {pfad(a,a)}... I M = {pfad(a,b), verbunden(a,b)}... von denen jede, die mindestens die Elemente von I M enthält, ein Herbrand-Modell von P 1 ist. Der Durchschnitt zweier Herbrand-Modelle ist wieder ein Herbrand-Modell. Der Durchschnitt aller Herbrand-Modelle ist I M und wird das kleinste Herbrand-Modell M(P 1 ) genannt. Klauselform 12
Semantik definiter Programme M(P 1 ) ist eindeutig und enthält als Elemente genau die variablenfreien Atome A, die die logische Konsequenz von P 1 sind, d.h. M(P 1 ) = {A Œ B(P 1 ) P 1 = A} Ein definites Programm hat genau dann ein Modell, wenn es ein Herbrand-Modell besitzt. Das minimale Herbrand-Modell M(P) eines Programms P kann auch als Fixpunkt einer Funktion T P definiert werden. T P bildet eine Herbrand-Interpretation I auf eine Herbrand-Interpretation T P (I) ab, die aus der Menge Atome A besteht, wobei A entweder eine variablenfreie Instanz eines Fakts aus P ist, oder der Kopf einer variablenfreien Instanz einer Regel aus P, deren Körper-Atome in I enthalten sind. Beispiel P 1 I 0 = {} I 1 = T P (I 0 ) = {verbunden(a, b)} I 2 = T P (I 1 ) = {verbunden(a, b), pfad(a, b)} I 3 = T P (I 2 ) = {verbunden(a, b), pfad(a, b)} = I 2 = M(P1) Der kleinste Fixpunkt von T P ist identisch mit dem kleinsten Herbrand-Modell M(P) von P. T P wird in Modellgeneratoren implementiert Klauselform 13