Database Reference
In-Depth Information
9.1
Klassische logische Programme
Wir verwenden im Folgenden als Basis zur Definition logischer Programme die
Pradikatenlogik (s. Kapitel 3.5), die zu jeder Signatur Σ eine Menge von Funktions-
und Pradikatensymbolen
Func
(Σ) und
Pred
(Σ) zur Verfugung stellt.
Ein logisches Programm
zur Spezifikation von Verwandschaftsbeziehungen
und eine zugehorige Anfrage G konnten wie folgt aussehen:
P
P
:
Vater
(
hans
,
franz
).
Vater
(
sabine
,
franz
).
Geschwister
(v, w)
←
Vater
(v, q),
Vater
(w, q).
G:
←
Geschwister
(
sabine
,x).
wobei q, v, w, x Variablen,
Vater
,
Geschwister
binare Pradikatensymbole und
hans
,
franz
,
sabine
Konstantensymbole sind.
Definition 9.1 (logisches Programm, definite Klausel, Hornklausel)
Eine
Hornklausel
ist eine Klausel, die maximal ein nicht negiertes Literal enthalt. Eine
definite Klausel
ist eine Hornklausel,
{
H,
¬
B
1
,...,
¬
B
n
}
, die genau ein positives
Literal H enthalt; sie wird notiert als
H
←
B
1
,...,B
n
.
(9.1)
wobei
als Implikationspfeil von rechts nach links zu lesen ist: “H gilt, falls B
1
und ... und B
n
gelten.”
1
Eine Formel der Form (9.1) heißt
Regel
; H ist der
Kopf
(
head
) und B
1
,...,B
n
der
Rumpf
(
body
)derRegel.Fur n =0schreibenwirH.
und nennen dies
Fakt
.
Ein
(klassisches) logisches Programm
ist eine Menge von definiten Klauseln.
Eine
Anfrage
(oder
Zielklausel
,
Ziel
;
query
) ist eine Hornklausel ohne ein positives
Literal, notiert als ← B
1
,...,B
n
.
←
9.2
Anfragen und Antwortsubstitutionen
Wesentlich bei den folgenden Ausfuhrungen ist die Tatsache, dass es sich bei Fak-
ten und Regeln, also den Hornklauseln, die ein logisches Programm ausmachen, um
definite Klauseln
handelt. Mit definiten Klauseln kann man nur
positive
Informatio-
nen ausdrucken, nicht jedoch die Negation eines Literals, da der Kopf einer Klausel
immer ein positives Literal ist.
Die Einschrankung auf Hornklauseln hat den Effekt, dass sich alle Anfragen
- wenn sie denn uberhaupt gelten - auf konstruktive Weise beantworten lassen.
Zweck einer Anfrage
←
B
1
,...,B
n
.
an ein logisches Programm
P
ist die Beantwortung der Frage, ob die logische Fol-
gerung
1
In Prolog wird “
:-
” anstelle des hier verwendeten Pfeils “
←
” geschrieben.