GRUNDLAGEN DER LOGISCHEN PROGRAMMIERUNG Zur

Werbung
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
Herunterladen