GRUNDLAGEN DER LOGISCHEN PROGRAMMIERUNG “Computational Logics” Die Logik ist Grundlagendisziplin aller Wissenschaften und ein wesentliches methodisches Mittel der Theoriebildung, insbesondere zur Aufstellung und Durchführung von Definitionen, Behauptungen und Beweisen. Ursprünglich: Logik als Theorie der (rationalen) Argumentation — in geregelten Diskursen ist über die Zulässigkeit von Argumenten und die Geltung von Behauptungen zu entscheiden. Bei der Wahl der logischen Sprache für die Modellierung sind zu unterscheiden die Definitionen für • die formale Sprache Syntax und Semantik Ausdruckskraft • das Schlussfolgerungsproblem (Inferenzproblem) Entscheidbarkeit Komplexität Klassische Einteilung der Logik: Lehre vom • Begriff (⇒ Prädikation und Abstraktion, Definitionslehre) • die Problemlösungs-Prozedur Korrektheit und Vollständigkeit (asymptotische) Komplexität • Urteil (⇒ Elementarsatz und zusammengesetzte Aussagen) • Schluss (... ⇒ formale Logik) G. Görz, FAU, Inf.8 11–1 G. Görz, FAU, Inf.8 Zur besonderen Rolle der Logik in der Informatik 11–3 Die ideale “Computational Logic” • Mittel zur Modellierung und Spezifikation: Analyse und Darstellung. • hat hinreichende Ausdruckskraft • Ableiten von Aussagen, Beweisen von Eigenschaften: Inferenz als konstruktives Herstellen logischer Beziehungen zwischen Prämissen und Konklusionen. • mit entscheidbaren Inferenzproblemen • Disziplingeschichtlich: Fragestellungen und Methoden der Logik als eine wichtige Wurzel der Informatik. • mit effizienten Inferenzprozeduren — möglicherweise sub-optimal • Methodisch: Repertoire von Methoden und Theorien für nahezu alle Teilgebiete der Informatik. Die Wahl der konkreten logik-sprachlichen Mittel ist stets ein Kompromiss zwischen Ausdruckskraft und Traktabilität. • mit korrekten und vollständigen Inferenzprozeduren • Darüberhinaus: Logik als ausführbare Spezifikationssprache: Logik-orientierte Programmierung. G. Görz, FAU, Inf.8 11–2 G. Görz, FAU, Inf.8 11–4 Rekapitulation: Formale Logik Logikkalküle (Klassischer Ansatz) Fundamentale Unterscheidung: Wahrheit (Semantik) und Beweisbarkeit (Syntaktische Ableitung) Ergänzende Literatur: Formale Theorie T : • Schöning, U.: Logik für Informatiker. Mannheim: BI (HTB), 1992 1. Symbole, Ausdrücke 2. Wohlgeformte Formeln (wff) ⊂ Ausdrücke • Davis, R.: Logic, Deduction, and Computation. New York: Computer Science Press, 1989 3. Schlußregeln (Relation auf wffs), insbesondere Modus Ponens (Subjunktions-Elimination) • Hogger, C.J.: Essentials of Logic Programming. Oxford: Clarendon Press, 1990 G. Görz, FAU, Inf.8 α → β, β 11–5 G. Görz, FAU, Inf.8 11–7 Logik erster Stufe (FOL): Grundbegriffe der Junktorenlogik Operationen können formal definiert werden (Beweistheorie) und erhalten semantische Eigenschaften (Wahrheitstheorie): • Ableitbarkeit, Beweis P Satz (Theorem): T P , ≡ |= P beweisbar in T • Interpretation; Wahrheitstafeln: alle Interpretationen; Junktoren als logische Funktionen (Gödelscher Vollständigkeitssatz) • Modell 1. Junktorenlogik (“Aussagenlogik”) Syntax — Semantik — Beweistheorie — Metatheorie • Erfüllbarkeit (“satisfiability”) von P : P ist in (mindestens) einer Interpretation wahr 2. Quantorenlogik (“Prädikatenlogik”) Syntax — Semantik — Beweistheorie — Metatheorie G. Görz, FAU, Inf.8 α • P allgemeingültig: in allen Interpretationen wahr, |= P (Tautologie) 11–6 G. Görz, FAU, Inf.8 11–8 Junktorenlogik: Metatheorie Quantorenlogik: Metatheorie • Deduktionstheorem: Seien Σ Menge von wffs, A, B wffs und Σ, A B, dann Σ A → B. Für Σ = ∅: Wenn A B, dann A → B. • Konsistenz • Vollständigkeit von L: Wenn |= P dann P (Wahrheit → Beweisbarkeit) • Widerspruchsfreiheit • Deduktionstheorem • Vollständigkeit • Widerspruchsfreiheit (“soundness”) von L: Wenn P dann |= P (Beweisbarkeit → Wahrheit) • S ↔|= S (Beweistheore vs. Modelltheorie) • UNENTSCHEIDBARKEIT (Semi-Entscheidbarkeit): Es gibt erfüllbare Formeln, die nur unendliche Modelle besitzen — das Erfüllbarkeitsproblem ist nicht entscheidbar • Damit: Wahrheit ≡ Ableitbarkeit, d.h. P ⇔|= P • Konsistenz • Entscheidbarkeit G. Görz, FAU, Inf.8 11–9 Grundbegriffe der Quantorenlogik (“Prädikatenlogik”) Untersuchung der Wahrheit oder Falschheit zusammengesetzter Formeln, deren atomare Bestandteile nicht mehr nur bestimmte Aussagen, sondern Aussageformen (parametrisierte Aussagen) sind. Variablen und Instantiierung (Einsetzung); Aussageformen legen durch Prädikate ausgedrückte Beziehungen zwischen ihren Argumenten fest. Theorien erster Stufe: Einschränkung von Argumenten auf Terme, die aus Konstanten, Variablen und Funktionsausdrücken konstruiert werden sowie Quantifikation über (einfachen) Variablen. G. Görz, FAU, Inf.8 11–11 Die Resolutionsregel als abgeleitete Schlußregel • Modus Ponens oder Subjunktions-Elimination α → β, β α • Unit (Einheits-) RESOLUTION α ∨ β, ¬β α • RESOLUTION ¬α → β, β → γ α ∨ β, ¬β ∨ γ oder äquiv. α∨γ ¬α → γ G. Görz, FAU, Inf.8 11–10 G. Görz, FAU, Inf.8 11–12 Illustration: Widerspruchsfreiheit der Resolutionsregel (Junktorenlogik): Wahrheitstafel 1. A, A → B B durch Ableitung der leeren Klausel [ ] (Falsum) aus der Formelmenge {A, ¬A ∨ B, ¬B} (Formeln nach “Klauseln in konjunktiver Normalform” transformiert) G. Görz, FAU, Inf.8 2. A → B, B → C A → C analog durch {¬A ∨ B, ¬B ∨ C, ¬(¬A ∨ C)} = {¬A ∨ B, ¬B ∨ C, A, ¬C} 11–13 Mechanisierung der Deduktion: Inferenzalgorithmen auf der Basis der Resolutionsregel 11–15 Quantorenlogische Resolution (Robinson 1965) Problem: Anstelle von Aussagenvariablen liegen nun Terme mit (Objekt-) Variablen (und Funktionssymbolen) vor. • Vorwärts-Schließen: Liefert alle wahren Konsequenzen 1. Algorithmus zur Herstellung einer Normalform für die Formeln, der Klauselnormalform, genauer: Quantorenfreie skolemisierte pränexe Normalform. Im Prinzip sind alle Variablen allquantifizert, einsquantifizierte Variablen werden durch geeignete Funktionsterme ersetzt. • Rückwärts-Schließen: Überprüfung der Wahrheit einer Proposition • Schließen mit der Resolutionsregel: Widerlegungsbeweis (“refutation”): Beweis durch Widerlegung der negierten Proposition 2. Algorithmus zum schematischen (“Muster”)- Vergleich von Formeln in Klauselnormalform, wobei Variablen hier als Platzhalter fungieren: Unifikation Grundidee: Beweis von B aus den Fakten A1, A2, . . . und den Regeln R1, R2, . . ., indem man die Negation von B, also ¬B, zu A1, A2, . . . , R1, R2, . . . hinzufügt und einen Widerspruch ableitet. Resolution: Auflösung komplementärer Literale G. Görz, FAU, Inf.8 G. Görz, FAU, Inf.8 3. Beweisverfahren: Widerlegungsbeweis mit der Resolutionsregel als einziger Schlußregel 11–14 G. Görz, FAU, Inf.8 11–16 4. Theoretische Absicherung durch Herbrands Vollständigkeitssatz: Ein Satz ist unerfüllbar gdw. endliche Teilmenge des Herbrand-Universums inkonsistent ist. Anmerkung: Herbrand-Universum Die Herbrand-Domäne von A ist die Menge von Termen H, die folgendermaßen aus A konstruiert wird: 1. Ist a eine Konstante in A, dann a ∈ H; wenn A keine Konstanten enthält, wird ein beliebiges Konstantensymbol a in H aufgenommen. 2. Sind t1, . . . , tn Terme in H und f ein n-stelliges Funktionssymbol in A, dann f (t1, . . . , tn) ∈ H. Kanonische Form: Konjunktive Normalform Alle Formeln müssen in eine Form gebracht werden, dass sie als Prämissen der (verallgemeinerten) Resolutionsregel geeignet sind. Jede Formel ist eine Adjunktion von Literalen, die ganze Formelmenge eine “große” Konjunktion von Formeln: “Konjunktive Normalform” (CNF). Konvertierungsalgorithmus: 1. Subjunktionen eliminieren 2. Negationen nach innen verschieben 3. Variablen standardisieren (umbenennen) Das Herbrand-Universum von A ist die Menge aller Substitutionsinstanzen von A, die man durch Ersetzung jeder Variablen in A durch einen Term aus H erhält. G. Görz, FAU, Inf.8 11–17 5. Skolemisieren G. Görz, FAU, Inf.8 11–19 6. ∧ über ∨ verteilen (ausmultiplizieren) Beispiel: x a a f (a) f (a) a .. 4. Quantoren nach außen (links) verschieben y a f (a) a f (a) f (f (a)) .. R(a, x, f (x), y) R(a, a, f (a), a) R(a, a, f (a), f (a)) R(a, f (a), f (f (a)), a) R(a, f (a), f (f (a)), f (a)) R(a, a, f (a), f (f (a))) .. 7. Verschachtelte Konjunktionen und Adjunktionen einebnen Ggf. weiterer Schritt zur Herstellung der Subjunktiven Normalform: Adjunktionen in Subjunktionen verwandeln. Skolemisierung: Einführung von Skolemfunktionstermen für existentiell quantifizierte Variablen. Die Skolemisierung beruht auf der Überlegung, eine Bezeichnung für etwas einzuführen für etwas, dessen Existenz behauptet wird (allerdings: schwächer als volle Äquivalenz). Beispiel: x {P (x) → y [(Q(x, y) → P (x)) ∧ z (Q(y, z) → P (x))]} Zuerst wird → entfernt. Da die durch den Existenzquantor gebundene Variable y von x abhängt, wird die Skolemfunktion y = f (x) eingeführt. G. Görz, FAU, Inf.8 11–18 G. Görz, FAU, Inf.8 11–20 Unifikation entspricht einem beidseitigen “Pattern Matching”: Test von Bäumen auf Gleichheit. Zur Vermeidung von Namenskonflikten soll zuerst eine eindeutige Variablenumbenennung vorgenommen werden. Konjunktive Normalform: Beispiel 1. 2. 3. x (P (x) → y ((Q(x, y) → P (x)) ∧ z (Q(y, z) x (¬P (x) ∨ x (¬P (x) ∨ (¬Q(x, f (x)) ∨ P (x)) ∧ x y ((¬Q(x, y) ∨ P (x)) ∧ → P (x)))) z (¬Q(y, z) Sofern Unifizierbarkeit gegeben, soll UNIFY unter den unendlich vielen Unifikatoren den allgemeinsten Unifikator (MGU) liefern. ∨ P (x)))) z (¬Q(f (x), z) (Version des Unifikationsalgorithmus aus Russell/Norvig, Artificial Intelligence) ∨ P (x))) z ((¬P (x) ∨ ¬Q(x, f (x)) ∨ P (x)) ∧ (¬P (x) ∨ ¬Q(f (x), z) ∨ P (x))) 4. (¬P (x) ∨ ¬Q(x, f (x)) ∨ P (x)) ∧ (¬P (x) ∨ ¬Q(f (x), z) ∨ P (x)) 5. {¬P (x) ∨ ¬Q(x, f (x)) ∨ P (x), ¬P (x) ∨ ¬Q(f (x), z) ∨ P (x)} G. Görz, FAU, Inf.8 11–21 G. Görz, FAU, Inf.8 Unifikation 11–23 .0./&/0/&+* /+ )'" *! &!"*/& ( &# ,+..&(" 56 .0./&/0/&+* /+ )'" *! &!"*/& ( $&1"* 1-&(" +*./*/ (&./ +- +),+0*! 1-&(" +*./*/ (&./ +- +),+0*! /%" .0./&/0/&+* 0&(/ 0, .+ #- Eine Substitution θ ist eine Funktion von einer Menge von Variablen x1, . . . , xk in Terme t1, . . . , tk und wird notiert als θ = {x1/t1, . . . , xk /tk }. #&(0-" #&(0-" #&(0-" Die Anwendung einer Substitution θ auf einen Ausdruck e, SUBST(θ, e), ergibt einen neuen Ausdruck, eine Instanz von e, in dem jedes Vorkommen von xi durch das korrespondierende ti ersetzt ist. .0./&/0/&+* 1-&(" *4 "3,-"..&+* /%" .0./&/0/&+* 0&(/ 0, .+ #- Beispiel: SUBST({x/a, y/h(a, z)}, f (x, g(y))) = f (a, g(h(a, z))) 5 6 56 + 0-. *42%"-" &* #&(0-" !! 5 6 /+ Gibt es für zwei Ausdrücke p, q eine Substition θ, die beide in die selbe Instanz überführt, so heißt θ Unifikator: UNIFY(p, q) = θ, so dass SUBST(θ, p) = SUBST(θ, q) G. Görz, FAU, Inf.8 11–22 G. Görz, FAU, Inf.8 11–24 Resolution: Eine vollständige Inferenzregel Beispiel eines einfachen Resolutionsbeweises Die Resolutionsregel für den junktorenlogischen Fall (s.o.) kann gesehen werden als Sei folgende Formelmenge (“Wissensbasis”) gegeben: Konjunktive NF Subjunktive NF • Transitivität der Subjunktion. ¬P (w) ∨ Q(w) P (x) ∨ R(x) ¬Q(y) ∨ S(y) ¬R(z) ∨ S(z) P (w) → Q(w) True → P (x) ∨ R(x) Q(y) → S(y) R(z) → S(z) Modus Ponens gestattet, neue Primformeln abzuleiten, nicht neue Subjunktionen; also ist Resolution mächtiger. Verkettung mit Resolution: Beweis von S(A) aus der Wissensbasis — im letzten Schritt wurde T rue ⇒ S(A) ∨ S(A) vereinfacht Resolution ist eine Verallgemeinerung des Modus Ponens. (nach Russell/Norvig) • Schließen durch Fallunterscheidung, oder G. Görz, FAU, Inf.8 11–25 G. Görz, FAU, Inf.8 11–27 G. Görz, FAU, Inf.8 11–28 Verallgemeinerte Resolutionsregel (Adjunktionen — analog auch für Subjunktionen): Für Literale pi und qi mit UNIFY(pj , ¬qk ) = θ p 1 ∨ . . . p j . . . ∨ pm , , q 1 ∨ . . . q k . . . ∨ q n SUBST(θ, (p1 ∨ . . . pj−1 ∨ pj+1 . . . pm ∨ q1 . . . qk−1 ∨ qk+1 . . . ∨ qn)) G. Görz, FAU, Inf.8 11–26 Resolutionsbeweise: Beispiele Resolutionsstrategien: Effiziente Steuerung Verkettung mit Resolution ist mächtiger als Verkettung mit Modus Ponens, aber nicht vollständig (Versuche P ∨ ¬P aus leerer Formelmenge WB abzuleiten — worauf soll die Resolutionsregel angewandt werden??) • Unit Resolution: Eine der Elternklauseln muss unär sein (darf nur ein Literal enthalten) — sonst werden keine Resolventen erzeugt Refutation (Widerspruchsbeweis, reductio ad absurdum) ist eine vollständige Inferenzprozedur mit Resolution (zum Beweis von P wird ¬P zur WB hinzugefügt): (W B ∧ ¬P ⇒ False) ⇔ (W S ⇒ P ) • Input Resolution: Jede Resolvente muss mindestens eine Elternklausel aus der initialen Klauselmenge besitzen. Linear Resolution: Resolutionsschritte zwischen zwei Resolventen zugelassen, in denen eine ein “Vorgänger” der anderen ist. Im Beispiel: Um S(A) zu beweisen, wird ¬S(A) (in subjunktiver Normalform: S(A) ⇒ F alse) zur Formelmenge WB hinzugefügt. Anwendung der Resolution, bis ein Widerspruch erreicht wird: T rue ⇒ F alse • Set of Support: Aufteilung der Klauselmenge in solche, die aus den Voraussetzungen, und solche die von der negierten Behauptung stammen; ein Widerspruch kann nur unter Beteiligung der negierten Behauptung entstehen! Modus Tollens: α → β, ¬β ¬α Falls α wahr, dann β, ¬β [] G. Görz, FAU, Inf.8 etc. 11–29 G. Görz, FAU, Inf.8 11–31 LOGIK-ORIENTIERTE PROGRAMMIERUNG Ziel: Zerlegung eines Berechnungsproblems in zwei Teilprobleme: 1. Was ist zu berechnen? 2. Wie ist die Berechnung durchzuführen? Anders gefragt: Ist es möglich, Spezifikationen als ausführbare Ausdrücke einer Programmiersprache zu formulieren? Die logik-orientierte Programmierung erreicht dies durch Auszeichnung einer Teilsprache der formalen Logik, die ausdrucksstark genug ist, um darin Berechnungsprobleme auszudrücken, aber gleichzeitig “schwach” genug ist, um eine effiziente und kontrollierbare prozedurale Interpretation zu haben. G. Görz, FAU, Inf.8 11–30 G. Görz, FAU, Inf.8 11–32 Ein Programm in einer logik-orientierten Programmiersprache soll ein effektives Programm sein, das auf einem Rechner ausgeführt werden kann: Beispiel: • Die Ablaufsteuerung (wie) wird erreicht durch die Auswertungs-Reihenfolge der Sprache. Ausgehend von einer Ziel-Formel muss es möglich sein, die Anordnung ihrer Teilformeln und der korrespondierenden Teilziele so zu wählen, dass die Berechnung effizient erfolgen kann. (define (append x y) (if (null? x) y (cons (car x) (append (cdr x) y)))) • Das Ziel der Berechnung führt zu einem Ergebnis (was), das als eine einfache logische Folgerung aus dem (Logik-) Programm gesehen werden kann. append funktional append relational durch folgende Regel: • Für jede Liste y ergibt append von ’() und y wieder y. • Für alle u, v, y, z ergibt append von (cons u v) und y die Form (cons u z), wenn append von v und y die Form z ergibt. Die Korrespondenz zwischen Prozedur und Regeln ist leicht zu sehen: Korrespondiere x (nichtleer) in der Prozedur mit (cons u v) in der Regel. Dann korrespondiert z in der Regel mit append von (cdr x) und y. G. Görz, FAU, Inf.8 11–33 Logik-orientierte Programmierung als relationale Programmierung G. Görz, FAU, Inf.8 11–35 PROLOG: Sprache für logik-orientierte Programmierung PROLOG benutzt eine echte Teilsprache der Quantorenlogik in Klausel-Normalform: HORN-Klauseln (nach Alfred Horn) Im Unterschied zur funktionalen Programmierung beruht die logik-orientierte Programmierung auf Relationen. Eine HORN-Klausel ist eine Klausel mit höchstens einem positiven Literal. Weitergehend als die gerichtete funktionale Berechnung (wohldefinierte Eingabeparameter führen zu einem eindeutigen Wert) sollen mit relationalen Ausdrücken der Form Bemerkung: Jede Klausel ∼ A1 ∨ . . . ∨ ∼ An ∨ B1 ∨ . . . ∨ Bk kann als Subjunktion geschrieben werden: (A1 ∧ . . . ∧ An) → B1 ∨ . . . ∨ Bk Horn-Klauseln: ∼ A1 ∨ . . . ∨ ∼ An ∨ B als: (relation <eingabeparam> <ausgabeparam>) bei hinreichender Angabe von Parametern • Berechnungen in beiden Richtungen erfolgen und • Ausdrücke mehr als einen Wert haben können (Nichtdeterminismus). G. Görz, FAU, Inf.8 11–34 (A1 ∧ . . . ∧ An) Antecedens Klauselrumpf G. Görz, FAU, Inf.8 → B Konsequens Klauselkopf 11–36 PROLOG-Notation HORN-Klauseln (2) Vier Arten von Horn-Klauseln 1972 — R. Kowalski (London): Algorithm = Logic + Control 1973 — A. Colmerauer et al. (Marseille): Erstes Prolog-System 1. Einheitsklauseln: Kein Antecedens, nur Konsequens Notation 2. Nicht-Einheitsklauseln: Antecedens und Konsequens Q :- P. :- P. Q. , 3. Negative Klauseln: Nur Antecedens, kein Konsequens 4. Leere Klausel: [] (1) und (2): Definite Klauseln G. Görz, FAU, Inf.8 P →Q P → →Q ∧ “Q if P” “goal” Logik-orientierte Programmierung besteht in der Definition von Relationen. 11–37 1. Einheitsklauseln B bzw. → B behaupten die Wahrheit des Konsequens: “Fakten”. G. Görz, FAU, Inf.8 11–39 Beispiel: Familienrelationen 2. Nicht-Einheitsklauseln A1 ∧ . . . ∧ An → B behaupten die Wahrheit des Konsequens, wenn das Antecedens wahr ist: “Regeln”. F ist Vater von C : father(F,C). M ist Mutter von C : mother(M,C). Familienbaum (Fakten): “data base” father(paul, rob). father(rob, bev). father(rob, theresa). father(jeff, aaron). mother(mary, rob). mother(dorothy, bev). mother(dorothy, theresa). mother(theresa, aaron). 3. Negative Klauseln A1 ∧ . . . ∧ An → bzw. ∼ (A1 ∧ . . . ∧ An) verneinen (negieren) die Wahrheit des Antecendens: “Anfragen” (Ziele, “goals”). G. Görz, FAU, Inf.8 statt statt statt statt 11–38 G. Görz, FAU, Inf.8 11–40 Regeln Anfragen Unter welchen Bedingungen ist das Antecedens wahr gemäss: Nicht alle Familienbeziehungen müssen explizit (extensional) repräsentiert, sondern können mittels allgemeiner Definitionen berechnet werden: parent(M,C) :- mother(M,C). • Zu bestimmen: Werte für die Variablen in [1], so dass [1] Konsequenz von P ist, d.h. gesucht ist konstruktiver Beweis von (∃x0, . . . , xk )A1 ∧ . . . ∧ An [2] aus P. parent(F,C) :- father(F,C). grandparent(Gparent, Gchild) :parent(Gparent,X), parent(X,Gchild). • Widerlegungsbeweis: Zeige, dass Konjunktion der Klauseln in P mit der Negation von [2] inkonsistent ist. Dann kann man schließen, dass [2] aus P folgt, da P als Menge von definiten Klauseln nicht inkonsistent sein kann. etc. G. Görz, FAU, Inf.8 11–41 G. Görz, FAU, Inf.8 11–43 • Die Negation von [2] kann umgeformt werden in (∀x0, . . . , xk )¬(A1 ∧ . . . ∧ An), [3] was eine andere Schreibweise ist für A1 ∧ . . . ∧ An → . [4] Anfragen an Datenbasis (Fakten und Regeln): 1. Ja/Nein-Fragen: z.B. Ist Rob Vater von Theresa? :- father(rob,theresa). • Ein konstruktiver Beweis der Inkonsistenz von [3] mit P wird ein Gegenbeispiel für die Allaussage [3] liefern, d.h. Werte v0, . . . , vk für die Variablen x0, . . . , xk , so dass P ∧ ¬(A1 ∧ . . . ∧ An) [5] falsch ist, wobei für jedes xi das entsprechende vi eingesetzt ist. 2. Fragen nach Wert(en), die die Bedingungen erfüllen: Wer ist Großelternteil von Theresa? :- grandparent(Gparent,theresa). • Daraus ergibt sich unmittelbar, dass [1] unter derselben Substitution der Variablen durch ihre (konstruktiv best.) Werte eine Konsequenz von P ist: Wer sind die Eltern von Rob? :- mother(M,rob) ; father(F,rob). bzw. :- parent(X,rob). G. Görz, FAU, Inf.8 • Gegeben sei eine Menge P von Fakten und Regeln (ein “Programm”) und eine Konjunktion A1 ∧ . . . ∧ An [1]. Sei P wahr. Dann muss ¬(A1 ∧ . . . ∧ An) falsch sein und damit [1] wahr mit den gegebenen Variablenwerten. 11–42 G. Görz, FAU, Inf.8 11–44 • Damit ist der konstruktive Beweis der ursprünglichen Anfrage (Existenzaussage) [2] aus dem Programm P abgeschlossen; d.h. [4] kann als Anfrage über die Wahrheit ihres Antecedens [1] relativ zum Programm P angesehen werden. PROLOG: Prozedurale Semantik Sprache der Hornklauseln als Programmiersprache: Jede Klausel wird als Prozedurdefinition interpretiert. Konsequens ist Prozedurname (mit Variablenliste), Antecedens ist Prozedurrumpf. Ein Hauptprogramm ist ein Prozedurrumpf ohne Prozedurkopf, d.h. Menge von Bedingungen, die — ohne Konklusion — zu erfüllen sind. Erfüllen von Bedingungen = ˆ Aufruf als Prozeduren. Ausführung eines Prozedurrumpfes: Aufruf der Folge von Prozeduren im Rumpf. G. Görz, FAU, Inf.8 11–45 PROLOG: Deklarative Semantik Eine atomare Formel ist stets Ausdruck einer Relation — benannt durch das Prädikat — zwischen den Termen, die Argument der Formel sind. Abhängig von den Werten der Formel ist sie wahr oder falsch. Die Terme (Konstanten, Variablen, komplexe Terme — konstruiert durch Funktionsanwendung) “repräsentieren” Objekte. Der durch Funktionsanwendung repräsentierte Wert ist ist ein Objekt; der durch Anwendung eines Prädikats repräsentierte Wert ist eine (wahre oder falsche) Aussage. Ein Hornklausel-Logikprogramm hat eine deklarative und eine prozedurale Semantik. Die deklarative Semantik wird von der Quantorenlogik übernommen: Hornklauseln sind Subjunktionen. G. Görz, FAU, Inf.8 11–47 Aufruf von Prozeduren durch Unifikation (“call by unification”): Ist Menge von Prozeduraufrufen gegeben, so ist einer auszuwählen und eine Prozedur (Klausel) zu suchen, deren Kopf (Konsequens) mit dem ausgewählten Aufruf unifiziert. Die unifizierende Substitution wird über der ganzen aktuellen Liste von Prozeduraufrufen und dem ganzen Rumpf der ausgewählten Prozedur berechnet. Dann wird der ursprüngliche Prozeduraufruf durch den Rumpf der ausgewählten Prozedur ersetzt. Ersetzung eines Ziels durch seine Teilziele: Rückwärtsverkettung . Hornklauselsprache: Eine formale und ausführbare Spezifikationssprache. G. Görz, FAU, Inf.8 11–46 G. Görz, FAU, Inf.8 11–48 Prozedurale Semantik: Beispiel Auswahl eines Aufrufs (hier: der zweite), Suche nach einer geeigneten Definition von mother. Nur ein Kandidat, Substitution ist [(theresa,X)]. Berechnung in der Logikprogrammierung: Ausführung von Zielen. Ziel (Hauptprogramm) Der Rumpf der ausgewählten Prozedur ist leer; es bleibt :- parent(G,theresa). Mit der ersten Klausel, die parent definiert, erhalten wir :- mother(G,theresa). :- grandparent(G,aaron). Mit Substitution [(dorothy,G)]: fertig! Alle Regeln werden gesucht, die grandparent als Consequens haben Hinweis: “Closed World Assumption” ⇔ not (s.u.) Hat Aaron ein Großelternteil? grandparent(Gparent, Gchild) :parent(Gparent,X), parent(X,Gchild). G. Görz, FAU, Inf.8 11–49 G. Görz, FAU, Inf.8 Die Substitution [(G,Gparent), (aaron,Gchild)] wird ausgeführt und der Aufruf ersetzt durch den Rumpf der grandparent-Prozedur nach Substitution: 11–51 Beispiel prozedurale Semantik (2) Überlegung :- parent(G,X), parent(X,aaron). Erfolgreiche Terminierung: Keine weiteren Schritte auszuführen. Die Antwort auf die ursprüngliche Frage ist in den berechneten Substitutionen zu finden. Hätte man bei den anstehenden Entscheidungen eine andere Wahl getroffen, wäre ein anderer Zweig des Suchraums durchlaufen worden. Auswahl eines parent-Aufrufs (Heuristik: Werteversorgung — also der zweite). Suche nach einer Klausel, die parent definiert. Hier: Zwei parent(M,C) :- mother(M,C). parent(F,C) :- father(F,C). Sei die erste gewählt. Rücksetzen (Backtracking): Rücknahme, falls Sackgasse Ausführung der Substitution [(X,M), (aaron,C)] und Ersetzung des Aufrufs durch den Rumpf: :- parent(G,X), mother(X,aaron). G. Görz, FAU, Inf.8 11–50 G. Görz, FAU, Inf.8 11–52 Wird eine andere Reihenfolge zur Erfüllung der Teilziele gewählt, ergibt sich ein anderer Suchraum. Beispiel: In Abb. wird an jedem Auswahlpunkt entschieden, das jeweils erste Teilziel zuerst zu bearbeiten. G. Görz, FAU, Inf.8 11–53 G. Görz, FAU, Inf.8 11–55 G. Görz, FAU, Inf.8 11–56 Nichtdeterminismus in zweifacher Hinsicht: 1. Reihenfolge der Ausführung der Prozeduraufrufe im Rumpf einer Prozedur ist frei. 2. Bei Ausführung eines Prozeduraufrufs kann jede Prozedurdefinition, deren Kopf mit dem Aufruf unifiziert, ausgewählt werden. Das ursprüngliche Ziel und die dadurch sukzessive bestimmten Teilziele spannen Suchraum auf, der mehrere mögliche Berechnungen umfaßt; er enthält alle möglichen Antworten für das Ziel. Jeder Pfad vom Ziel zu einer [ ] repräsentiert eine erfolgreiche Berechnung; verschiedene Pfade können in verschiedenen Bindungen für die Variablen des (ursprünglichen) Ziels resultieren. G. Görz, FAU, Inf.8 11–54 Umkehrbarkeit Die Definition von grandparent gestattet auch, nach Enkelkindern zu fragen. Beispiele: • Wer ist Enkelkind von Mary? :- grandparent(mary,Gchild). • Ist Bev Enkelkind von Paul? :- grandparent(paul,bev). • Gibt es Großelternbeziehungen in der DB? grandparent(Gparent,Gchild). Umkehrbarkeit von Logikprogrammen ist gegeben, wenn eine Definition einer Relation zur Berechnung einer Funktion und ihrer Inversen verwendet werden kann. G. Görz, FAU, Inf.8 11–57 Bemerkungen: 1. Nicht jede Relation ist umkehrbar. 2. Umkehrbarkeit ist nicht auf DB-Anwendungen beschränkt. Z.B. kann geeignete Definition der Multiplikation auch zur Division verwendet werden. G. Görz, FAU, Inf.8 11–58