Grundkurs PROLOG für Linguisten

Esther König / Roland Seiffert
Grundkurs P R O L O G
für Linguisten
A
/ \
V."]"
/
L / \
ASTIOERENOENSCHAFT
\ DER UNIVERSITÄT
DES SAAULANDES
© 3 3 3 3 öto£) flSS 'Ml
äxn&m&ä^teßi Us?
Univarsitäi dos Saariandes
Compuicîiinguistik
Francke Verlag Tübingen
Esther König ist Promotionsstipendiatin der IBM Deutschland und wissenschaftliche Mitarbeiterin am Institut für Maschinelle Sprachverarbeitung
der Universität Stuttgart im Rahmen des IBM-Forschungsprojektes L I L O G
(„Linguistische und Logische Methoden"). Studium der Romanistik,
Germanistik, Informatik und Linguistik an der Universität Stuttgart, Diplom
in Informatik. Hauptarbeitsgebiete: Parsingverfahren, Zusammenhang
von Parsing und Theorembeweisen.
Roland Seiffert ist wissenschaftlicher Mitarbeiter am Institut für wissensbasierte Systeme der IBM Deutschland und arbeitet dort im Rahmen des
LILOG-Projektes. Studium der Informatik und Linguistik an der Universität
Stuttgart, Diplom in Informatik. Hauptarbeitsgebiete: große Softwaresysteme
im P R O L O G , Implementierungsaspekte von Unifikationsgrammatiken.
Inhaltsverzeichnis
Vorwort
I
1
9
Grundbegriffe
H
Einführung
13
1.1
PROLOG-Programmierung
14
C I P - T i t e l a u f n a h m e der Deutschen Bibliothek
1.2
Fakten, Regeln und Anfragen
15
König, Esther:
Grundkurs PROLOG für Linguisten / Esther König ; Roland Seiffert. Tübingen : Francke, 1989
( U T B für Wissenschaft: Uni-Taschenbücher ; 1 5 2 5 )
ISBN 3 - 7 7 2 0 - 1 7 4 9 - 5
1.3
Übungen
2
N E : Seiffert, Roland:; U T B für Wissenschaft / Uni-Taschenbücher
© 1989 • A. Francke Verlag GmbH Tübingen
Dischingerweg 5 • D - 7 4 0 0 Tübingen 5
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Jede Verwendung außerhalb der engen Grenzen des Urheberrechtsgesetzes
ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt
insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen
und die Einspeicherung und Verarbeitung in elektronischen Systemen.
3
4
'• •
20
Strukturen
2
2.1
Atomare Strukturen
24
2.2
Komplexe Strukturen
25
2.3
Variable Strukturen
26
2.4
Übungen
27
3
Unifikation
2
3.1
Beispiele
32
3.2
Übungen
Beweisverfahren
3
9
4
^
3
Illustrationen: Eckardt Wolf, Karlsruhe
Einbandgestaltung: A. Krugmann, Stuttgart
Druck: Guide-Druck GmbH, Tübingen •
Verarbeitung: Braun + Lamparter, Reutlingen
Printed in Germany
4.1
Beweisverfahren und Unifikation
39
4.2
Backtracking
41
4.3
Ablaufprotokoll
4.4
ISBN 3 - 7 7 2 0 - 1 7 4 9 - 5
4.5
4
5
Zusammenfassung
4
^
Übungen
4
^
INHALTSVERZEICHNIS
6
5
6
7
II
8
9
Rekursion
4
5.1
50
Die Abbruchbedingung
7
INHALTSVERZEICHNIS
11 Eingebaute Prädikate
9
11.1 Ein- und Ausgabe
133
• • • 135
5.2
D e r rekursive Aufruf
52
11.2 Kontrolle
139
5.3
Beispiel: Wegsuche
52
11.3 Meta-Programmierung
145
5.4
Übungen
54
1 1 . 4 Sonstiges
155
1 1 . 5 Beispiel
158
11.6 Zusammenfassung
161
11.7 Übungen
162
Listen
5
7
6.1
Notation
57
6.2
Der Listenkonstruktor
58
6.3
Rekursive Listenverarbeitung
60
6.4
Übungen
65
Programmiertechnik
69
7.1
E i n Beispiel
70
7.2
Programmentwurf-Richtlinien
79
7.3
Zusammenfassung
84
7.4
Übungen
85
Linguistische Anwendungen
Syntaxanalyse
89
Kontextfreie Grammatiken
89
8.2
Parsing
8.3
Übungen
Definite Clause G r a m m a r s
97
100
103
9.1
Aufbau der Konstituentenstruktur
107
9.2
Nur kontextfrei?
111
9.3
Erweiterungen
113
9.4
Übungen
114
10 Deutsch statt P R O L O G
10.1
Sprachanalyse
117
119
1 0 . 2 Hilfsmittel
123
10.3
129
Generierung
10.4 Zusammenfassung
131
10.5 Übungen
132
165
A
Lösungen
173
B
Glossar
189
Literaturverzeichnis
87
8.1
12 E i n kleines D i a l o g s y s t e m
;
193
Vorwort
P R O L O G s t e h t für „ P r o g r a m m i e r e n in Logik"
und wurde bereits
1 9 7 2 zur Darstellung linguistischer B e s c h r e i b u n g e n a u f d e m C o m p u t e r e n t w i c k e l t . D o c h e r s t i n d e n l e t z t e n J a h r e n r ü c k t e es in d e n
B r e n n p u n k t des I n t e r e s s e s v o n I n f o r m a t i k e r n u n d L i n g u i s t e n .
D i e s e s B u c h n i m m t d i e T r a d i t i o n v o n P R O L O G als B e s c h r e i b u n g s s p r a c h e für linguistische P h ä n o m e n e wieder a u f u n d bietet Geisteswissenschaftlerinnen, insbesondere Linguistinnen, eine
E i n f ü h r u n g in diese P r o g r a m m i e r s p r a c h e . D a b e i w e r d e n k e i n e form a l e n V o r k e n n t n i s s e u n d keine E r f a h r u n g e n m i t a n d e r e n
Pro-
g r a m m i e r s p r a c h e n v o r a u s g e s e t z t . E t w a s V e r t r a u t h e i t m i t linguis t i s c h e n F r a g e s t e l l u n g e n ist j e d o c h n ü t z l i c h . D u r c h die A u s w a h l
l i n g u i s t i s c h e r B e i s p i e l e , i n s b e s o n d e r e i m z w e i t e n Teil des B u c h e s ,
k ö n n t e es a b e r a u c h als E i n f ü h r u n g o d e r e r s t e r U b e r b l i c k ü b e r die
Computerlinguistik für I n f o r m a t i k e r i n n e n dienen.
D e r e r s t e Teil des B u c h e s f ü h r t i n d i e G r u n d k o n z e p t e
in die A r b e i t s w e i s e v o n P R O L O G
ein. D a z u gehören
und
Struktu-
r e n , U n i f i k a t i o n v o n S t r u k t u r e n , die E r l ä u t e r u n g des P R O L O G B e w e i s v e r f a h r e n s u n d die V e r w e n d u n g v o n R e k u r s i o n . D e r L i s t e n v e r a r b e i t u n g w u r d e a u f g r u n d i h r e r B e d e u t u n g ein eigenes K a p i t e l
g e w i d m e t . D e n A b s c h l u ß d e s e r s t e n Teils b i l d e t ein K a p i t e l ü b e r
P r o g r a m m i e r t e c h n i k , in d e m grundsätzliche T i p s zur E r s t e l l u n g
von P R O L O G - P r o g r a m m e n gegeben werden.
I m z w e i t e n Teil e r f o l g t e i n e V e r t i e f u n g a n h a n d einiger linguistisch interessanter Fragestellungen. D a b e i wird ausführlich auf
d i e s y n t a k t i s c h e A n a l y s e v o n S ä t z e n u n d die K o n s t r u k t i o n sem a n t i s c h e r R e p r ä s e n t a t i o n e n e i n g e g a n g e n . I m K a p i t e l ü b e r eingebaute Prädikate werden Möglichkeiten zur Ein- und Ausgabe,
zur Ablaufkontrolle u n d zur M e t a - P r o g r a m m i e r u n g
vorgestellt.
VORWORT
10
I m l e t z t e n K a p i t e l zeigt ein kleines D i a l o g s y s t e m w i e v e r s c h i e d e n e , i m z w e i t e n Teil entwickelte P r o g r a m m e sinnvoll m i t e i n a n d e r
zu einem recht umfangreichen System verbunden werden können.
Dieses B u c h entstand aus einem Manuskript der A u t o r i n n e n
f ü r d i e P R O L O G - K u r s e für L i n g u i s t i n n e n , d i e i m S o m m e r s e m e -
Teil I
ster 1 9 8 7 und Wintersemester 1 9 8 7 / 8 8 von den beiden A u t o r i n n e n
a m I n s t i t u t für Maschinelle S p r a c h v e r a r b e i t u n g a n der U n i v e r s i t ä t
S t u t t g a r t g e h a l t e n w u r d e n . Die K u r s e w a r e n jeweils e i n w ö c h i g e
K o m p a k t k u r s e . D a s vorliegende B u c h k ö n n t e a b e r a u c h a l s M a t e r i a l f ü r e i n e n z w e i s t ü n d i g e n K u r s ü b e r ein S e m e s t e r d i e n e n . D i e
}
K a p i t e l e n t s p r e c h e n d a n n in e t w a z w e i s t ü n d i g e n U n t e r r i c h t s e i n -
j
heiten.
Grundbegriffe
>*
G r o ß e r W e r t w u r d e a u f viele a u s f ü h r l i c h e B e i s p i e l e u n d Ü b u n -
|
g e n g e l e g t . D e s h a l b eignet sich dieses B u c h d u r c h a u s a u c h z u m
!
Selbststudium.
'
T r o c k e n s c h w i m m e n ist f ü r d a s E r l e r n e n e i n e r
Programmier-
s p r a c h e selten nützlich. W e r das B u c h d u r c h a r b e i t e n
s o l l t e sich Z u g a n g zu e i n e m R e c h n e r a r b e i t s p l a t z s a m t
möchte,
<
PROLOG-
S y s t e m v e r s c h a f f e n . Alle B e i s p i e l e h a l t e n s i c h a n d e n d e
facto
S t a n d a r d von P R O L O G , das sogenannte „ E d i n b u r g h - P R O L O G " .
j
Unser Dank geht an Dr. Claus-Rainer Rollinger, Prof. D r . H a n s
U s z k o r e i t u n d P r o f . D r . C h r i s t i a n R o h r e r , die u n s e r m u t i g t h a b e n ,
-
d a s K u r s m a n u s k r i p t in ein B u c h u m z u s e t z e n ; a n d i e T e i l n e h m e r i n n e n d e r K u r s e , die bei u n s e r e n d i d a k t i s c h e n G e h v e r s u c h e n kritisch mitarbeiteten; an das Institut für wissensbasierte
;
Systeme
d e r I B M D e u t s c h l a n d , d a s u n s die A r b e i t s m i t t e l z u m E r s t e l l e n
,j
d i e s e s B a n d e s z u r V e r f ü g u n g stellte; a n K o l l e g i n n e n f ü r d i e kri-
1
tische Durchsicht
des M a n u s k r i p t e s ; a n E c k a r d t W o l f f ü r s e i n e
Anti-Streß-Ülustrationen;
£
a n K a r i n Seiffert u n d C l a u s B a u m e r ,
I
die unser beider Begeisterung für P R O L O G geduldig e r t r a g e n .
Januar
1989
\
Esther König
J
R o l a n d Seiffert
1
Kapitel 1
Einführung
délirant
logici
A s t e r i x : Die Logiker
Seit v o r w e n i g e n J a h r e n J a p a n P R O L O G z u m z e n t r a l e n B e s t a n d t e i l seines e h r g e i z i g e n P r o j e k t e s
„Fifth
p u t i n g S y s t e m s " g e m a c h t h a t , findet d i e s e
Generation
Com-
Programmiersprache
p l ö t z l i c h e i n e r a s e n d e V e r b r e i t u n g . Die I d e e d e s „ P r o g r a m m i e r e n s
in Logik"
- d a h e r d e r N a m e P R O L O G - soll i n a l l e n B e r e i c h e n d e r
K ü n s t l i c h e n I n t e l l i g e n z f o r s c h u n g zu g r o ß e n F o r t s c h r i t t e n f ü h r e n .
Typische Einsatzgebiete für P R O L O G sind h e u t e :
•
Expertensysteme
• automatisches Beweisen
• maschinelle Übersetzung
• natürlichsprachlicher Zugang zu D a t e n b a n k e n oder E x p e r tensystemen
• S y s t e m e zur Entwicklung von G r a m m a t i k e n für natürliche
Sprache
• Intelligente T e x t v e r a r b e i t u n g
•
Dialogsysteme
• textverstehende Systeme
KAPITEL
14
1.
EINFÜHRUNG
1.2.
FAKTEN,
In m a n c h e n dieser A n w e n d u n g s b e r e i c h e , z . B . bei d e r m a s c h i -
REGELN
UND
n e l l e n Ü b e r s e t z u n g , gibt es b e r e i t s P r o g r a m m e , die k o m m e r z i e l l
Wissensbasis
e i n g e s e t z t w e r d e n . A n d e r e B e r e i c h e , wie z . B . T e x t v e r s t e h e n , s i n d
• Fakten
n o c h i m S t a d i u m der Grundlagenforschung.
• Regeln
ANFRAGEN
15
problemabhängig
P R O L O G ist w e s e n t l i c h ä l t e r als m a n ü b l i c h e r w e i s e v e r m u t e t .
B e r e i t s 1972 w u r d e der erste P R O L O G - I n t e r p r e t e r an der Univ e r s i t ä t v o n A i x - M a r s e i l l e entwickelt. Die w i c h t i g s t e n N a m e n , die
h i e r z u n e n n e n s i n d , s i n d C o l m e r a u e r , K o w a l s k i u n d R o u s s e l . Ziel
Inferenzmaschine
d e r d a m a l i g e n E n t w i c k l u n g e n w a r e i n e P r o g r a m m i e r s p r a c h e , die
problemuwabhängig
gleichzeitig zur Sprachanalyse und zur Implementierung eines F r a g e b e a n t w o r t u n g s v e r f a h r e n s geeignet w a r .
Abbildung 1.1: Modell der
1.1
PROLOG-Programmierung
W a s weiß ich ü b e r d a s g e g e b e n e P r o b l e m ?
In einer klassischen P r o g r a m m i e r s p r a c h e wie z . B . P A S C A L
s t e h t ein P r o g r a m m a u s e i n e r F o l g e v o n Anweisungen
oder
tun
soll. I n e i n e m P r o g r a m m w i r d also g e n a u die P r o z e d u r z u r L ö s u n g
a u c h prozedurale
Die zentrale
Sprachen
Programmiersprachen.
F r a g e bei d e r E r s t e l l u n g
eines
Welche Fakten gelten?
be-
Befeh-
len, d i e S c h r i t t f ü r S c h r i t t e x a k t festlegen, w a s d e r C o m p u t e r
eines Problems beschrieben; deshalb nennt m a n diese
PROLOG-Programmierung
PASCAL-Pro-
g r a m m e s lautet also:
Welche Gesetzmäßigkeiten gelten?
A n s c h l i e ß e n d m u ß dies alles n u r n o c h in F o r m l o g i s c h e r F o r m e l n
formuliert werden, eine geeignete A n f r a g e gestellt
d a n n ist es d i e A u f g a b e des P R O L O G - S y s t e m s ,
Lösung zu
werden
und
den W e g
zur
finden.
E s d a r f n i e m a n d e n e r s c h r e c k e n , d a ß j e t z t s o viel v o n „logischen F o r m e l n " u n d „ b e w e i s e n " d i e R e d e w a r . E s ist a b s o l u t n i c h t
nötig, ein tiefes V e r s t ä n d n i s f ü r d i e P R O L O G z u g r u n d e liegen-
W a s m u ß ich tun, u m d a s g e g e b e n e P r o b l e m z u l ö s e n ?
' I n P R O L O G d a g e g e n b e d e u t e t P r o g r a m m i e r e n d a s Erstellen
den l o g i s c h e n P r o b l e m e zu h a b e n , u m P r o g r a m m e e n t w i c k e l n z u
ei-
k ö n n e n . W i r w e r d e n dies a n d e n e i n f ü h r e n d e n B e i s p i e l e n i n d e n
g e n a n n t . In d i e s e r W i s s e n s -
n ä c h s t e n A b s c h n i t t e n s o f o r t s e h e n . A l l e r d i n g s g i b t es einige P r o -
b a s i s w i r d alles, w a s d e r P r o g r a m m i e r e r ü b e r die E i g e n s c h a f t e n
b l e m e bei d e r P R O L O G - P r o g r a m m i e r u n g , die m a n n u r v e r s t e h e n
v o n Objekten einer anwendungsbezogen gewählten Miniwelt u n d
kann, w e n n m a n fundierte Kenntnisse der Prädikatenlogik besitzt.
ü b e r i h r e B e z i e h u n g e n u n t e r e i n a n d e r weiß, in F o r m v o n
I m R a h m e n e i n e r E i n f ü h r u n g spielt dies a l l e r d i n g s keine R o l l e .
ner
Wissensbasis,
Formeln
oft a u c h Datenbasis
logischen
spezifiziert. N a c h d e m die W i s s e n s b a s i s gefüllt i s t , b e s t e h t
d i e A u f g a b e des P r o g r a m m i e r e r s n u n i m Stellen
von Anfragen
d a s P R O L O G - S y s t e m . J e t z t w i r d die Inferenzmaschine
an
aktiv. Die
a n d a s S y s t e m g e s t e l l t e A n f r a g e ist n ä m l i c h w i e d e r n u r e i n e logis c h e F o r m e l u n d die A u f g a b e d e r I n f e r e n z m a s c h i n e ist e s , e i n e n
Beweis
f ü r diese F o r m e l z u
finden.
Die zentralen F r a g e n für den P R O L O G - P r o g r a m m i e r e r
also:
1.2
Fakten, Regeln und Anfragen
Die S y n t a x v o n P R O L O G ist s e h r e i n f a c h . E s g i b t n u r drei A r t e n
von A u s d r ü c k e n in e i n e m P R O L O G - S y s t e m : Fakten,
sind
Anfragen.
Regeln
und
A u s F a k t e n u n d R e g e l n wird die W i s s e n s b a s i s aufge-
baut; A n f r a g e n werden d e m S y s t e m als A u f g a b e n gestellt. F a k t e n
KAPITEL
16
u n d R e g e l n b e z e i c h n e t m a n a u c h als Axiome.
1.
EINFÜHRUNG
A x i o m e s i n d in d e r
L o g i k F o r m e l n , v o n d e n e n m a n v o r a u s s e t z t , d a ß sie w a h r s i n d .
A l l e A u s s a g e n in P R O L O G w e r d e n i n d e r b e s o n d e r s
F o r m d e r Klauseln
einfachen
formuliert. F ü r Prädikatenlogikexperten:
In
1.2.
FAKTEN,
REGELN
17
ANFRAGEN
hund(fido).
A u ß e r d e m w i s s e n w i r , d a ß G e r d d e r V a t e r v o n G i t t e u n d Uli ist.
In P R O L O G k ö n n e n w i r d a s s o f o r m u l i e r e n :
Klauselform werden Formeln ohne explizite A n g a b e von Q u a n t o -
vater(gerd,gitte).
ren ausgedrückt. Der Existenzquantor wird durch Skolemisierung
vater(gerd.uli).
e l i m i n i e r t u n d alle V a r i a b l e n in einer K l a u s e l s i n d i m p l i z i t all-
UND
D i e B e d e u t u n g des S y m b o l s v a t e r ist P R O L O G n a t ü r l i c h u n b e -
quantifiziert.
A l s e i n f ü h r e n d e s Beispiel wollen w i r W i s s e n ü b e r d i e F a m i l i e
M a i e r in e i n e r P R O L O G - W i s s e n s b a s i s d a r s t e l l e n .
F a m i l i e M a i e r ist die T r a u m f a m i l e u n s e r e s B u n d e s f a m i l i e n m i n i s t e r i u m s . Sie b e s t e h t a u s e i n e m glücklichen E l t e r n p a a r ,
zwei
K i n d e r n u n d e i n e m H u n d . Dies alles u n d n o c h viel m e h r w o l l e n
wir in P R O L O G ausdrücken.
kannt. W i r h ä t t e n genauso schreiben können
x0815(gerd,gitte).
x0815(gerd,uli).
und uns merken, daß x 0 8 1 5
für uns „ i s t - V a t e r - v o n "
bedeutet.
E b e n s o ist es m i t d e r R e i h e n f o l g e d e r A r g u m e n t e . E s ist n u r u n s e r e
Interpretation der Fakten, daß v a t e r ( g e r d , u l i ) bedeutet „Gerd
ist d e r V a t e r v o n U l i " u n d n i c h t u m g e k e h r t „ U l i ist d e r V a t e r v o n
G e r d " . W i r m ü s s e n also die B e d e u t u n g der P r ä d i k a t e u n d ihrer
A r g u m e n t e z u A n f a n g f e s t l e g e n u n d sie d a n n i m m e r g e n a u s o v e r w e n d e n . E s ist d e s h a l b e m p f e h l e n s w e r t , i m
e i n e n Kommentar
PROLOG-Programm
e i n z u f ü g e n , d e r bei d e r E i n f ü h r u n g e i n e s P r ä d i -
k a t e s i m K l a r t e x t a u s s a g t , w a s g e m e i n t ist.
E i n Kommentar
ist ein b e l i e b i g e r T e x t i n e i n e m
Programm,
d e r b e s o n d e r s g e k e n n z e i c h n e t ist u n d v o n d e m P R O L O G
weiß,
d a ß e r lediglich eine I n f o r m a t i o n f ü r d e n L e s e r d e s P r o g r a m m s d a r stellt u n d v o n P R O L O G i g n o r i e r t w e r d e n d a r f . I n P R O L O G
m a n m e i s t e n s zwei v e r s c h i e d e n e M ö g l i c h k e i t e n , K o m m e n t a r e
hat
in
ein P r o g r a m m e i n z u f ü g e n . E r s t e n s , d u r c h E i n s c h l i e ß e n d e s K o m E i g e n s c h a f t e n v o n O b j e k t e n u n d B e z i e h u n g e n z w i s c h e n i h n e n werd e n i n P R O L O G als Fakten
ausgedrückt.
Z u n ä c h s t stellen wir d a r , welche P e r s o n e n es i n d e r
gibt:
Familie
m e n t a r s z w i s c h e n / * u n d * / . Z w e i t e n s , d u r c h S c h r e i b e n e i n e s '/,
w i r d alles n a c h d e m '/.-Zeichen bis z u m Z e i l e n e n d e als K o m m e n t a r
aufgefaßt.
Die F a k t e n über Familie Maier könnten also m i t K o m m e n t a r e n
versehen ungefähr so aussehen:
person(lore).
person(gerd).
person(gitte).
person(uli).
Nicht zu vergessen, der Hund F i d o :
/*
Die Personen
Lore,
Gerd,
person(lore).
person(gerd).
in Familie
Gitte
Maier
und U l i
*/
sind:
KAPITEL
18
1.
EINFUHRUNG
1.2.
FAKTEN,
person(gitté).
Konjunktion
person(uli).
ausgedrückt.
REGELN
UND
ANFRAGEN
19
u n d w i r d e i n f a c h d u r c h ein K o m m a , in P R O L O G
Insgesamt erhalten wir also die Regel:
/*
Die Frauen:
*/
/*
weiblich(lore).
Jeder
/*
Die Maenner:
Vater
schenkt
Spielzeugeisenbahn
weiblich(gitte).
schenkt(X,Y,Z)
*/
seinem
Sohn
eine
*/
:-
7. X s c h e n k t
vater(X,Y),
maennlich(uli).
maennlich(Y) ,
'/, Y m a e n n l i c h
spielzeugeisenbahn(Z) .
'/, Z i s t
/*
D e r Hund h e i s s t
Fido
'/. X V a t e r
Y ein
maennlich(gerd).
Einen solchen E i n t r a g in die W i s s e n s b a s i s n e n n t m a n e i n e
Die Spielzeugeisenbahn
d a n a c h Rumpf.
*/
E i n e i n z e l n e r F a k t ist e b e n f a l l s e i n e K l a u s e l . W i r
demselben K o p f z u s a m m e n u n d n e n n e n sie
Eltern-Kind-Beziehungen
Klau-
d e r K l a u s e l , d e r Teil
sagen hier, d a ß d e r R u m p f leer ist. W i r f a s s e n alle K l a u s e l n m i t
spielzeugeisenbahn(d318).
/*
und
Spielzeugeisenbahn
sel. D e r Teil v o r d e m : - - S y m b o l heißt Kopf
vater(gerd,gitté) .
ist
falls
und
*/
hund(fido).
/*
Z,
von Y i s t
Prädikat.
*/
'/. g e r d
ist
der vater
m u t t e r ( l o r e , g i t t é ) . '/, l o r e
ist
die mutter
von
gitté
vater(gerd.uli).
von
gitté
mutter(lore,uli).
1.2.3
Anfragen
Es ist j a s c h ö n u n d g u t , i m m e r m e h r W i s s e n in u n s e r P R O L O G System h i n e i n s t e c k e n z u k ö n n e n . A b e r n a t ü r l i c h m ö c h t e n w i r a u c h
irgendeinen N u t z e n a u s d e n F a k t e n u n d R e g e l n , d i e in d e r W i s -
1.2.2
sensbasis g e s p e i c h e r t sind, z i e h e n k ö n n e n . K u r z u m , w i r m ö c h t e m
Regeln
dem S y s t e m ein p a a r F r a g e n s t e l l e n .
B e z i e h u n g e n zwischen O b j e k t e n , die n u r u n t e r b e s t i m m t e n B e d i n g u n g e n g e l t e n , w e r d e n in P R O L O G d u r c h Regeln
• Ist F i d o ein H u n d ?
daxgestellt.
D a F a m i l i e M a i e r in einer heilen W e l t l e b t , g i b t es a u c h n o c h
• W e r ist die M u t t e r v o n U l i ?
d e n a l t e n B r a u c h , d a ß j e d e r V a t e r s e i n e m S o h n e i n e Spielzeugeis e n b a h n s c h e n k t . Diese R e g e l k ö n n e n w i r e t w a s
• W e r ist d e r V a t e r v o n G i t t e u n d U l i ?
umformulieren
zu:
• W e r b e k o m m t v o n G e r d die S p i e l z e u g e i s e n b a h n „ d 3 1 8 " ?
X schenkt Y ein Z,
falls X V a t e r von Y ist
Wenn
und Y m ä n n l i c h ist
P R O L O G - n a c h einiger Zeit u n d e i n i g e m a n d e r e m T e x t -
und Z eine Spielzeugeisenbahn ist.
mer mit d e m S y m b o l ? - . Dies d e u t e t a n , d a ß P R O L O G b e r e i t ist,
ein
PROLOG-System
startet,
so
meldet
sich
im-
I n d i e s e r F o r m k ö n n e n wir die R e g e l s o f o r t n a c h P R O L O G über-,
v
s e t z e n . Die falls-Beziehung
und
ter diesem F r a g e s y m b o l einen b e l i e b i g e n K l a u s e l r u m p f , d . h . e i n e n
heißt
Fakt o d e r eine K o n j u n k t i o n v o n F a k t e n , e i n g e b e n . W e n n w i r die
w i r d in P R O L O G als : -
heißt in d e r L o g i k Implikation
geschrieben. Die t m d - B e z i e h u n g
°
man
m
B e n u t z e r eine A n f r a g e e n t g e g e n z u n e h m e n . W i r k ö n n e n hin-
20
KAPITEL
1.
EINFÜHRUNG
E i n g a b e mit einem Punkt und durch Drücken der „ R e t u r n - T a s t e "
1.3.
L e i d e r ist die B e d i e n u n g d i e s e r P r o g r a m m e nicht einheitlich.
1
a b g e s c h l o s s e n h a b e n , w i r d P R O L O G v e r s u c h e n , diese F o r m e l z u
21
ÜBUNGEN
Sie m ü s s e n a l s o v e r s u c h e n , j e m a n d e n z u finden, d e r sich m i t I h r e m
b e w e i s e n . W i r wollen also die o b i g e n F r a g e n e i n m a l a n P R O L O G
P R O L O G - S y s t e m s c h o n a u s k e n n t u n d i h n u m eine k u r z e E i n f ü h -
stellen:
rung bitten.
?-
hund(fido).
Ü b u n g 1.1
?X =
?X =
?X =
G e b e n S i e d a s P R O L O G - P r o g r a m m aus d i e s e m K a -
pitel m i t d e m E d i t o r ein u n d s p e i c h e r n S i e es in einer D a t e i a b .
yes
S t a r t e n Sie d a n n d e n P R O L O G - I n t e r p r e t e r . L a d e n Sie die D a t e i
mutter(X,uli).
als W i s s e n s b a s i s in d a s S y s t e m . S t e l l e n S i e d i e A n f r a g e n dieses
lore
vater(X.gitte),
Kapitels.
vater(X,uli).
gerd
Ü b u n g 1 . 2 E r w e i t e r n S i e die W i s s e n s b a s i s u m F a k t e n u n d R e -
schenkt(gerd,X,d318).
geln f ü r folgendes W i s s e n :
uli
D a s g r o ß g e s c h r i e b e n e X in d e n A n f r a g e u n d a u c h a n d e r e g r o ß g e -
• Lore und Gerd sind v e r h e i r a t e t .
s c h r i e b e n e S y m b o l e in d e n o b i g e n R e g e l n s i n d s o g e n a n n t e V a r i a -
• X ist G r o ß v a t e r v o n Y , falls Z d e r V a t e r v o n Y ist u n d X d e r
blen. F ü r Variablen versucht P R O L O G einen W e r t zu
finden.
2
V a t e r v o n Z ist. V e r g e s s e n S i e n i c h t z u s ä t z l i c h e P e r s o n e n f ü r
W i e P R O L O G die L ö s u n g e n f ü r diese A n f r a g e n h e r a u s f i n d e t ,
die G r o ß e l t e r n e i n z u f ü h r e n .
w e r d e n w i r in den n ä c h s t e n K a p i t e l n g e n a u u n t e r s u c h e n .
• L o r e liebt G e r d u n d G e r d l i e b t L o r e . G i t t e liebt F i d o .
3
1.3
Übungen
Stellen Sie n e u e A n f r a g e n .
D a s Ziel dieser Ü b u n g e n ist e s , sich ein wenig m i t d e r S y s t e m u m gebung a u f Ihrem Übungsrechner v e r t r a u t zu m a c h e n . Die wicht i g s t e n Teile eines P R O L O G - S y s t e m s s i n d
• der P R O L O G - I n t e r p r e t e r
• der E d i t o r
D e r P R O L O G - I n t e r p r e t e r ist i n d e r L a g e , eine W i s s e n s b a s i s
a u s einer D a t e i zu l a d e n u n d B e w e i s e ü b e r dieser
Wissensbasis
d u r c h z u f ü h r e n . D e r E d i t o r ist ein P r o g r a m m , m i t d e m
Texte,
insbesondere natürlich P R O L O G - P r o g r a m m t e x t e , a m Bildschirm
e i n g e g e b e n u n d in einer D a t e i a b g e s p e i c h e r t w e r d e n k ö n n e n .
'Die „Return-Taste" ist meist mit dem Symbol <-> oder etwas Ähnlichem
beschriftet und bewirkt den Beginn einer neuen Zeile.
2
3
W i r leben in einer heilen Welt!
dito
r
Kapitel 2
Strukturen
Um Informationen irgendwelcher A r t darzustellen, werden Strukturen b e n ö t i g t . I n f o r m a t i o n u n d S t r u k t u r i e r t h e i t
sind in e i n e m
gewissen S i n n ä q u i v a l e n t e B e g r i f f e . D a s R a u s c h e n e i n e s
Radios
v e r m i t t e l t keine I n f o r m a t i o n , die A n s a g e n des N a c h r i c h t e n s p r e chers als h o c h s t r u k t u r i e r t e A b f o l g e v o n S i g n a l e n t u n dies s e h r
wohl. D e r U n t e r s c h i e d z w i s c h e n I n f o r m a t i o n s t r ä c h t i g k e i t u n d I n formationslosigkeit läßt sich a n so e i n f a c h e n D i n g e n w i e Z e i c h e n ketten v e r d e u t l i c h e n . M i t d e r f o l g e n d e n , „ z u f ä l l i g e n " B u c h s t a b e n reihe w i s s e n w i r wenig, w e n n n i c h t zu s a g e n , n i c h t s a n z u f a n g e n :
tsnlridaoeemtnioitvmnrf
Dagegen ist f o l g e n d e Z e i c h e n k e t t e f ü r u n s
informationsvermit-
telnd, weil sie n a c h d e n G e s e t z m ä ß i g k e i t e n d e r d e u t s c h e n S p r a c h e
(und d e r i h r v o m L a t e i n i s c h e n ü b e r k o m m e n e n R e g e l n ) g e b i l d e t
ist:
informationsvermittelnd
KAPITEL
24
2.
STRUKTUREN
2.2.
KOMPLEXE
W i r b e o b a c h t e n , d a ß e i n e r s e i t s die G r u n d s t r u k t u r e n , d i e a t o m a r e n
s t e h e n d e ) „ W ö r t e r " h e i ß e n Zahlen.
E i n h e i t e n für m ö g l i c h e S t r u k t u r e n f e s t g e l e g t w e r d e n m ü s s e n . I m
S t r u k t u r e n a u c h Konstanten
B e i s p i e l d e r B u c h s t a b e n k e t t e n s i n d dies die B u c h s t a b e n .
für a t o m a r e S t r u k t u r e n auf:
Natür-
lich k ö n n t e die E b e n e d e r a t o m a r e n E i n h e i t e n a u c h „ t i e f e r g e l e g t "
25
STRUKTUREN
M a n c h m a l werden
atomare
g e n a n n t . Z ä h l e n wir einige Beispiele
fido
w e r d e n u n d B u c h s t a b e n k ö n n t e n selbst z u m B e i s p i e l als in B e -
1238
zug auf ihr Aussehen strukturiert angesehen werden. Andererseits
microProcessor
m u ß es a u c h V o r s c h r i f t e n g e b e n , wie T e i l s t r u k t u r e n z u e i n a n d e r
x4711
kom-
U m S t r u k t u r e n d e u t l i c h v o n e i n a n d e r a b z u g r e n z e n , k a n n m a n sie
p l e x e r e S t r u k t u r e n e r g e b e n . S o g i b t es in u n s e r e m B e i s p i e l d e r
sich v o n e i n e m K ä s t c h e n u m r a h m t d e n k e n o d e r sie sich als d e n
B u c h s t a b e n k e t t e n ( o d e r e i g e n t l i c h d e r d u r c h sie r e p r ä s e n t i e r t e n
„ I n h a l t " eines K ä s t c h e n s v o r s t e l l e n :
in B e z i e h u n g g e s e t z t w e r d e n k ö n n e n u n d d a m i t g r ö ß e r e ,
P h o n e m e ) Gesetzmäßigkeiten d a r ü b e r , wie Silben der deutschen
Ifidö]
S p r a c h e gebildet w e r d e n u n d d a r a u f a u f s e t z e n d , R e g e l n , wie Silb e n zu W ö r t e r n z u s a m m e n g e f ü g t w e r d e n k ö n n e n :
in for ma tions ver mit telnd
In der Sprachwissenschaft
als e m p i r i s c h e W i s s e n s c h a f t geht
d a r u m , die R e g e l n z u b e s c h r e i b e n , die d e r b e t r e f f e n d e n
c h e v e r m u t l i c h z u g r u n d e liegen. I n d e r I n f o r m a t i k u n d
es
Spra-
Mathe-
m a t i k geht m a n d e n a n d e r e n W e g : W i r d ü r f e n n a c h u n s e r e m ei-
2.2
Komplexe Strukturen
E i n komplexer
Term
a u s e i n e m Funktor
(meist kurz a u c h „ T e r m " genannt) besteht
und aus einer festen, g e o r d n e t e n Menge von
genen Belieben systematisch S t r u k t u r e n aufbauen. D a z u werden
Argumenten,
wir möglichst einfache, aber ausdrucksfähige S t r u k t u r e n wählen
ein A t o m sein. N a c h d e m F u n k t o r s t e h e n z w i s c h e n e i n e r öffnen-
wollen.
d e n u n d e i n e r s c h l i e ß e n d e n K l a m m e r d i e A r g u m e n t e des T e r m s .
U m in P R O L O G I n f o r m a t i o n z u k o d i e r e n , g i b t es n u r eine sehr
e i n f a c h e A r t v o n S t r u k t u r e n , die Terme.
E s lassen sich jedoch sehr
viele m a t h e m a t i s c h e S t r u k t u r e n als T e r m e d a r s t e l l e n . I m folgend e n w e r d e n w i r die B e g r i f f e „ T e r m " u n d „ S t r u k t u r " a u s t a u s c h b a r
verwenden.
T e r m e w e r d e n in d r e i K l a s s e n e i n g e t e i l t . E i n T e r m ist e n t w e d e r
atomar
o d e r komplex
oder
variabel.
d i e selbst w i e d e r u m T e r m e s i n d . D e r F u n k t o r m u ß
Falls m e h r e r e A r g u m e n t e a u f t r e t e n , m ü s s e n diese durch K o m m a s
g e t r e n n t w e r d e n . D i e R e i h e n f o l g e d e r A r g u m e n t e ist v o n B e d e u tung! Beispiele für komplexe S t r u k t u r e n :
sterblich(sokrates)
füttert(lisa.fido)
füttert(lisa.vater(sokrates))
W i e d a s d r i t t e B e i s p i e l z e i g t , k ö n n e n T e r m e beliebig tief v e r -
2.1
s c h a c h t e l t sein. I n d e r K ä s t c h e n - N o t a t i o n w i r d d i e s e V e r s c h a c h t e -
Atomare Strukturen
lung b e s o n d e r s d e u t l i c h :
A t o m a r e Strukturen werden p e r Schreibkonvention gekennzeichn e t . In d e r R e g e l e n t s p r e c h e n in P R O L O G a t o m a r e
f e r n b e s t e h e n . M i t K l e i n b u c h s t a b e n b e g i n n e n d e „ W ö r t e r " heißen
Atome.
fuettert
Strukturen
„ W ö r t e r n " , d i e m i t e i n e m K l e i n b ü c h s t a b e n b e g i n n e n o d e r a u s ZifM i t Ziffern b e g i n n e n d e ( u n d folglich n u r a u s Ziffern b e -
1lisa1
vater
1sokrates|
KAPITEL
26
2.3
2.
2.4.
Variable Strukturen
27
ÜBUNGEN
In P R O L O G w e r d e n s o w o h l P r ä d i k a t e s e l b s t a l s a u c h die A r gumente v o n P r ä d i k a t e n als T e r m s t r u k t u r e n d a r g e s t e l l t . Z u m Bei-
F ü r Variablen besteht zur Unterscheidung von a t o m a r e n Struktu-
spiel k a n n s t e r b l i c h ( s o k r a t e s )
r e n d i e S c h r e i b k o n v e n t i o n , d a ß sie d u r c h „ W ö r t e r " d a r g e s t e l l t wer-
tenbasis e i n g e t r a g e n w e r d e n , a l s a u c h als S t r u k t u r
den, die mit e i n e m G r o ß b u c h s t a b e n oder d e m U n t e r s t r e i c h u n g s -
werden, d.h. a l s A r g u m e n t in e i n e m P r ä d i k a t a u f t r e t e n :
sowohl a l s F a k t u m in die D a manipuliert
zeichen _ beginnen. Beispiele für Variablen:
chaos(
X
X4711a
sterbliche
sokrates
Funktor
Argument
),
Argument
Wer
lisa
)
Argument
Hund
HundeHuette
_fido
1]
Hund
D e r allein a u f t r e t e n d e U n t e r s t r e i c h u n g s s t r i c h _ h e i ß t
Variable.
anonyme
2.4
Übungen
[
A n o n y m e V a r i a b l e n w e r d e n v e r w e n d e t , w e n n d u r c h die
Stelligkeit eines P r ä d i k a t s z w a r ein A r g u m e n t v e r l a n g t w i r d , der
Übung 2.1
N a m e u n d d e r W e r t dieses A r g u m e n t s a b e r in d e r b e t r e f f e n d e n
die es e r l a u b e n , z u ü b e r p r ü f e n , o b eine S t r u k t u r a t o m a r o d e r va-
K l a u s e l n i c h t i n t e r e s s a n t ist.
riabel ist: a t o m i c u n d v a r . B e i s p i e l e für d i e V e r w e n d u n g :
W i e auch schon aus der S c h u l m a t h e m a t i k bekannt, sind Variablen
P l a t z h a l t e r f ü r beliebige S t r u k t u r e n d e r
entsprechenden
?-
atomic(werda).
yes
f o r m a l e n Sprache, der wir uns bedienen, wie z u m Beispiel der
?-
„ S p r a c h e " der arithmetischen Ausdrücke oder eben der Sprache
no
?-
P R O L O G . Beispiel aus der Arithmetik:
In P R O L O G g i b t es b e r e i t s „ e i n g e b a u t e " P r ä d i k a t e ,
atomic(Z).
var(Z).
yes
x
2
=
-1
?-
V a r i a b l e n k a n n m a n sich für die V e r a r b e i t u n g i m P r o g r a m m als
N a m e n von K ä s t c h e n vorstellen, in die zu irgendeinem Zeitpunkt
die Belegung, der W e r t der Variablen u n t e r g e b r a c h t
wird.
Derj
a n o n y m e n V a r i a b l e n e n t s p r i c h t ein u n b e n a n n t e r K a s t e n .
atomic(a(B)).
no
?no
var(aCB)).
Klassifizieren Sie f o l g e n d e P R O L O G - T e r m e in e i n e d e r d r e i o b e n
genannten K l a s s e n
atomar,
komplex
o d e r variabel.
Sie die R i c h t i g k e i t I h r e r A n t w o r t e n gleich m i t I h r e m
Hund
System m i t t e l s d e r e n t s p r e c h e n d e n P r ä d i k a t e .
D i e S p r a c h k o n v e n t i o n sei, d a ß V a r i a b l e n , in d e r e n „ K ä s t e n " noch
1- F i d o
n i c h t s s t e h t , uninstantiierte
2. nummer
Variablen
heißen.
Cj
24
Uberprüfen
PROLOG-
28
KAPITEL
3.
2.
hallo_jungs
4. h a l l o (Jungs)
5.
Jungs
6.
x
Kapitel 3
7. Y
Ü b u n g 2.2
V e r s u c h e n Sie, die I n f o r m a t i o n f o l g e n d e r S ä t z e k o m -
p a k t als P R O L O G - T e r m e d a r z u s t e l l e n :
1. A n n e t t e ist mit J o h a n n verheiratet.
Unifikation
2 . O t t o s Schreibtisch enthält als Schreibmaterial fünf Kugelschreiber, 5 7 Blatt Papier und als sonstige Dinge a c h t Zeitschriftenartikel und einen Flaschenöffner.
3 . Grammatikalische Kategorien sind Verben, N o m e n , Adjektive,
Präpositionen, Artikel, Adverben und Partikel. Verben werden
unterteilt in ein-, zwei-, drei- und vierstellige V e r b e n . Adjektive
werden unterschieden nach pränominal und prädikativ.
U m Anfragen an PROLOG-Wissensbasen
beweisen zu können,
m ü s s e n P R O L O G - T e r m e m i t e i n a n d e r v e r g l i c h e n w e r d e n . Sie w e r d e n d a b e i n i c h t n u r v e r g l i c h e n , s o n d e r n , falls m ö g l i c h , a u c h t a t sächlich m i t e i n a n d e r identisch g e m a c h t . Dieses Identisch-Machen
w i r d Unifikation
genannt. Das W o r t „Unifikation" wurde nicht
o h n e G r u n d g e w ä h l t : unus heißt eins, f a c e r e h e i ß t m a c h e n . Unifiz i e r e n heißt d a n n zu eins m a c h e n , vereinen, vereinigen. Z u r E i n f ü h rung in die P r o b l e m s t e l l u n g stellen wir uns folgende Wissensbasis,
bestehend aus nur einem Fakt, vor:
weiblich(lore).
.
KAPITEL
30
31
3.
F o l g e n d e A n f r a g e läßt sich p o s i t i v b e a n t w o r t e n , d a g e n a u d i e s e r
— die F u n k t o r e n d e r b e i d e n T e r m e s i n d v e r s c h i e d e n ,
F a k t in d e r W i s s e n s b a s i s s t e h t :
— die S t e l l i g k e i t e n d e r b e i d e n F u n k t o r e n s i n d v e r s c h i e d e n
?-
weiblich(lore).
— m i n d e s t e n s ein A r g u m e n t e p a a r v o n A r g u m e n t e n glei-
yes
c h e r P o s i t i o n i m T e r m läßt s i c h n i c h t unifizieren.
J e d o c h w i r d die F r a g e n a c h d e m Z u t r e f f e n d e s F a k t e s
?-
weiblich(lisa).
Die A u f z ä h l u n g u n d B e s c h r e i b u n g d e r F ä l l e , in d e n e n die U n i -
no
negativ beantwortet,
weil in der W i s s e n s b a s i s
nicht
lisa
son-
d e r n l o r e als A r g u m e n t des P r ä d i k a t s w e i b l i c h e r w ä h n t w i r d .
E s ist keine Unifikation z w i s c h e n d e n b e i d e n v e r s c h i e d e n e n A t o m e n m ö g l i c h . Falls wir a b e r d a s A r g u m e n t
n o c h n i c h t a u f ein
b e s t i m m t e s A t o m festlegen, s o n d e r n e i n e V a r i a b l e d a f ü r a n g e b e n ,
b e k o m m e n w i r eine p o s i t i v e A n t w o r t m i t d e r I n f o r m a t i o n , d u r c h
w e l c h e s A t o m die V a r i a b l e ersetzt
?-
werden muß:
weiblich(Wer).
Wer =
zweier T e r m e e r f o l g r e i c h v e r l ä u f t , liefert eine V e r a r b e i -
t u n g s v o r s c h r i f t , d.h. e i n e n Algorithmus,
Algorithmus 3.1
t i o n b e z ü g l i c h aller v e r s c h i e d e n e n A r t e n v o n T e r m e n d a r s t e l l e n .
D i e s e s V e r f a h r e n t e s t e t nicht n u r , s o n d e r n e r s e t z t , falls es eine
d a z u g i b t , die V a r i a b l e n z w e i e r T e r m e d e r a r t ,
das
b e i d e s m a l d e r s e l b e T e r m d a s t e h t . E s liefert s o z u s a g e n die „ U b e r -
E i n g a b e : zwei T e r m e Termi
Term
2
d e r b e i d e n T e r m e , falls diese
3
M e t h o d e : T e s t e , w e l c h e r d e r d r e i f o l g e n d e n F ä l l e f ü r Termi
Term
2
und
zutrifft, u n d g i b die z u g e h ö r i g e Ü b e r d e c k u n g
Term
3
als E r g e b n i s zurück:
1 . Ein
I n t u i t i v sind zwei a t o m a r e T e r m e t r i v i a l e r w e i s e g l e i c h , w e n n sie
atomarer
falls
e b e n d i e gleichen P R O L O G - A t o m a r e s i n d . E i n e V a r i a b l e k a n n m i t
j e d e m beliebigen T e r m g l e i c h g e s e t z t w e r d e n . D e r V e r g l e i c h vers c h a c h t e l t e r T e r m e ist e t w a s k o m p l i z i e r t e r : E s m ü s s e n d i e F u n k d e r b e i d e n T e r m e ver-
g l i c h e n w e r d e n , wenn d a n n a u c h die A r g u m e n t e in d e r R e i h e n f o l g e
Term
unifiziert
mit demselben
atomaren
dann
2 . Eine
(a)
• d i e Unifikation zweier k o m p l e x e r T e r m e s c h e i t e r t , w e n n eines
Variable
falls
(b)
3
gleich
Terme
Termi
unifiziert
Termi
mit jedem
u n d Term
2
ist Term
Term
beide Variablen sind,
gleich Termi
3
Term:
u n d Termi
gleich
2
falls Termi
e i n e V a r i a b l e u n d Term
2
ein n i c h t v a -
riabler T e r m ist,
• es h a n d e l t sich u m zwei v e r s c h i e d e n e a t o m a r e S t r u k t u r e n
• ein T e r m ist a t o m a r , d e r a n d e r e k o m p l e x
dieselben a t o m a r e n
2
ist T e r m
dann
unifizierbar.
D i e U n i f i k a t i o n zweier T e r m e s c h e i t e r t in f o l g e n d e n F ä l l e n :
u n d Term
Termi
sind,
Variablenersetzungen
u n i f i z i e r b a r sind, sind die b e i d e n T e r m e i n s g e s a m t
d e r folgenden K r i t e r i e n erfüllt i s t :
und
Term:
d e c k u n g " zweier T e r m e , falls diese e x i s t i e r t .
i h r e s A u f t r e t e n s jeweils m i t t e l s d e r s e l b e n
Unifikation
e x i s t i e r t ; s o n s t die A n t w o r t : n e i n
D i e d r e i B e i s p i e l e zeigten A s p e k t e d e r U n i f i k a t i o n v o n V a r i a b l e n
t o r e n u n d die A r g u m e n t e z a h l (Stelligkeit)
f ü r die D u r c h f ü h r u n g von
Unifikationen:
A u s g a b e : d i e Ü b e r d e c k u n g Term
lore
u n d A t o m e n . I m folgenden wollen w i r d a s V e r f a h r e n d e r Unifika-
Möglichkeit
fikation
¿ a n n sind Term
(c)
falls Term
2
3
u n d Termi
riabler T e r m ist,
dann
gleich
e i n e V a r i a b l e u n d Termi
s i n d Term
3
Term
2
ein n i c h t v a -
,
u n d Term
2
gleich
Termi
32
KAPITEL
3.
Unifikation
falls
komplexer
Term
3.
3.1.
Tenne:
L a s s e n sich zwei B i l d e r o d e r K ä s t c h e n s o ü b e r e i n a n d e r
ein k o m p l e x e r T e r m m i t F u n k t o r F ,
1
der
x
Steifigkeit n u n d d e n A r g u m e n t e n A ,
A^ ,
u
2
ein k o m p l e x e r T e r m m i t F u n k t o r F ,
2
der
2
Steifigkeit m u n d d e n A r g u m e n t e n A ,
A,
21
22
2m
und für F i u n d F
Fall 1 dieser Unifikationsvorschrift
2
zutrifft
und die Steifigkeiten gleich s i n d , d . h . n =
m
und für alle P a a r e v o n A r g u m e n t e n < A ,
Ai
n
< A,
in
A
2m
3 1
3 2
3 n
d e n O b j e k t e i d e n t i s c h . M a n k a n n sich dies u n g e f ä h r d u r c h d e n o p Transparentfolie gemalte Kästchen übereinanderlegt.
c h e n ( o d e r V a r i a b l e n ) h a b e n die E i g e n s c h a f t ,
>,
2
...,
„Uber-
liefert, o h n e d a ß die
Beispiel 3.1
E r f o l g r e i c h e Unifikation i m a t o m a r e n F a l l :
dabei n ö t i g e n V a r i a b l e n e r s e t z u n g e n m e h r a l s e i n e n
b e s t e h t Term
3U
T
32l
...
und
den
T.
3n
U n i f i k a t i o n ( „ Ü b e r d e c k u n g " ) ist m ö g l i c h .
A n s o n s t e n lassen sich die b e i d e n T e r m e n i c h t unifizieren.
D i e Unifikation einer V a r i a b l e n m i t e i n e m n i c h t v a r i a b l e n
b e w i r k t die Instantiierung
fido
fido
aus dem Funktor i\
3
Argumenten T
Käst-
e r l a u b t ist, a b e r d a ß n i e m a l s I n f o r m a t i o n g e l ö s c h t w e r d e n k a n n .
Wert annehmen müssen
dann
Die
d a ß d u r c h Unifi-
kation nur das Hinzufügen von m e h r I n f o r m a t i o n bzw. S t r u k t u r
> diese U n i f i k a t i o n s v o r s c h r i f t
deckungen" T , T , . . . , T
c h e n . F a l l s U n i f i k a t i o n d u r c h g e f ü h r t w e r d e n k a n n , w e r d e n die beit i s c h e n Effekt v e r a n s c h a u l i c h e n , der e n t s t e h t , w e n n m a n zwei a u f
ist
A
l e g e n , d a ß sie als e i n s e r s c h e i n e n ?
Dabei sind, wie i m vorherigen Kapitel eingeführt, Variablen N a m e n v o n K ä s t c h e n , alle a n d e r e n T e r m e m ö g l i c h e I n h a l t e v o n K ä s t -
Ain ist
und Term
33
BEISPIELE
Beispiel 3.2
Term
dieser V a r i a b l e n . I n s t a n t i i e r u n g ist ein
neudeutscher Ausdruck, der v o m englischen „ i n s t a n t i a t i o n "
S c h e i t e r n e i n e r Unifikation i m a t o m a r e n F a l l :
fido
fifo
her-
s t a m m t . Das Wort „instance" bedeutet Beispiel.
Instantiierung
e i n e r V a r i a b l e n heißt also d a s F e s t l e g e n e i n e r
Beispiel-Belegung
Unifikation ( „ Ü b e r d e c k u n g " ) ist nicht m ö g l i c h .
f ü r e i n e V a r i a b l e . In e i n e m a n d e r e n P r o g r a m m l a u f k ö n n t e d i e V a r i a b l e j a a u c h a n d e r s b e l e g t w e r d e n . E i n e V a r i a b l e , die n o c h n i c h t
Beispiel 3.3
m i t e i n e m n i c h t v a r i a b l e n T e r m unifiziert w o r d e n ist, n e n n t m a n
einem Atom:
Unifikation einer
uninstantiierten Variablen
uninstantiiert.
fido
3.1
Beispiele
W i e d e r soll u n s die K a s t c h e n d e n k w e i s e z u r V e r a n s c h a u l i c h u n g dien e n : Die F r a g e n a c h d e r Unifizterbarkeit e n t s p r i c h t in e t w a d e m
folgenden Uberdeckungsproblem:
D a s Ergebnis der Unifikation ( „ Ü b e r d e c k u n g " ) ist:
fido
mit
34
KAPITEL
Beispiel 3.4
3.
UNIFIKATION
Unifikation zweier u n i n s t a n t i i e r t e r V a r i a b l e n :
3.2.
35
ÜBUNGEN
?-
=(atom,atom).
yes
Die o b i g e A n f r a g e läßt s i c h a u c h b e q u e m e r s c h r e i b e n a l s :
?D a s E r g e b n i s d e r Unifikation ( „ Ü b e r d e c k u n g " ) i s t :
atom •
atom.
Bei A n f r a g e n m i t V a r i a b l e n , w e r d e n d i e T n s t a n t i i e r u n g e n d e r V a riablen ausgegeben:
X,
Y
? - p r a e s i d e n t (Wer, Land)
Wer =
D i e V a r i a b l e n b e z e i c h n e n d e n gleichen K a s t e n . W i r d X s p ä t e r m i t
i r g e n d e i n e m a n d e r e n T e r m unifiziert, ist d a m i t g l e i c h z e i t i g Y a u c h
m i t d i e s e m T e r m unifiziert.
Beispiel 3.5
= praesident (Person, island) .
Person
Land =
island
W e n d e n Sie die U n i f i k a t i o n s v o r s c h r i f t a u f f o l g e n d e P a a r e v o n T e r m e n a n , d.h. e n t s c h e i d e n Sie, w e l c h e P a a r e v o n T e r m e n unifizierb a r s i n d . G e b e n Sie bei u n i f i z i e r b a r e n T e r m e n d e n b e t r e f f e n d e n
Unifikation zweier k o m p l e x e r T e r m e :
Unifikator a n , bei nicht u n i f i z i e r b a r e n d i e B e g r ü n d u n g f ü r d a s
Scheitern der Unifikation. Ü b e r p r ü f e n Sie I h r e V e r m u t u n g e n
praesidentin
praesidentin
I
!vigdis
island
1
I
y
P R O L O G - S y s t e m s oder Ihres R e c h n e r s n a c h , wie P r o g r a m m l ä u f e
„gewaltsam" abgebrochen werden können.
D a s E r g e b n i s d e r Unifikation ( „ Ü b e r d e c k u n g " ) i s t :
praesidentin
'vigdis
3.2
Y
island
Übungen
Ü b u n g 3 . 1 Unifizierbarkeit zweier T e r m e läßt sich direkt i m D i a log m i t d e m P R O L O G - S y s t e m n a c h p r ü f e n , m i t t e l s d e s e i n g e b a u t e n P r ä d i k a t s =. D i e s e P r ä d i k a t n i m m t die b e i d e n z u v e r g l e i c h e n d e n T e r m e als A r g u m e n t e .
an
I h r e m P R O L O G - S y s t e m . S c h l a g e n Sie z u v o r i m H a n d b u c h I h r e s
3.
?-
a(X,Y,Z)
= a(q,U).
4.
?-
a(X,Y,Z)
=
5.
?-
a(b(C))
a(W,P,t).
= b(a(C)).
36
KAPITEL
6.
?-
fl(f2(i3,i4),f5(i6,X,Y),g)
3.
=
il(A,f5(B,f7,f8),H).
7.
?-
X = X.
8.
?-
f(X)
?-
fl(f2(f3,i4),i5(f6,X,Y),g)
9.
= X.
fl(A,f5(B,f7),H).
10.
?-
a = a(X,Y) .
11.
?-
a =
12.
?-
qvertz
a.
=
qwerty.
=
Kapitel 4
Beweisverfahren
W i e in d e r E i n l e i t u n g e r w ä h n t ,
werden A n f r a g e n an eine
t e n b a s i s a u f g r u n d eines Beweisverfahrens
Da-
b e a n t w o r t e t . W i r wol-
len h i e r keine f o r m a l k o r r e k t e D e f i n i t i o n v o n B e w e i s v e r f a h r e n f ü r
P R O L O G liefern, s o n d e r n v i e l m e h r e t w a s G e f ü h l d a f ü r v e r m i t teln, wie dieses B e w e i s v e r f a h r e n i n d e r P r a x i s a b l ä u f t .
B e r e i t s die a l t e n G r i e c h e n b e s c h ä f t i g t e n s i c h m i t d e r E n t w i c k lung v o n S c h e m a t a , die d a s s y s t e m a t i s i e r e n ,
Schließen
was wir
logisches
n e n n e n . S c h l u ß f o l g e r u n g e n sollen n i c h t willkürlich g e -
schehen, sondern durch Befolgen b e s t i m m t e r Vorschriften nachvollziehbar sein. E i n s c h o n seit d e n a l t e n G r i e c h e n b e k a n n t e s B e i spiel f ü r eine Schlußregel
ist d e r Modus
Ponens
, d e r in e i n e r v e r a l l -
gemeinerten F o r m im P R O L O G - B e w e i s v e r f a h r e n verwendet wird.
Schlußregeln b e s c h r e i b e n d i e B e z i e h u n g z w i s c h e n e i n e r M e n g e v o n
V o r a u s s e t z u n g e n u n d d e r m ö g l i c h e n F o l g e r u n g a u s diesen V o r a u s setzungen.
38
KAPITEL
Beispiel 4.1
Modus
Voraussetzungen:
4.
BEWEISVERFAHREN
BEWEISVERFAHREN
4.1
Ponens
P ( X ) falls
Q(X)
UND
39
UNIFIKATION
Beweis verfahren und Unifikation
Bei B e t r a c h t u n g des B e w e i s v e r f a h r e n s w i r d a u c h e r s i c h t l i c h , w o
Q(X)
Folgerung:
4.1.
in P R O L O G die U n i f i k a t i o n z u m Z u g k o m m t : W e i t e r e ,
P(X)
gemäß
Modus P o n e n s zu b e w e i s e n d e V o r a u s s e t z u n g e n w e r d e n m i t
der
Unifikation als T e s t k r i t e r i u m in d e r D a t e n b a s i s a u f g e f u n d e n . D i e
Beispiel 4.2
zu b e w e i s e n d e B e h a u p t u n g m u ß m i t d e m Kopf
A n w e n d u n g des M o d u s P o n e n s :
X ist s t e r b l i c h ,
falls
e i n e r K l a u s e l in d e r
Datenbasis unifizierbar sein. D i e s e U n i f i k a t i o n liefert
Variablen-
Instantiierungen für w e i t e r h i n z u b e w e i s e n d e A u s s a g e n i m
X ein M e n s c h ist.
Rumpf
dieser K l a u s e l .
S o k r a t e s ist ein M e n s c h .
F ü r u n s e r einfaches B e i s p i e l k a n n u n s die K ä s t c h e n - D e n k w e i s e
S o k r a t e s ist s t e r b l i c h .
nocheinmal z u r V e r a n s c h a u l i c h u n g
des G e s c h e h e n s d i e n e n .
Bei
komplizierteren F ä l l e n s t ö ß t d a s K ä s t c h e n - P a r a d i g m a j e d o c h a u f
D i e V o r a u s s e t z u n g e n des Beispiels stellen, n a c h P R O L O G
über-
s e t z t , eine kleine D a t e n b a s i s d a r :
sterblich(X)
seine G r e n z e n . F ü r d e n e i n f a c h e n F a l l n u n b e s i t z e j e d e K l a u s e l f ü r
jede A r g u m e n t s t e l l e i h r e s K o p f e s ein K ä s t c h e n , d a s f ü r d e n a u f
dieser A r g u m e n t s t e l l e s i t z e n d e n T e r m s t e h e n soll. F a l l s a l s o a u f
:-
einer A r g u m e n t s t e l l e e i n e V a r i a b l e s t e h t , w i r d ein m i t d e m N a -
mensch(X).
men d e r b e t r e f f e n d e n V a r i a b l e n g e k e n n z e i c h n e t e s K ä s t c h e n ein-
mensch(sokrates).
geführt. B e a c h t e , d a ß d i e K ä s t c h e n u n d d e r e n N a m e n lokal z u r
A n diese D a t e n b a s i s k ö n n e n n u n A n f r a g e n g e s t e l l t w e r d e n , d e r
Form:
Klausel s i n d , in d e r sie v o r k o m m e n . V a r i a b l e n n a m e n g e l t e n a l s o
nicht k l a u s e l ü b e r g r e i f e n d . W e r d e n in v e r s c h i e d e n e n K l a u s e l n d i e
„Beweise mir:"
gleichen N a m e n b e n u t z t , s i n d diese als v e r s c h i e d e n e
b z w . „ L ä ß t sich a u s d e r D a t e n b a s i s f o l g e r n : "
d.h. v e r s c h i e d e n e K ä s t c h e n a n z u s e h e n . D e r Ü b e r s i c h t l i c h k e i t we-
?-
gen z e i c h n e n w i r bei K l a u s e l n d e r D a t e n b a s i s d i e K ä s t e n o b e r h a l b
sterblich(sokrates).
D a w i r b e w e i s e n l a s s e n wollen, d a ß diese B e h a u p t u n g a u s den
K l a u s e l n d e r D a t e n b a s i s als d e n V o r a u s s e t z u n g e n f o l g t , w i r d die
S c h l u ß r e g e l des M o d u s P o n e n s „ r ü c k w ä r t s " a n g e w a n d t
des eigentlichen T e x t s d e r K l a u s e l , bei A n f r a g e n a n d i e D a t e n b a s i s
unterhalb des zu b e w e i s e n d e n F a k t s .
werden:
W i r k e n n e n d a s A u s s e h e n d e r F o l g e r u n g u n d s t e l l e n a n h a n d der
S c h l u ß r e g e l fest, welche A u s s a g e n b e w i e s e n sein m ü s s e n ,
Beispiel 4 . 3 Klausel mit den zugehörigen K ä s t c h e n :
damit
d i e s e F o l g e r u n g bewiesen ist. D i e A n f r a g e s t e r b l i c h ( s o k r a t e s )
l ä ß t sich m i t d e m K o p f d e r K l a u s e l s t e r b l i c h ( X )
Variablen,
X
:-mensch(X)
unifizieren u n d f ü h r t z u d e r B e l e g u n g X = s o k r a t e s . D a d u r c h wird
sterblich(X):-mensch(X)
klar, welche weitere Voraussetzung bewiesen werden m u ß :
mensch(sokrates) .
D i e s e r U n t e r b e w e i s läßt s i c h in t r i v i a l e r W e i s e d u r c h f ü h r e n , d a
d i e s a l s F a k t in d e r D a t e n b a s i s s t e h t .
In K ä s t c h e n - N o t a t i o n l a u t e t die A n f r a g e (Zielklausel),
t r a c h t e n wollen:
die wir b e -
40
KAPITEL
4.
BEWEISVERFAHRElm.2.
41
BACKTRACKING
sterblich(sokrates)
mensch(sokrates)
sokrates
sokrates
Verfolgen wir n o c h einmal den Beweisverlauf für diese Zielklausel,
mensch(sokrates)
u m zu s e h e n , wie die V a r i a b l e n v e r s c h i e d e n e r K l a u s e l n d u r c h U n i fikation z u e i n a n d e r in B e z u g g e s e t z t w e r d e n . P a s s e n d z u r A n f r a g e
finden wir in d e r D a t e n b a s i s die K l a u s e l
sterblich(X)
mensch(X).
D a m i t ist der B e w e i s d a f ü r , d a ß S o k r a t e s s t e r b l i c h ist, e r f o l g r e i c h
abgeschlossen.
:j
D i e U n i f i k a t i o n d e r einzigen A r g u m e n t s t e l l e d e r A n f r a g e u n d derj
des K o p f e s d e r K l a u s e l in d e r D a t e n b a s i s
W i r fassen z u s a m m e n :
D u r c h Unifikation wird
Information
ü b e r K l a u s e l - G r e n z e n h i n w e g t r a n s p o r t i e r t u n d „in m i t e i n a n d e r
unifizierten K ä s t e n " a n g e s a m m e l t . „ A n s a m m e l n " b e i n h a l t e t a u c h ,
daß die „ T r a n s p o r t r i c h t u n g " d e r I n f o r m a t i o n n i c h t f e s t g e l e g t i s t .
E i n e r s e i t s k a n n I n f o r m a t i o n v o n e i n e r A n f r a g e in e i n e K l a u s e l e i n -
st erbli ch(s okrat es)
gebracht werden, als R a h m e n b e d i n g u n g e n , u n t e r denen d e r Beweis
weitergeführt werden m u ß . Andererseits kann a u c h
sokrates
Information
aus einer K l a u s e l d e r D a t e n b a s i s a u f die A n f r a g e ü b e r t r a g e n w e r den u n d s o m i t e i n e „ A n t w o r t " in F o r m v o n I n s t a n t i i e r u n g e n d e r
sterblich(X):-mensch(X)
liefert die V a r i a b l e n - I n s t a n t i i e r u n g ( „ F ü l l u n g d e s K ä s t c h e n s " ) f ü r |
die n a c h d e m S c h e m a des M o d u s P o n e n s n o c h z u b e w e i s e n d e A u s sage:
Variablen der A n f r a g e erzeugt werden.
4.2
Backtracking
In d e n m e i s t e n F ä l l e n l a u f e n j e d o c h B e w e i s e n i c h t s o g e r a d l i n i g
und p r o b l e m l o s a b . N e h m e n w i r f o l g e n d e D a t e n b a s i s a n :
mensch(sokrates)
sokrates
U m diese Unteranfrage,
d.h. v o m S y s t e m e r z e u g t e A n f r a g e z u b e weisen, greifen w i r a u f d e n F a k t z u r ü c k :
sokrates
mensch(s,okrates)
schwabe(X)
wohnt(X,Y).
ort(aalen).
ort(lorch).
wohnt(lothar,aalen).
wohnt(gustav.lorch).
wohnt(adele,lorch).
Die K l a u s e l n u n d F a k t e n s i n d in einer b e s t i m m t e n
Reihenfolge
a n g e o r d n e t , die S u c h e n a c h e i n e m B e w e i s b a s i e r t a u f d i e s e r R e i henfolge. W o l l e n
D i e s e r F a k t l ä ß t sich spielend m i t d e r n e u e r z e u g t e n z u b e w e i s e n d e n A n f r a g e unifizieren:
:-
ort(Y),
wir z u m
Beispiel nachprüfen
lassen, ob
Gu-
s t a v g e m ä ß o b i g e r D a t e n b a s i s ein S c h w a b e ist, p a s s i e r t f o l g e n d e s :
schwabe ( g u s t a v ) paßt a u f den K o p f der Klausel:
KAPITEL
42
schwabe(X)
4.
4.2.
BEWEISVERFAHRE
43
BACKTRACKING
schwabe(gustav):-
:-
ort(Y),
ort(Y),
wohnt(gustav,Y).
wohnt(X,Y).
Um schwabe(gustav)
zu beweisen, m u ß also zuerst o r t ( Y )
ge-
z e i g t w e r d e n , d . h . es m u ß ein m ö g l i c h e r W o h n o r t g e r a t e n werden;
rt(lorch)
ort(aalen
w e r d e n . Als e r s t e r F a k t ü b e r W o h n o r t e ist e i n g e t r a g e n :
schwabe(gustav):-
ort(aalen) .
E s b l e i b t z u zeigen, d a ß gilt w o h n t ( g u s t a v , a a l e n ) . Dies ist je-,
d o c h n i c h t m ö g l i c h . D e r Teilbeweis wohnt ( g u s t a v , a a l e n )
scheiß
t e r t . D i e B e w e i s s u c h e ist in eine S a c k g a s s e g e r a t e n .
back-
ort(aalen),
wohnt(gustav,
tracking
aalen).
I
scheitert
Die z w e i t e A l t e r n a t i v e ist a n g e m e s s e n e r u n d e r l a u b t e i n e n erfolg-
schwabe(gustav):-
reichen A b s c h l u ß des B e w e i s e s , d a ß G u s t a v e i n S c h w a b e ist:
ort(Y),
wohnt(gustav,Y).
schwabe(gustav):-
ort(aalen)
ort(Y),
schwabe(gustav):-
wohnt(gustav,Y).
ort(aalen),
wohnt(gustav,
aalen).
ort(lorch)
ort(aalen)
I
scheitert
schwabe(gustav):-
schwabe(gustav):-
ort(lorch),
ort(aalen),
wohnt(gustav,
wohnt(gustav,aalen).
lorch).
M a n soll n i c h t gleich a u f g e b e n , w e n n m a n in e i n e S a c k g a s s e g e r ä t .
H ä u f i g hilft e s , z u m l e t z t e n V e r z w e i g u n g s p u n k t
zurückzugehen
wohnt (guslj a v , l o r c h )
u n d eine d e r a n d e r e n M ö g l i c h k e i t e n a u s z u p r o b i e r e n . D i e B e w e i s s u c h e m u ß a l s o z u r ü c k a n die Stelle, a n d e r d i e
zwischen o r t ( a a l e n )
und o r t ( l o r c h )
Entscheidung
g e t r o f f e n w u r d e , u n d ihr
Glück mit der zweiten Alternative versuchen. Dieses
zen
auch
B e i m Z u r ü c k s e t z e n wi^d die a l t e I n s t a n t i i e r u n g d e r
Variablen X in d e r Schwabenklausel „vergessen" u n d eine neue
Instantiierung X = l o r c h
angenommen.
X =
gustav
o.k.
Zurückset-
z u m l e t z t e n V e r z w e i g u n g s p u n k t heißt a u f N e u d e u t s c h
backtracking.
scheitert
Im e b e n g e z e i g t e n F a l l t r a t e i n internes
Scheuern
weises auf. W i r k ö n n e n a b e r a u c h „ v o n a u ß e n
Maschine z u m B a c k t r a c k i n g zwingen.
eines T e i l b e
die
PROLOG
44
KAPITEL
4.
BEWEISVERFAHREll.3.
B e i s p i e l 4 . 4 S t e l l e n wir a n o b i g e D a t e n b a s i s f o l g e n d e F r a g e :
?-
schwabe(
Wer =
Wer
•durch S c h e i t e r n eines Teilbeweises a u s g e l ö s t . B a c k t r a c k i n g l ä ß t
).
lalle V a r i a b l e n b e l e g u n g e n , die a m l e t z t e n V e r z w e i g u n g s p u n k t g e -
lothar;
fciacht
Wer = g u s t a v ;
Wer =
45
ABLAUFPROTOKOLL
wurden, vergessen und erlaubt die e r n e u t e Instantiierung
•der V a r i a b l e n m i t d e n a n d e r e n m ö g l i c h e n W e r t e n . D a b e i ist z u b e -
adele;
a c h t e n , d a ß d i e D a t e n b a s i s strikt v o n o b e n n a c h u n t e n d u r c h s u c h t
no
wird, u n d d a ß U n t e r z i e l e in d e r R e i h e n f o l g e i h r e r E r w ä h n u n g i n
der e n t s p r e c h e n d e n K l a u s e l a n g e s t o ß e n w e r d e n .
Der Strichpunkt
; ist jeweils B e n u t z e r e i n g a b e u n d b e w i r k t , d a ß
n a c h einer w e i t e r e n L ö s u n g g e s u c h t w i r d . F a l l s keine
weiteren
L ö s u n g e n zu finden sind, w i r d d a s e n d g ü l t i g e S c h e i t e r n d e r Suc h e m i t n o a n g e z e i g t . D i e v e r s c h i e d e n e n L ö s u n g s w e g e k ö n n e n als]
B a u m v o n A l t e r n a t i v e n d a r g e s t e l l t w e r d e n . S t a t t wie in d e r Dat e n b a s i s vertikal sind h i e r die a l t e r n a t i v e n F a k t e n eines P r ä d i k a t s
horizontal angeordnet.
¿ 0
s c h w a b e ( X ) :ort(Y),
wohnt(X,Y).
4.3
ort(lorch)"
schwabe(X):-
schwabe(X):-
ort(aalen),
ort(lorch),
wohnt(X,
aalen).
Ablaufprotokoll
1
Die m e i s t e n P R O L O G - S y s t e m e b i e t e n M ö g l i c h k e i t e n a n , die einzelnen B e w e i s s c h r i t t e m i t z u v e r f o l g e n (trace).
M a n gibt ein:
trace.
wohnt(X,lorch).
und d a n n z u m Beispiel
wohnj;a.othar,_aalen) _
X =
wohnt(gustajJLor^h)
lothar
o.k.
X = gustav
o.k.
_ w b h n t ( a d e l e , 1Lol
X =
adele
o.k.
spy
schwabe/1.
also d e n P r ä d i k a t s n a m e n u n d die Steifigkeit d e s z u u n t e r s u c h e n den P r ä d i k a t s . D i e B e w e i s s c h r i t t e w e r d e n in v i e r K l a s s e n e i n g e teilt: c a l l ,
D e r B e g r i f f backtracking
redo,
exit,
f a i l . D e r B e g i n n eines neuen Teilbe-
r ü h r t d a h e r , d a ß sich d e r B e w e i s e r
weises w i r d m i t c a l l g e k e n n z e i c h n e t . D i e M a r k i e r u n g r e d o d e u t e t
a n den Verzweigungspunkten i m Beweis, also a n Stellen, in denen
d e n V e r s u c h d e r W i e d e r h o l u n g eines T e i l b e w e i s e s m i t a l t e r n a t i v e r
m e h r e r e v e r s c h i e d e n e F o r t s e t z u n g e n des B e w e i s e s m ö g l i c h s i n d ,
Variablenbelegung an. Mit e x i t
M a r k i e r u n g e n s e t z t , w e l c h e r P f a d e i n g e s c h l a g e n w u r d e , u n d wel-
des g e r a d e b e a r b e i t e t e n T e i l b e w e i s e s , m i t f a i l d a s S c h e i t e r n die-
wird das erfolgreiche Beenden
c h e P f a d e f ü r die w e i t e r e B e w e i s s u c h e n o c h z u r V e r f ü g u n g s t e -
ses T e i l b e w e i s e s m i t d e r g e g e n w ä r t i g e n
hen. Scheitert ein Lösungsweg, „setzt" P R O L O G zurück u n d ver-
angezeigt. D a s Ablaufprotokoll für das eben besprochene Beispiel
s u c h t die n ä c h s t e m ö g l i c h e A l t e r n a t i v e . B a c k t r a c k i n g w i r d a l s o
sieht a u f d e m B i l d s c h i r m in e t w a s o a u s :
Variablen-Instantiierung
46
KAPITEL
4.
4.5.
BEWEISVERFAHRE*
Anfrage z u m e i n s t e l l i g e n P r ä d i k a t s c h w a b e d a s
call(schwabe(gustav))
call(ort(Y))
sichtbar w i r d , n o s p y
exit(ort(aalen))
Prädikat.
call(wohnt(gustav,aalen))
sich A b l a u f p r o t o k o l l e v o n A n f r a g e n a n d i e s e D a t e n b a s e n a n .
exit(ort(lorch))
2. W a s g e s c h i e h t b e i d e r A n f r a g e
call(wohnt(gustav,lorch))
exit(wohnt(gustav,lorch))
?-
exit(schwabe(gustav))
raetsel:was_denn,
B e w e i s e in P R O L O G folgen i m P r i n z i p d e m S c h e m a des M o d u s
dient hierbei z u m A u f f i n d e n
passender
K l a u s e l n in d e r D a t e n b a s i s u n d s o m i t z u m E r z e u g e n v o n
Un-
t e r b e w e i s e n . D a d a s B e w e i s v e r f a h r e n a u f S u c h e b e r u h t , k a n n es
a u c h i n S a c k g a s s e n g e r a t e n , die d a n n ein Z u r ü c k s e t z e n ( v o n V a r i a erfordern. N o c h nicht erwähnt
w u r d e , daß das Suchverfahren handelsüblicher P R O L O G - S y s t e m e
unvollständig
raetsel.
a n folgende D a t e n b a s i s :
Zusammenfassung
b l e n b e l e g u n g e n ) , d.h. backtracking,
wieder v o m
der bis j e t z t e r w ä h n t e n P r o g r a m m b e i s p i e l e u n d s c h a u e n Sie
redo(ort(Y))
P o n e n s . Die Unifikation
Ablaufprotokoll
s c h w a b e / 1 e n t f e r n t d i e s e n Spion
1. Definieren Sie sich D a t e n b a s e n ( d . h . D a t e i e n ) m i t e i n i g e n
fail(wohnt(gustav,aalen))
4.4
47
ÜBUNGEN
wie_auch_immer.
was_denn:abxy.
was_denn:cufg.
cufg.
wie_auch_immer.
ist. D a s heißt, in einigen F ä l l e n findet d e r B e w e i s e r
k e i n e n B e w e i s ( o b w o h l n a c h den G e s e t z e n d e r L o g i k ein B e w e i s
3. W i e a r b e i t e t d a s P r ä d i k a t r a e t s e l ( X ) ?
e x i s t i e r e n m ü ß t e ) , s o n d e r n g e r ä t in e i n e „ u n e n d l i c h e S c h l e i f e " , weil
e r z u e r s t in die T i e f e des B e w e i s b a u m e s s u c h t u n d d a b e i e v e n t u - ,
eil a u f einen Zweig g e r ä t , d e r sich beliebig v e r l ä n g e r n l ä ß t , o h n e
j e m a l s z u s c h e i t e r n o d e r sich erfolgreich a b s c h l i e ß e n z u l a s s e n ( G e -
raetsel(X):was_denn(X).
was_denn(huhn(X)):abrakadabra(X).
n a u e r e s h i e r z u z . B . in [Schöning 1 9 8 7 ] ) .
was_denn(hahn(X)):-
4.5
Übungen
Ü b u n g 4 . 1 S c h l a g e n Sie in I h r e m
j
simsalabim(X).
abrakadabra(ute).
sinsalabim(otto).
P R O L Q G - H a n d b u c h nach, i
wie d e r T r a c e , das Ablaufprotokoll für Beweise, ein- u n d
aus-]
g e s c h a l t e t w i r d . N o r m a l e r w e i s e g e s c h i e h t dies m i t t e l s d e r P r ä d i - j
kate t r a c e und spy, n o t r a c e und n o s p y . D u r c h t r a c e wird ein]
Ablaufprotokoll ermöglicht, durch n o t r a c e wieder der N o r m a l z u - J
s t a n d hergestellt, s p y s c h w a b e / 1 b e w i r k t , d a ß m i t d e r n ä c h s t e n ]
Ü b u n g 4 . 2 E n t w e r f e n Sie eine D a t e n b a s i s , d i e f o l g e n d e I n f o r m a tion e n t h ä l t :
• Apfelbäume, S t a c h e l b e e r - und H i m b e e r s t r ä u c h e r , K a k t e e n und
Hundsrosen sind Pflanzen
48
KAPITEL
4.
BEWEISVERFAHREP
\
• Apfel sind F r ü c h t e von A p f e l b ä u m e n , S t a c h e l b e e r e n von Sta-
1
c h e l b e e r s t r ä u c h e r n , Himbeeren von H i m b e e r s t r ä u c h e r n , Feigen|
von Kakteen, H a g e b u t t e n von H u n d s r o s e n .
• Apfel, Stachelbeeren, Himbeeren und Feigen sind eßbar
• E t w a s kann mit d e r B e z e i c h n u n g
„ O b s t " versehen w e r d e n ,
wenn es eine Pflanze gibt, dessen F r u c h t es ist, und wenn efl
eßbar ist.
T e s t e n Sie die K o r r e k t h e i t d e r D a t e n b a s i s z u m Beispiel mit
Anfragen (mit Backtracking!):
?- obst(Was).
?-
'Kapitel 5
1
d e n l T } U J| V
- |UT »l CS 1
ß
Q J 1
obst(hagebutte).
Ü b u n g 4 . 3 S c h r e i b e n Sie m i n d e s t e n s z w e i K l a u s e l n , d i e d i e P r o
blematik ausdrücken:
W a s war zuerst d a - d a s Huhn o d e r d a s E i ?
V e r b a l e L ö s u n g in e t w a :
Ein Huhn ist d a , falls ein Ei d a ist ( w a r ) .
Ein Ei ist da, falls ein Huhn da ist.
U n t e r s u c h e n Sie d a s A b l a u f v e r h a l t e n d i e s e r b e i d e n P r ä d i k a t e .
Das z u r e i t e w i c h t i g e K o n z e p t in P R O L O G i s t n e b e n d e r Unifikation d i e Rekursion.
R e k u r s i o n w i r d als P r i n z i p i m w e s e n t l i c h e n
in d e r M a t h e m a t i k e i n g e s e t z t , es g i b t j e d o c h a u c h e i n i g e w e n i g e
Beispiele a u s d e m täglichen L e b e n , die die Idee der
Rekursion
verdeutlichen.
Eine
wunderschöne
Realisierung
von
Rekursivität
sind
die
•-Matr-^schkas", die r u s s i s c h e n P u p p e n . M a n öffnet die ä u ß e r s t e
P u p p e - m d e r b l i c k t die g l e i c h e P u p p e w i e d e r , n u r e i n e N u m m e r
kleiner. A u c h d i e s e P u p p e k a n n m a n öffnen u s w . , bis m a n b e i d e r
klein=T«n, der unzerlegbaren ( „ a t o m a r e n " ) P u p p e angelangt
Die D r a u f s i c h t a u f e i n e M a t r u s c h k a w ä r e u n g e f ä h r s o :
ist.
KAPITEL
50
5.
REKURSIO
5.1.
DIE
puppe(emma(Puppe)):-
In P R O L O G ( u n d a u c h in a n d e r e n P r o g r a m m i e r s p r a c h e n ) l a s s
sich vergleichbare S t r u k t u r e n aufbauen. B e v o r wir j e d o c h uns
puppe(Puppe).
e r s t e s r e k u r s i v e s P r ä d i k a t f o r m u l i e r e n , sollten w i r d e s s e n V o r g
Die A n f r a g e :
hensweise verbal beschreiben:
wird b e a n t w o r t e t m i t :
• I n n e r s t e , „ u n z e r l e g b a r e " P u p p e n e n t s p r e c h e n in
atom.aren
Ato
emma.
H ü l l e u n d d e r n ä c h s t k l e i n e r e n P u p p e in i h r . D i e E i n b e t t u n
v o n kleineren in g r ö ß e r e S t r u k t u r e n findet sich in
komplexe
w i e d e r . E i n e n i c h t - a t o m a r e P u p p e soll z u m B e i s p i
d i e S t r u k t u r e m m a ( P u p p e ) b e s i t z e n , w o b e i d e r F u n k t o r emm
unvollständig. A u f g r u n d d e r impliziten
Abbruchbedingung
Abbruchbedingung,
die da-
hen ist, folgt z u m i n d e s t d i e A n t w o r t n o . S c h w e r w i e g e n d e r w i r d d a s
Fehlen d e r A b b r u c h b e d i n g u n g , w e n n die A n f r a g e m i t e i n e r V a r i a blen s t a t t m i t e i n e r v o l l s t ä n d i g spezifizierten S t r u k t u r
versehen
ist:
?-
puppe(Puppe).
Hier k o m m t ü b e r h a u p t keine A n t w o r t v o m B e w e i s e r z u r ü c k , weil
darin enthaltene Puppe steht, über deren genauere Strukt
die B e w e i s p r o z e d u r i n e i n e Schleife
wir j a nicht unbedingt Bescheid wissen.
„unendlich" g r o ß e M a t r u s c h k a a u f z u b a u e n .
E i n e P u p p e der Verschachtelungstiefe 2 werde d a n n z . B . so dar
Schreibung realisiert, lautet:
puppe(emma).
puppe(emma(Puppe)):puppe(Puppe).
„Sinnvolle" rekursive Prädikatsdefinitionen zeichnen sich dadurch
a u s , d a ß sie m i n d e s t e n s zwei K l a u s e l n h a b e n , d . h . m i n d e s t e n s z w e
Fallunterscheidungen berücksichtigen. Zuerst erwähnt wird meis t e n s d i e Abbruchbedingung.
D i e A b b r u c h b e d i n g u n g h e i ß t deswe-
g e n s o , weil d a s z u definierende P r ä d i k a t nicht m e h r i m R u m p f dies e r K l a u s e l e r w ä h n t w i r d , also kein rekursiver
Aufruf
m e h r statt-
D i e a n d e r e K l a u s e l b e i n h a l t e t die R e k u r s i o n : d a s P r ä d i k a t
r u f t s i c h selbst w i e d e r auf.
5.1
no
d e r ä u ß e r e n P u p p e e n t s p r i c h t , die V a r i a b l e P u p p e f ü r di
gestellt: emma(emma(emma)). D a s P r ä d i k a t , das obige verbale B e
findet.
puppe(emma(emma(emma))) .
durch e n t s t e h t , d a ß d e r F a l l e i n e r a t o m a r e n P u p p e n i c h t v o r g e s e -
• J e d e größere P u p p e besteht aus ihrer nach außen sichtbare
Termen
?-
Die D e f i n i t i o n ist a l s o o h n e eine explizite
PROLO
W ä h l e n w i r als B e i s p i e l d a s
Strukturen.
51
ABBRUCHBEDINGUNG
Die Abbruchbedingung
Weis g e s c h i e h t bei e i n e m r e k u r s i v definierten P r ä d i k a t , d a s keine
explizite Abbruchbedingung enthält? Nehmen wir einmal an, das
P r ä d i k a t p u p p e sei n u r d u r c h f o l g e n d e K l a u s e l d e f i n i e r t :
gerät. E s wird versucht, die
52
KAPITEL
5.2
5.
3.
REKURSIO,
Der rekursive Aufruf
BEISPIEL:
[Beispiel 5 . 1
53
WEGSUCHE
Stadtplan
S o wie d a s F e h l e n v o n A b b r u c h b e d i n g u n g e n f ü r r e k u r s i v e P r ä d i
k a t s d e f i n i t i o n e n f ü r die B e w e i s s u c h e „ t ö d l i c h " sein k a n n , ist a u c j |
nicht j e d e A r t v o n r e k u r s i v e m A u f r u f sinnvoll. V e r ä n d e r n w i r dii
A r g u m e n t e in d e r r e k u r s i v e n K l a u s e l wie f o l g t :
puppe(emma).
puppe(Puppe):puppe(emma(Puppe)).
Stellen wir a n diese D a t e n b a s i s d i e A n f r a g e
?-
puppe(emma(emma(emma))).
g e l a n g t die B e w e i s s u c h e w i e d e r u m in e i n e „ u n e n d l i c h e " Schleife^
weil m i t j e d e m r e k u r s i v e n A u f r u f d e s P r ä d i k a t s p u p p e d i e Strukt u r d e s s e n A r g u m e n t s v e r g r ö ß e r t s t a t t v e r k l e i n e r t w i r d . U m z u be^
weisen, d a ß die S t r u k t u r emma(emnia(eiMna))) d e r D e f i n i t i o n von
p u p p e g e n ü g t , w i r d v e r s u c h t , dies f ü r alle beliebig g r o ß e n P u p p e n
zu beweisen.
W i r folgern d a r a u s , daß rekursive Prädikatsdefinitionen
nur
d a n n S i n n m a c h e n , w e n n die A r g u m e n t e des . r e k u r s i v e n A u f r u f s
m i t „ k l e i n e r e n " S t r u k t u r e n i n s t a n t i i e r t s i n d als d i e A r g u m e n t e im
1
—'cS¿£££í>
Prädikatskopf. Rekursive Aufrufe m i t der gleichen o d e r g a r e i n e r j
g r ö ß e r e n S t r u k t u r f ü h r e n i m a l l g e m e i n e n i n e i n e Schleife.
D a P R O L O G keine solchen ü b e r s i c h t l i c h e n g r a p h i s c h e n D a r s t e l -
5.3
lungen zuläßt, müssen wir zuerst d a r a n g e h e n , die Information
Beispiel: Wegsuche
N e h m e n w i r a n , w i r wollten a n h a n d d e s f o l g e n d e n
aus d e r K a r t e in eine L i s t e v o n F a k t e n z u ü b e r s e t z e n . E i n F a k t
Ausschnitts
a u s e i n e m S t a d t p l a n d e n W e g v o m B a h n h o f z u r U n i v e r s i t ä t fin
d e n . W e n n w i r e i n m a l die R i c h t u n g f e s t g e s t e l l t h a b e n , in die w i r
gehen müssen, wird unsere Aufgabe daxin bestehen, den n o c h verbliebenen W e g z u u n s e r e m g e g e n w ä r t i g e n S t a n d o r t s c h r i t t w e i s e zu;
verkleinern. Oder „rekursiv formuliert":
• W e g s u c h e b e s t e h t d a r i n , die e r s t e T e i l s t r e c k e d e s W e g e s z u
u n d d a n n v o m neuen S t a n d o r t a u s die
k a n t e n G e b ä u d e . Die K r e u z u n g e n s e l b s t w e r d e n d a r g e s t e l l t d u r c h
Terme k r e u z t ( S t r a s s e l , S t r a s s e 2 ) .
vegCbahnhof,kreuzt (kronenstr, l a u t e n s c h l a g e r s t r ) ) .
kreuzt(friedrichstr,kronenstr)) .
weg(bahnhof, kreuzt ( f r i e d r i c h s t r , k r i e g s b e r g s t r ) ) .
p u n k t i d e n t i s c h ist.
erneut zu s t a r t e n .
zwei P u n k t e n w i e z u m Beispiel e i n e r K r e u z u n g o d e r e i n e m m a r -
weg(kreuzt(kronenstr,lautenschlagerstr),
• D i e W e g s u c h e e n d e t , w e n n u n s e r S t a n d o r t m i t d e m Ziel-
finden,
der A r t weg ( P u n k t 1 , P u n k t 2 ) b e s c h r e i b t d i e V e r b i n d u n g z w i s c h e n
Wegsuche
veg(kreuzt(friedrichstr,kriegsbergstr)
,
kreuzt(f riedrichstr,kronenstr)).
weg(kreuzt(friedrichstr,kronenstr),uni) .
54
KAPITEL
5.
REKURSIO.i
5.4.
55
ÜBUNGEN
• Auf unterster F ü h r u n g s e b e n e unterstehen einer M a n a g e r i n j e -
weg(kreuzt(friedrichstr.kronenstr),
weils eine b e s t i m m t e Anzahl von Mitarbeiterinnen.
kreuzt(kriegsbergstr,kronenstr)).
weg(kreuzt(kriegsbergstr,kronenstr),
Aus einer G r u n d m e n g e v o n M i t a r b e i t e r i n n e n u n d C h e f i n n e n sol-
kreuzt(keplerstr.kriegsbergstr)).
len sich d u r c h B a c k t r a c k i n g v e r s c h i e d e n e ( i m P r i n z i p u n e n d l i c h e
weg(kreuzt(keplerstr.kriegsbergstr),uni).
viele) p e r s o n e l l e K o n f i g u r a t i o n e n h e r s t e l l e n l a s s e n .
W i r e r w e i t e r n d i e s e D a t e n b a s i s n o c h u m eine r e k u r s i v e P r ä d i k a t s
Übung 5.3
d e f i n i t i o n , d i e u n s n a c h o b e n g e n a n n t e n G e s i c h t s p u n k t e n d i e Su-
des v o r i g e n K a p i t e l s u m ( w i l l k ü r l i c h e ) A b b r u c h b e d i n g u n g e n , z u m
c h e n a c h e i n e m W e g b e s c h r e i b t . D a s P r ä d i k a t w e g s u c h e ist drei-
Beispiel u m A n g a b e n ü b e r ein U r h u h n , d a s v o m H i m m e l fiel. ( W o
stellig. Sein e r s t e s A r g u m e n t b e i n h a l t e t d e n g e g e n w ä r t i g e n S t a r f
d o r t , d a s z w e i t e A r g u m e n t dient z u m M i t f ü h r e n d e r Information
E r w e i t e r n Sie die P r ä d i k a t e z u m H ü h n e r - E i - P r o b l e m
bleibt d e r H a h n ? )
ü b e r d e n Z i e l p u n k t , d a s d r i t t e A r g u m e n t h a t die F u n k t i o n , dii
Ü b u n g 5 . 4 E r w e i t e r n Sie für d a s P r o b l e m w e g s u c h e die M e n g e
Information über den Wegverlauf „einzusammeln".
der F a k t e n ü b e r m ö g l i c h e V e r b i n d u n g e n . L a s s e n S i e z u , d a ß einzelne V e r b i n d u n g e n a u c h in d e r G e g e n r i c h t u n g b e g a n g e n w e r d e n
wegsuche(Punkt,Punkt,Punkt).
können. U n t e r s u c h e n Sie j e t z t d a s A b l a u f v e r h a l t e n v o n
wegsuche(Anfang.Ende,weg(Anfang,Naechst erWeg))
:-
wegsuche(Start,Ende,Weg).
weg(Anfang.NaechsterPunkt),
Welches P r o b l e m ist e n t s t a n d e n ? M a c h e n S i e s i c h G e d a n k e n , wie
wegsuche(NaechsterPunkt,Ende,Naechst erWeg).
dem a b g e h o l f e n w e r d e n k ö n n t e .
Übung 5.5
R e k u r s i o n w i r d h i e r „ v e r n ü n f t i g " v e r w e n d e t : D i e r e k u r s i v e Klau
S c h r e i b e n Sie ein P r ä d i k a t
s i m p l e - t erm ( S i m p l e T e r m )
sei „ v e r k ü r z t " jeweils die n o c h z u s u c h e n d e W e g s t r e c k e u m ein
S t u f e . Die G e f a h r , d a ß die B e w e i s s u c h e in eine Schleife g e r ä t , ist!
das n a c h p r ü f t , o b ein T e r m z u r speziellen M e n g e d e r
zumindest von dieser Seite her, gebannt. W i e für „ v e r n ü n f t i g " an
Terme
g e w a n d t e R e k u r s i o n g e f o r d e r t , w i r d die A u f g a b e d e r B e a r b e i t u n g
argument ist ein S I M P L E - T e r m . K o m p l e x e S I M P L E - T e r m e h a -
einer S t r u k t u r auf die Aufgabe zur B e a r b e i t u n g einer T e i l s t r u k t u
ben
davon zurückgeführt.
SIMPLE-Term. Tests:
als
gehört
bzw.
Funktor
das
functor
SIMPLE-Terme
und
als
erzeugt.
einziges
Argument
?- simple-term(Term) .
5.4
Übungen
Ü b u n g 5.1
!
L a s s e n Sie sich v o n w e g s u c h e d e n W e g v o m B a h n h o i
?-
argument;
Term =
functor(argument);
Term =
functor(functor(argument))
yes
zur Universität suchen (mit Ablaufprotokoll):
?- s i m p l e - t e r m ( h a l l o ) .
no
wegsuche(bahnhof,uni,Weg).
Weg = . . .
Term =
v_
simple_term(functor(argument,functor)) .
Übung 5.2
B e s c h r e i b e n Sie r e k u r s i v die H i e r a r c h i e s t u f e n in eine'
F i r m a m i t e i n e r s e h r rigiden O r g a n i s a t i o n s f o r m :
\
• Eine Managerin hat i m m e r zwei untergebene M a n a g e r i n n e n .
no
- simple.term(a23489(hallo) ) .
no
?
SIMPLE-
Das
Atom
einen
Kapitel 6
Listen
Im letzten Kapitel wurden Wegverläufe etwas umständlich
als
T e r m e k o d i e r t . W e g v e r l ä u f e als A u f z ä h l u n g v o n K r e u z u n g s p u n k t e n s i n d Beispiele f ü r Listen.
Als L i s t e n s t r u k t u r e n darstellen las-
s e n sich alle A r t e n v o n W o r t l i s t e n , T e i l n e h m e r l i s t e n , V e r z e i c h n i s s e n , Zugverläufen u s w . D a L i s t e n o d e r A u f z ä h l u n g e n v o n D i n g e n
so häufig a u f t r e t e n , gibt es f ü r sie, z u s ä t z l i c h z u d e r s e i t h e r b e n u t z t e n N o t a t i o n für T e r m s t r u k t u r e n e i n e v e r e i n f a c h t e S c h r e i b w e i s e ,
a u s d e r der A u f z ä h l u n g s a s p e k t l e i c h t e r e r s i c h t l i c h i s t .
6.1
Notation
L i s t e n s t r u k t u r e n w e r d e n in P R O L O G
mern
durch die eckigen K l a m -
[, ] g e k e n n z e i c h n e t . Z w i s c h e n d e n K l a m m e r n w e r d e n die
E l e m e n t e der L i s t e a u f g e z ä h l t , d u r c h K o m m a s v o n e i n a n d e r get r e n n t . L i s t e n lassen sich n a c h b e w ä h r t e m S c h e m a r e k u r s i v b e schreiben:
58
KAPITEL
• D e r G r e n z f a l l , die a t o m a r e L i s t e ist die leere
6.
LISTE.
Liste.
D i e leer
6.2.
DER
Beispiel 6.2
Verwendung
L i s t e e n t h ä l t sinnigerweise keine E l e m e n t e u n d w i r d folgen-
[Erstes I Rest]
dermaßen dargestellt: [
[a.b.cl
• Nichtleere
Listen
]
59
LISTENKONSTRUKTOR
des
Listenkonstruktors
[d,e]]
b e s t e h e n a u s zwei „ T e i l e n " :
Der L i s t e n k o n s t r u k t o r w i r d vielfältig e i n g e s e t z t , u m L i s t e n s t r u k -
— d e m ersten
Listenelement,
d a s ein b e l i e b i g e r T e r m seir?
kann
|
— u n d d e r Restliste,
die w i e d e r u m d i e s e r L i s t e i l d e f i n i t i o n
turen a u f z u b a u e n u n d , a n a l o g d a z u , a u s e i n a n d e r z u n e h m e n .
schaulichen. M a n k a n n sich e i n e L i s t e n s t r u k t u r als e i n e n Z u g v o r stellen, der v o r e i n e m P r e l l b o c k s t e h t . D a s W i c h t i g e a n
Genüge tun muß
Zu-
erst wollen w i r u n s d e n Z u g r i f f a u f E l e m e n t e e i n e r L i s t e v e r a n dieser
M e t a p h e r ist, d a ß n u r d e r Z u g r i f f a u f d e n v o r d e r s t e n W a g e n d e s
Beispiel 6.1
Beispiele
für
Listen
Zuges m ö g l i c h ist. U m z u m B e i s p i e l d e n l e t z t e n W a g e n des Z u -
[gitte,fido,venus]
ges zu e n t f e r n e n , m ü s s e n alle d a v o r s t e h e n d e n W a g e n „ a n g e f a ß t "
[X]
und v o r ü b e r g e h e n d e n t f e r n t w e r d e n . M a n k a n n a l s o n u r v o n e i n e r
[gitte,Planet]
Seite h e r u n d d a n n n u r a u f e i n e f e s t e A n z a h l v o n W a g e n z u g r e i -
[sonne,[erde,[mond],venus,saturn]]
fen. D e r V e r w e n d u n g d e s L i s t e n k o n s t r u k t o r s e n t s p r i c h t a l s o d a s
[[
„ W a g e n v o r a n s t e l l e n " b z w . „ - a b h ä n g e n " . H i e r z u f o l g e n n u n einige
].impliziert(mensch(X),sterblich(X))]
[menschen([gitte,lore.gert]),hunde([fido.bello])]
Beispiele:
L i s t e n , als Spezialfall von T e r m e n , k ö n n e n beliebig i n e i n a n d e r un<
Beispiel 6 . 3
i n a n d e r e T e r m e n „ v e r s c h a c h t e l t " sein.
6.2
X =
Der Listenkonstruktor
?-
c h e " w a r k l a r , wie m a n a u s d e r D a r s t e l l u n g d e n A n f a n g u n d del
R e s t eines W e g e s e r h ä l t . W e g b e s c h r e i b u n g e n w a r e n als zweistellig«
zwischen einem
„Anfangspunkt ^
1
u n d d e m R e s t w e g k o d i e r t . D e r Zugriff a u f die A r g u m e n t e erfolgter
s c h l i c h t w e g ü b e r Unifikation. In d e r a b k ü r z e n d e n S c h r e i b w e i s e
L i s t e n ist u n s die d a h i n t e r s t e h e n d e T e r m s t r u k t u r v e r b o r g e n . £
[a.b.c]
Erstes
? - Ca]
X =
Zugriff
=
auf erstes
Element
[Erstes|Restliste].
=
=
[b.c]
[XIY].
a
V =
[]
[[mond] , v e n u s , s a t u r n ]
e i n e m e r s t e n L i s t e n e l e m e n t u n d d e r R e s t l i s t e . U m diese B e z i e h u n
*
=
h a n d l i c h d a r z u s t e l l e n , gibt es d e n Listenkonstruktor,
B
=
d u r c h das Zeichen I . E r trennt aber nicht n u r d a s e r s t e E l e i n
*
=
festen Anzahl von Anfangselementen einer Liste u n d der entsp
"
=
=
[A|B].
=
[A|B].
[mond]
[venus, s a t u r n ]
[mond, [ v e n u s , s a t u r n ] ]
e i n e r L i s t e v o n d e r e n R e s t , s o n d e r n k a n n a l l g e m e i n z w i s c h e n ein
chenden Restliste stehen.
von
= a
Restliste
e n t s p r i c h t j e d o c h ebenfalls einer zweistelligen R e l a t i o n z w i s c h
dargestell
Varianten
Listen
= X.
[a,b,c]
Beispiel 6 . 4
B e i unserer selbsterstellten „ L i s t e n n o t a t i o n " i m Beispiel „Wegsu
R e l a t i o n weg ( P u n k t , R e s t W e g )
Notationelle
Cal[b,c]]
t-
mond
[[venus,saturn]]
und
auf
Restliste
60
KAPITEL
Beispiel 6.5
liste
?-
[a,b,c]
Erstes
Zugriff
=
auf die beiden
ersten
Elemente
6.
und die
LISTE
6.3.
Res
REKURSLVE
• E i n e r K l a u s e l , d i e d i e Abbruchbedingung
= b
Rest
[ ]
=
der Rekursion an-
gibt. B e i L i s t e n s i n d dies m e i s t e n s K l a u s e l n , die a u s s a g e n ,
[Erstes,Zweites IRest].
w a s m i t einer l e e r e n L i s t e o d e r e i n e r L i s t e v o n e i n e r v o r -
= a
Zweites
61
LISTENVERARBEITUNG
gegebenen L ä n g e ( z u m Beispiel einer einelementigen L i s t e )
g e s c h e h e n soll.
c
• E i n e r K l a u s e l , die d e n Rekursionschritt
beschreibt.
Meist
b e s t e h t dieser S c h r i t t a u s e i n e r M a n i p u l a t i o n des e r s t e n L i stenelements und einem rekursiven Aufruf mit der Restliste
Beispiel 6.6
?-
[a.b.c.d]
Test
=
auf Mindestlänge
[
als A r g u m e n t .
S
| J .
yes
Als e r s t e s Beispiel f ü r ein r e k u r s i v e s P r ä d i k a t z u r B e s c h r e i b u n g
?no
Ca.b]
?no
C ]
=
[_,_,_!_].
und V e r a r b e i t u n g von L i s t e n wollen w i r d i e L i s t e n e i g e n s c h a f t , w i e
eingangs b e s c h r i e b e n , k o d i e r e n .
= [_,_,_! J .
'/.
ist_liste(Liste)
'/.
T e s t s u n d Zugriffe n a c h o b i g e m M u s t e r l a s s e n s i c h a u c h a l s P r ä d i kate festschreiben, z u m Beispiel:
'/.
testet,
ob e i n Term e i n e
'/.
-
leere
Listen,
X
-
mindestens
einelementige
deren Rest
die
'/.
7.
'/.
X
zweites(Liste,ZweitesElement)
s e t z t e i n e L i s t e und d e r e n
zueinander in Beziehung.
zweites
Element
zweites([_,Zweitesl_].Zweites).
ist_liste([
Liste
ist:
Listen,
Listeneigenschaft
besitzt.
]).
ist_liste([_|Rest])
:-
ist_liste(Rest).
E i n w e i t e r e s , e l e m e n t a r e s P r ä d i k a t ist d i e B e s c h r e i b u n g d e r E l e m e n t b e z i e h u n g z w i s c h e n e i n e m T e r m u n d e i n e r L i s t e . Die I d e e ,
die h i n t e r d i e s e m P r ä d i k a t s t e c k t , ist, j e w e i l s d a s e r s t e E l e m e n t
6.3
Rekursive Listenverarbeitung
der L i s t e m i t d e m p o t e n t i e l l e n E l e m e n t z u v e r g l e i c h e n . F a l l s dieser Vergleich zu e i n e m n e g a t i v e n E r g e b n i s f ü h r t , w i r d ( r e k u r s i v )
v e r s u c h t , die E l e m e n t b e z i e h u n g f ü r d i e n o c h v e r b l i e b e n e R e s t l i -
D u r c h den E i n s a t z von Rekursion wird die V e r a r b e i t u n g v o n Lis t e n s t r u k t u r e n wesentlich flexibler. D a s . S c h e m a f ü r d i e R e k u r s i o n
über Listenstrukturen entspricht genau deren A u f b a u . Rekursive
P r ä d i k a t e z u r M a n i p u l a t i o n sollten a l s o a u s m i n d e s t e n s zwei K l a u seln b e s t e h e n :
s t e n a c h z u w e i s e n . Diese D e f i n i t i o n d e r E l e m e n t b e z i e h u n g
leistet
m e h r als v e r m u t e t : R u f t m a n d a s P r ä d i k a t e l e m e n t m i t e i n e r V a r i a b l e n für d a s E l e m e n t auf, l a s s e n s i c h ü b e r B a c k t r a c k i n g
alle
E l e m e n t e e i n e r L i s t e a u f z ä h l e n . Ü b r i g e n s w i r d dieses P r ä d i k a t in
d e r P R O L O G - L i t e r a t u r m e i s t e n s u n t e r s e i n e m englischen N a m e n
member g e f ü h r t .
62
KAPITEL
'/,
6.
LISTEM
element(Element,Liste)
'/,
*/.
'/,
Dieses
'/,
in
%
-
'/.
'/,
Prädikat
'Liste'
Entweder
ersten
-
oder
testet,
ob
ist
'Element'
'Element'
mit
der L i s t e
ist
dem
der
Liste
elamer.t ( E l e m e n t , [Element |_]) .
element(Element,[_|Restliste])
63
LISTENVERARBEITUNG
append ( V o r d e r e L i s t e . H i n t e r e L i s t e . G e s a m t L i s t e )
'/,
Die GesamtListe
'/.
VordereListe
append([
unifizierbar,
in der R e s t l i s t e
REKURSIVE
%
'Element'
ist:
Element
6.3.
*
ist
eine
Konkatenation
von
und H i n t e r e L i s t e .
].Liste,Liste).
append([Element I R e s t ] . L i s t e , [ E l e m e n t i L i s t e l ] )
:-
append(Rest,Liste,Listel).
*
Die A r b e i t s w e i s e v o n a p p e n d soll d u r c h e i n e s c h e m a t i s c h e
:-
element(Element.Restliste).
Dar-
stellung des A b l a u f p r o t o k o l l s v e r d e u t l i c h t w e r d e n :
E i n e s e h r h ä u f i g e O p e r a t i o n a u f L i s t e n ist d a s „ Z u s a m m e n h ä n g e n "
append([ell,el2,el3],[e21,e22],[elllListe])
L
z w e i e r L i s t e n in eine L i s t e . Dieses P r ä d i k a t soll a p p e n d h e i ß e n , weil
d a s e n g l i s c h e W o r t s c h ö n k u r z ist u n d d a s P r ä d i k a t u n t e r d i e s e m
append([el2,el3],[e21,e22],[el2lLl])
L
N a m e n s c h o n i n die P R O L O G - G e s c h i c h t e e i n g e g a n g e n ist. a p p e n d
b e s c h r e i b t die B e z i e h u n g z w i s c h e n d r e i L i s t e n , z w i s c h e n
append([el3],[e21,e22],[el3|L2])
_ J
1 . d e r L i s t e , d e r e n E l e m e n t e „ v o r n e " s t e h e n sollen
2 . d e r L i s t e , d e r e n E l e m e n t e „ h i n t e n " s t e h e n sollen
Liste
3. und der Gesamtliste
=
append([ ] , [ e 2 1 , e 2 2 ] , [ e 2 1 , e 2 2 ] )
[el2l[el3l[e21,e22]]]
P R O L O G v e r e i n f a c h t dies z u : [ e l 2 , e l 3 , e 2 1 , e 2 2 ]
A n h a n d des S c h e m a s f ü r die L i s t e n r e k u r s i o n soll d i e s e r Z u s a m -
E s g i b t v e r s c h i e d e n e Sichtweisen a u f d a s P r ä d i k a t a p p e n d . B e i m
m e n h a n g zuerst verbal beschreiben werden. Ü b e r welche der dreij
E n t w u r f des P r ä d i k a t s gingen wir ursprünglich v o n der Anwen-
L i s t e n soll die R e k u r s i o n „ l a u f e n " ? W i r w ä h l e n d i e „ v o r d e r e Li-,,
d u n g a u s , d a ß zwei g e g e b e n e L i s t e n z u s a m m e n g e h ä n g t
s t e " , d a wie w i r wissen, d a ß d e r Z u g r i f f a u f L i s t e n n u r v o n v o r n e
sollen. D a s E r g e b n i s soll d a n n , wie g e r a d e g e z e i g t , m i t d e r b e i m
h e r m ö g l i c h ist.
Aufruf uninstantiierten Variablen a u f der d r i t t e n Argumentstellte
werden
unifiziert w e r d e n . D o c h a p p e n d k a n n n o c h m e h r . E s k a n n v e r • Die Abbruchbedingung
ist s c h l i c h t w e g d e r „ t r i v i a l e " F a l l , d e r
F a l l , in d e m die v o r d e r e L i s t e leer ist. D a n n stellt die h i n t e r e
L i s t e die G e s a m t l i s t e d a r .
• Rekursion:
Falls die v o r d e r e L i s t e n i c h t l e e r ist, läßt
sich
folgender Z u s a m m e n h a n g formulieren:
wendet werden, u m zu prüfen, o b die
Konkatenationsbeziehung
zwischen drei g e g e b e n e n L i s t e n b e s t e h t :
?-
append([a,b,c],[d.e.f],[a.b.c.d.e.f]) .
yes
?-
1 . D a s e r s t e E l e m e n t d e r v o r d e r e n L i s t e ist d a s e r s t e E l e ment der Gesamtliste.
no
2. D e r R e s t d e r G e s a m t l i s t e " e r g i b t sich d u r c h
append([a,b,c],[d,e],[a,b,c,d,e,f]).
Zusam-
Das P r ä d i k a t append kann auch a u f die F r a g e a n t w o r t e n , welche
m e n h ä n g e n des R e s t e s d e r v o r d e r e n L i s t e m i t d e r h i n -
Liste n o c h an eine gegebene Liste a n g e h ä n g t werden m u ß , u m eine
teren Liste.
b e s t i m m t e Gesamtliste zu ergeben.
64
KAPITEL
6.
,4.
LISTE
ÜBUNGEN
6
65
?
?-
append([a,b,c].HintereListe,
HintereListe
6.4
[a,b,c,d,e,f]).
= [d,e,f]
:
Übung 6.1
D a s g l e i c h e ist f ü r eine n o c h u n b e k a n n t e v o r d e r e L i s t e m ö g l i c h :
?-
=
[a,b,c]
B e s c h r e i b e n S i e d u r c h ein n i c h t - r e k u r s i v e s L i s t e n p r ä -
dikat, wie d a s A u s w e c h s e l n d e s v i e r t e n E l e m e n t s e i n e r m i n d e s t e n s
append(VordereListe,[d,e,f],[a,b,c,d,e,f]).
VordereListe
Übungen
vierelementigen L i s t e g e s c h i e h t .
>]
Gleich mehrere Antworten ( d u r c h „von a u ß e n " erzwungenes Back
Übung 6.2
t r a c k i n g ) liefert die F r a g e n a c h d e n m ö g l i c h e n Z e r l e g u n g e n eine]
Liste ein E l e m e n t l ö s c h t . D a s P r ä d i k a t s o l l t e f o l g e n d e r m a ß e n a u f -
L i s t e in e i n e v o r d e r e u n d e i n e h i n t e r e L i s t e :
gerufen w e r d e n k ö n n e n :
?-
?-
append(VordereListe,HintereListe,[a,b,c]).
VordereListe
=
[
]
HintereListe
=
[a.b.c];
VordereListe
=
[a]
HintereListe
=
[b,c];
Schreiben Sie ein rekursives P r ä d i k a t , d a s a u s einer
delete(b,[a,b,c,d].Liste).
Liste =
[a.c.d]
E x p e r i m e n t i e r e n Sie m i t d e l e t e , i n d e m S i e v e r s u c h e n , b e i m A u f ruf a n d e r e A r g u m e n t p o s i t i o n e n m i t V a r i a b l e n z u b e l e g e n .
VordereListe
=
HintereListe
=
[c] ;
[a,b]
in einer L i s t e ein b e s t i m m t e s E l e m e n t d u r c h ein a n d e r e s z u e r s e t -
VordereListe
=
[a,b,c]
zen. D e r A u f r u f des P r ä d i k a t s m ü ß t e s o a u s s e h e n k ö n n e n :
HintereListe
= [
TIbung 6 . 3 Schreiben Sie ein rekursives P r ä d i k a t , d a s es e r l a u b t ,
] ;
replace(ZuErsetzendesElement,
no
ErsatzElement,
Die vier verschiedenen Lösungen k o m m e n d a d u r c h zustande, d
AlteListe,
d i e v o r d e r e L i s t e leer sein k a n n o d e r d a ß d i e v o r d e r e L i s t e das!
NeueListe).
e r s t e E l e m e n t d e r G e s a m t l i s t e e n t h ä l t ; d i e R e s t l i s t e d e r vorderen^
L i s t e k a n n d a n n e n t w e d e r l e e r sein o d e r d a s e r s t e E l e m e n t der*
Testen Sie d a s P r ä d i k a t z u m B e i s p i e l m i t :
R e s t l i s t e d e r G e s a m t l i s t e e n t h a l t e n u s w . N i m m t m a n die I n s t a n - j
?-
tiierungen der Abbruchbedingung von append a u f verschiedenen'
X =
R e k u r s i o n s s t u f e n , e r h ä l t m a n d i e B l ä t t e r e i n e s „ S u c h b a u m e s " für
diesen P r ä d i k a t s a u f r u f . Die rekursiven Aufrufe stellen die inneren
K n o t e n des B a u m e s dar:
appendCC ] , [ a , b , c ] , [ a , b , c ] )
append([
|
append([a|L3]
],[b,c],[b,c])
,L4,[a,b,c])
•append([b|L5],L6,[b,c])
append( [ ] , [ c ] , [ c ] )
[otto,emil,katja,mario,egon]
Übung 6.4
j
append(L1^L2 , [ a , b , c ] )
replace(hajo,katja,[otto,emil,hajo,mario,egon],X).
append ( [ c ] , [ ] , [ c ] )
G e g e b e n sei e i n e D a t e n b a s i s m i t f o l g e n d e n P e r s o n e n -
beschreibungen :
1
Person([1956,weiblich,verheiratet.Stuttgart 1 ] ) .
person([1964,weiblich,ledig,stuttgart70]).
Person([1905,maennlich,verwitwet,stuttgart30]).
Person([1980.weiblich,ledig,stuttgart40])•
Person([1940.maennlich,geschieden,stuttgartl]).
1
Wir haben die heile Welt inzwischen verlassen.
66
KAPITEL
6.
LIST
6.4.
67
ÜBUNGEN
person([1932.weiblich,verheiratet.Waiblingen]).
Übung 6.6
person([1949,weiblich,geschieden,Stetten]) .
lung von G r a b i n s c h r i f t e n
person([1910,maennlich,ledig,fellbach]) .
die die V o r k o m m e n v o n d e f i n i t e n u n d i n d e f i n i t e n A r t i k e l n
person([1968,weiblich,ledig,stuttgart80]) .
listet. Die R e p r ä s e n t a t i o n f ü r die I n s c h r i f t e n sei d u r c h f o l g e n d e
person([1956,maennlich,verheiratet.sindelfingen]).
Beispiele v o r g e g e b e n :
E n t w e r f e n Sie ein P r ä d i k a t f a h n d u n g , d a s z u b e s t i m m t e n Merk-
F u e r die A n a l y s e e i n e s K o r p u s , d e r a u s e i n e r S a m m 2
besteht, wird eine R o u t i n e
benötigt,
auf-
inschrift([[in,den,herzen],
m a l e n die z u g e h ö r i g e n P e r s o n e n b e s c h r e i b u n g e n n a c h e i n a n d e r mit-
[der.kinder],
tels B a c k t r a c k i n g mit ; ausgibt, z u m Beispiel:
[bleibt,fuer,ewig],
[bewahrt,was,in],
?-
[treuer, liebe] ,
fahndung(weiblich,Beschreibung).
Beschreibung
=
[1956,weiblich,verheiratet,Stuttgartl]j
V e r w e n d e n Sie als „ U n t e r p r ä d i k a t " d a s P r ä d i k a t
[gewirkt]]) .
inschrift([[die,trauernden,kinder],
[beweinen,in,der,treuen,mutt e r ] ,
element.
[ein,herrliches,gemueth],
[einen,kraeftigen,geist],
[eine,seltene,freimuetigkeit],
[eine,treffliehe,beraterin]]).
1
3
Ü b u n g 6.5
E s soll ein P r ä d i k a t e n t w o r f e n w e r d e n , d a s die Rei-
h e n f o l g e d e r E l e m e n t e e i n e r L i s t e u m d r e h t . E s s o l l t e sich folgendermaßen verhalten:
?-
reverse(Liste, []).
Liste
?-
=
[]
r
r e v e r s e ( [a] , [a] ) .
yes
?-
reverse([a,b,c,d,e].Liste).
Liste
=
[e.d.c.b.a]
besonderer Dank gelte Herrn M.A. Dipl.-Bibl. U. Dickenberger dafür, daß
"ir in seine aufschlußreiche Magisterschrift Einsicht nehmen durften
Kapitel 7
Programmiertechnik
In den vorigen K a p i t e l n w u r d e n s c h o n h ä u f i g e r v e r b a l e B e s c h r e i bungen u n d P r o g r a m m k o d e z u e i n a n d e r i n B e z u g g e s e t z t . In d i e sem K a p i t e l sollen A n t w o r t e n g e g e b e n w e r d e n a u f d i e F r a g e : W i e
entsteht a u s e i n e r I d e e ein P r o g r a m m ? D i e s w i r d z u e r s t a n e i n e m
Beispiel illustriert, d a r a u f folgt e i n e L i s t e v o n T i p s z u r V o r g e h e n s weise bei d e r P r o g r a m m e r s t e l l u n g u n d z u r V e r m e i d u n g g ä n g i g e i
Fehler.
P r o g r a m m i e r e r r e d e n h ä u f i g d a v o n , d a ß sie P r o g r a m m e , odei
besser P r o g r a m m - S y s t e m e ,
„bauen".
Sind Programmierer
ehei
70
KAPITEL
7.
PROGRAMMIERTECK
m i t A r c h i t e k t e n o d e r m i t M a s c h i n e n b a u e r n zu v e r g l e i c h e n ? A
d i e s e F r a g e m ö c h t e n wir keine A n t w o r t g e b e n , s o n d e r n n u r d a r a
h i n w e i s e n , d a ß die F u n k t i o n a l i t ä t v o n P r o g r a m m e n e i n e groß
R o l l e spielt
als die Ä s t h e t i k
des P r o g r a m m k o d e s .
Obwohl
L e u t e g i b t , die b e h a u p t e n , d a ß g e r a d e P R O L O G - P r o g r a m m e au
ä s t h e t i s c h , weil n ä m l i c h s c h ö n logisch, sein k ö n n e n .
7.1
7.1.
EIN
71
BEISPIEL
Verfeinerungstufe
1
Die A u s s a g e , d a ß ein R e g a l a u s s e i n e n E i n z e l t e i l e n z u s a m m e n g e baut wird, b e s a g t n o c h n i c h t s ü b e r d i e e i n z e l n e n T ä t i g k e i t e n , d i e
alle z u s a m m e n den R e g a l b a u k o n s t i t u i e r e n . W i e läßt s i c h f e s t s t e l len, welche T ä t i g k e i t e n e r f o r d e r l i c h s i n d ? D a u n s n i c h t s a n d e r e s
zur Verfügung s t e h t , als die S a m m l u n g d e r E i n z e l t e i l e , bleibt n u r
der V e r s u c h , a u s der Struktur
Ein Beispiel
d e r E i n z e l t e i l e Hinweise a u f d e r e n
Verwendung zu e r h a l t e n . W i e d e r h o l e n w i r a l s o n o c h e i n m a l die I n ventarliste, a b e r d i e s m a l u m die n ö t i g e n D e t a i l s e r w e i t e r t :
D i e a l l g e m e i n e V o r g e h e n s w e i s e b e i m P r o g r a m m e n t w u r f soll a n
• 2 Seitenteile. J e d e s S e i t e n t e i l b e s i t z t
n e m Beispiel verdeutlicht werden. N e h m e n wir an, wir h ä t t e n
— je 3 große L ö c h e r a n den Innenseiten seiner
e i n e r B i l l i g - M ö b e l f i r m a einen B a u s a t z für ein B ü c h e r r e g a l erstari
beiden L e i s t e n
d e n . V o r u n s liege ein K a r t o n m i t d e n E i n z e l t e i l e n . D a k e i n e A
— 2 kleine L ö c h e r a n d e r R ü c k s e i t e d e r h i n t e r e n
b a u a n l e i t u n g mitgeliefert w u r d e u n d wir z u m e r s t e n M a l ein R e g
Leiste.
z u s a m m e n b a u e n , w i r d es n ö t i g sein, d a ß w i r u n s einige G e d a n
• 12 Stifte
machen.
• 4 Regalbretter. A n j e d e m der 4 E c k e n jedes B r e t -
7.1.1
t e s ist jeweils eine k u r z e R i l l e e i n g e f r ä ß t
Konzeptioneller Entwurf
Verfeinerungstufe
• 1 Stützkreuz mit 4 Löchern.
0
• 4 Schrauben.
B e g i n n e n wir m i t einer I n v e n t u r der v o r u n s l i e g e n d e n E i n z e l t e i l
Der R e g a l b a u w i r d i m w e s e n t l i c h d a r i n b e s t e h e n ,
F o l g e n d e Teile sollten sinnigerweise alle i m f e r t i g e n R e g a l v e r w
zwischen den E i n z e l t e i l e n
d e t w o r d e n sein:
möglich?
z u schaffen.
Wo
sind
Verbindungen
Verbindungen
• 2 Seitenteile
• Die Stifte
• 12 Metallstifte
• 3 Regalbretter
• Die Schrauben
• 1 Stützkreuz
• 4 Schrauben
v o n d e n E i n z e l t e i l e n a u f ein R e g a l ist:
2 Seitenteile
1 Stützkreuz
4 Schrauben
Wir e r a h n e n d e n A b l a u f d e r e i n z e l n e n T ä t i g k e i t e n f ü r d e n R e g a l bau. Als e r s t e s w e r d e n die S t i f t e in die g r o ß e n L ö c h e r d e r Seitenteile g e s t e c k t , d a n n d i e B r e t t e r a u f die S t i f t e a u f g e l e g t .
12 Metallstifte
3 Regalbretter
p a s s e n in d i e kleinen L ö c h e r d e r S e i t e n t e i l e
u n d in die L ö c h e r des S t ü t z k r e u z e s
M a t h e m a t i s c h g e s p r o c h e n , läßt sich s a g e n , d a ß d e r R e g a l b a u o
f e n b a r eine Abbildung
p a s s e n g r o ß e n - u n d a n z a h l m ä ß i g in die g r o ß e n
L ö c h e r d e r S e i t e n t e i l e u n d i n die R i l l e n d e r B r e t t e r
Re9
4
bau
Regal
Als
letztes wird z u r S t a b i l i s i e r u n g des R e g a l s d a s S t ü t z k r e u z m i t t e l s
der S c h r a u b e n a n die kleinen L ö c h e r d e r S e i t e n t e i l e b e f e s t i g t . D a m
' t kann a u c h die A b b i l d u n g Regalbau
werden:
detaillierter
beschrieben
72
KAPITEL
Stifte
S e i t e n t e iile
le
}
7.
PROGRAMMLERTECHNDM
7.1.
EIN
73
BEISPIEL
Seitenteile
Seitenteile
Die A b b i l d u n g v o n d e n E i n z e l t e i l e n a u f e i n R e g a l w i r d d i e s m a l
mit Stiften
mit Stiften
zerlegt in d i e drei T ä t i g k e i t e n : D a s S t e c k e n
Bretter
und Brettern
5?
Stützkreuz
Regal
St
von Stiften
Löchern o d e r v o n S t i f t e n in R i l l e n u n d d a s S c h r a u b e n Sehr.
in
Das
z u s a m m e n g e b a u t e R e g a l ist d a n n n u r n o c h d i e „ A u f z ä h l u n g " v o n
Schrauben
befestigtem S t ü t z k r e u z , S e i t e n t e i l e n m i t S t i f t e n u n d
eingehäng-
ten B r e t t e r n , g e n a u e r g e s a g t : d a s a n d e n S e i t e n t e i l e n
Die Tätigkeit des Regalbauens besteht also a u s d e n drei „Unter-;
tätigkeiten": Einstecken E S , Einlegen E L und Festschrauben
FSi
Die m a t h e m a t i s c h e Darstellung der Abbildungen gibt z w a r
dem
t a t s ä c h l i c h e n A b l a u f des E n t s t e h e n s eines R e g a l s w i e d e r , sie d e c k «
sich a b e r n i c h t g a n z m i t d e r v o r h e r g e h e n d e n v e r b a l e n B e s c h r e i t
b u n g : F ü r d a s A u f l e g e n d e r B r e t t e r i n t e r e s s i e r e n n i c h t d i e ge>j
s a m t e n S e i t e n t e i l e , s o n d e r n n u r die angeordneten
Stifte.
Für
das
B e f e s t i g e n d e s S t ü t z k r e u z e s s i n d d i e B r e t t e r u n d d i e S t i f t e als»
s o l c h e u n w i c h t i g , e s ist n u r n ö t i g ,
auf die kleinen L ö c h e r
deM
befestigte
S t ü t z k r e u z , die S e i t e n t e i l e m i t S t i f t e n u n d d i e i n die S t i f t e eingehängten B r e t t e r - d a m i t sind a u c h die V e r b i n d u n g e n b e s c h r i e ben. Diese A b b i l d u n g v o n E i n z e l t e i l e n a u f e i n R e g a l ü b e r m e h rere Stufen e n t h ä l t e t w a s Redundanz.
Stiften „ z u s a m m e n g e b a u t e n "
Die aus Seitenteilen
Seitenteile mit Stiften
und
„enthalten"
schon die kleinen L ö c h e r u n d die a n g e o r d n e t e n S t i f t e , t r o t z d e m
werden diese g e s o n d e r t e r w ä h n t . D i e s e R e d u n d a n z n a c h d e r e r sten A b b i l d u n g St
Sehr
erspart jedoch später, bei den
Abbildungen
u n d St d a s „ H a n t i e r e n " m i t d e n „ g e s a m t e n " S e i t e n t e i l e n .
Diese B e t r a c h t u n g e n h a b e n h o f f e n t l i c h d a s T h e m a
S e i t e n t e i l e „ Z u g r i f f " zu h a b e n . E s r e i c h t a l s o , z u m i n d e s t r e i n los
Regalbau
g i s c h g e s e h e n , d e r T ä t i g k e i t des B r e t t e r - E i n l e g e n s n u r d e n Teil-]
präzise g e n u g a b g e h a n d e l t , u m als G r u n d l a g e f ü r d a s n ä c h s t e T e i l -
a s p e k t „ A n g e o r d n e t e S t i f t e " des in d e r E n t s t e h u n g
kapitel d i e n e n z u k ö n n e n .
begriffenen
R e g a l s zur Verfügung zustellen, und der T ä t i g k e i t des StützkreuzF e s t s c h r a u b e n s n u r eine L i s t e d e r kleinen L ö c h e r d e r Seitenteile»
O d e r n o c h e i n m a l a n d e r s f o r m u l i e r t : D i e B e z u g s p u n k t e , d . h . die
Schnittstellen,
zwischen den mit Stiften versehenen
Seitenteilen
u n d den B r e t t e r n sind die angeordneten Stifte, zwischen Seitenteilen u n d S t ü t z k r e u z s i n d e s die kleinen L ö c h e r d e r S e i t e n t e i l e . Aufg r u n d dieser Ü b e r l e g u n g e n lassen sich d i e A b b i l d u n g e n n o c h e i n m a l umformulieren.
>
Schrauben
Sc£r
wir u n s e r n B e i t r a g z u r A u t o m a t i s i e r u n g d e s t ä g l i c h e n L e b e n s liefern u n d d a s S t e u e r p r o g r a m m f ü r e i n e n R o b o t e r e n t w e r f e n , d e r
Regale z u s a m m e n b a u t . D a z u w i r d es n ö t i g s e i n , d i e m a t h e m a t i schen D a r s t e l l u n g d e r A b b i l d u n g e n v o m v o r h e r i g e n A b s c h n i t t i n
Die
kleine
I
Löcher
angeordnete
Stifte
Verbindungen
W i e lassen sich d i e V e r b i n d u n g e n i n n e r h a l b d e s R e g a l s d a r s t e l l e n ?
1 § ? Regal
Lassen wir u n s e r e r I n t u i t i o n ein w e n i g A u s l a u f : V e r b i n d u n g e n z w i -
I
oder Rillen u n d S t i f t e n o d e r S c h r a u b e n , d i e m a n in diese A u s -
mit Stiften
Bretter
Da wir uns ü b e r die S t u p i d i t ä t d e s R e g a l b a u e n s ä r g e r n , wollen
befestigtes
Stützkreuz
Seitenteile
Seitenteile
Programmierung
ein P R O L O G - P r o g r a m m zu ü b e r f ü h r e n .
Stützkreuz
Stifte
7.1.2
schen zwei T e i l o b j e k t e n d e s R e g a l s k o n s t i t u i e r e n s i c h a u s L ö c h e r n
S.t .
eingehängte
Bretter
s p a r u n g e n s t e c k t b z w . s c h r a u b t . A l s A n a l o g i e d a z u g i b t es a u f
der P R O L O G - E b e n e e i n e r s e i t s d i e V a r i a b l e n , d i e w i r als N a m e n
von „ K ä s t e n " k e n n e n g e l e r n t h a b e n , u n d a n d e r e r s e i t s n i c h t v a r i a b l e
74
KAPITEL
7.
PROGRAMMIERTECHN;
S t r u k t u r e n , die e b e n s o l c h e „ K ä s t e n " füllen. F ü r L ö c h e r u n d Rill
7.1.
EIN
75
BEISPIEL
Wenn die a t o m a r e n O b j e k t e als F a k t e n in d e r D a t e n b a s i s u n t e r g e -
b i e t e t sich a l s o eine D a r s t e l l u n g als V a r i a b l e n a n , f ü r S t i f t e u n
bracht w e r d e n , m ü s s e n k o n s e q u e n t e r w e i s e die k o m p l e x e n O b j e k t e
S c h r a u b e n eine R e p r ä s e n t a t i o n in F o r m n i c h t v a r i a b l e r S t r u k t u r e
durch R e g e l n d a r g e s t e l l t w e r d e n . N e h m e n w i r a n , j e d e s k o m p l e x e
V e r b i n d u n g e n schaffen heißt d a n n , V a r i a b l e n z u i n s t a n t i i e r e n . Di
Objekt „ w e i ß " , w e l c h e s s e i n e „ d i r e k t e n " T e i l o b j e k t e s i n d . R e g a l e
T a t s a c h e , d a ß zwei O b j e k t e m i t e i n a n d e r v e r b u n d e n s i n d , w i r d d
bestehen g e m ä ß d e r z u l e t z t
d u r c h r e p r ä s e n t i e r t , d a ß sich die P R O L O G - D a r s t e l l u n g e n
dung a u s zwei S e i t e n t e i l e n , B r e t t e r n u n d e i n e m S t ü t z k r e u z . D a m i t
dies
O b j e k t e V a r i a b l e n i n s t a n t i i e r u n g e n teilen. Z u m B e i s p i e l m u ß di
V a r i a b l e , die f ü r d i e E c k r i l l e e i n e s B r e t t e s s t e h t , m i t
derselben
S t r u k t u r i n s t a n t i i e r t sein wie die V a r i a b l e , d i e d a s e n t s p r e c h e n d '
L o c h a m S e i t e n t e i l r e p r ä s e n t i e r t , a u f d a s dieses E c k z e i g t .
D a s zweistellige P r ä d i k a t
stecken, d a s e i n e n S t i f t
u n d ei
L o c h z u e i n a n d e r in B e z u g s e t z t u n d d a s d r e i s t e l l i g e P r ä d i k a t v e r
s c h r a u b e n , d a s eine S c h r a u b e , ein L o c h d e s S e i t e n t e i l s u n d e'
erwähnten
mathematischen
Abbil-
läßt sich d a s G r u n d g e r ü s t f ü r die P R O L O G - D a r s t e l l u n g f e s t l e g e n :
regal(Regal):seitenteile(Seitenteile),
bretter(Bretter),
stuetzkreuz(Stuetzkreuz),
Regal
= r(Seitenteile,Bretter,Stuetzkreuz) .
L o c h des S t ü t z k r e u z e s in R e l a t i o n s e t z t , l a u t e n d a n n s o :
Oben w u r d e j e d o c h e r w ä h n t , d a ß s i c h S e i t e n t e i l e u n d B r e t t e r d i e
verschrauben(X,X,X).
„angeordneten Stifte" u n d d a ß sich Seitenteile u n d S t ü t z k r e u z die
kleinen L ö c h e r d e s S t ü t z k r e u z e s
stecken(X.X).
teilen. D e r R u m p f des P r ä d i -
kats r e g a l m u ß u m g e s c h r i e b e n w e r d e n , d a m i t d i e s e r I n f o r m a t i onstransport über Variablen ermöglicht wird:
Die
Objekte
Der erste Schritt zur Darstellung der verschiedenen
Objekte
P R O L O G ist d e r e n U n t e r t e i l u n g in a t o m a r e u n d k o m p l e x e Obr
regal(Regal):Seitenteile(KleineLoecher,
AngeordneteStifte,
j e k t e , e n t s p r e c h e n d d e r U n t e r s c h e i d u n g z w i s c h e n a t o m a r e n undkomplexen
Strukturen.
Als a t o m a r
wollen wir diejenigen
OH
j e k t e a n s e h e n , die keine „ U n t e r o b j e k t e " b e s i t z e n , a l s o n i c h t wei
t e r s t r u k t u r i e r t s i n d . Alles a n d e r e sind k o m p l e x e O b j e k t e , derenS t r u k t u r noch genauer beschrieben werden m u ß .
•
atomare
•
komplexe
Objekte:
Objekte:
Stifte u n d S c h r a u b e n
Stützkreuz, B r e t t e r , Seitenteile
D i e R e p r ä s e n t a t i o n f ü r die a t o m a r e n O b j e k t e ist e i n f a c h : w i r t r a g e n zwei F a k t e n stifte u n d s c h r a u b e n in die W i s s e n s b a s i s ein.
J e d e r d e r zwölf S t i f t e u n d j e d e d e r v i e r S c h r a u b e n e r h ä l t z u r K e n n z e i c h n u n g ein P R O L O G - A t o m als N a m e n .
Stifte([stl,st2,st3,st4,st5,st6•,
St7,st8,st9,stl0,stll,stl2]).
schrauben([sl,s2,s3,s4]).
Seitenteile),
bretter(AngeordneteStifte,Bretter),
stuetzkreuz(KleineLoecher,Stuetzkreuz),
Regal
=
r(Seitenteile,Bretter,Stuetzkreuz).
Das P r ä d i k a t r e g a l e n t h ä l t k e i n e H i n w e i s e , w i e m i t S t i f t e n v e r sehene S e i t e n t e i l e o d e r S e i t e n t e i l e ü b e r h a u p t a u s s e h e n . D i e s o b liegt d e m P r ä d i k a t
Seitenteile
selbst: M a n n e h m e die Stifte,
stecke d a v o n so viele w i e n ö t i g in d a s n ä c h s t l i e g e n d e
Seitenteil
und d e n R e s t in d a s ü b r i g e S e i t e n t e i l . W e n n m a n die r i c h t i g e
Zahl v o n S t i f t e n d e r r i c h t i g e n Z a h l v o n g r o ß e n L ö c h e r n
zuge-
ordnet h a t , k a n n m a n m i t t e l s s t e c k e n d i e V e r b i n d u n g e i n e r L i ste v o n S t i f t e n m i t e i n e r L i s t e v o n L ö c h e r n a u f e i n M a l e r z i e len, d a n n l a s s e n sich a u c h k o m p l e x e r e
Strukturen
miteinander
unifizieren. D i e A n o r d n u n g d e r S t i f t e w i r d f e s t g e h a l t e n in v i e r
Listen, d . h . für j e d e s S e i t e n t e i l zwei V e r z e i c h n i s s e , w e l c h e S t i f t e
76
KAPITEL
7.
PROGRAMMIERTECHK
7.1.
entlang der vorderen u n d welche entlang der hinteren Lochreih
EIN
77
BEISPIEL
stifte_stecken(Stifte,
g e s t e c k t w u r d e n . A u ß e r d e m w e r d e n w i r b e i m B e t a s t e n d e r Sei
Reststiftel,
t e n t e i l e gleich n o c h die kleinen L ö c h e r j e d e s S e i t e n t e i l s lokalisie
StifteVorne,
r e n . E i n Seitenteil definiert sich d a n n z u m B e i s p i e l a l s ein Teni
GrosseLoecher,
stl(AngeordneteStifte.KleineLoecher).
RestLoecherl),
stifte_stecken(Reststiftel,
stifte_stecken([Stift 1,Stift2,Stift3|RestStifte] ,
Reststifte,
Reststifte,
StifteHinten,
[Stiftl,Stift2,Stift3],
RestLoecherl,
[Lo c h 1 1 , L o c h 1 2 , L o c h 1 3 1 R e s t L o e c h e r ] ,
• ),
RestLoecher):stecken([Stiftl,Stift2,Stift3],
'
[Lochl, Loch2, Loch3] )..
Seitenteile(Loecher,AngeordneteStifte,Seitenteile):stifte(Stifte),
Seitenteil(Stifte,
AngeordneteStifte
=
[StifteVorne,StifteHinten],
Seitenteil =
stl(AngeordneteStifte,KleineLoecher).
Ein B r e t t w i r d d u r c h d e n v i e r s t e l l i g e n T e r m b ( R l , R 2 , R 3 , R 4 ) d a r gestellt, wobei die v i e r A r g u m e n t e d i e v i e r R i l l e n b e d e u t e n .
Reststifte,
der vier L i s t e n r ä u m l i c h a n g e o r d n e t e r S t i f t e j e w e i l s d a s e r s t e , d . h .
KleineLoecherl,
das „ o b e r s t e " E l e m e n t w e g g e n o m m e n w i r d u n d d i e s e v i e r S t i f t e in
AngeordneteStiftel,
die Rillen „ g e s t e c k t " w e r d e n . M i t d e n v e r b l i e b e n e n S t i f t e n w e r d e n
Seitenteiii),
die restlichen B r e t t e r „ e i n g e h ä n g t " . D i e s e L i s t e n r e k u r s i o n e r l a u b t
Seitenteil(Reststifte,
uns, m a x i m a l soviele B r e t t e r e i n z u h ä n g e n , w i e S t i f t e v o r h a n d e n
•.
sind.
KleineLoecher2,
Loecher =
AngeordneteStifte2,
'/• E n d e :
Seitenteil2),
bretter([[[], []],[[], []]],[])•
[KleineLoecherl,KleineLoecher2],
AngeordneteStifte
=
[AngeordneteStiftel,AngeordneteStifte2], \
Seitenteile
Das
E i n h ä n g e n eines B r e t t e s w i r d d a d u r c h n a c h g e s p i e l t , d a ß v o n j e d e r
= [Seitenteiii,Seitenteil2].
Seitenteil(Stifte,
Reststifte,
KleineLoecher,
AngeordneteStifte,
Seitenteil):-
!
keine
Stifte
mehr
vorhanden
KAPITEL
78
7.
7.2.
PROGRAMMIERTECH.
79
PROGRAMMENTWURF-RICHTLINIEN
stuetzkreuz(SeitenteilLoecher,
'/,
Rekursion:
7,
Nimm v o n a l l e n
4 Listen
das
erste
sk(StuetzkreuzLoecher)):-
Element
schrauben(Schrauben)
bretter([[StifteHintenLinks,
SeitenteilLoecher
StifteVorneLinks],
FlacheListe
[StifteHintenRechts,
=
=
[[Lochl,Loch2],[Loch3,Loch4]],
[LochlI[Loch2I[Loch3,Loch4]]] ,
verschrauben(Schrauben,
StifteVorneRechts]],
FlacheListe,
[Brett I B r e t t e r ] ) : -
StuetzkreuzLoecher).
brett(StifteHintenLinks,
ReststifteHL,
Die A n f r a g e a n diese W i s s e n s b a s i s , wie d e n n n u n e i n R e g a l a u s -
StifteVorneLinks,
sehe, f ü h r t zu f o l g e n d e r A n t w o r t
ReststifteVL,
schön f o r m a t i e r t ) :
St i f t eHint enRecht s ,
regal(Regal).
Reststif'teHR,
Regal
=
(hier wegen der
Leserlichkeit
r([stl([[stl,st2,st3],
StifteVorneRechts,
[st4,st5,st6]],
ReststifteVR,
[sl,s2]),
Brett),
Stl([[st7,st8,st9],
bretter([[ReststifteHL,
[stl0,stll,stl2]],
ReststifteVL],
[s3,s4])],
[ReststifteHR,
[b(stl,st4,st7,stl0),
ReststifteVR]],
b(st2,st5,st8,stll),
Bretter) .
b(st3,st6,st9,stl2)] ,
Sk([sl,s2,s3,s4]))
b r e t t ( [ S t i f t 11 S t i f t e H L ] ,
StifteHL,
[Stift2lStifteVL] ,
7.2
StifteVL,
[Stift3|StifteHR],
Es folgt n u n eine A r t C h e c k l i s t e , die eine H i l f e s t e l l u n g b e i m P r o -
StifteHR,
g r a m m e n t w u r f g e b e n soll. D i e d a b e i a n f a l l e n d e n A r b e i t e n l a s s e n
[Stift4|StifteVR],
s
StifteVR,
b(Rillel,Rille2,Rille3,Rille4))
Programmentwurf-Richtlinien
' c h in folgende A u f g a b e n g e b i e t e g r u p p i e r e n , d i e n i c h t u n b e d i n g t
nacheinander s o n d e r n u n t e r e i n a n d e r a b w e c h s e l n d erfüllt w e r d e n
:-
stecken([Stiftl,Stift2,Stift3,Stift4],
[Rillel,Rille2,Rille3,Rille4]).
müßen:
• Konzeptioneller E n t w u r f
•
Realisierung/Programmierung
• Testen
Z u m Schluß v e r b i n d e t d a s S t ü t z k r e u z m i t t e l s d e r S c h r a u b e n
kleinen L ö c h e r d e r S e i t e n t e i l e m i t seinen e i g e n e n k l e i n e n Loch
• Fehlersuche und -behebung
• Dokumentation
80
KAPITEL
7.2.1
7.
PROGRAMMIERTECHN
Konzeptioneller Entwurf
Entwurf
81
PROGRAMMENTWURF-RICHTLINIEN
• d a ß n u r gewisse T e i l o p e r a t i o n e n u n t e r s u c h t w e r d e n
D e r e i g e n t l i c h e n K o d i e r - u n d T e s t a r b e i t a n d e r M a s c h i n e sollt
u n b e d i n g t ein konzeptioneller
7.2.
v o r a u s g e h e n . D a s Ziel d
k o n z e p t i o n e l l e n E n t w u r f s ist es, sich ü b e r d a s z u
behandelnd
P r o b l e m u n d dessen R e a l i s i e r u n g s m ö g l i c h k e i t e n k l a r z u w e r d e n
Oft zeigt sich bei d e r d e t a i l l i e r t e n B e s c h r e i b u n g e i n e r P r o b l e m s t e l lung, d a ß d a s P r o b l e m e i n e m f r ü h e r g e s c h r i e b e n e n u n d e v e n t u e l l
schon g e l ö s t e n P r o b l e m s t r u k t u r e l l ä h n l i c h i s t .
Hilfreich sind hierfür sowohl rein v e r b a l e als a u c h g r a p h i s c h e undlj
f o r m a l e B e s c h r e i b u n g e n der O b j e k t e u n d O p e r a t i o n e n a u f d e n O b - f
j e k t e n , die erfolgen sollen. Ü b e r v e r s c h i e d e n e
Verfeinerung»ftufen\
d e r B e t r a c h t u n g s w e i s e hinweg sollten z u m i n d e s t a u f f o l g e n d e Frag e n A n t w o r t e n gefunden w e r d e n :
\
1 . W i e sieht d e r A u s g a n g s z u s t a n d a u s ?
7.2.2
Realisierung
( a ) W e l c h e O b j e k t e spielen e i n e R o l l e ?
Die U m s e t z u n g des k o n z e p t i o n e l l e n E n t w u r f s in ein
( b ) W i e s t e h e n diese O b j e k t e z u e i n a n d e r i n B e z u g ?
wird a u c h R e a l i s i e r u n g g e n a n n t . E s ist h i l f r e i c h , d i e in j e d e r V e r -
2 . W i e sieht d e r Z i e l z u s t a n d a u s ?
( a ) W e l c h e O b j e k t e sollen e r z e u g t w e r d e n ?
( b ) W i e s t e h e n diese O b j e k t e z u e i n a n d e r in B e z u g ?
( c ) W e l c h e A r b e i t s v o r g ä n g e w e r d e n f ü r d i e s e Inbezugsetzung benötigt?
(d) Welche „Werkzeuge" braucht m a n d a z u ?
( e ) W e l c h e B e a r b e i t u n g s f o l g e b i e t e t sich a n ? ( D i e s e F r a g e
Programm
feinerungstufe e r z i e l t e n B e s c h r e i b u n g e n e i n z e l n a n h a n d d e r b e i d e n
folgenden F r a g e n n a c h P R O L O G z u ü b e r s e t z e n .
1. W i e sollen die O b j e k t e r e p r ä s e n t i e r t
werden?
2. W i e sollen die B e z i e h u n g e n z w i s c h e n O b j e k t e n d a r g e s t e l l t
werden?
Die A r b e i t läßt sich n o c h w e i t e r e r l e i c h t e r n , w e n n m a n f o l g e n d e
Hinweise b e a c h t e t :
spielt in P R O L O G i m a l l g e m e i n e n k e i n e s e h r heraus-^
ragende Rolle.)
B e i k o m p l i z i e r t e n A u f g a b e n s t e l l u n g e n s i n d V e r f e i n e r u n g s t u f e n in \
d e r B e s c h r e i b u n g nötig, u m nicht „ v o r l a u t e r B ä u m e n d e n B l i c k
a u f d e n W a l d " z u verlieren. U m w e i t e r i m B i l d z u s p r e c h e n : Auf,
e i n e r B e t r a c h t u n g s e b e n e m a g es a u s r e i c h e n , d e n W a l d a l s G a n z e s
z u b e t r a c h t e n u n d die B ä u m e zu v e r n a c h l ä ß i g e n , a u f e i n e r a n d e r e n ]
w i r d es n ö t i g sein, a u f seine B e s t a n d t e i l e , d i e B ä u m e n ä h e r einz u g e h e n . E i n Ü b e r g a n g v o n einer V e r f e i n e r u n g s t u f e z u r n ä c h s t e n
z e i c h n e t sich z u m Beispiel d a d u r c h a u s ,
• Die F a l l u n t e r s c h e i d u n g e n
für die einzelnen
Klauseln
von
P r ä d i k a t e n e r g e b e n sich m e i s t a u s d e r S t r u k t u r d e r O b j e k t e
( z . B . a t o m a r e Objekte versus s t r u k t u r i e r t e O b j e k t e ) .
• Die V e r a r b e i t u n g s t r u k t u r i e r t e r O b j e k t e v e r l ä u f t oft r e k u r siv ü b e r d e r e n S t r u k t u r .
• Die H i e r a r c h i e d e r A b s t r a k t i o n s e b e n e n
s o l l t e s i c h in
der
Hierarchie der Prädikatsaufrufe widerspiegeln.
• Soweit
sinnvoll
und
möglich,
(Über
den
sollte
„reines"
vollen
Sprachumfang
verwendet
werden.
• d a ß O b j e k t e detaillierter b e s c h r i e b e n w e r d e n
PROLOG,
der über „reines" P R O L O G
• d a ß n u r gewisse Teilobjekte b e t r a c h t e t w e r d e n
später geredet.)
PROLOG
hinausgeht,
von
wird
KAPITEL
82
7.2.3
7.
PROGRAMMIERTECHN
Programmtest
7.2.
PROGRAMMENTWURF-RICHTLINIEN
83
• W i r d das P r o g r a m m v o m P R O L O G - I n t e r p r e t e r nicht k o m m e n t a r l o s e i n g e l e s e n , s p r i c h t m a n v o n Syntaxfehlern.
U m n a c h z u w e i s e n , d a ß d a s e n t w i c k e l t e P r o g r a m m seine A u f g a b e n
Die
h ä u f i g s t e n S y n t a x f e h l e r sind:
e r f ü l l t , sollte a u f v e r s c h i e d e n e A r t e n g e t e s t e t w e r d e n :
— D e r P u n k t u n d d e r Z e i l e n v o r s c h u b fehlen a m E n d e ei-
• T e s t s für d e n a l l g e m e i n e n ( t y p i s c h e n ) F a l l
ner Klausel.
• T e s t s für R a n d f ä l l e , A u s n a h m e n u n d e v e n t u e l l für falsche
— Die Z a h l d e r s c h l i e ß e n d e n u n d d i e Z a h l d e r ö f f n e n d e n
E i n g a b e n d u r c h den B e n u t z e r
K l a m m e r n e n t s p r e c h e n sich n i c h t . D i e s k a n n b e s o n d e r s
bei K o m m e n t a r k l a m m e r n / * . . . * / h e i m t ü c k i s c h e A u s -
T e s t s k ö n n e n F e h l e r a u f d e c k e n , d e r e n B e h e b u n g Ä n d e r u n g e n im
wirkungen haben.
P r o g r a m m k o d e e r f o r d e r n , w e n n nicht s o g a r Ä n d e r u n g e n i m konz e p t i o n e l l e n E n t w u r f ( w e n n beispielsweise R a n d f ä l l e
— E i n Leerzeichen zwischen P r ä d i k a t n a m e n u n d
vergessen
erster
w u r d e n ) . E r f o l g r e i c h v e r l a u f e n e T e s t s s i n d j e d o c h n o c h keine G a -
öffnender K l a m m e r mißfällt v i e l e n P R O L O G - I n t e r p r e -
rantie, daß das P r o g r a m m i m m e r korrekt a r b e i t e t .
tern.
7.2.4
• W e n n d a s P r o g r a m m nicht l ä u f t ( d . h . n u r s t u r m i t n o a n t -
Fehlerbehebung
w o r t e t ) o d e r n i c h t d a s t u t , w a s es t u n s o l l t e , s o l l t e n f o l g e n d e
P u n k t e überprüft werden:
Die beste M e t h o d e , Fehler zu „behandeln", ist, durch achtsames
V o r g e h e n die Z a h l d e r F e h l e r e i n z u s c h r ä n k e n . D i e B e a c h t u n g folg e n d e r R e g e l n dient d e r Fehlervorbeugung
— S i n d alle P r ä d i k a t s - u n d V a r i a b l e n n a m e n , die f ü r d a s
:
Gleiche s t e h e n a u c h gleich g e s c h r i e b e n ?
— Ist die A r g u m e n t z a h l u n d d i e R e i h e n f o l g e d e r A r g u -
• E r s t e l l u n g eines o r d e n t l i c h e n k o n z e p t i o n e l l e n E n t w u r f s
m e n t e eines b e s t i m m t e n P r ä d i k a t s bei allen s e i n e n E r -
• übersichtliche Darstellung der P r ä d i k a t e :
wähnungen eingehalten?
— P a s s e n L i s t e n u n d T e r m e , die m i t e i n a n d e r
— Kommentare!
— Faustregel:
— S t i m m t die Z u o r d u n g v o n öffnenden u n d schließenden
Nicht m e h r als 5 bis 7 K l a u s e l n p r o P r ä d i k a t s d e f i n i t i o n ,
sonst ein Unterprädikat
— Da P R O L O G
durchsucht,
die D a t e n b a s i s v o n oben n a c h
empfiehlt
Klammern?
einführen.
sich f o l g e n d e
unten
Anordnung
der
K l a u s e l n in e i n e r P r ä d i k a t s d e f i n i t i o n :
1.
unifiziert
w e r d e n s o l l e n , a u c h wirklich a u f e i n a n d e r ?
Abbruchbedingung(en)
2. S o n s t i g e K l a u s e l n
3. A l l g e m e i n s t e r F a l l
Es gibt eine R e i h e eingebauter
Prädikate,
die die Fehlersuche un-
t e r s t ü t z e n , wie z u m B e i s p i e l :
•
•
trace
s
py
Die A r b e i t s w e i s e d i e s e r b e i d e n u n d w e i t e r e r
debugging-Pra.dika.te
W e n n sich t r o t z a l l e m F e h l e r e i n g e s c h l i c h e n h a b e n , sollte m a n für
wurde b e r e i t s in K a p i t e l 4 a n g e d e u t e t u n d ist in d e n H a n d b ü c h e r n
d i e Fehlersuche
und d e r e i n s c h l ä g i g e n L i t e r a t u r b e s c h r i e b e n .
folgende P u n k t e im A u g e h a b e n :
KAPITEL
84
7.2.5
7.
PROGRAMMIERTECHNL
Dokumentation
d i g d o k u m e n t i e r t w e r d e n . D e r k o n z e p t i o n e l l e E n t w u r f z ä h l t dabei
s c h o n als d e r e r s t e Teil d e r D o k u m e n t a t i o n . D i e V o r t e i l e a u s f ü h r l i c h e r D o k u m e n t a t i o n liegen a u f d e r H a n d :
Entwurf
nig f o r m a l i s i e r t e n W i s s e n s , z u t u n . Z u m B e i s p i e l ist es i m Falle
des R e g a l b a u s k e i n e s w e g s k l a r , w a r u m g e r a d e diese R e p r ä s e n t a tion f ü r R e g a l e u n d i h r e B e s t a n d t e i l e g e w ä h l t w u r d e u n d n i c h t eine
e r s p a r t I r r w e g e in d e r P r o -
Darstellung f ü r ein R e g a l b e l e u c h t e t n u r g e w i s s e A s p e k t e eines
Regals, die r ä u m l i c h e n E i g e n s c h a f t e n s i n d z u m B e i s p i e l e t w a s zu
kurz g e k o m m e n .
• eine A r t Tagebuch
ü b e r die E n t w i c k l u n g b e w a h r t d a v o r , den-
selben Irrweg zweimal zu g e h e n
einem
Wissensrepräsenta-
tion , d e r L o g i k - D a r s t e l l u n g v o n A s p e k t e n a l l t ä g l i c h e n , m e i s t we-
andere. D e r Z w e c k heiligt a u c h h i e r die M i t t e l . U n s e r e P R O L O G -
grammierung
• bei
ÜBUNGEN
P r o g r a m m i e r u n g in P R O L O G h a t viel m i t
A l l e v e r s c h i e d e n e n Stufen der P r o g r a m m e n t w i c k l u n g s o l l t e n s t ä n -
• ein g u t e r konzeptioneller
7.4.
gut
dokumentierten
I n s g e s a m t w u r d e eine L e i t l i n i e f ü r die P r o g r a m m e n t w i c k l u n g
vorgestellt. D i e K r e a t i v i t ä t , die I d e e n h e r v o r b r i n g t ,
Programm
besteht
die
funktioniert
wohl e t w a s s p r u n g h a f t e r u n d u n s y s t e m a t i s c h e r .
Chance, daß andere Leute (und m a n selbst), das P r o g r a m m
jederzeit v e r s t e h e n u n d e r w e i t e r n k ö n n e n
7.4
Übungen
B e r e i t s die V e r w e n d u n g k l i n g e n d e r N a m e n f ü r P r ä d i k a t e u n d der e n A r g u m e n t e trägt zur D o k u m e n t a t i o n bei. A u ß e r d e m empfiehlt
es sich, v o r j e d e r ( w i c h t i g e n ) P r ä d i k a t s d e f i n i t i o n e i n e n K o m m e n t a r k a s t e n folgender A r t einzufügen u n d e n t s p r e c h e n d a u s z u f ü l l e n :
Übung 7.1
Sie sie!
Folgendes Prädikat enthält einige Fehler.
Permute(Liste,[ErstesIElement
Beheben
IRest]):-
append(Listel,[ErstesElementlListe2].Liste),
'/.
Prädikat
V.
Argumente des P r ä d i k a t s
append(Listel,Liste2,L3ite3),
und d e r e n
permute(Liste3,Rest,Rest1).
Struktur
permute([],[]).
'/.
V,
Beschreibung
der Arbeitsweise
des
*/.
7,
7.3
Abbruchbedingung
append([] . L i s t e , L i s t e )
Prädikats
append( [ E r s t e s E l e m e n t I R e s t ] ,
X
'/.
/*
Beispiele
für Aufrufe
und z u g e h ö r i g e
Antworten
Liste,
[ErstesElementIListel]):-
Besondere
Hinweise,
Warnungen,
append(Rest.Liste).
Ausnahmen
Übung 7.2
Zusammenfassung
D e r „ R o h s t o f f " , m i t d e m P r o g r a m m i e r e r a r b e i t e n , ist
F e r t i g e n S i e e i n e n k o n z e p t i o n e l l e n E n t w u r f f ü r fol-
gende Idee u n d r e a l i s i e r e n Sie i h n als P r o g r a m m .
InformM
t i o n . D a s W e s e n v o n I n f o r m a t i o n ist i h r e S t r u k t u r . G e n a u s o w i j
Wee: „ D e r g r o ß e Z a u b e r e r u n d seine G e h i l f e n "
e i n W e r k s t ü c k v o n e i n e m B e a r b e i t u n g s z u s t a n d in d e n
Der große Z a u b e r e r v e r w a n d e l t D i n g e :
nächste
überführt werden kann, kann Information von einer A r t v o n StrukJ
t u r i e r t h e i t in eine a n d e r e ü b e r f ü h r t w e r d e n .
Dokumentation
°nd Tests nicht vergessen!
• einen g e l b e n Z a u b e r s t a b in drei r o t e T ü c h e r
86
KAPITEL
7.
PROGRAMMIERTECHK
• s c h w a r z e H a s e n m i t weißen O h r e n u n d b l a u e n
Augen
weiße H a s e n m i t weißen O h r e n u n d r o t e n A u g e n
• b r a u n e H a s e n w e r d e n z u e r s t i n b l a u e H ü t e , u n d d a n n an
schließend in g r ü n e Z a u b e r s t ä b e m i t s c h w a r z e m G r i f f un
weißer S p i t z e v e r w a n d e l t
Teil II
• g e l b e M ü t z e n w e r d e n m a n c h m a l in s c h w a r z e H ü t e , m a n c h m a l in G e l d s t ü c k e v e r w a n d e l t .
A u ß e r d e m ist z u b e m e r k e n , d a ß d e r g r o ß e Z a u b e r e r
eigentlich
n i c h t s selbst m a c h t , s o n d e r n die A r b e i t a n s e i n e , a u f b e s t i m m t e
D i n g e s p e z i a l i s i e r t e n Gehilfen a b g i b t .
Ü b u n g 7 . 3 E n t w e r f e n Sie ein P r o g r a m m , d a s f o l g e n d e n W o r t
s a l a t sinnvoll z u e i n e m S a t z a n o r d n e n k a n n :
katze, m a u s , die, einer, nach, sucht
Linguistische
Anwendungen
Kapitel 8
Syntaxanalyse
In diesem K a p i t e l wollen w i r ein P R O L O G - P r o g r a m m e n t w i c k e l n ,
das für einfache e n g l i s c h e S ä t z e ü b e r p r ü f t , o b d i e s e g r a m m a t i k a lisch korrekt sind. D a z u m ü s s e n w i r z u n ä c h s t k l ä r e n , w a s u n t e r
grammatikalisch
8.1
korrekt
zu verstehen ist.
Kontextfreie Grammatiken
Um uns die A r b e i t f ü r d e n A n f a n g s o l e i c h t w i e m ö g l i c h z u m a chen, n e h m e n w i r a n , d a ß sich d a s z u b e h a n d e l n d e F r a g m e n t d e r
englischen S p r a c h e d u r c h e i n e k o n t e x t f r e i e G r a m m a t i k
ben läßt.
beschrei-
90
KAPITEL
8.
8.1.
SYNTAXANALYS.
Beispiel 8.1
E i n e G r a m m a t i k beschreibt formal e x a k t , wie sich j e d e Kon
stituente der Sprache aus anderen K o n s t i t u e n t e n zusammensetzt.!
Z u m B e i s p i e l b e s t e h t der e i n f a c h e H a u p t s a t z
1. S
m
D i e s k a n n d u r c h die R e g e l
ß.
S -> NP V P
d u k t i o n e n sind ein B e s t a n d t e i l einer kontextfreien
Grammatik.
-m
1. E i n e r M e n g e v o n Terminalsymbolen
2. E i n e r M e n g e v o n
3. Einer Menge von
Das Lexikon
H
Produktionen
Nichtterminalsymbol,
dem
Start
symbol
Sprache. Nichtterminalsymbole
sind die B e z e i c h n u n g e n
f ü r die
K o n s t i t u e n t e n . D a s S t a r t s y m b o l ist in d e r R e g e l S, d a w i r S ä t z e
a n a l y s i e r e n wollen.
Produktionen bestehen aus einem N i c h t t e r m i n a l s y m b o l ,
Seite,
ge;
e i n e m Pfeil u n d e i n e r F o l g e v o n T e r m i n a l - o d e r
N i c h t t e r m i n a l s y m b o l e n , der rechten
Seite.
Die B e z e i c h n u n g „ k o n t e x t f r e i " f ü r d i e s e G r a m m a t i k e n d e u t e t
a n , d a ß es n i c h t m ö g l i c h ist, f ü r die A n w e n d b a r k e i t v o n P r o d u k - *
t i o n e n K o n t e x t b e d i n g u n g e n a n z u g e b e n . D i e s w ä r e z . B . möglich,
w e n n m a n a u f d e r linken Seite v o n P r o d u k t i o n e n m e h r a l s n u r
e u l
||
einzelnes N i c h t t e r m i n a l s y m b o l a n g e b e n k ö n n t e . G r a m m a t i k e n , die '"
N
the
DET
N
loves
V
woman
N
eats
V
man
N
sings
V
apple
N
Sprache c h a r a k t e r i s i e r t ? U m dies e x a k t
wir den B e g r i f f d e r Ableitung
minalsymbole zu verwenden. S t a t t d e s s e n werden die
Wörter
eingeteilt. D i e s e w e r d e n d a n n in d e n P r
d u k t i o n e n v e r w e n d e t . M a n b e z e i c h n e t sie oft a l s
bole. Die E i n t e i l u n g geschieht in e i n e m Lexikon.
PräterminalsymDabei
W o r t auch mehreren Kategorien zugeordnet werden.
kann
zu beschreiben,
eine
führen
ein.
E i n S a t z ist g e n a u d a n n in d e r v o n e i n e r k o n t e x t f r e i e n G r a m matik erzeugten
duktionen
Sprache
gibt,
deren
e n t h a l t e n , w e n n es e i n e F o l g e v o n P r o sukzessive
Anwendung
ausgehend
vom
Startsymbol g e r a d e diesen Satz ergibt. Die F o l g e dieser P r o d u k tionsanwendungen h e i ß t
Beispiel 8 . 2
Ableitung.
B e t r a c h t e n w i r w i e d e r d e n S a t z J o h n e a t s t h e apple.
Eine m ö g l i c h e A b l e i t u n g ist:
(1)
In d e r L i n g u i s t i k ist es üblich, in d e n P r o d u k t i o n e n k e i n e T e r ;
Kategorien
Ableitung
Auf welche W e i s e g e n a u w i r d n u n d u r c h e i n e G r a m m a t i k
dies e r l a u b e n , h e i ß e n d a n n „ k o n t e x t s e n s i t i v " .
lexikalische
mary
john
8.1.1
T e r m i n a l s y m b o l e sind in u n s e r e m F a l l die W ö r t e r d e r englischen
sei g e g e b e n d u r c h f o l g e n d e W ö r t e r u n d i h r e s y n t a k -
tischen K a t e g o r i e n :
Nichtterminalsymbolen
4. E i n e m ausgezeichnetem
n a n n t linke
5. V P - » V
»:
ponenten:
DET N
4. V P —• V N P
Pro-
I n s g e s a m t b e s t e h t eine k o n t e x t f r e i e G r a m m a t i k a u s v i e r K o r n S
besteht:
3. N P — N
\
a u s g e d r ü c k t w e r d e n . E i n e s o l c h e R e g e l h e i ß t a u c h Produktion.
a n , die a u s f o l g e n d e n Produktionen
NP VP
2. N P
• a u s d e r N o m i n a l p h r a s e John u n d d e r V e r b a l p h r a s e e a t s t h e applefl
91
GRAMMATIKEN
F ü r unser ( M i n i - ) F r a g m e n t des Englischen n e h m e n
wir eine Grammatik
1
J o h n e a t s t h e apple
KONTEXTFREIE
S
(3)
(4)
(2)
NP VP
=> N V P
N V NP
=>• N V D E T N
Die K e t t e d e r P r ä t e r m i n a l s y m b o l e p a ß t a u f d e n S a t z . D a m i t ist
John e a t s t h e . a p p l e g e m ä ß u n s e r e r G r a m m a t i k e i n k o r r e k t e r S a t z .
KAPITEL
92
8.
SYNTAXANALYSE
8.1.
KONTEXTFREIE
8.1.2
D i e A n g a b e e i n e r A b l e i t u n g ist ein B e w e i s , d a ß e i n e gege^
GRAMMATIKEN
Syntaxbäume
b e n e E i n g a b e k e t t e z u d e r durch, die G r a m m a t i k e r z e u g t e n S p r a c h e
gehört.
}
Z u e i n e m S a t z d e r S p r a c h e g i b t es in d e r R e g e l m e h r a l s eine
A b l e i t u n g . I m o b i g e n B e i s p i e l k ö n n e n w i r a u c h die P r o d u k t i o n
( 4 ) v o r d e r P r o d u k t i o n ( 3 ) a n w e n d e n u n d e r h a l t e n die f o l g e n d e ;
A b l e i t u n g für den S a t z J o h n e a t s t h e apple:
9
(2)
(3)
(4)
(1)
l
NP VP
NP V NP
Wir b e n ö t i g e n also e i n e g e e i g n e t e D a r s t e l l u n g , d i e es u n s e r l a u b t ,
N V NP
von der R e i h e n f o l g e d e r P r o d u k t i o n s a n w e n d u n g e n z u a b s t r a h i e -
N V DET N
ren u n d n u r die K o n s t i t u e n t e n s t r u k t u r e i n e s S a t z e s d a r z u s t e l l e n .
U n d es gibt s o g a r n o c h e i n e w e i t e r e A b l e i t u n g !
Genau d a s ist die A u f g a b e eines
Bäume
Syntaxbaumes.
s i n d D a t e n s t r u k t u r e n , die d a z u d i e n e n ,
hierarchische
Strukturen d a r z u s t e l l e n . D i e K o n s t i t u e n t e n s t r u k t u r e i n e s S a t z e s
ist ein t y p i s c h e s B e i s p i e l für e i n e h i e r a r c h i s c h e S t r u k t u r . D a h e r ist
ein B a u m ein g e e i g n e t e s B e s c h r e i b u n g s m i t t e l d a f ü r .
E i n Syntaxbaum
stellt g r a p h i s c h d a r , w i e e i n S a t z a u s g e h e n d
vom S t a r t s y m b o l d e r G r a m m a t i k a b g e l e i t e t w e r d e n k a n n . W e n n
für die E r s e t z u n g des N i c h t t e r m i n a l s y m b o l e s
S die
Produktion
S -» N P V P angewandt wird, so erhalten wir einen S y n t a x b a u m
mit der Wurzel
S u n d d e n Blättern
NP und V P :
D o c h b e s t e h t ein r e l e v a n t e r U n t e r s c h i e d z w i s c h e n d i e s e n v e
schiedenen Ableitungen? Eigentlich sind wir nur a n der
entenstruktur
Konstitifi
eines S a t z e s i n t e r e s s i e r t u n d n i c h t a n d e n v e r s c h i e ß
d e n e n Ableitungen. Die K o n s t i t u e n t e n s t r u k t u r eines Satzes ;
u n s A u f s c h l u ß d a r ü b e r , w e l c h e Teile d e s S a t z e s m i t e i n a n d e r <
E i n h e i t , eine Konstituente,
bilden und wie einfache Konstituent
zu größeren zusammengefaßt werden. L a s s e n sich für einen
; N P u n d V P s i n d Markierungen
verschiedene Konstituentenstrukturen angeben, so kann m a n
n
d e r R e g e l a u c h v e r s c h i e d e n e B e d e u t u n g e n in d i e s e n S a t z hin
l ^ e r g e o r d n e t e Teilbäume
l e s e n , d.h. e r h a t v e r s c h i e d e n e Lesarten.
b a
Im obigen Fall han
u m e heißen
es s i c h a b e r n u r u m eine u n t e r s c h i e d l i c h e R e i h e n f o l g e d e r A n w
a n Knoten
° t e n m i t d e r M a r k i e r u n g S heißt innerer
des B a u m e s .
Knoten,
Der
d a er noch
hat. K n o t e n o h n e u n t e r g e o r d n e t e Teil-
Blätter.
W e n n a n e i n e m B l a t t eines B a u m e s e i n N i c h t t e r m i n a l s y m b o l
d u n g d e r P r o d u k t i o n e n u n d nicht u m e i n e n U n t e r s c h i e d in
3
Konstituentenstruktur.
S
e h
e
n
t , so k a n n h i e r ein w e i t e r e r T e i l b a u m f ü r e i n e R e g e l m i t p a s d
e
r
Ünlcer S e i t e e i n g e s e t z t w e r d e n :
94
KAPITEL
8.
SYNTAXANALY,
GRAMMATIKEN
95
Wir m ü s s e n v o r s i c h t i g sein, w e n n w i r v o n der
Konstituentenstruk-
8.1.
KONTEXTFREIE
8.1.3
F ü r einen g a n z e n S a t z hat jeder S y n t a x b a u m folgende Eige
schaffen:
1 . D i e W u r z e l des S y n t a x b a u m e s ist m i t d e m S t a r t s y m b o l d
Ambiguität
tur eines S a t z e s g e m ä ß e i n e r G r a m m a t i k r e d e n . E s ist z w a r k l a r ,
Grammatik markiert
daß es z u j e d e m S y n t a x b a u m n u r g e n a u e i n e n S a t z g i b t , d e s s e n
K o n s t i t u e n t e n s t r u k t u r e r d a r s t e l l t , a b e r es ist d u r c h a u s m ö g l i c h ,
2 . J e d e s B l a t t des S y n t a x b a u m e s ist m i t e i n e m L e x e m m a r k i e r t
3 . J e d e r i n n e r e K n o t e n des S y n t a x b a u m e s ist m i t e i n e m Nichtterminalsymbol markiert
daß eine G r a m m a t i k f ü r e i n e n S a t z m e h r e r e S y n t a x b ä u m e z u l ä ß t .
5
I
4 . W e n n ein i n n e r e r K n o t e n m i t d e m N i c h t t e r m i n a l s y m b o l
m a r k i e r t ist u n d die u n m i t t e l b a r e n U n t e r k n o t e n m i t
M
dem
In d i e s e m F a l l s p r e c h e n w i r v o n Ambiguität
oder
Mehrdeutigkeit
der G r a m m a t i k u n d a u c h d e s S a t z e s . In d e r R e g e l b e d e u t e n v e r schiedene S y n t a x b ä u m e f ü r e i n e n S a t z , d a ß es v e r s c h i e d e n e L e s arten für d i e s e n S a t z g i b t .
S y m b o l e n B , C , . . . , D m a r k i e r t s i n d , s o ist die zugehörige?
P r o d u k t i o n A —» B C . . .
D
5 . W e n n ein i n n e r e r K n o t e n m i t e i n e m p r ä t e r m i n a l e n S y m b o l
m a r k i e r t ist, s o ist d e r u n m i t t e l b a r e U n t e r k n o t e n ein B l a i f
mit einem L e x e m dieser K a t e g o r i e
Z u j e d e r A b l e i t u n g g i b t es g e n a u e i n e n S y n t a x b a u m . Alle Ab
l e i t u n g e n , die d i e s e l b e K o n s t i t u e n t e n s t r u k t u r d a r s t e l l e n , e r g e b e
Beispiel 8 . 4
denselben S y n t a x b a u m .
einfache P r ä p o s i t i o n a l p h r a s e n s y n t a x e r w e i t e r n . D a z u f ü g e n w i r z u
W i r wollen u n s e r F r a g m e n t d e s E n g l i s c h e n u m eine
der G r a m m a t i k a u s B e i s p i e l 8 . 1 n o c h f o l g e n d e R e g e l n h i n z u :
Beispiel 8.3
D e r S y n t a x b a u m für den Satz John eats the apply
ist:
6. P P - > P N P
7. N P - > N P
PP
8. V P - > V N P
PP
Das L e x i k o n w i r d e r w e i t e r t u m f o l g e n d e W ö r t e r u n d i h r e s y n t a k tischen K a t e g o r i e n :
worm
N
with
P
knife
N
in
P
Für den S a t z J o h n e a t s t h e apple with t h e worm g i b t es zwei v e r schiedene S y n t a x b ä u m e . D e r e r s t e g i b t d i e L e s a r t w i e d e r , in d e r
John einen w u r m i g e n A p f e l ißt; d e r z w e i t e d a g e g e n b e d e u t e t , d a ß
D i e s e r S y n t a x b a u m stellt alle m ö g l i c h e n A b l e i t u n g e n f ü r dies«
Satz auf einmal dar.
J ° h n m i t e i n e m W u r m e i n e n Apfel ißt. D i e s w ä r e d i e r i c h t i g e L e s für d e n S a t z J o h n e a t s t h e apple with a knife.
KAPITEL
96
8.
8.2.
SYNTAXANALYSE
97
PARSING
h a u p t keine C h a n c e , f ü r e i n e n e i n z e l n e n S a t z e i n e e i n d e u t i g e L e s art f e s t z u l e g e n . M i t s o l c h e n A m b i g u i t ä t e n m ü s s e n d a n n d i e w e i t e ren K o m p o n e n e n t e n in e i n e m n a t ü r l i c h s p r a c h l i c h e n S y s t e m u m gehen k ö n n e n .
8.2
Parsing
In diesem A b s c h n i t t
w o l l e n w i r ein P R O L O G - P r o g r a m m
ent-
wickeln, d a s f ü r die G r a m m a t i k a u s B e i s p i e l 8 . 1 ü b e r p r ü f t , o b ein
gegebener S a t z in d e r v o n d e r G r a m m a t i k e r z e u g t e n S p r a c h e e n t halten ist. E i n s o l c h e s P r o g r a m m n e n n t m a n e i n e n P a r s e r .
Der
Prozess d e r A n a l y s e e i n e E i n g a b e s a t z e s d u r c h d e n P a r s e r heißt
John
eats
t h e apple with
the
Parsing.
worm
Zur D a r s t e l l u n g des z u a n a l y s i e r e n d e n S a t z e s w ä h l e n w i r e i n e
Liste, die als E l e m e n t e d i e e i n z e l n e n W ö r t e r des S a t z e s e n t h ä l t .
Die W ö r t e r w e r d e n
durch P R O L O G - A t o m e
dargestellt.
Unser
Parser soll also z . B . f o l g e n d e s V e r h a l t e n z e i g e n :
?-
s([john,eats,the,apple]).
yes
?-
s([john,the,apple,eats]).
no
John
eats
t h e apple with
the
Der P a r s e r soll beweisen,
worm
o b e i n g e g e b e n e r S a t z in d e r v o n d e r
Grammatik e r z e u g t e n S p r a c h e e n t h a l t e n ist. W i e k a n n ein s o l c h e r
Beweis a u s s e h e n ? N e h m e n w i r d a z u die P r o d u k t i o n S - + N P
D a s E r k e n n e n d e r „ r i c h t i g e n " L e s a r t f ü r e i n e n S a t z ist i n d e r R « |
u
VP
n d formulieren i h r e B e d e u t u n g :
g e l e i n s e h r schwieriges P r o b l e m , z u d e s s e n L ö s u n g Informatioff
a u f g a n z v e r s c h i e d e n e n E b e n e n r e l e v a n t i s t . O f t g i b t e s syntaK
E i n e E i n g a b e k e t t e stellt e i n e K o n s t i t u e n t e S d a r ,
t i s c h e B e d i n g u n g e n , die g e w i s s e L e s a r t e n a u s s c h l i e ß e n , z . B . dB
falls sich diese K e t t e i n zwei T e i l e a u f s p a l t e n l ä ß t
S u b k a t e g o r i s i e r u n g v o n V e r b e n . M a n c h e A m b i g u i t ä t l ä ß t sich al
und d e r e r s t e Teil e i n e K o n s t i t u e n t e N P
d e r semantischen Ebene beseitigen, z . B . durch Restriktionen
und d e r z w e i t e T e i l e i n e K o n s t i t u e n t e V P d a r s t e l l t .
w
d i e A u s w a h l von Füllern für s e m a n t i s c h e Rollen. In u n s e r e m B 3
spiel ließe sich die z w e i t e L e s a r t e r s t d u r c h u n s e r „Weltwisseffl
d a ß n ä m l i c h ein W u r m kein I n s t r u m e n t z u m E s s e n e i n e s
Ap9
s e i n k a n n , ausschließen. I n v i e l e n F ä l l e n b e s t e h t a b e r a u c h ü b j
Analog d a z u k ö n n e n w i r j e d e P r o d u k t i o n d e r G r a m m a t i k i n e i n e
entsprechende R e g e l u m f o r m u l i e r e n .
KAPITEL
98
8.
SYNTAX
ANALYSE^
D i e o b i g e F o r m u l i e r u n g der R e g e l h a t d e n V o r t e i l , d a ß sie schon
8.2.
PARSING
99
np([john])
g e n a u d i e F o r m e i n e r K l a u s e l h a t . W i r k ö n n e n diese R e g e l u n m i t t e l b a r in P R O L O G a u f s c h r e i b e n :
?
;
Dieses M a l ist P R O L O G e r f o l g r e i c h u n d d a h e r e r g i b t sich a l s n ä c h stes B e w e i s z i e l :
s(S)
:-
i
append(NP,VP,S),
vp([eats,the,apple])
np(NP),
vp(VP).
Auch d a s k l a p p t w u n d e r b a r , s o d a ß j e t z t d e r g e s a m t e B e w e i s f ü r
s([john,eats.the,apple]
W i r b e n u t z e n h i e r a p p e n d d a z u , die E i n g a b e k e t t e in zwei Teile zu
zerlegen.
a b g e s c h l o s s e n ist u n d P R O L O G
er-
leichtert
-g
W i e f u n k t i o n i e r t n u n dieses P r ä d i k a t s ( S ) ? N e h m e n w i r ein--;
m a l a n , die P r ä d i k a t e n p ( N P ) u n d v p ( V P )
yes
w ü r d e n b e r e i t s wie
g e w ü n s c h t f u n k t i o n i e r e n . A l s o ist z . B . n p ( N P )
g e n a u d a n n be-.
w e i s b a r , w e n n NP e i n e N o m i n a l p h r a s e g e m ä ß u n s e r e r G r a m m a t i k
ausgeben k a n n .
Nun kann m a n natürlich sämtliche P r o d u k t i o n e n der
Gram-
$
matik g e n a u n a c h d e m M u s t e r f ü r S —> N P V P i n K l a u s e l n ü b e r -
B e t r a c h t e n wir jetzt folgende Anfrage:
f
setzen. Dies e r g i b t f o l g e n d e s P r o g r a m m :
?-
S
darstellt.
s([john,eats,the,apple]).
Der K o p f der Klausel s ( S )
s(S)
:-
append(NP,VP,S),
p a ß t a u f diese A n f r a g e ; d a h e r muß^
np(NP),
P R O L O G j e t z t v e r s u c h e n , d e n R u m p f d e r K l a u s e l z u beweisen..".
vp(VP).
D a d u r c h e r h a l t e n w i r als n ä c h s t e s Beweisziel:
append(NP,VP,[john,eat
PROLOG
VP =
findet
I
s,the,apple])
h i e r f ü r eine e r s t e L ö s u n g
mit
NP =
[]
und
[ J o h n , e a t s , t h e , a p p l e ] . D a r a u s e r h a l t e n wir als nächstes,
II
np(G)
Eine
Nominalphrase
leer
setzt
ja
det(DET),
n(N).
np(NP)
nicht
sein;
die
hatten.
der
kann
aber
nach
Beweisversuch
Korrektheit
PROLOG
der
für
Prädikate
und
Grammatik?
scheitert,
vp
[John]
eine n e u e
u n d VP =
d>-
vorausg
m u ß hier also „ b a c k t r a c k e n "
append(NP,VP,[John,eats,the,apple])
c h e n . D i e s f ü h r t z u NP =
unserer
np([])
np
:-
append(DET.N.NP),
Beweisziel:
wir
np(NP)
und
Lösung
[eats,the,applg
( w a r u m ? ) . D a m i t e r h a l t e n w i r d a s folgende n e u e B e w e i s z i e l :
:-
N = NP,
n(N).
vp(VP)
:-
append(V,NP,VP),
v(V),
np(NP).
vp(VP)
:-
V = VP,
v(V).
KAPITEL
100
8.
SYNTAXANALYS.
8.3.
ÜBUNGEN
E r w e i t e r n Sie die G r a m m a t i k
101
B e i d e n K l a u s e l n f ü r die P r o d u k t i o n e n , d e r e n r e c h t e S e i t e n u r
Übung 8.3
N i c h t t e r m i n a l s y m b o l enthält, kann natürlich die Zerlegung m i t t e
daß S ä t z e d e r F o r m J o h n e a t s apple o d e r T h e J o h n e a t s t h e a p -
a u s Beispiel 8.1
so,
ple nicht m e h r e r z e u g t w e r d e n . E r w e i t e r n S i e a u c h d e n P a r s e r a u s
append unterbleiben.
Abschnitt 8 . 2 e n t s p r e c h e n d u n d t e s t e n S i e d a m i t I h r e G r a m m a t i k .
D i e D a x s t e l l u n g des L e x i k o n s in P R O L O G f ü r d i e s e n P a r s
ist n a h e l i e g e n d . D a z . B . v ( V ) b e w e i s b a r sein soll, w e n n die Lis
V g e n a u ein W o r t e n t h ä l t , d a s ein V e r b ist, k ö n n e n w i r alle V
Übung 8.4
ben einfach d u r c h F a k t e n der F o r m v ( [ e a t s ] )
einfache B e h a n d l u n g v o n A d j e k t i v e n . E s s o l l t e n z . B . die S ä t z e
in die D a t e n b a s
eintragen.
%
H i e r also u n s e r v o l l s t ä n d i g e s L e x i k o n :
1
E r w e i t e r n Sie die G r a m m a t i k a u s Ü b u n g 8 . 3 u m eine
lohn loves t h e beautiful woman u n d Mary lives in a big white house
möglich sein. E r w e i t e r n Sie a u c h d e n P a r s e r u n d t e s t e n Sie I h r e
Grammatik.
n ( [mary] ) .
n([john]).
Ü b u n g 8 . 5 S c h r e i b e n Sie e i n e n P a r s e r f ü r d i e G r a m m a t i k
n ( [woman] ) .
Beispiel 8 . 4 . W a s g e h t b e i m P a r s i n g s c h i e f ?
n([man]) .
n([apple] ) .
det ( [the] ) .
v( [loves] ) .
v([eats]).
v([sings] ) .
8.3
Übungen
Ü b u n g 8.1
G e b e n Sie alle A b l e i t u n g e n f ü r d e n S a t z T h e
loves t h e w o m a n a n , die m i t
der G r a m m a t i k
m»
a u s B e i s p i e l 8.
m ö g l i c h sind.
Ü b u n g 8.2
G e b e n Sie alle S y n t a x b ä u m e f ü r d e n S a t z J o h n sa*.
t h e m a n in t h e park with t h e telescope a n , d i e m i t d e r G r a m m
t i k a u s Beispiel 8 . 4 n a c h e n t s p r e c h e n d e r E r w e i t e r u n g des L
k o n s m ö g l i c h s i n d . B e s c h r e i b e n Sie, w e l c h e B e d e u t u n g d e s S a t
d u r c h j e d e n S y n t a x b a u m w i e d e r g e g e b e n w i r d . S i n d alle d e n k b a
B e d e u t u n g e n - sinnvoll o d e r n i c h t - dieses S a t z e s d a m i t erfaß.
W e n n nicht, wie m ü ß t e die G r a m m a t i k e r w e i t e r t w e r d e n ?
'Eigennamen werden hier als normale Nomen behandelt. Uns ist klar,
dies nicht adäquat ist. In der Übung 8.3 erhalten Sie Gelegenheit, dies be
zu machen
aus
Kapitel 9
Definite Clause Grammars
Die s y n t a k t i s c h e A n a l y s e v o n E i n g a b e n ist e i n e s e h r häufig v o r kommende A u f g a b e bei d e r P R O L O G - P r o g r a m m i e r u n g .
bietet P R O L O G
eine e i n f a c h e M ö g l i c h k e i t ,
Deshalb
Grammatiken
und
Parser zu s c h r e i b e n . U m e i n e n P a r s e r f ü r e i n e k o n t e x t f r e i e G r a m matik zu p r o g r a m m i e r e n , r e i c h t es a u s , d i e G r a m m a t i k r e g e l n in
einer b e s t i m m t e n N o t a t i o n a u f z u s c h r e i b e n u n d d i e s e D a t e i d a n n
mit c o n s u l t z u l a d e n . In d e r P R O L O G - L i t e r a t u r h e i ß t diese N o t ation Definite
Clause
Grammar
oder kurz
DCG.
KAPITEL
104
9. DEFINITE
CLAUSE
GRAMMARS.
B e i s p i e l 9 . 1 Die G r a m m a t i k a u s B e i s p i e l 8 . 1 i m D C G - F o r m a t : |
s
np
np
vp
vp
—>
-->
-->
—>
—>
np, v p .
det,
n.
n.
105
Diese D a r s t e l l u n g sieht völlig a n d e r s a u s a l s u n s e r P a r s e r i m v o rigen K a p i t e l . W e l c h e Idee s t e c k t h i n t e r d i e s e r K o d i e r u n g ?
Die B e d e u t u n g der Klausel s läßt sich folgendermaßen u m schreiben:
s(A,B)
v, np.
V.
beginnt
und d e r R e s t d e r L i s t e o h n e d i e s e K o n s t i t u e n t e g e r a d e
s Lexikon dazu erh
n
n
n
n
n
det
V
V
V
—>
—>
—>
—>
—>
—>
—>
—>
—>
[mary] .
[john] .
[woman]
[man] .
[apple]
[the] .
[loves]
[eats] .
[sings]
P R O L O G b e n u t z t die D C G a b e r n i c h t d i r e k t z u m P a r s i n g . S t a t t d e s s e n w e r d e n b e i m L a d e n der D a t e i m i t c o n s u l t d i e Produktion
n e n d e r G r a m m a t i k i n „ n o r m a l e " K l a u s e l n ü b e r s e t z t . D a b e i wirc
f ü r jede D C G - P r o d u k t i o n g e n a u eine K l a u s e l e r z e u g t .
N e h m e n w i r a n , w i r h ä t t e n d i e D a t e i m i t d e r D C G a u s Beispiel 9 . 1 m i t t e l s c o n s u l t erfolgreich g e l a d e n . W i e sieht n u n diel
interne Darstellung der Produktionen aus? D a z u schauen wir uns!
m i t l i s t i n g e i n m a l die K l a u s e l für s u n d d i e L e x i k o n e i n t r ä g e furj
die Verben a n :
?-
listing(s).
s(A,B)
:-
np(A,C),
vp(C.B).
yes
?-
listing(v).
v([loves|A],A).
v([eats|A],A).
v([sings|A],A).
yes
gilt,
die Liste A m i t einer K o n s t i t u e n t e v o m T y p s
falls
B ist.
Jede P r o d u k t i o n der D C G wird also in eine Klausel übersetzt, die
von d e r L i s t e a n d e r e r s t e n A r g u m e n t s t e l l e a m A n f a n g ein S t ü c k
„ a b k n a b b e r t " , d a s g e r a d e eine m ö g l i c h e K o n s t i t u e n t e d e s jeweiligen T y p s i s t u n d d e n R e s t d e r L i s t e a u f d e m z w e i t e n A r g u m e n t
übrigläßt.
Das Lexikon m u ß demzufolge so kodiert werden, daß genau das
Lexem vom Anfang der Liste entfernt wird:
?~
X =
n([john,loves,mary],X).
[loves,mary]
yes
Die L e x i k o n e i n t r ä g e e i n e r D C G h a b e n d e s h a l b i m m e r d i e F o r m
k a t e g o r i e ( [ l e x e m | R e s t ] , R e s t ] , s o w i e w i r dies a m B e i s p i e l d e r
Verbeinträge schon gesehen haben.
106
KAPITEL
9.
DEFINITE
CLAUSE
GRAMMAI
9.1.
Z u m b e s s e r e n V e r s t ä n d n i s wollen wir u n s d i e A b a r b e i t u n g des'
AUFBAU
DER
107
KONSTITUENTENSTRUKTUR
die E i n g a b e l i s t e n a c h e i n a n d e r in alle m ö g l i c h e n T e i l l i s t e n z e r l e g e n
e i n f a c h e n S a t z e s J o h n loves Mary d u r c h d e n D C G - P a r s e r genau*
und d a n n t e s t e n , o b diese Z e r l e g u n g d e r S u b k o n s t i t u e n t e n s t r u k t u r
a n s e h e n . D a z u b e t r a c h t e n wir d a s f o l g e n d e , e t w a s
der P r o d u k t i o n e n t s p r i c h t . Dieses V e r f a h r e n b e d e u t e t ein b l i n d e s
aufbereitete*
Ablaufprotokoll von P R O L O G :
call
?-
||
s([john,loves,mary] , []) .
s(A
call
,B )
ig
:-
call
,B1)
:-
n([john,loves,mary] ,B1).
n([john|A2]
exit
,A2).
n ( [ j o h n | [ l o v e s , m a r y ] ] , [1
exit
np([john,loves,mary],[loves
call
vp( [ l o v e s , m a r y ] , [] ) .
vp(A3
call
,B3)
:-
v([loves,mary],B3),
v ( [ l o v e s 1 A4]
,A4).
exit
v( [ l o v e s 1[mary]] , [mary])
call
n p ( [ m a r y ] , [] ) .
np(A5
call
,B5)
n([mary]
:-
exit
n ( [mary | [ ] ] , [ ] )
np([mary] , [] )
exit
vp( [ l o v e s , m a r y ] , [] )
exit
fang d e r E i n g a b e l i s t e d e n f ü r sie n ö t i g e n T e i l a b z u s c h n e i d e n . D e r
Rest, m i t d e m sie n i c h t s a n z u f a n g e n weiß, w i r d e i n f a c h z u r B e a r beitung an nachfolgende K o n s t i t u e n t e n w e i t e r g e g e b e n .
Dadurch
wird v e r m i e d e n , d a ß die E i n g a b e k e t t e z u n ä c h s t e i n m a l b l i n d z e r legt w e r d e n m u ß ; s t a t t d e s s e n w i r d sie e i n f a c h v o n v o r n e h e r „ a u f g e b r a u c h t " , bis z u m Schluß h o f f e n t l i c h d i e l e e r e L i s t e ü b r i g b l e i b t .
D e r N a c h t e i l dieser K o d i e r u n g ist, d a ß z u s ä t z l i c h e V a r i a b l e n
in den K l a u s e l n m i t g e s c h l e p p t w e r d e n m ü s s e n . D a d u r c h w i r d d a s
P r o g r a m m s c h l e c h t e r l e s b a r u n d s c h w e r e r v e r s t ä n d l i c h . U m diesen N a c h t e i l w i e d e r a u s z u g l e i c h e n , b i e t e t
PROLOG
die
DCG-
Notation a n , die es d e m P r o g r a m m i e r e r e r s p a r t , d i r e k t d e n k o m plizierten P R O L O G - C o d e zu s c h r e i b e n .
,B5).
n([mary|A6] ,A6) .
exit
Der D C G - P a r s e r dagegen geht sehr zielgerichtet vor. E r nutzt
die T a t s a c h e a u s , d a ß j e d e K o n s t i t u e n t e „ w e i ß " , w i e sie i n t e r n
aufgebaut ist. E s w i r d j e d e r K o n s t i t u e n t e ü b e r l a s s e n , sich a m A n -
np( [ j o h n , l o v e s . m a r y ] , C ) ,
np(Al
Probieren u n d a n s c h l i e ß e n d e s T e s t e n .
s ( [ j ohn, l o v e s , mary] , [ ] )
yes
9.1
Aufbau der
Konstituentenstruktur
In der R e g e l w e r d e n wir nicht m i t e i n e m P r o g r a m m z u f r i e d e n sein,
das n a c h E i n g a b e eines S a t z e s n u r l a p i d a r m i t y e s o d e r no a n t w o r -
Vergleicht m a n in d i e s e m P r o t o k o l l die Zeile c a l l f ü r e i n e K o n - ,
tet. W i r wollen als E r g e b n i s d e r S y n t a x a n a l y s e i r g e n d e i n e D a r s t e l -
s t i t u e n t e m i t d e r z u g e h ö r i g e n Zeile e x i t , s o sieht m a n , wie j e d e !
lung des E i n g a b e s a t z e s e r h a l t e n , d i e a l s E i n g a b e s t r u k t u r f ü r eine
K l a u s e l g e n a u d a s A n f a n g s s t ü c k v o n d e r E i n g a b e l i s t e e n t f e r n t , da
W e i t e r v e r a r b e i t u n g dienen k a n n . J e n a c h A n w e n d u n g k ö n n e n die
die z u g e h ö r i g e K o n s t i t u e n t e bildet:
Anforderungen a n dieses E r g e b n i s g a n z v e r s c h i e d e n sein.
call
exit
np([j ohn,1oves,mary],A)
np([john,loves,mary],[loves,mary])
D e r G r u n d , d a ß D C G s in diese spezielle F o r m ü b e r s e t z t werder»
u n d nicht in u n s e r e f r ü h e r e Version m i t a p p e n d , liegt in d e r Effizienz dieses M e c h a n i s m u s . In der a p p e n d - V e r s i o n m u ß P R O L O G !
• Sind w i r a n d e r s y n t a k t i s c h e n A n a l y s e s e l b s t i n t e r e s s i e r t , so
k ö n n t e eine R e p r ä s e n t a t i o n d e s S y n t a x b a u m e s s e l b s t ein a n g e m e s s e n e s E r g e b n i s sein. B e i s p i e l e d a f ü r h a b e n w i r b e r e i t s
gesehen.
• B e i m A u f b a u einer n a t ü r l i c h s p r a c h l i c h e n
Schnittstelle für
d e n D a t e n b a n k z u g r i f f e r w a r t e n w i r a l s E r g e b n i s ein K o m -
108
KAPITEL
9.
DEFINITE
CLAUSE
GRAMMARS
m a n d o , d a s die D a t e n b a n k z u r A u s w a h l d e r g e w ü n s c h t e n
D a t e n veranlaßt.
W h o works in d e p a r t m e n t
9.1.
AUFBAU
DER
10:
KONSTITUENTENSTRUKTUR
B e i s p i e l 9 . 2 D e r S y n t a x b a u m f ü r J o h n e a t s t h e apple a u s B e i
spiel 8 . 3 w i r d i n P R O L O G k o d i e r t a l s :
073/62?
s(
np(
SELECT name FRDM p e r s o n n e l - d b
WHERE d p t - n o
=
n(john)
'073/62'
),
• A l s S e m a n t i k e r sind w i r a n e i n e r Ü b e r s e t z u n g d e s E i n g a b e -
vp(
s a t z e s in eine p r ä d i k a t e n l o g i s c h e F o r m e l i n t e r e s s i e r t .
v(eats),
Every man loves a woman
np(
det(the),
V x 3 y loves(x,y)
n(apple)
)
)
E s g i b t a l s o e i n e V i e l z a h l v e r s c h i e d e n e r , „ s i n n v o l l e r " A u s g a b e n für.]
d i e A n a l y s e eines S a t z e s . A u s g e h e n d v o n e i n e r G r a m m a t i k , w i e ]
)
w i r sie b i s h e r b e s p r o c h e n h a b e n , ist d i e E r z e u g u n g e i n e s Synta-;
x b a u m e s zunächst die naheliegende, d a einfachste, A u f g a b e . W i r J
m ü s s e n j a lediglich eine S t r u k t u r a u f b a u e n , d i e e x a k t d i e verwen-^
deten Produktionen der G r a m m a t i k widerspiegelt. Zur E r z e u g u n g !
einer anderen A u s g a b e , z . B . einer s e m a n t i s c h e n
Repräsentation,!
m u ß wesentlich m e h r Aufwand getrieben werden. Dies wollen wirl
Wie k ö n n e n w i r n u n e i n e n s o l c h e n S y n t a x b a u m w ä h r e n d d e s P a r sings a u f b a u e n ? B e t r a c h t e n w i r e i n e P r o d u k t i o n u n s e r e r G r a m matik:
S — NP VP
Diese P r o d u k t i o n b e s a g t zweierlei:
uns aber für das nächste Kapitel aufheben.
A l s e r s t e s b e n ö t i g e n w i r eine g e e i g n e t e K o d i e r u n g f ü r e i n e n !
1. U m eine E i n g a b e k e t t e a l s S a t z a n a l y s i e r e n z u k ö n n e n , m u ß
S y n t a x b a u m als P R O L O G - T e r m . E i n e a l l g e m e i n e B a u m s t r u k t u r J
d e r e r s t e T e i l d e r K e t t e a l s N P u n d d e r z w e i t e Teil als V P
läßt sich folgendermaßen charakterisieren:
a n a l y s i e r b a r sein. D i e s e A u s s a g e w u r d e b i s h e r v o n u n s e r e m
E i n Baum
Parser verwendet.
ist
2. D e r S y n t a x b a u m f ü r e i n e K o n s t i t u e n t e v o m T y p S h a t a l s
1. ein B l a t t
oder
2 . ein K n o t e n , v o n d e m m i n d e s t e n s e i n e K a n t e a u s g e h t . J e d
K a n t e führt wieder zu einem B a u m
B e i S y n t a x b ä u m e n sind d i e K n o t e n m i t N i c h t t e r m i n a l s y m b o l
m a r k i e r t u n d die B l ä t t e r m i t L e x e m e n .
W i r wollen B ä u m e s o k o d i e r e n , d a ß w i r d i e M a r k i e r u n g d
K n o t e n als Funktoren von Termen verwenden. D e r T e r m h a t
A r g u m e n t e die U n t e r b ä u m e . Die B l ä t t e r sind P R O L Ö G - A t o m e
Wurzel einen K n o t e n , d e r m i t S m a r k i e r t ist. A u ß e r d e m h a t
e r zwei U n t e r b ä u m e , d e r e n W u r z e l n m i t N P b z w . V P m a r kiert s i n d u n d d i e s e s i n d d i e S y n t a x b ä u m e f ü r d i e K o n s t i t u enten N P bzw. V P .
Beim Zugriff a u f d a s L e x i k o n k ö n n e n w i r d e n b e t r e f f e n d e A s t d e s
Syntaxbaumes abschließen u n d als B l a t t d a s L e x e m einsetzen.
Dieses K o n s t r u k t i o n s v e r f a h r e n f ü r d e n S y n t a x b a u m
können
^ r direkt n a c h P R O L O G ü b e r t r a g e n . D e r D C G - F o r m a l i s m u s e r laubt es, die K o n s t i t u e n t e n in e i n e r P r o d u k t i o n m i t z u s ä t z l i c h e n
KAPITEL
110
9.
DEFINITE
CLAUSE
GRAMMARS
A r g u m e n t e n z u v e r s e h e n . E i n solches A r g u m e n t k ö n n e n w i r be-
9.2.
NUR
vp(vp(V,NP))
n u t z e n , u m bei j e d e m A b l e i t u n g s s c h r i t t d e n S y n t a x b a u m m i t auf-
111
—>
v(V),
zubauen.
np(NP).
D i e P r o d u k t i o n S - > N P V P sieht als D C G - P r o d u k t i o n folgen-
vp(vp(V))
—>
v(V).
dermaßen aus:
s(s(NP,VP))
—>
np(NP),
vp(VP).
Diese Regel besagt:
D e r S y n t a x b a u m für die K o n s t i t u e n t e S, die m i t d i e ser P r o d u k t i o n g e b i l d e t w e r d e n k a n n , h a t d i e
Form
s ( N P , V P ) , wobei NP d e r S y n t a x b a u m f ü r d i e K o n s t i t u e n t e N P u n d VP für V P ist.
D i e Ü b e r s e t z u n g d e r D C G - P r o d u k t i o n in e i n e K l a u s e l i s t :
s(s(NP,VP),A,B)
:-
np(NP,A,C),
D i e z u s ä t z l i c h e n A r g u m e n t e in einer D C G - P r o d u k t i o n w e r d e n also
i m m e r a m Anfang der Argumentlisten der
PROLOG-Prädikate
e i n g e t r a g e n . D a s h a t z . B . b e i m A b l a u f p r o t o k o l l d e n V o r t e i l , daß
d i e „ w i c h t i g e n " A r g u m e n t e v o r n e s t e h e n u n d d a h e r b e s s e r erkennb a r sind.
I
H i e r die g e s a m t e D C G f ü r die G r a m m a t i k a u s B e i s p i e l 8 . 1 mií
K o n s t r u k t i o n des S y n t a x b a u m e s :
s(s(NP,VP))
n(n(mary))
—>
[mary] .
n(n(john))
—>
[john] .
n(n(woman))
—>
[woman]
n(n(man))
—>
[man] .
n(n(apple))
—>
[apple]
det (det ( t h e ) )
—>
[the].
v(v(loves))
—>
[loves].
v(v(eats))
-->
[eats].
v(v(sings))
—>
[sings].
Eine A n f r a g e a l s B e i s p i e l :
vp(VP,C,B).
,
KONTEXTFREI?
?X =
s ( X , [ J o h n , e a t s , t h e , a p p l e ] , [] ) .
s(np(n(john)),vp(v(eats),np(det(the),n(apple))))
yes
9.2
Nur kontextfrei?
Eine w i c h t i g e B e m e r k u n g ist a n dieser S t e l l e fällig: D e r
DCG-
F o r m a l i s m u s ist z u r B e s c h r e i b u n g v o n S p r a c h e n g e e i g n e t , die n i c h t
-->
mehr d u r c h e i n e k o n t e x t f r e i e G r a m m a t i k b e s c h r i e b e n w e r d e n k ö n -
np(NP),
nen. D e r F o r m a l i s m u s ist wesentlich m ä c h t i g e r . D i e s liegt d a r a n ,
vp(VP).
daß die z u s ä t z l i c h e n A r g u m e n t e in D C G - P r o d u k t i o n e n n i c h t n u r
zur K o n s t r u k t i o n v o n S t r u k t u r e n v e r w e n d e t w e r d e n k ö n n e n , w i e
np(np(DET,NP))
—>
dies in u n s e r e m B e i s p i e l d e r F a l l w a r . Sie k ö n n e n a u c h z u r F o r m u -
det(DET),
lierung v o n B e d i n g u n g e n v e r w e n d e t w e r d e n , d i e K o n t e x t a b h ä n g i g -
np(NP).
keiten a u s d r ü c k e n .
np(np(N))
n(N).
-->
Beispiel 9 . 3
D a s Lieblingsbeispiel d e r I n f o r m a t i k e r f ü r e i n e ein-
fache S p r a c h e , die n i c h t m e h r d u r c h eine k o n t e x t f r e i e G r a m m a t i k
112
KAPITEL
9.
DEFINITE
CLAUSE
b e s c h r e i b b a r ist, ist die M e n g e L = {a b c \n
n
n
n
9.3.
GRAMMARS
> 1 } , d.h. die Sätze j
d e r S p r a c h e b e s t e h e n aus einer A n z a h l a , gefolgt v o n d e r g l e i c h e n '
ERWEITERUNGEN
??-
a a a b b b c c c , . . . , a b e r nicht: a a b c o d e r a a a b b c c c .
no
E i n e D C G f ü r diese S p r a c h e läßt sich leicht a n g e b e n :
s(Anzahl)
s([a,a,b,b,c,c],[]).
yes
A n z a h l b , gefolgt v o n d e r gleichen A n z a h l c ; a l s o : a b c , a a b b c c , ]
|
113
s([a,a,a,b,b,c,c,c] , []) .
J
9.3
—>
Erweiterungen
ap(Anzahl),
B i s h e r h a t t e n alle Teile d e r D C G - P r o d u k t i o n e n d i r e k t m i t
der
bp(Anzahl),
%
cp(Anzahl).
1
Verarbeitung der Eingabe zu tun. M a n c h m a l m ö c h t e m a n jedoch
I
die Möglichkeit h a b e n , z u s ä t z l i c h i r g e n d w e l c h e T e s t s o d e r A k t i o -
ap(l)
—>
a(l).
f
ap(Anzahl+l)
—>
nen a u s z u f ü h r e n , die nicht d i r e k t z u d e n P r o d u k t i o n e n d e r G r a m matik gehören. P R O L O G bietet die Möglichkeit, in geschweiften
K l a m m e r n { } beliebige P R O L O G - A u s d r ü c k e i n D C G - P r o d u k t i o -
a(l),
nen e i n z u f ü g e n . Diese w e r d e n v o m D C G - U b e r s e t z e r d a n n e i n f a c h
ap(Anzahl).
u n v e r ä n d e r t in die P R O L O G - K l a u s e l ü b e r n o m m e n .
E i n Beispiel für die A n w e n d u n g d i e s e r E r w e i t e r u n g b i e t e t die
bp(l)
D a r s t e l l u n g des L e x i k o n s in u n s e r e r B e i s p i e l g r a m m a t i k . E s ist s e h r
—>
aufwendig, wie b i s h e r f ü r j e d e n L e x i k o n e i n t r a g e i n e G r a m m a t i k r e -
b(l).
bp(Anzahl+l)
—->
als eine M e n g e n v o n P a a r e n ( L e x e m , K a t e g o r i e ) d a r s t e l l e n k ö n n e n :
b(l),
bp(Anzahl).
cp(l)
lex(mary,n).
lex(john,n).
-->
lex(woman,n).
c(l).
cp(Anzahl+l)
—>
c(l),
cp(Anzahl).
~ >
Ca].
b(l)
—>
[b].
c(l)
-->
[c].
a(l)
gel zu f o r m u l i e r e n . S t a t t d e s s e n m ö c h t e m a n d a s L e x i k o n e i n f a c h
D i e P r o d u k t i o n e n f ü r a p , bp u n d c p e r l a u b e n b e l i e b i g v i e l e a, b l
lex(man,n).
lex(apple,n).
lex(the.det).
lex(loves,v).
lex(eats.v).
lex(sings,v).
F ü r j e d e lexikalische K a t e g o r i e b e n ö t i g e n w i r d a n n n u r n o c h eine
DCG-Produktion:
bzw. c. D a s zusätzliche Argument wird dazu benutzt, eine S t n i k j j
t u r a u f z u b a u e n , die die A n z a h l r e p r ä s e n t i e r t . D i e k r i t i s c h e Proa
n(n(N))
d u k t i o n ist die f ü r s , w o ü b e r das z u s ä t z l i c h e A r g u m e n t g e f o r d e
[I],
w i r d , d a ß die A n z a h l d e r a , b u n d c ü b e r e i n s t i m m t .
{
-->
lex(N.n)
}.
114
KAPITEL
9.
DEFINITE
CLAUSE
9.4.
GRAMMA
115
ÜBUNGEN
J o h n sleeps.
D e r D C G - Ü b e r s e t z e r b a u t d a r a u s die K l a u s e l :
* J o h n sleeps t h e apple.
n(n(N),[H|A],A)
* Mary likes.
:-
Mary likes J o h n .
lex(N,n).
J o h n sings.
D i e s e K l a u s e l e n t s t e h t d a d u r c h , d a ß d e r D C G - Ü b e r s e t z e r den e r *
J o h n sings a song.
s t e n Teil d e r P r o d u k t i o n wie g e w o h n t u m f o r m t u n d d e n Teil in
g e s c h w e i f t e n K l a m m e m u n v e r ä n d e r t in d e n R u m p f d e r Klausel
übernimmt.
&
A u f diese W e i s e h a b e n wir eine s e h r e l e g a n t e u n d e i n f a c h e !
F o r m u l i e r u n g d e r G r a m m a t i k u n d a u ß e r d e m e i n e einheitliche
xikonzugriffsfunktion
Le\
durch l e x .
D i e s e r M e c h a n i s m u s ist b e s o n d e r s w e r t v o l l , d a m a n s o sehr
e i n f a c h die R e a l i s i e r u n g des L e x i k o n s v e r ä n d e r n k a n n , o h n e daß
G r a m m a t i k r e g e l n d a v o n b e t r o f f e n sind. M a n m u ß lediglich die.
S c h n i t t s t e l l e z u m L e x i k o n l e x a n p a s s e n . B e i s p i e l s w e i s e könnten^
w i r s o e i n e M o r p h o l o g i e k o m p o n e n t e e i n b a u e n , d i e n i c h t unmittelb a r in einem Lexikon nachschaut, s o n d e r n zuerst eine m o r p h o j
l o g i s c h e A n a l y s e des W o r t e s d u r c h f ü h r t u n d d a n n a n s t e l l e einesj
V o l l f o r m e n l e x i k o n s ein sehr viel k o m p a k t e r e s
Stammformenlexi-j
kon benutzt.
Ü b e r h a u p t ist es ein g u t e r P r o g r a m m i e r s t i l , m ö g l i c h s t wenige"
i m p l i z i t e A b h ä n g i g k e i t e n in d e n P r o g r a m m e n z u k o d i e r e n . S t a t t
d e s s e n s o l l t e n g e e i g n e t e S c h n i t t s t e l l e n d e f i n i e r t w e r d e n , die un
abhängig v o n den internen Strukturen der P r ä d i k a t e sind.
9.4
Übungen
Ü b u n g 9.1
E r w e i t e r n Sie die D C G a u s B e i s p i e l 9 . 1 d u r c h ein
z u s ä t z l i c h e s A r g u m e n t , m i t d e m die Ü b e r e i n s t i m m u n g v o n Pers o n u n d N u m e r u s a n den e n t s p r e c h e n d e n S t e l l e n g e s i c h e r t wird.
S ä t z e wie J o h n eats an apples o d e r J o h n e a t t h e apple sollen als
u n g r a m m a t i k a l i s c h erkannt werden.
Ü b u n g 9.2
F ü h r e n Sie V e r b e n m i t v e r s c h i e d e n e n
s i e r u n g e n ein. B e t r a c h t e n Sie d a z u f o l g e n d e S ä t z e :
Subkategori-
i
Übung 9.3
Die Sprache L =
{aca\a
€ { a , & } * } , d . h . die S ä t z e d e r
Sprache s i n d e i n e beliebige F o l g e v o n a u n d b , g e f o l g t v o n e i n e m
c, gefolgt v o n d e r i d e n t i s c h e n F o l g e v o n a u n d b , ist e b e n f a l l s n i c h t
durch e i n e k o n t e x t f r e i e G r a m m a t i k b e s c h r e i b b a r . G e b e n Sie eine
DCG a n , d i e g e n a u diese S p r a c h e e r z e u g t .
Kapitel 10
Deutsch statt P R O L O G
Immer m e h r I n f o r m a t i o n w i r d h e u t z u t a g e in C o m p u t e r n g e s p e i chert. U m a u f diese I n f o r m a t i o n schnell u n d z u v e r l ä s s i g w i e d e r
zugreifen z u k ö n n e n , w i r d sie in A u s d r ü c k e n f o r m a l e r
Sprachen
abgelegt u n d nicht in n a t ü r l i c h e r S p r a c h e . N a t ü r l i c h e
Sprachen
scheinen z u r k o m p a k t e n u n d leicht v e r f ü g b a r e n I n f o r m a t i o n s d a r stellung i m C o m p u t e r n i c h t g e e i g n e t , weil sie „ m a t h e m a t i s c h " u n erwünschte E i g e n s c h a f t e n wie z u m Beispiel M e h r d e u t i g k e i t b e s i t zen. D e r B e z u g z w i s c h e n A u s d r ü c k e n n a t ü r l i c h e r S p r a c h e u n d d e n
durch sie b e s c h r i e b e n e n O b j e k t e n ist n i c h t i m m e r e i n d e u t i g :
Emilie g a b J o h a n n a eine Schallplatte. Sie
In d i e s e m Beispiel ist z u m Z e i t p u n k t des S c h r e i b e n s o d e r S p r e chens des W o r t e s sie n i c h t k l a r , w o r a u f es sich b e z i e h t .
T r o t z d e r a r t i g e r P r o b l e m e w ä r e es p r a k t i s c h , w e n n m a n , z u mindest in e i n g e s c h r ä n k t e r A r t u n d W e i s e , i n n a t ü r l i c h e r S p r a c h e
mit d e m C o m p u t e r k o m m u n i z i e r e n k ö n n t e . D a z u m u ß n a t ü r l i c h e
Sprache ( z u m B e i s p i e l D e u t s c h ) in die g e w ä h l t e f o r m a l e
Spra-
che ü b e r s e t z t w e r d e n u n d z u r ü c k ü b e r s e t z t w e r d e n . D e r W e g v o n
118
KAPITEL
10.
DEUTSCH
STATT
PROLOG
n a t ü r l i c h s p r a c h l i c h e n A u s d r ü c k e n z u f o r m a l e n A u s d r ü c k e n heißt
Sprachanalyse.
10.1.
119
SPRACHANALYSE
10.1
Sprachanalyse
D i e S p r a c h a n a l y s e läßt sich w i e d e r u m in (mindeAnalyw
In den e i n e n A u f g a b e n b e r e i c h d e r S p r a c h a n a l y s e , die s y n t a k t i s c h e
Semdn-,
Analyse, h a b e n w i r a n h a n d d e r D e f i n i t e C l a u s e G r a m m a r s s c h o n
|j|
etwas E i n b l i c k b e k o m m e n . J e t z t soll d e r z w e i t e Teil h i n z u g e f ü g t
D e r B e g r i f f „ s e m a n t i s c h e R e p r ä s e n t a t i o n " s t a m m t d a h e r , daß
werden, d e r A u f b a u einer s e m a n t i s c h e n R e p r ä s e n t a t i o n , in u n s e -
s t e n s ) zwei A u f g a b e n t e i l e aufgliedern: die s y n t a k t i s c h e
und den Aufbau semantischer Repräsentationen,
tikkonstruktion
auch
genannt.
i n d e r g e w ä h l t e n f o r m a l e n S p r a c h e ( z . B . P R O L O G ) die „Bedeu-
rem Fall v o n P R O L O G - A u s d r ü c k e n .
t u n g e n " , d.h. die „ S e m a n t i k " der S ä t z e d a r g e s t e l l t w e r d e n sollen.
Ein erster A n s a t z wäre, den d e u t s c h e n S a t z W o r t für W o r t
D i e R ü c k ü b e r s e t z u n g f o r m a l s p r a c h l i c h e r A u s d r ü c k e in natürliche
nach P R O L O G zu ü b e r s e t z e n . Dies e r w e i s t s i c h d o c h s e h r s c h n e l l
S p r a c h e heißt Sprachgenerierung.
als u n g e s c h i c k t . W i r h a b e n b e r e i t s g e s e h e n , wie d i e
Beide Übersetzungsrichtungen
sind im G r u n d e g e n o m m e n Abbildungen zwischen
Ausdrücken
„syntakti-
sche S t r u k t u r " , d e r „ S y n t a x b a u m " , e i n e s S a t z e s a u f g e b a u t w e r d e n
der zu betrachtenden natürlichen Sprache und Ausdrücken
der
kann. D i e S t r u k t u r des S y n t a x b a u m s e n t s p r i c h t d e r V e r s c h a c h -
gewählten formalen
der
telung d e r A u f r u f e b e i m A n a l y s e v o r g a n g .
Sprache. Die Sprachanalyse
setzt
auf
Eine
Wort-für-Wort-
n a t ü r l i c h e n S p r a c h e als Q u e l l s p r a c h e a u f u n d e r z e u g t A u s d r ü d « *
Übersetzung w ü r d e a u f der I n f o r m a t i o n ü b e r d i e R e i h e n f o l g e d e r
d e r f o r m a l e n S p r a c h e als Z i e l s p r a c h e . D i e Q u e l l s p r a c h e für dii
Wörter im S a t z basieren. D a wir a b e r d u r c h die
S p r a c h g e n e r i e r u n g ist die b e t r e f f e n d e f o r m a l e S p r a c h e , ihre Zii
sozusagen k o s t e n l o s I n f o r m a t i o n ü b e r d i e s y n t a k t i s c h e
s p r ä c h e ist die e n t s p r e c h e n d e n a t ü r l i c h e S p r a c h e .
( K o n s t i t u e n t e n s t r u k t u r ) eines S a t z e s z u r V e r f ü g u n g
könnten w i r n u n v e r s u c h e n , u n s e r e
Syntaxanalyse
Struktur
bekommen,
Übersetzungsvorschrift
auf
dem S y n t a x b a u m b z w . k o r r e s p o n d i e r e n d z u d e n S y n t a x r e g e l n z u
Deutsche Ausdrücke
formulieren. D i e eigentliche S y n t a x a n a l y s e d i e n t d a n n n i c h t m e h r
Analyse
allein z u m T e s t e n d e r G r a m m a t i k a l i t ä t v o n S ä t z e n , s o n d e r n lie-
Generierung
fert gleichzeitig d a s G r u n d g e r ü s t , e n t l a n g d e m d i e
T
semantische
R e p r ä s e n t a t i o n des S a t z e s a u f g e b a u t w i r d .
PROLOG-Wissensbasis
W i r gehen dabei davon aus, daß i m L e x i k o n jedes
Wort m i t e i n e r partiellen
semantischen
Repräsentation
einzelne
versehen
Z u r D e m o n s t r a t i o n d e r V o r g e h e n s w e i s e bei A n a l y s e u n d G e n e n g a
ist. „ P a r t i e l l " d e s w e g e n , weil diese R e p r ä s e n t a t i o n e n a u f lexikali-
r u n g w ä h l e n w i r die drei folgenden B e i s p i e l s ä t z e :
scher E b e n e n o c h keine a k z e p t a b l e n F o r m e l n d e r f o r m a l e n Zielsprache sind, s o n d e r n n u r Teile s o l c h e r F o r m e l n o d e r m i t P l a t z -
1. Alle Menschen sind sterblich.
haltern v e r s e h e n e S c h e m a t a f ü r s o l c h e F o r m e l n d a r s t e l l e n .
2 . Sokrates ist ein Mensch.
Aufbauend auf den partiellen s e m a n t i s c h e n S t r u k t u r e n im Lexikon m ü s s e n w i r d a n n j e d e r S y n t a x r e g e l i n F o r m e i n e r
3 . S o k r a t e s ist sterblich.
'truktionsregel
D i e Ü b e r s e t z u n g e n d i e s e r A u s d r ü c k e n a c h P R O L O G sollen laute
:-
R e p r ä s e n t a t i o n e n d e r in d e r e n t s p r e c h e n d e n S y n t a x r e g e l e r w ä h n ten K o n s t i t u e n t e n
mensch(X).•
Kon-
die I n f o r m a t i o n m i t g e b e n , w i e a u s d e n p a r t i e l l e n
auf der rechten R e g e l s e i t e , die
semantische
1.
sterblich(X)
2.
mensch(sokrates).
s a m m e n g e b a u t w i r d . D a s heißt, die S y n t a x r e g e l n w e r d e n u m die
3.
sterblich(sokrates).
semantischen K o n s t r u k t i o n s r e g e l n augmentiert.
R e p r ä s e n t a t i o n f ü r die K o n s t i t u e n t e
M
der linken
Regelseite
zu-
D e n A u f b a u se-
120
KAPITEL
10.
DEUTSCH
STATT
PROLOG
mantischer Repräsentationen entlang der syntaktischen
n e n n t m a n kompositioneilen
Regeln
Auflau.
F ü r die W a h l d e r g e e i g n e t e n p a r t i e l l e n s e m a n t i s c h e n R e p r ä s e n t a t i o n e n f ü r b e s t i m m t e W ö r t e r u n d W o r t k l a s s e n u n d f ü r d i e Ref.
g e l n ü b e r d e n Z u s a m m e n b a u v o n F o r m e l t e i l e n g i b t es k e i n e v e r ?
bindlichen Richtlinien, jedoch Erfahrungswerte und Traditionen?
10.1.
121
SPRACHANALYSE
Beispiel 1 0 . 1
Eigennamen
Deutsch
PROLOG
Sokrates
sokrates
Nomina
D a s V o r g e h e n ist i m edlgemeinen in d e r A r t , d a ß m a n s i c h überlegt,
Ein N o m e n b e d e u t e t i m a l l g e m e i n e n e i n e K l a s s e v o n
w i e sinnvollerweise die R e p r ä s e n t a t i o n f ü r e i n e n k o m p l e t t e n Satz
und läßt sich d e s w e g e n als (einstelliges) P r ä d i k a t
a u s s e h e n soll u n d welche I n f o r m a t i o n e i n z e l n e K o n s t i t u e n t e n m a l
x i m a l „von sich a u s " mitbringen können. W e n n die S a t z r e p ä s e n t a J
Beispiel 1 0 . 2
Objekten
übersetzen.
Nomina
t i o n d a n n m e h r I n f o r m a t i o n e n zu e n t h a l t e n h ä t t e , als d u r c h eineff
Deutsch
PROLOG
k o m p o s i t i o n e i l e n Z u s a m m e n b a u d e r T e i l r e p r ä s e n t a t i o n e n möglicHf
Mensch
mensch(X)
ist, m u ß m a n sich e v e n t u e l l m i t einer s c h w ä c h e r e n D a r s t e l l u n g für^
d e n . G e s a m t s a t z zufrieden g e b e n , o d e r d o c h n o c h v e r s u c h e n , die
l e x i k a l i s c h e n T e i l r e p r ä s e n t a t i o n e n „ s c h l a u e r " z u m a c h e n o d e r die
K o n s t r u k t i o n s r e g e l n z u v e r b e s s e r n . D a b e i sollte i m m e r als Leifc
linie g e l t e n :
Die
Nominalphrasen
Die W ö r t e r alle, j e d e u n d g e n e r i s c h v e r w e n d e t e u n b e s t i m m t e A r t i kel w e r d e n in A l i q u a n t e r e n ü b e r s e t z t , d a i n D a t e n b a s i s - E i n t r ä g e n
alle V a r i a b l e n i m p l i z i t allquantifiziert s i n d , h e i ß t d a s e i n f a c h , d a ß
Konstruktionsregeln
sentation
sollten
und der lexikalischen
so allgemein
10.1.1
Allquantifizierte
für
bezüglich
die
der
semantische
Reprä-
syntaktischen
Regeln
Wortklassen
wie möglich
konzipiert
so systematisch
und
werden.
alle, jede e t c . in V a r i a b l e n ü b e r s e t z t w e r d e n .
Beispiel 1 0 . 3
Allquantifizierung
Deutsch
PROLOG
alle Menschen
mensch(X)
Allquantifizierende A u s d r ü c k e m a c h e n e i g e n t l i c h n u r S i n n , w e n n
Übersetzungskonventionen
noch ein w e i t e r e s P r ä d i k a t dabei s t e h t , w i e z u m B e i s p i e l in d e m
B e v o r wir z u r B e a r b e i t u n g o b e n g e n a n n t e r B e i s p i e l s ä t z e g e l a n g e
sollen als kleiner E x k u r s einige Hinweise f ü r d i e Z u o r d n u n g p a r t w
eller s e m a n t i s c h e r R e p r ä s e n t a t i o n e n zu W o r t k l a s s e n g e g e b e n wer-;
d e n ( s i e h e [ B o n e v a c 1 9 8 7 ] ) . M a n soll j e d o c h nicht ü b e r s e h e n , dafi^
Satz Alle Menschen sind sterblich. D i e U b e r s e t z u n g
dieses
Sat-
zes wird k l a r e r , w e n n m a n ihn u m f o r m u l i e r t i n W e n n j e m a n d ein
Mensch ist, dann ist er sterblich.
Beispiel 1 0 . 4
Allquantifizierung
mit
Modifikation
j e d e dieser E m p f e h l u n g e n bei d e r V e r w e n d u n g z u r B e s c h r e i b «
Deutsch
PROLOG
eines nichttrivialen Sprachfragments sofort P r o b l e m e verursach^
alle Menschen sind sterblich
sterblich(X)
:-mensch(X)
die Gegenstand der Semantikforschung sind.
Existentiell quantifizierte
Nominalphrasen
Existentiell q u a n t i f i z i e r t e N o m i n a l p h r a s e n i n A u s s a g e s ä t z e n w e r -
Eigennamen
den schlichtweg i n ein P r ä d i k a t m i t e i n e r K o n s t a n t e n a l s A r g u E i g e n n a m e n l a s s e n sich i n I n d i v i d u e n k o n s t a n t e n ,
P R O L O G - K o n s t a n t e n übersetzen.
d a s heißt J
ment ü b e r s e t z t . D a s heißt, die E x i s t e n z d e s b e t r e f f e n d e n O b j e k t e s
*ird postuliert.
122
KAPITEL
Beispiel 10.5
10.
DEUTSCH
STATT
PROLOG"
Existenzqv.antifizierv.ng
PROLOG
E s gibt einen Menschen.
mensch(789423789) .
:
123
HLLFSMITTEL
Präpositionalphrasen
\
Deutsch
10.2.
?
P r ä p o s i t i o n a l p h r a s e n b e s i t z e n die gleiche D a r s t e l l u n g w i e P r ä p o sitionen m i t d e m U n t e r s c h i e d , d a ß b e r e i t s e i n e s d e r b e i d e n d u r c h
die P r ä p o s i t i o n in B e z u g g e s e t z t e n O b j e k t e n ä h e r b e s c h r i e b e n ist:
E x i s t e n t i e l l q u a n t i f i z i e r t e N o m i n a l p h r a s e n i n F r a g e s ä t z e n werden
Beispiel 1 0 . 1 0
in V a r i a b l e n (in Z i e l k l a u s e l n ) ü b e r s e t z t .
Beispiel 10.6
Existenzquantifizierung
in
Deutsch
PROLOG
Gibt es einen M e n s c h e n ?
?-
Fmgen
mensch(X) .
Adjektive
,1
-f?
Beispiel 10.7
Deutsch
PROLOG
X auf der Straße
auf(X,Y) ,Strasse(Y)
Ein, v o n einer P r ä p o s i t i o n a l p h r a s e m o d i f i z i e r t e s N o m e n b e k o m m t
dann folgende D a r s t e l l u n g :
Beispiel 1 0 . 1 1
A d j e k t i v e k ö n n e n in vielen F ä l l e n als e i n s t e l l i g e P r ä d i k a t e übersetzt werden:
Präpitionalphrasen
3.
Nomen
mit
PP
Deutsch
PROLOG
Kind auf der S t r a ß e
auf (X,Y) ,kind(X)
,strasse(Y)
tj
Adjektive
Verben
Deutsch
PROLOG
W
sterblicher S o k r a t e s
sterblich(sokrates) .
T*
Verben w e r d e n in P r ä d i k a t e ü b e r s e t z t . D i e s y n t a k t i s c h e V a l e n z
ergibt i m a l l g e m e i n e n die Steifigkeit d e s P r ä d i k a t s .
Beispiel 1 0 . 1 2
D a s s e l b e gilt f ü r R e l a t i v s ä t z e , d u r c h d i e e b e n f a l l s E i g e n s c h a f t e n ^
b e s t i m m t e r O b j e k t e u n d I n d i v i d u e n n ä h e r spezifiert w e r d e n :
Beispiel 1 0 . 8
Jlt
Deutsch
PROLOG
Johann schläft.
schlafen(Johann)
Peter ißt Apfelmus,
essen(peter.apfelmus)
äf
Relativsätze
Deutsch
PROLOG
Sokrates, der sterblich ist
sterblich (sokrates)
&
Ver&en
10.2
Hilfsmittel
^ach d i e s e m E x k u r s wollen w i r w i e d e r z u d e n d r e i B e i s p i e l s ä t z e n
Präpositionen
j|
P r ä p o s i t i o n e n stellen i m a l l g e m e i n e n zweistellige P r ä d i k a t e da
also R e l a t i o n e n , d.h. B e z i e h u n g e n z w i s c h e n zwei O b j e k t e n : -."¡1
zurückkehren u n d z u e r s t e i n m a l f e s t h a l t e n , d u r c h w e l c h e A r t e n
v
o n A u s d r ü c k e n sie r e p r ä s e n t i e r t w e r d e n s o l l e n . D i e
a e
.
ig
und
sterblich(sokrates)
sind
Ausdrücke
einstellige
Terme, s t e r b l i c h ( X ) : - m e n s c h ( X ) ist e i n e K l a u s e l , d e r e n R u m p f
Q
B e i s p i e l 1 0 . 9 Präpositionen
nsch(sokrates)
ur ein P r ä d i k a t e n t h ä l t .
Das e r s t e P r o b l e m b e i m A u f b a u v o n
PROLOG-Ausdrücken
Deutsch
PROLOG
|
mittels P R O L O G ist, d a ß die F u n k t o r e n v o n T e r m e n u n d P r ä d i -
XaufY
auf(X.Y)
J
katsnamen i m m e r i n s t a n t i i e r t sein m ü s s e n , v a r i a b l e
Funktoren
KAPITEL
124
10.
DEUTSCH
STATT
PROLOGA
10.2.
HILFSMITTEL
u n d P r ä d i k a t s n a m e n sind ausgeschlossen. W ä h r e n d des A u f b a u s t
'/,
e i n e s A u s d r u c k s k a n n es j e d o c h s e h r w o h l v o r k o m m e n , d a ß z w a r ,
artikell
—>
[alle] .
artikel2
—>
[ein].
b e k a n n t ist, d a ß a n e i n e r b e s t i m m t e n S t e l l e e i n F u n k t o r
stehen!
m u ß , a b e r dessen Instantiierung noch nicht bekannt ist. F u n k t c ^ J
r e n m ü s s e n also, zumindest vorübergehend auf
ArgumentsteUeat
v o n T e r m e n s t e h e n , d e n n d o r t sind V a r i a b l e n e r l a u b t . W i r w ä h l e n ;
f ü r e i n s t e l l i g e T e r m e b z w . f ü r einstellige P r ä d i k a t e die N o t a t i o n
term(Funktor.Argument).
Die
zweite
Schwierigkeit
ist,
daß Ubersetzungen
für ganze ^
Sätze unterschiedlichen S c h e m a t a anzugehören scheinen.
Einmal;
125
Lexikon
eigenname
—>
[sokrates].
nomen — >
[menschen].
nomen — >
[mensch] . -
kopula
—>
[ist] .
kopula
—>
[sind] .
adjektiv
—>
[sterblich] .
10.2.2
Augmentierung des Lexikons
w i r d ein S a t z a l s e i n e K l a u s e l ü b e r s e t z t : a ( X ) : - b ( X ) , e i n m a l a l s |
Fakt
c ( Y ) . Homogenität würde jedoch den
Ubersetzungsprozeß!
e r l e i c h t e r n . D i e s e s D i l e m m a löst sich v o n s e l b s t , w e n n m a n d i e inS
t e r n e S t r u k t u r von Fakten ansieht: Fakten sind degenerierte K l a u |
sein der F o r m : c ( Y ) : - t r u e . D a m i t l a u t e n d a n n die Beispiele inj
u n s e r e r Schreibweise von P R O L O G - A u s d r ü c k e n so:
1. t e r m ( s t e r b l i c h , X )
:-
term(mensch(X))
2.
term(mensch,sokrates):-true
3.
term(sterblich,sokrates):-true
10.2.1
Die DCG für die Syntaxanalyse
D i e S e m a n t i k k o n s t r u k t i o n b r a u c h t die S y n t a x a n a l y s e a l s R a h m e n ^
D i e s e r soll a u s f o l g e n d e r D C G b e s t e h e n , d i e w i r d a n n sukzessive^
u m die Semantikkonstruktion
'/,
s
np,
mantikkonstruktion ermöglichen. J e d e m L e x i k o n e i n t r a g wird eine
partielle s e m a n t i s c h e R e p r ä s e n t a t i o n z u g e o r d n e t . D i e P a r t i a l i t ä t
wird d a d u r c h a u s g e d r ü c k t , d a ß die A u s d r ü c k e a n b e s t i m m t e n S t e l len V a r i a b l e n als P l a t z h a l t e r f ü r s p ä t e r n o c h z u z u f ü g e n d e I n f o r mation e n t h a l t e n .
• F ü r folgende W ö r t e r ist d i e z u g e o r d n e t e S t r u k t u r l e e r : ein,
ist, sind.
• Mensch u n d sterblich w e r d e n m i t e i n s t e l l i g e n T e r m e n v e r s e hen.
erweitern.
• Die U b e r s e t z u n g
Syntaxregeln
—>
W i r b e g i n n e n b e i m L e x i k o n m i t d e n E r w e i t e r u n g e n , die die S e -
des W ö r t c h e n s
alle b e s a g t ,
d a ß die
gumente von K o p f und R u m p f der zu erstellenden
vp.
Ar-
Klausel
gleich sein sollen, w a s ü b e r d i e s e A r g u m e n t e p r ä d i z i e r t w i r d ,
bleibt n o c h offen.
np — >
eigenname.
np — >
artikell,
nomen.
np — >
artikel2,
nomen.
vp — >
kopula,
praedikatsnomen.
praedikatsnomen
—>
adjektiv.
praedikatsnomen
—>
np.
• Der E i g e n n a m e n Sokrates b e k o m m t i m P r i n z i p die gleiche
U b e r s e t z u n g w i e alle, n u r m i t d e m
Unterschied,
daß
der
R u m p f der K l a u s e l sofort m i t d e r t r i v i a l e n K l a u s e l t r u e instantiiert wird.
* e n wir dies n o c h e i n m a l in e i n e r T a b e l l e z u s a m m e n :
126
KAPITEL
10.
DEUTSCH
STATT
Wort
PROLOG-Darstellung
alle
term(_,X)
sokrates
term(_,sokrates)
mensch
tenn(mensch,_)
menschen
term(mensch,_)
sterblich
term(sterblich,_)
PROLOG}
10.2.
'/,
:-term(_,X)
Konstruktionsregeln
konstruiere_s(NPStruktur,VPStruktur,SStruktur) : -
:-true
NPStruktur =
SStruktur
=
(VPStruktur:-_),
NPStruktur.
konstruiere_np(Artstruktur,NStruktur,NPStruktur) : Artstruktur
=
NPStruktur =
10.2.3
127
HILFSMITTEL
Konstruktionsregeln
«.
10.2.4
(_:-NStruktur),
Artstruktur.
Die augmentierte Grammatik
S o wie die L e x i k o n e i n t r ä g e u m p a r t i e l l e s e m a n t i s c h e S t r u k t u r e n !
Zusammen mit den eben erwähnten K o n s t r u k t i o n s r e g e l n erhal-
a u g m e n t i e r t w o r d e n sind, m ü s s e n z u d e n S y n t a x r e g e l n d i e V o r ?
ten wir n u n eine f u n k t i o n s f ä h i g e G r a m m a t i k , d i e b e i m
S c h r i f t e n über das Zusammenbauen von
PROLOG-Ausdrücken!
h i n z u g e f ü g t w e r d e n . Als e r s t e s w i r d j e d e s N i c h t t e r m i n a l d e r DCG^s
d e m eine n i c h t t r i v i a l e Ü b e r s e t z u n g z u g e o r d n e t w e r d e n soll, m i t j
e i n e r V a r i a b l e n als P l a t z h a l t e r für die z u e r s t e l l e n d e S t r u k t u r ver-|
'/,
Syntaxregeln
s (SStruktur)
-->
s e h e n . U n t e r d e n eigentlichen K o n s t r u k t i o n s r e g e l n g i b t es in m v |
np(NPStruktur),
s e r e m einfachen Beispiel zwei T y p e n :
vp(VPStruktur),
m
Parsing
P R O L O G - A u s d r ü c k e in u n s e r e r e i g e n e n N o t a t i o n a u f b a u t .
{konstruiere_s(NPStrukur,VPStruktur,SStruktur) } .
1 . Die S t r u k t u r w i r d u n v e r ä n d e r t v o n e i n e r K o n s t i t u e n t e n d e r ,
r e c h t e n S e i t e einer S y n t a x r e g e l a n d i e K o n s t i t u e n t e a u f der?
linken R e g e l s e i t e „ w e i t e r g e r e i c h t " .
J
2 . Zwei Ü b e r s e t z u n g e n v o n K o n s t i t u e n t e n d e r r e c h t e n R e g e l ^
seite w e r d e n m i t e i n a n d e r z u r Ü b e r s e t z u n g d e r linken Regel-J
seite v e r k n ü p f t .
||
np ( S t r u k t u r )
—>
np ( N P S t r u k t u r )
eigenname(Struktur).
-->
artikell(ArtStruktur),
nomen(NStruktur),
{konstruiere_np (Artstruktur, NStruktur .NPStruktur) } .
np ( S t r u k t u r )
—>
artikel2,
nomen(Struktur).
D a s simple W e i t e r r e i c h e n v o n S t r u k t u r e n w i r d e r r e i c h t durch
d i e V e r w e n d u n g desselben V a r i a b l e n n a m e n s links u n d r e c h t s des
Regelpfeils. F ü r die V e r k n ü p f u n g z w e i e r S t r u k t u r e n g i b t es wie^i
d e r u m zwei F ä l l e . Die Ü b e r s e t z u n g a l l q u a n t i f i z i e r t e r
Nominal-g
p h r a s e n w i r d e r z e u g t d u r c h Unifikation d e r Ü b e r s e t z u n g des N d ^
m e n s m i t d e m R u m p f d e r Ü b e r s e t z u n g d e s A r t i k e l s alle. D i e , e i j E
n e m ganzen Satz entsprechende Klausel entsteht, wenn m a n den|
K o p f der Übersetzung der Nominalphrase m i t der
Übersetzung!
d e r V e r b a l p h r a s e unifiziert. E s w e r d e n a l s o d i e b e i d e n f o l g e n d e n
P r ä d i k a t e b e n ö t i g t , m i t jeweils drei A r g u m e n t e n :
vp ( S t r u k t u r )
—>
kopula,
praedikatsnomen(Struktur).
praedikatsnomen(Struktur)
—>
adjektiv(Struktur).
Praedikatsnomen(Struktur)
np(Struktur).
—>
KAPITEL
128
'/,
10.
DEUTSCH
STATT
PROLOG
Lexikon
artikell((term(_,X):-term(_,X)))
axtikel2
—>
-->
[alle].
—>
nomen(tenn(mensch,_))
—>
[menschen].
nomen(term(mensch,_))
—>
[mensch].
—>
[ist].
—>
[sind].
10.3
Generierung
[sokrates] .
a r b e i t e t e D C G läßt s.ich prinzipiell a u c h als G e n e r a t o r
—>
läßt u n d s t a t t d e s s e n die V a r i a b l e f ü r die d e m S a t z e n t s p r e c h e n d e
Struktur instantiiert:
s(Satz,[],(term(sterblich.X):-term(mensch(X))))
Satz
[sterblich].
=
Satz =
Satz
Beispiellauf der Grammatik
=
Satz =
S t a t t d e s r e l a t i v u n ü b e r s i c h t l i c h e n A b l a u f p r o t o k o l l s ( t r a c e ) wird
h i e r d e r , e i g e n t l i c h n u r implizit v o r h a n d e n e S y n t a x b a u m
darge-
s t e l l t . J e d e r K n o t e n ist m i t d e m , „bis d o r t h i n " a u f g e b a u t e n A u s druck annotiert. Aus Platzgründen wird hier das P r ä d i k a t
mit t
term
abgekürzt.
[alle,menschen,sind,sterblich];
[alle,mensch,ist,sterblich];
[alle,mensch,sind,sterblich];
no
Dieser B e i s p i e l a u f r u f zeigt sofort eines d e r P r o b l e m e d e r G e n e r i e rung auf: Die s e m a n t i s c h e S t r u k t u r e n t h ä l t k e i n e A n g a b e n
über
morphologische Restriktionen. Die zweite Schwachstelle w i r d ersichtlich, w e n n m a n s i c h d a s A b l a u f p r o t o k o l l dieses B e w e i s e s a n -
/
E i n e r s t e r u n d e i n w e n i g effizienterer A n s a t z z u r G e n e r i e r u n g ,
\
np
der hier a b e r a u s P l a t z g r ü n d e n a u c h d e r e i n z i g e b l e i b e n soll, m u ß
vp
t(_,X):-t(mensch(X))
t(sterblich,_)
\
artikel
nomen
t(_,X):-t(_,X)
t(mensch,_)
folgendes b e r ü c k s i c h t i g e n :
1. Die U b e r s e t z u n g e n v o n T e i l e n d e r s e m a n t i s c h e n
kopula
mühselig
durch s e h r vieles B a c k t r a c k i n g „ e r r a t e n " .
t(sterblich,X):-t(menschXX))
/
.
[alle,menschen,ist,sterblich];
schaut. Die v e r s c h i e d e n e n U b e r s e t z u n g e n w e r d e n n u r
"
verwen-
den, i n d e m m a n d i e s m a l die A r g u m e n t s t e l l e f ü r d e n S a t z v a r i a b e l
?-
adjektiv(term(sterblich,_))
10.2.5
129
tur k o m m t . D e r u m g e k e h r t e W e g ist a u c h m ö g l i c h . D i e e b e n e r -
eigenname((term(_,sokrates):-true))
kopula
GENERIERUNG
W i r h a b e n g e s e h e n , wie m a n v o m S a t z z u e i n e r P R O L O G - S t r u k -
[ein].
kopula
10.3.
Struktur
praedikatsnomen
müssen aufgrund morphologischer und anderer Restriktio-
t(sterblich,_)
n e n ( z . B . E i n b e t t u n g in eine R e d e s i t u a t i o n , in e i n e n T e x t )
gefiltert w e r d e n .
alle
menschen
sind
sterblich
2. Die G e n e r i e r u n g d e r K o n s t i t u e n t e n eines S a t z e s s o l l t e r e k u r siv ü b e r d e r s e m a n t i s c h e n S t r u k t u r a b l a u f e n s t a t t ü b e r d e m
noch zu e r r a t e n d e n Satz.
Zumindest die F o r d e r u n g n a c h B e r ü c k s i c h t i g u n g m o r p h o l o g i s c h e r
R e s t r i k t i o n e n l ä ß t sich leicht erfüllen, i n d e m m a n die n i c h t t e r m i nalen S y m b o l e u m jeweils m i t e i n e r w e i t e r e n V a r i a b l e n v e r s i e h t ,
KAPITEL
130
10.
DEUTSCH
STATT
PROLOG
10.4.
die z . B . den Numerus-Abgleich zwischen Artikel u n d N o m e n und
Konsequenz
der
zweiten
Forderung
artikel2(_,Numerus,Artikel),
ist,
daß
Definite
nomen(Struktur,Numerus,Nomen).
C l a u s e G r a m m a r s z u m E i n s a t z für die G e n e r i e r u n g d e n k b a r u n g e -
vp(Struktur,Numerus,[KopulaIPraedNomen])
e i g n e t s i n d , weil sie e n t l a n g des S a t z e s a r b e i t e n u n d n i c h t e n t l a n g
:-
kopula(_,Numerus.Kopula),
der semantischen Struktur.
praedikat snomen(Struktur,_,PraedNomen) .
V o r w e g läßt s i c h s a g e n , d a ß wir f ü r die G e n e r i e r u n g e i n e spe-
praedikatsnomen(Struktur,_,[Adjektiv])
zieile N o t a t i o n f ü r P R O L O G - A u s d r ü c k e u n n ö t i g w i r d , d a d i e se-
:-
adjektiv(Struktur,_,Adjektiv).
m a n t i s c h e n S t r u k t u r e n j a i m m e r voll i n s t a n t i i e r t s i n d . D a m i t läßt
praedikatsnomen(Struktur,_,NPString):-
s i c h die R e k u r s i o n ü b e r die s e m a n t i s c h e n S t r u k t u r e n in u n s e r e m
np(Struktur,_,NPString).
Beispiel folgendermaßen beschreiben:
D e r in d e n A u s d r ü c k e n a u f o b e r s t e E b e n e a u f t r e t e n d e
„Funktor"
131
np(Struktur,_, [Artikel,Nomen]):-
zwischen Subjekt und Verb gestattet.
Eine
ZUSAMMENFASSUNG
'/.
: - s t a m m t entweder aus der Ü b e r s e t z u n g
Festlegungen
auf
lexikalischer
Ebene
artikell(_,plural,alle).
eines E i g e n n a m e n o d e r eines a l l q u a n t i f i z i e r e n d e n A r tikels.
artikel2(_,Singular,ein).
1. D e r K o p f e i n e r K l a u s e l ist i m m e r d i e
eigenname(_,Singular,sokrates).
Überset-
zung einer Verbalphrase. Verbalphrasen beziehen
nomen(mensch(_),singular,mensch).
in u n s e r e m Beispiel ihre S e m a n t i k e n t w e d e r v o n
nomen(mensch(_),plural,menschen).
( a ) einem prädikativ verwendeten Adjektiv
kopula(_,singular,ist).
( b ) oder einer Nominalphrase.
kopula(_,plural,sind).
2. D e r R u m p f einer K l a u s e l ist bei E i g e n n a m e n t r i vial, bei allquantifizierten N o m i n a l p h r a s e n ist e r
adjektiv(sterblich(_),_,sterblich) .
1
A u f g e r u f e n w i r d dieses P r o g r a m m z u m B e i s p i e l in f o l g e n d e r
m i t d e r Ü b e r s e t z u n g des N o m e n s g e f ü l l t .
Weise, h i e r gleich m i t d e r A n t w o r t , d e m g e n e r i e r t e n S a t z , v e r s e hen:
I n s g e s a m t b e s c h r e i b e n alle P r ä d i k a t e d r e i s t e l l i g e R e l a t i o n e n zwischen semantischen Ausdrücken, morphologischen
Restriktionen
Beispiel 1 0 . 1 3
und Wortfolgen.
'/.
Syntax fuer
die
?-
Generierung
eigenname(_,_,Name),
f
vp(VPStruktur,singular,VPString).
P
s((VPStruktur:-NStruktur),_,[Artikel,NomenIVPString]
des
Generators
s((sterblich(X):-mensch(X)),_,Satz).
Satz =
s((VPStruktur:-true),_,[Name|VPString]):-
Beispiellauf
10.4
[alle,menschen,sind,sterblich]
Zusammenfassung
artikell(_,Numerus,Artikel),
hl d i e s e m K a p i t e l h a b e n w i r gesehen,, w i e z u s a m m e n m i t d e r S y n -
nomen(NStruktur,Numerus,Nomen),
taxanalyse semantische Strukturen aufgebaut werden können und
vp(VPStruktur,Numerus,VPString).
w
i e aus semantischen Strukturen w i e d e r u m S ä t z e erzeugt werden.
132
KAPITEL
10.
DEUTSCH
STATT
PROLOG
|
P r i n z i p i e l l ist für b e i d e „ U b e r s e t z u n g s r i c h t u n g e n " d e r g l e i c h e M e c h a n i s m u s v e r w e n d b a r . L e g t m a n j e d o c h W e r t a u f Effizienz, sol l t e
die S y n t a x a n a l y s e sich a m S a t z u n d s e i n e r s y n t a k t i s c h e n S t r u k t u r o r i e n t i e r e n . Die G e n e r i e r u n g sollte s t a t t d e s s e n r e k u r s i v ü b e r
ihrer E i n g a b e s t r u k t u r , nämlich der semantischen R e p r ä s e n t a t i o n ,
verlaufen.
10.5
Kapitel 11
Übungen
Ü b u n g 10.1
Spielen Sie m i t d e r o b e n e i n g e f ü h r t e n D C G u n d ;
Eingebaute Prädikate
v e r f o l g e n Sie e i n e r s e i t s den A u f b a u v o n P R O L O G - A u s d r ü c k e n |
b e i m P a r s e n als a u c h d e n A u f b a u eines S a t z e s bei d e r G e n e r i e - 1
r u n g . V e r g l e i c h e n Sie d a m i t i m G e g e n z u g die e t w a s effizientere }
J
Version des Generators.
Ü b u n g 1 0 . 2 E r w e i t e r n Sie die S y n t a x r e g e l n d e r a r t , d a ß a u c h die j|
j|
W o r t s t e l l u n g in f o l g e n d e n F r a g e s ä t z e b e s c h r i e b e n w i r d :
1 . W e r ist s t e r b l i c h ?
2 . Ist S o k r a t e s ein M e n s c h ?
3 . Ist S o k r a t e s s t e r b l i c h ?
D i e Z i e l r e p r ä s e n t a t i o n e n sollten jeweils l a u t e n :
1.
term(sterblich,_):-true
2.
term(mensch,sokrates):-true
3.
term(sterblich,sokrates):-true
W i r h a b e n in u n s e r e n b i s h e r i g e n P r o g r a m m e n i n d e r R e g e l n u r
„reines" P R O L O G ,
sogenanntes
„pure
PROLOG",
verwendet.
Das b e d e u t e t , d a ß w i r i m m e r n u r l o g i s c h e F o r m e l n z u r B e s c h r e i Ü b u n g 1 0 . 3 E r w e i t e r n Sie die G r a m m a t i k ,
so daß
Adjektiven
a u c h p r ä n o m i n a l ( u n d nicht n u r p r ä d i k a t i v ) v e r w e n d e t
werdenj
können:
D a z u wird eine Erweiterung unserer selbstgebastelten
von P R O L O G die L ö s u n g s s u c h e z u r B e a n t w o r t u n g v o n A n f r a gen ü b e r l a s s e n h a b e n . D i e I n s t a n t i i e r u n g v o n V a r i a b l e n in d e r
Anfrage s t e l l t e die g e s u c h t e L ö s u n g d a r . L e d i g l i c h b e i m S c h r e i -
alle schlauen menschen
v o n P R O L O G - A u s d r ü c k e n n ö t i g sein! .
bung eines P r o b l e m s entwickelt h a b e n u n d d e r I n f e r e n z m a s c h i n e
Notationj
ben von r e k u r s i v e n P r ä d i k a t e n m u ß t e n w i r g e l e g e n t l i c h die A b a r beitungsreihenfolge d e r K l a u s e l n d u r c h d e n P R O L O G - I n t e r p r e t e r
berüchsichtigen, u m E n d l o s s c h l e i f e n z u v e r m e i d e n . D i e s s c h r ä n k t e
uns bei d e r Spezifikation d e r W i s s e n s b a s i s e t w a s ein; w i r k o n n t e n
nicht die volle M ä c h t i g k e i t d e r H o r n k l a u s e l - L o g i k a u s n ü t z e n .
134
KAPITEL
11.
EINGEBAUTE
PRÄDIKATE
I n d i e s e m K a p i t e l wollen w i r n u n sehen, w e l c h e M ö g l i c h k e i t e n
11.1.
EIN-
UND
135
AUSGABE
von P R O L O G aufzugeben. G a n z im Gegenteil. I m n ä c h s t e n K a p i -
bs g i b t , E i n f l u ß a u f d e n B e w e i s , d e n P R O L O G d u r c h f ü h r t , zu n e h -
tel wollen w i r a n e i n e m g r o ß e n Beispiel z e i g e n , w i e s i c h p r o z e d u -
men u n d w i e w i r dies zu u n s e r e m V o r t e i l a u s n ü t z e n k ö n n e n . D i e
rale u n d deklarative P r o g r a m m t e i l e s a u b e r u n d elegant z u e i n e m
Vorgestellten M e c h a n i s m e n m a c h e n P R O L O G e r s t zu e i n e r voll-
großen G a n z e n v e r b i n d e n lassen.
wertigen P r o g r a m m i e r s p r a c h e - m i t allen V o r - u n d N a c h t e i l e n . E i l e r s e i t s w i r d es n ä m l i c h m ö g l i c h , P r o b l e m e zu lösen, d i e n i c h t m i t
ler eingeschränkten Hornklausel-Logik beschreibbar sind. Ander s e i t s können solche P r o g r a m m e nicht mehr als deklarative
Spe-
11.1
Ein- und Ausgabe
iifikation eines P r o b l e m s aufgefaßt w e r d e n , wobei d i e L ö s u n g s s u -
Soll e i n P r o g r a m m e i n e n D i a l o g m i t d e m B e n u t z e r f ü h r e n , so m u ß
ihe allein S a c h e d e r I n f e r e n z m a s c h i n e i s t . S t a t t d e s s e n n i m m t d e r
es in d e r L a g e sein, E i n g a b e n v o m B e n u t z e r
Programmierer die L ö s u n g s s u c h e i n die eigene H a n d u n d s t e u e r t
lie I n f e r e n z m a s c h i n e i n d i e v o n i h m g e w o l l t e R i c h t u n g . D a s bel e u t e t a b e r , d a ß diese P r o g r a m m e n u r n o c h prozedural,
also durch
lie A n a l y s e d e r z e i t l i c h e n A b f o l g e v o n B e a r b e i t u n g s s c h r i t t e n , v e r tanden werden können.
Die
Integration
entgegenzunehmen
und Ergebnisse als A u s g a b e n a u c h wieder anzuzeigen. B i s h e r h a t ten wir E i n g a b e n a n P R O L O G i m m e r d u r c h die entsprechende
I n s t a n t i i e r u n g v o n V a r i a b l e n in d e r A n f r a g e g e m a c h t ,
Ausgaben
waren die W e r t e v o n V a r i a b l e n n a c h abgeschlossenem Beweis. F ü r
u n s a l s P r o g r a m m e n t w i c k l e r ist dies d u r c h a u s a n g e m e s s e n , d a w i r
der Erweiterungen
in P R O L O G
geschieht
j a auch die interne S t r u k t u r d e r P r ä d i k a t e , ihre A r g u m e n t e e t c .
kirch P r ä d i k a t e , d i e v o m S y s t e m z u r V e r f ü g u n g g e s t e l l t w e r d e n .
k e n n e n . W o l l e n w i r j e d o c h ein P r o g r a m m s c h r e i b e n , d a s v o n a n -
) i e s e P r ä d i k a t e sind f e s t e r B e s t a n d t e i l d e s S y s t e m s ; d a h e r nennen
deren ohne Kenntnis über den P r o g r a m m a u f b a u benutzt wird, so
rir sie a u c h eingebaute
Prädikate
o d e r built-in
Prädikate.
In d e r R e g e l m ü s s e n w i r zwei A s p e k t e eines s o l c h e n P r ä d i k a t s
fetrachten:
ist dies n i c h t a n g e b r a c h t .
Z u r E i n - u n d A u s g a b e s i n d in P R O L O G - S y s t e m e n
verschie-
dene eingebaute Prädikate enthalten.
W e n n die Inferenzmaschine w ä h r e n d des Beweises a u f ein E i n -
1 . d i e lokale logische B e d e u t u n g
gabeprädikat stößt, so w i r d d e r Beweis u n t e r b r o c h e n u n d a u f eine
2 . d e n g l o b a l e n Seiteneffekt
E i n g a b e des B e n u t z e r s g e w a r t e t . Ist diese erfolgt, so wird eine
tisher h a b e n w i r u n s i m m e r n u r f ü r die logische B e d e u t u n g eines
Variable mit der E i n g a b e als W e r t instantiiert u n d d e r Beweis d a -
' r ä d i k a t s i n t e r e s s i e r t . D i e s e ist bei e i n g e b a u t e n P r ä d i k a t e n a b e r
mit fortgesetzt. A u s d e r Sicht d e r Logik b e t r a c h t e t , b e d e u t e t eine
E i n g a b e , d a ß d e r B e n u t z e r n a c h d e m E r g e b n i s eines Beweiszieles
leist v o n u n t e r g e o r d n e t e r W i c h t i g k e i t .
D e r w i c h t i g s t e A s p e k t ist oft d e r Seiteneffekt
eines P r ä d i k a t s ,
l i t Seiteneffekt ist g e m e i n t , d a ß d e r A u f r u f d e s P r ä d i k a t s d u r c h
gefragt wird.
Stößt
die Inferenzmaschine
a u f eine A u s g a b e a n w e i s u n g ,
so
ie I n f e r e n z m a s c h i n e i r g e n d e i n e A k t i o n b e w i r k t , d i e n i c h t a u s -
wird einfach d a s A r g u m e n t des P r ä d i k a t s a u f d e m Bildschirm aus-
diließlich v o n lokaler B e d e u t u n g f ü r dieses P r ä d i k a t i s t , s o n d e r n
g e g e b e n u n d d e r B e w e i s f o r t g e s e t z t . A u f d e n B e w e i s selbst h a t e i n e
lobal e i n e V e r ä n d e r u n g d e s S y s t e m z u s t a n d e s b e w i r k t .
A u s g a b e keinen E i n f l u ß . W i c h t i g ist lediglich d e r Seiteneffekt, d a s
S o l a n g e w i r n u r „ r e i n e s " P R O L O G v e r w e n d e n , g i b t es k e i n e
eiteneffekte.
O h n e die in diesem Kapitel vorgestellten Erweiterungen kann
ian i n d e r P r a x i s m i t P R O L O G n i c h t a u s k o m m e n . D a s bedeu:t a b e r n i c h t , d a ß w i r gewillt sind, alle b i s h e r g e z e i g t e n V o r t e i l e
A n z e i g e n d e r g e w ü n s c h t e n I n f o r m a t i o n . B e i d e r A u s g a b e ist dieser Seiteneffekt a u s S i c h t d e r L o g i k h a r m l o s , d a d a s E r g e b n i s d e s
B e w e i s e s nicht beeinflußt w i r d .
D i e E i n - u n d A u s g a b e k a n n in P R O L O G a u f zwei v e r s c h i e d e nen E b e n e n erfolgen:
136
KAPITEL
11.
EINGEBAUTE
21.1.
PRÄDIKAT
137
AUSGABE
bietet P R O L O G d i e z w e i t e G r u p p e v o n P r ä d i k a t e n z u r z e i c h e n -
2. einzelne Zeichen: g e t O , p u t
weisen E i n - u n d A u s g a b e a n . E s bleibt d a n n v o l l s t ä n d i g d e m P r o g r a m m i e r e r ü b e r l a s s e n , die B e n u t z e r e i n g a b e z u a n a l y s i e r e n u n d
Ein- und Ausgabe von Termen
für die w e i t e r e V e r a r b e i t u n g geeignet a u f z u b e r e i t e n .
W e n d e n w i r u n s z u n ä c h s t der e r s t e n M ö g l i c h k e i t z u . V o m B e n u t z e r w i r d bei r e a d e r w a r t e t , d a ß die E i n g a b e g e n a u d e r S y n t a x
v o n P R O L O G - T e r m e n e n t s p r i c h t . I m P r i n z i p k a n n a l s o alles eing e g e b e n w e r d e n , was s o a u c h i m P r o g r a m m t e x t
UND
wird. Dies w i r d m a n a b e r i . a . nicht v o r a u s s e t z e n k ö n n e n . D e s h a l b
1. P R O L O G - T e r m e : r e a d , w r i t e
11.1.1
EIN-
s t e h e n könnte.
11.1.2
Ein- und Ausgabe von Einzelzeichen
Durch d a s P r ä d i k a t g e t O ( X ) w i r d ein e i n z e l n e s Z e i c h e n v o n d e r
A u ß e r d e m m u ß j e d e E i n g a b e m i t e i n e m P u n k t u n d e i n e m Zeilen-
T a s t a t u r e i n g e l e s e n u n d die V a r i a b l e X d a m i t i n s t a n t i i e r t . D u r c h
v o r s c h u b b e e n d e t w e r d e n . Die A u s g a b e d u r c h w r i t e e r f o l g t in ei-
put w i r d ein Z e i c h e n a u f d e m B i l d s c h i r m a u s g e g e b e n .
n e r F o r m , die v o n P R O L O G a u c h w i e d e r a l s E i n g a b e v e r s t a n d e n
r e p r ä s e n t i e r t d a b e i ein Zeichen d u r c h s e i n e n ASCII-Code' .
1
PROLOG
2
Im
A S C I I - C o d e w i r d j e d e m B u c h s t a b e n , j e d e r Ziffer u n d v e r s c h i e -
würde.
D a s einfachste Interaktionsmuster für den Dialog
P R O L O G ist:
Benutzer-
denen S o n d e r z e i c h e n jeweils eine g a n z e Z a h l z w i s c h e n 0 u n d 1 2 7
z u g e o r d n e t . D e r B u c h s t a b e ' a ' ist z . B . d u r c h d i e Z a h l 9 7 r e p r ä s e n tiert, d a s L e e r z e i c h e n d u r c h 3 2 . A b e r k e i n e A n g s t , w i r m ü s s e n
interaction
:-
nicht d e n A S C I I - C o d e a u s w e n d i g l e r n e n , u m m i t P R O L O G
ar-
read(X),
beiten z u k ö n n e n . W i c h t i g ist n u r , sich f o l g e n d e E i g e n s c h a f t e n z u
do_something(X,Y),
merken:
write(Y).
1. D i e Ziffern 0 - 9 h a b e n a u f s t e i g e n d e C o d e s o h n e A b s t ä n d e
Beispiel 11.1
M i t diesem S c h e m a k ö n n e n w i r z . B . d e n
Parser
a u s K a p i t e l 9 a u f r u f e n . D a m i t e r g i b t sich d a s f o l g e n d e P r o g r a m m
2. D i e B u c h s t a b e n a - z
u n d d e r d a r g e s t e l l t e Beispieldialog.
3. Die B u c h s t a b e n A - Z
run
haben aufsteigende Codes ohne A b -
stände
: -
haben aufsteigende Codes ohne Ab-
stände
read(Satz),
s(Syntaxbaum,Satz, []) ,
Die k o n k r e t e n Z a h l e n w e r t e für die C o d i e r u n g e i n z e l n e r B u c h s t a -
write(Syntaxbaum).
ben k ö n n e n w i r v o n P R O L O G e r f a h r e n , z . B . liefert " 0 " d e n Z a h lenwert 4 8 , d e r d e r Ziffer 0 z u g e o r d n e t ist.
?-
run.
B e i s p i e l 1 1 . 2 W i r wollen ein P r ä d i k a t g e t - d i g i t ( X )
[john.loves.mary].
s(np(n(j ohn)),vp(v(loves),np(n(mary))))
yes
Die Verwendung der Prädikate r e a d u n d w r i t e
schreiben,
d a s s o l a n g e Z e i c h e n v o n d e r T a s t a t u r e i n l i e s t , bis e i n e Ziffer g e funden wird. Mit deren A S C I I - C o d e wird X intanziiert.
erfordert
B e n u t z e r i m m e r n o c h , d a ß die S y n t a x v o n P R O L O G
get_digit(X)
vom
'Leider funktioniert das bei den meisten PROLOG-Systemen nicht 100%-ig
:-
getO(X),
eingehalten
2
American Standard Code for Information Interchange
138
KAPITEL
11.
EINGEBAUTE
PRÄDIKATE
11.2.
139
KONTROLLE
X >=
"0",
Leider l a s s e n sich a b e r i n r e a l i s t i s c h e n A n w e n d u n g e n d i e s e P r o -
X =<
"9".
g r a m m t e i l e nicht v e r m e i d e n .
get_digit(X)
:-
W i r empfehlen, bereits j e t z t die Ü b u n g 1 1 . 1
get_digit(X).
Je
get.digit(X).
f
durchzuführen,
um ein e r s t e s G e f ü h l f ü r die E r s t e l l u n g „ p r o z e d u r a l e r " P R O L O G P r o g r a m m e zu b e k o m m e n .
?-
abcdl
X =
11.2
49
yes
Kontrolle
Die P r ä d i k a t e , die w i r in d i e s e m A b s c h n i t t v o r s t e l l e n w e r d e n , e r -
A l l e E i n - u n d A u s g a b e p r ä d i k a t e sind deterministisch
, d . h . sie sind '.
g e n a u e i n m a l m i t e i n e r e i n d e u t i g e n L ö s u n g b e w e i s b a r . W e n n die v
I n f e r e n z m a s c h i n e ü b e r B a c k t r a c k i n g eine w e i t e r e L ö s u n g s u c h t , so
arbeiten z u k ö n n e n , die in „ r e i n e m " P R O L O G n i c h t f o r m u l i e r b a r
durch
geschickte S t e u e r u n g d e r I n f e r e n z m a s c h i n e e r h e b l i c h v e r b e s s e r n .
nämlich das „ V e r b r a u c h e n " von E i n g a b e z e i c h e n nicht rückgängig
E i n e Möglichkeit z u r K o n t r o l l e h a b e n w i r b e r e i t s k e n n e n g e -
g e m a c h t - w i e sollte d a s a u c h m ö g l i c h sein.
Dieses d e t e r m i n i s t i s c h e V e r h a l t e n e r k l ä r t die z w e i t e K l a u s e l ! ,
i m P r ä d i k a t g e t _ d i g i t . W e n n in d e r e r s t e n K l a u s e l k e i n e Ziffer |;
b r a u c h t " , b a c k t r a c k i n g liefert a b e r a u c h keine w e i t e r e
weis z u k o n t r o l l i e r e n . Dies ist m a n c h m a l n ö t i g , u m P r o b l e m e b e sind. Oft k a n n m a n a u c h d i e Effizienz eines P r o g r a m m e s
e r g i b t ein solches P r ä d i k a t i m m e r fail. A u c h w i r d d e r Seiteneffekt,
gelesen w u r d e , s o ist diese Ziffer a u s d e r E i n g a b e b e r e i t s
lauben u n s , die I n f e r e n z m a s c h i n e bei d e r S u c h e n a c h e i n e m B e -
„ver-4
Lösung.'^'
O h n e eine z w e i t e K l a u s e l w ü r d e d a s g a n z e P r ä d i k a t e i n f a c h fehl- *
s c h l a g e n , w e n n b e i m e r s t e n V e r s u c h keine Ziffer e i n g e g e b e n wird.
?
D i e z w e i t e K l a u s e l m u ß also die E i n g a b e w i e d e r h o l e n , falls die
e r s t e K l a u s e l fehlschlug. D a z u ruft sie e i n f a c h w i e d e r d i e erste*';
K l a u s e l a u f , o h n e selbst eine E i n g a b e z u v e r l a n g e n . D i e s geschieht ^
s o l a n g e , bis e n d l i c h eine Ziffer e i n g e g e b e n w i r d .
lernt: D i e g e s c h i c k t e A n o r d n u n g v o n K l a u s e l n u n d v o n
beweiszielen i n n e r h a l b e i n e r K l a u s e l . B e i r e k u r s i v e n
Unter-
Prädikaten
haben w i r z . B . die A b b r u c h b e d i n g u n g m e i s t a l s e r s t e K l a u s e l a u f geschrieben, u m s i c h e r z u s t e l l e n , d a ß P R O L O G n i c h t in e i n e E n d losschleife g e r ä t . W i r h a b e n h i e r a l s o a u s g e n ü t z t , d a ß K l a u s e l n
i m m e r in d e r A u f s c h r e i b r e i h e n f o l g e z u b e w e i s e n v e r s u c h t w e r d e n .
In d e r a p p e n d - V e r s i o n u n s e r e s e r s t e n P a r s e r s i n K a p i t e l 8 w a r
die R e i h e n f o l g e d e r U n t e r b e w e i s z i e l e i n j e d e r K l a u s e l a u c h n i c h t
zufällig. E s w u r d e i m m e r e r s t m i t a p p e n d e i n e Z e r l e g u n g d e r L i s t e
erzeugt u n d diese d a n n als d i e r i c h t i g e z u b e w e i s e n v e r s u c h t . P r i n zipiell h ä t t e m a n a p p e n d a u c h a m E n d e j e d e r K l a u s e l s c h r e i b e n
Zwei w e i t e r e A u s g a b e p r ä d i k a t e sind in d e r P r a x i s w i c h t i g , weil
können:
sie z u r G e s t a l t u n g v o n A u s g a b e n s e h r n ü t z l i c h sind.
s(S)
nl
steht f ü r new line u n d führt d a z u , d a ß die A u s g a b e a m A n f a n g .
d e r n ä c h s t e n Zeile f o r t g e s e t z t w i r d .
tab(N)
'ijs*
gibt N Leerzeichen aus.
-*
I
4
Die P r o g r a m m i e r u n g v o n E i n - u n d A u s g a b e p r ä d i k a t e n kann ||
:-
np(NP),
vp(VP),
append(NP,VP,S) .
Aber w a s b e d e u t e t d a s f ü r d e n A b l a u f d e s B e w e i s e s ?
PROLOG
muß n u n alle m ö g l i c h e n N o m i n a l p h r a s e n u n d alle m ö g l i c h e n V e r b a l p h r a s e n d e r G r a m m a t i k g e n e r i e r e n , s o l a n g e bis b e i d e z u s a m -
e i n e t r i c k r e i c h e A n g e l e g e n h e i t sein, die einige E r f a h r u n g e r f o r d e r t . %
men zufällig d e n E i n g a b e s a t z e r g e b e n . B e i e i n e r g r o ß e n
D i e dabei e n t s t e h e n d e n P r o g r a m m e h a b e n in d e r R e g e l w e n i g
matik kann das natürlich beliebig lange d a u e r n . In der v o n uns
v
o
n
,^
der Ästhetik, die sonst P R O L O G - P r o g r a m m e n n a c h g e s a g t wird. $
Gram-
140
KAPITEL
11.
EINGEBAUTE
PRÄDIKA
11.2.
141
KONTROLLE
g e w ä h l t e n R e i h e n f o l g e d a g e g e n w i r d v e r s u c h t , m ö g l i c h s t viel v -
möglich w i r d . Die beiden folgenden K l a u s e l n s i n d a b s o l u t g l e i c h -
h a n d e n e Information möglichst früh für den B e w e i s zur Verfü
bedeutend:
z u stellen.
Implizit
h a b e n w i r also b e r e i t s seit l a n g e m E i n f l u ß a u f den
fakt(a,b,c).
A b l a u f eines B e w e i s e s d u r c h P R O L O G g e n o m m e n . I m folgendwollen wir einige P r ä d i k a t e b e s p r e c h e n , m i t d e n e n explizit
fakt(a,b,c)
:-
true.
die InBei m a n c h e m P r o g r a m m e n w i r d d e m P r o g r a m m i e r e r viel A r b e i t
ferenzmaschine gesteuert wird.
a b g e n o m m e n , w e n n er nicht z w i s c h e n F a k t e n u n d R e g e l n u n t e r -
11.2.1
scheiden m u ß . So w e r d e n viele Spezialfälle i m P r o g r a m m v e r m i e -
Success und Failure
den u n d alles w i r d wesentlich e i n f a c h e r u n d ü b e r s i c h t l i c h e r . D e s -
M a n c h m a l ist es n ü t z l i c h , d e r I n f e r e n z m a s c h i n e z u s a g e n , daß
halb w u r d e b e r e i t s bei d e r S e m a n t i k k o n s t r u k t i o n in K a p i t e l
die S u c h e n a c h e i n e m B e w e i s eines P r ä d i k a t s z w e c k l o s ist. Oder
von dieser M ö g l i c h k e i t G e b r a u c h g e m a c h t .
m a n m ö c h t e g e r n e alle L ö s u n g e n z u e i n e m B e w e i s z i e l
ausgege?.
b e n h a b e n ; d a n n b e n ö t i g t m a n e i n e . M ö g l i c h k e i t , e x p l i z i t Back-'&
t r a c k i n g a u s z u l ö s e n . D a z u stellt P R O L O G d a s P r ä d i k a t f a i l
Das eingebaute
repeat
könnten
wir
auch
selber
schreiben d u r c h die folgende Definition:
zur«
Verfügung.
repeat.
repeat
Beispiel 11.3
Prädikat
10
M a n e r h ä l t alle P e r m u t a t i o n e n d e r L i s t e [ a , b , c ]
:-
repeat.
$
Der N a m e r e p e a t d r ü c k t d a s V e r h a l t e n des P r ä d i k a t e s a u s : W e n n
v o n d e m P r ä d i k a t p e r m u t e a u s Ü b u n g 7.1 d u r c h f o l g e n d e Anfragen
B a c k t r a c k i n g in e i n e r K l a u s e l z u r e p e a t z u r ü c k f ü h r t , s o w i r d d e r
?-
permute([a,b,c],X),
write(X),
nl,
fail.
M
[a.b.c]
,j|
[a,c,b]
I
[b,a,c]
/|
[b,c,a]
i|
[c.a.b]
I
[c,b,a]
'
-j
no
I m Z u s a m m e n h a n g m i t d e m cut
Teil d e r K l a u s e l n a c h d e m r e p e a t n o c h m a l s v e r s u c h t z u b e w e i s e n ,
also w i e d e r h o l t .
B e i s p i e l 1 1 . 4 Mit r e p e a t können wir das Prädikat
get-digit
aus d e m v o r i g e n A b s c h n i t t e t w a s v e r e i n f a c h e n :
get_digit(X)
:-
repeat,
werden wir im n ä c h s t e n
getO(X),
Ab-
schnitt nochmals auf f a i l zu sprechen k o m m e n .
^
D a s P r ä d i k a t t r u e h a t die gleichen E i g e n s c h a f t e n w i e ein
ein-H
zelner Fakt
X >=
"0",
X =<
"9".
Aber Vorsicht: E i n r e p e a t
true.
einer E n d l o s s c h l e i f e f ü h r e n :
A u c h gibt es keinerlei Seiteneffekte. Alst) ist t r u e e i g e n t l i c h völlig
endlos
:-
r e d u n d a n t . D a ß es t r o t z d e m v o r h a n d e n ist, h a t s e i n e n G r u n d d a -
repeat,
r i n , d a ß s o eine e i n h e i t l i c h e S i c h t w e i s e a u f F a k t e n u n d
fail.
Regeln
in e i n e r K l a u s e l k a n n s e h r leicht z u
142
KAPITEL
11.2.2
11.
EINGEBAUTE
PRÄDIKATE'
11.2.
Cut
143
KONTROLLE
b(B),
Das berühmt-berüchtigte
cui-Prädikat,
geschrieben
einfach
als
A u s r u f e z e i c h e n , ist d a s L i e b l i n g s w e r k z e u g v i e l e r P R O L O G - H a c k e r
und
gleichzeitig
PROLOG
der
beschäftigt.
Alptraum
Der
cut
jedes
stellt
Logikers,
den
der
i n d e n B e w e i s g a n g der I n f e r e n z m a s c h i n e d a r , d e r in
m ö g l i c h ist. Intensive V e r w e n d u n g v o n cut
sich
extremsten
in e i n e m
mit
Eingriff
PROLOG
Programm
m a c h t dieses fast i m m e r völlig u n v e r s t ä n d l i c h u n d zeigt a u ß e r d e m ,
d a ß d e r P r o g r a m m i e r e r die P r i n z i p i e n d e r L o g i k p r o g r a m m i e r u n g
n o c h nicht richtig v e r i n n e r l i c h t h a t . Soviel a l s W a r n u n g i m v o r a u s .
D o c h w a s t u t der cut n u n e i g e n t l i c h ?
Die G r u n d i d e e des cut
ist e s , g a n z e B e r e i c h e a u s d e m Such-
r a u m d e r I n f e r e n z m a s c h i n e bei e i n e r B e w e i s s u c h e h e r a u s z u s c h n e i -
e(e2).
den, daher auch der N a m e . W i r wollen hier a b e r nicht versuchen,
d i e s e x a k t u n d f o r m a l k o r r e k t zu b e s c h r e i b e n . S t a t t d e s s e n werden
w i r z u e r s t ein prinzipielles B e i s p i e l f ü r d i e V e r w e n d u n g des
Die E r g e b n i s s e v o n a l u n d a 2 s i n d v e r s c h i e d e n :
cut
g e b e n u n d dieses e r l ä u t e r n . I m A n s c h l u ß d a r a n z e i g e n w i r einige
?-
t y p i s c h e A n w e n d u n g e n . W e r d a m i t n o c h n i c h t g e n u g h a t , d e r sei
h i e r m i t a u f die einschlägige L i t e r a t u r v e r w i e s e n .
W e n n die I n f e r e n z m a s c h i n e bei e i n e m B e w e i s a u f e i n e n
s t ö ß t , so geschieht f o l g e n d e s : D e r B e w e i s v o n cut
liefert
cut.
success
fail.
[bl,c2,dl,el][bl,c2,dl,e2][bl,c2,d2,el][bl,c2,d2,e2]
[b2,cl,dl,el][b2,cl,dl,e2][b2,cl,d2,el][b2.cl.d2.e2]
no
?- a2(X),
ziel, in d e m der cut a u f t r i t t , w e r d e n u n v e r ä n d e r l i c h f e s t g e l e g t . Mit
les, w a s vor d e m cut
write(X),
[b2,c2,dl,el][b2,c2,dl,e2][b2,c2,d2,el][b2,c2,d2,e2]
u n d alle I n s t a n t i i e r u n g e n seit d e m B e w e i s b e g i n n f ü r d a s Beweisa n d e r e n W o r t e n , es w i r d kein a l t e r n a t i v e r B e w e i s v e r s u c h t , f ü r al-
al(X),
[bl.cl.dl.el][bl,cl,dl,e2][bl,cl,d2,el][bl,cl,d2,e2]
:
steht.
vrite(X),
fail.
[bl.cl.dl.el][bl,cl.dl,e2][bl,cl,d2,el][bl,cl,d2,e2]
no
B e i s p i e l 1 1 . 5 Z u r E r l ä u t e r u n g d e r F u n k t i o n s w e i s e v o n cut
W a s h a t die V e r w e n d u n g des cut in u n s e r e m B e i s p i e l v e r ä n d e r t ?
be-
t r a c h t e n wir die b e i d e n P r ä d i k a t e a l u n d a 2 , d i e a u f derselben
E n t s p r e c h e n d d e r B e s c h r e i b u n g d e r F u n k t i o n s w e i s e d e s cut,
F a k t e n b a s i s a r b e i t e n . Sie s i n d i d e n t i s c h bis a u f d e n cut i n a 2 .
folgt eine F e s t s c h r e i b u n g d e r V a r i a b l e n i n s t a n t i i e r u n g e n z u m Z e i t punkt d e r A u s f ü h r u n g des cut.
al([B,C,D,E])
P r ä d i k a t a 2 s o f o r t i n s g e s a m t fail,
b(B),
X
X
c(C),
d(D),
*
l
-t
'•'tj'
a2([B,C,D,E])
:-
F ü r a 2 h e i ß t dies k o n k r e t : B ist
mit b l u n d C m i t c l i n s t a n t i i e r t . B e i m B a c k t r a c k i n g e r g i b t
:-
e(E).
er-
jf
das
w e n n d e r cut e r r e i c h t w i r d . D i e
a n d e r e n L ö s u n g e n f ü r die U n t e r b e w e i s z i e l e b ( B ) u n d c ( C )
spie-
len keine R o l l e m e h r . F ü r d ( D ) u n d e ( E ) w e r d e n d a g e g e n n a c h
wie vor alle m ö g l i c h e n L ö s u n g e n b e s t i m m t . H i n t e r d e m cut
ist
B a c k t r a c k i n g in d e r ü b l i c h e n W e i s e m ö g l i c h . D i e s e r k l ä r t d i e u n terschiedlichen R e s u l t a t e v o n a l u n d a 2 .
144
KAPITEL
11.
EINGEBAUTE
11.3.
PRADIKA
W i r k ö n n e n u n s die W i r k u n g s w e i s e d e s cut
145
META-PROGRAMMIERUNG
steuerpflichtig s i n d , d a ß A u s l ä n d e r - u n t e r b e s t i m m t e n
veranschaulichen
zusätzli-
w e n n w i r u n s e i n e T ü r v o r s t e l l e n , die n u r a u f e i n e r S e i t e eine«
chen B e d i n g u n g e n - in D e u t s c h l a n d s t e u e r f r e i s i n d , S t e u e r p f l i c h t
K l i n k e b e s i t z t . W e n n w i r d u r c h diese T ü r h i n d u r c h g e h e n u n d sief
erst a b e i n e m g e w i s s e n M i n d e s t e i n k o m m e n v o r l i e g t ,
h i n t e r u n s ins S c h l o ß gefallen i s t , s o g i b t es kein Z u r ü c k . G e n a u s o !
e r g e h t es d e r I n f e r e n z m a s c h i n e m i t d e m cut.
Wenn beim Beweis!
d e s P r ä d i k a t e s a 2 e i n m a l d e r cut a u s g e f ü h r t w u r d e , s o g i b t es k e i n f
Z u r ü c k m e h r . Stellt die I n f e r e n z m a s c h i n e s p ä t e r f e s t , d a s B a c k t r a c k i n g n ö t i g ist u n d g e l a n g t a n d e n cut
steuerpflichtig(Person)
steuerpflichtig(Person)
'$1
W i e b e r e i t s e r w ä h n t , ist die V e r w e n d u n g d e s cut m ö g l i c h s t z u l
Zusatzbedingungen(Person),
'.,
mindesteinkommen(Mindesteinkommen)
Einkommen
E i n e dieser A n w e n d u n g e n , f ü r die d e r cut u n b e d i n g t benötigt'^
d.h. m a n m ö c h t e
d r ü c k e n , d a ß ein P r ä d i k a t u n t e r b e s t i m m t e n B e d i n g u n g e n
p
:-
q,
!,
!,
aus-1
Eine w e i t e r e z e n t r a l e A n w e n d u n g d e s cut ist e s , f ü r g e w i s s e P r ä d i Back-
tracking ein w e i t e r e s M a l zu b e w e i s e n , s c h e i t e r n . S o l c h e
k a t s , n ä m l i c h die cut-fail-Kombination.
Die W i r k u n g in u n s e r e m ^
nistischen
t r a c k i n g a u s . Z u r ü c k s e t z e n ü b e r d e n cut
ist a b e r n i c h t
möglich;J
p
f
p
S o m i t h a b e n w i r g e n a u die B e d i n g u n g r e a l i s i e r t , d a ß p une r f ü l l b a r i s t , falls q gilt.
h a b e n w i r b e r e i t s bei d e r E i n - u n d A u s g a b e
Prädikate
p ist d e t e r m i n i s t i s c h
cut alle w e i t e r e n B e w e i s v e r s u c h e u n t e r b u n d e n u n d f a i l l ö s t B a c k - 5
s o m i t e r g i b t p i n s g e s a m t fail.
determi-
kennengelernt. W i r e r h a l t e n h i e r f o l g e n d e s S c h e m a :
F a l l ist e i n f a c h z u b e s c h r e i b e n : S o b a l d q b e w i e s e n i s t , w e r d e n mit ^
am
z u f o r d e r n . W i r wollen a l s o P r ä d i k a t e , d i e h ö c h -
stens eine L ö s u n g e r g e b e n u n d b e i m V e r s u c h , sie d u r c h
fail.
Auch
,
Mindesteinkommen,
f a i l .
kate Eindeutigkeit
falls q gilt
Hier sehen wir eine der häufigsten A n w e n d u n g e n des f a i l - P r ä d i - 1
Beispiel 11.6
<
nicht]
e r f ü l l b a r ist. H i e r z u folgendes S c h e m a :
p ist unerfiillbar,
:-
einkommen(Person,Einkommen),
f
w i r d , ist die B e s c h r e i b u n g v o n Negation;
f a i l .
steuerpflichtig(Person)
v e r m e i d e n . E s g i b t j e d o c h einige F ä l l e , in d e n e n dies u n u m g ä n g l i c h ?
ist.
:-
auslaender(Person),
ab-,
zuschließen.
:-
hausbesitzer(Person).
z u r ü c k , s o b l e i b t nur'
ü b r i g , i n s g e s a m t a u f z u g e b e n u n d d e n B e w e i s f ü r a 2 m i t fail
....
...
!.
: - . . . , !
.
'/. ALLE
'/. V e r d e n
'/,
Klauseln
m i t
'!
'
abgeschlossen
Falls sich n u n eine d e r K l a u s e l n f ü r p b e w e i s e n l ä ß t , s o w i r d die
Finanzamt
geht
die
Hochtechnologie,
nicht s p u r l o s v o r ü b e r . E i n eifriger B e a m t e r b e s c h l i e ß t n a c h
dem]
B e s u c h eines V o l k s h o c h s c h u l k u r s e s „ G r u n d k u r s P R O L O G f ü r F i n a n z b e a m t e " , ein P r o g r a m m z u e n t w i c k e l n , d a s die S t e u e r s c h u l d J
eines B ü r g e r s b e r e c h n e t . Teil dieses P r o g r a m m s ist ein
steuerpflichtig(Person),
Prädikatj
I n f e r e n z m a s c h i n e a u f diese L ö s u n g f ü r p f e s t g e l e g t , u n d es k a n n
keine w e i t e r e K l a u s e l ü b e r B a c k t r a c k i n g e r r e i c h t w e r d e n .
Somit
ist h ö c h s t e n s eine L ö s u n g f ü r p m ö g l i c h .
11.3
Meta-Programmierung
d a s f ü r e i n e g e g e b e n e P e r s o n über-'
p r ü f t , o b ü b e r h a u p t Steuepflicht v o r l i e g t . In d i e s e m P r ä d i k a t wer-;
Eine besondere Eigenschaft von P R O L O G
d e n z . B . die B e d i n g u n g e n b e r ü c k s i c h t i g t , d a ß H a u s b e s i t z e r i m m e r !
nur logische F o r m e l n als P r o g r a m m e a n g e b e n , s o n d e r n a u c h
ist e s , d a ß w i r n i c h t
Aus-
146
KAPITEL
sagen
über
logische
Formeln
11. EINGEBAUTE
¡1.3.
m a c h e n k ö n n e n . W e n n w i r dies tun!
s o b e f i n d e n w i r u n s d a m i t in einer meta-logischen
k e n n e n Meta-Ebenen
PRÄDIKA
E b e n e . W i r aÜe
a u s u n s e r e m A l l t a g . W e n n z . B . w ä h r e n d ei-
n e r D i s k u s s i o n plötzlich ü b e r die F o r m d e r D i s k u s s i o n u n d nicht
m e h r ü b e r d a s T h e m a g e s p r o c h e n w i r d , h a b e n w i r eine solch!
M e t a - E b e n e b e t r e t e n . N u r m a c h t sich e i g e n t l i c h n i e m a n d einen
s o l c h e n W e c h s e l wirklich b e w u ß t ; wir k ö n n e n g a n z selbstverständlich d a m i t u m g e h e n . B e i d e r P R O L O G - P r o g r a m m i e r u n g müssen
w i r u n s a l l e r d i n g s s t e t s i m klaren d a r ü b e r s e i n , w e l c h e r A r t die
A u s s a g e n s i n d , die wir i m P r o g r a m m a u f s c h r e i b e n . V e r l a s s e n wir
d i e E b e n e d e r Hornklausellogik, u m A u s s a g e n ü b e r F o r m e l n zu
m a c h e n , s p r e c h e n w i r von
Meta-Programmierung.
?-
atom(hallo).
yes
?-
Variablen,
f ü r u n s i n t e r e s s a n t , i m P r o g r a m m d e n T y p e i n e s T e r m s z u erfahr e n . D a z u stellt u n s P R O L O G folgende e i n g e b a u t e P r ä d i k a t e zur
Verfügung:
Jf
var(X)
*
gilt, falls X eine u n i n s t a n t i i e r t e V a r i a b l e i s t
gilt, falls X keine u n i n s t a n t i i e r t e V a r i a b l e ist; d . h . X ist
ein A t o m , eine Z a h l o d e r eine k o m p l e x e S t r u k t u r
atom(X)
gilt, falls X ein A t o m ist
integer(X)
atomic(X)
-t'
1
6
?-
f
var(X).
*
var(hallo).
?r
no
?-
no
atom(X).
welche
werden!
yes
?-
integer(4711).
yes
i n t e g e r ( ' 4 7 1 1 ' ) . '/. Atome s i n d k e i n e
?-
Zahlen!
no
?-
atomic(4711).
atomic('4711') .
11.3.2
=..
Wenn w i r n o r m a l e r w e i s e in e i n e m P r o g r a m m S t r u k t u r e n v e r w e n den wollen, s o t u n wir dies, i n d e m w i r sie e i n f a c h b e n u t z e n . E i n
Prädikat, d a s v e r s c h i e d e n e S t r u k t u r e n b e h a n d e l n soll, e n t h ä l t einfach für j e d e einzelne eine eigene K l a u s e l m i t d e r j e w e i l i g e n S t r u k tur als A r g u m e n t . W a s a b e r t u n , w e n n w i r i n einem
Prädikat
alle
möglichen S t r u k t u r e n b e h a n d e l n w o l l e n ? D e n k e n w i r z . B . a n d e n
„pretty p r i n t e r " a u s Ü b u n g 1 1 . 1 . W e n n w i r d i e s e s P r o g r a m m s o
erweitern wollen, d a ß e s beliebige S t r u k t u r e n a u s g i b t , s o b e n ö t i -
kennen.
yes
?-
aber
zuzugreifen, die wir z u m Z e i t p u n k t d e r P r o g r a m m e r s t e l l u n g n i c h t
gilt, falls X ein A t o m o d e r e i n e Z a h l ist
D i e folgenden B e i s p i e l e sollen d a s V e r h a l t e n d i e s e r P r ä d i k a t e ver-
?-
'/. k o e n n e n
Atome!
gen wir eine M ö g l i c h k e i t , a u f F u n k t o r u n d A r g u m e n t e v o n T e r m e n
gilt, falls X eine Z a h l ist
deutlichen:
atom('4711').
sind keine
yes
A t o m e , Z a h l e n o d e r k o m p l e x e S t r u k t u r e n sein. M a n c h m a l ist es
nonvar (X)
'/, Z a h l e n
yes
Klassifikation von Termen
W i e w i r b e r e i t s wissen, k ö n n e n T e r m e i n P R O L O G
atom(471l).
no
?-
11.3.1
147
META-PROGRAMMIERUNG
V
M
Z u d i e s e m Zweck gibt e s e i n e i n g e b a u t e s P r ä d i k a t = . . , a u s
historischen G r ü n d e n univ
X =. . L
genannt.
b e d e u t e t : X ist e i n T e r m , d e s s e n F u n k t o r d a s e r s t e
E l e m e n t d e r L i s t e L ist u n d d e s s e n A r g u m e n t e d i e ü b r i g e n
E l e m e n t e d e r L i s t e sind
Die f o l g e n d e n Beispiele i l l u s t r i e r e n die M ö g l i c h k e i t e n v o n = . . :
KAPITEL
148
11.
EINGEBAUTE
11.3.
PRÄDIKATE
listvar(Complex,In,Out)
X =
a(b,c,d)
Complex = . .
yes
?-
:-
[FunctorlArgs] ,
listvars(Args,In,Out).
a(b,c,d)
X =
= ..
X.
listvars([],In,In).
[a.b.c.d]
yes
?- a(X,c,d)
listvars([ArglArgs],In,Out)
= ..
[Y.blZ].
listvars(Args,Out 1,Out).
Y =
a
Z =
[c.d]
?-
yes
X =..
[Y,b,c,d].
listvar(a(X,Y),L).
X =
_005D
Y =
_006D
L =
no
? - -X
[_005D,_006D]
yes
Cal.],
no
Bei d e r I m p l e m e n t i e r u n g v o n l i s t v a r w u r d e ein g ä n g i g e r T r i c k
D i e l e t z t e n b e i d e n F ä l l e zeigen eine w i c h t i g e E i n s c h r ä n k u n g : Zur
z u m A u f s a m m e l n v o n E r g e b n i s s e n bei r e k u r s i v e n P r ä d i k a t e n b e -
Z e i t d e r A u s f ü h r u n g v o n = . . m u ß d e r F u n k t o r u n d die A n z a h l
d e r A r g u m e n t e des T e r m s b e k a n n t s e i n . P R O L O G i s t n i c h t in '
d e r L a g e , T e r m e m i t v a r i a b l e m F u n k t o r o d e r v a r i a b l e r Steifigkeit
v o n = . . ist bei v e r s c h i e d e n e n P R O L O G - S y s t e m
M a n c h m a l e r g i b t sich - w i e in u n s e r e m P R O L O G - S y s t e m - ledig- ,
B e i s p i e l 1 1 . 7 E s soll ein P r ä d i k a t l i s t v a r
3
listvar
Argumente haben dabei folgende B e d e u t u n g :
unterschiedlich.
m a n c h m a l a u c h eine S y s t e m f e h l e r m e l d u n g .
n u t z t . Dieser T r i c k ist so hä uf i g in d e r P r a x i s z u finden, d a ß e r h i e r
e i n m a l e r l ä u t e r t w e r d e n soll. D a s zweistellige P r ä d i k a t
ruft als einzige A k t i o n ein dreistelliges P r ä d i k a t l i s t v a r auf. D i e
z u b e h a n d e l n . D i e R e a k t i o n a u f eine s o l c h e f a l s c h e V e r w e n d u n g
lieh e i n fail,
:-
listvar(Arg,In,Out1),
X = b
?-
149
META-PROGRAMMIERUNG
Y
í
e n t w i c k e l t werden,
d a s a l l e in e i n e r g e g e b e n e n S t r u k t u r e n t h a l t e n e n V a r i a b l e n in einer ;
1. die a k t u e l l z u b e a r b e i t e n d e S t r u k t u r
2. die L i s t e d e r b e r e i t s g e f u n d e n e n V a r i a b l e n
3. die L i s t e d e r V a r i a b l e n n a c h v o l l s t ä n d i g e r A b a r b e i t u n g dieses A u f r u f e s v o n
listvar
Liste aufsammelt.
Das zweite A r g u m e n t
listvar(Struct.ListOfVariables)
:-
listvar(Struct,[].ListOfVariables),
i
dient d e m A u f s a m m e l n al-
Konstruktion auch von einem
Akkumulator.
A u s d e r B e d e u t u n g d e r A r g u m e n t e e r g e b e n s i c h die B e d i n g u n gen, die in d e n e i n z e l n e n K l a u s e l n a u s g e d r ü c k t s i n d :
listvar(Var,In,[VarlIn])
var(Var) .
listvar(Atomic,In,In)
atomic(Atomic)
von l i s t v a r
ler bislang g e f u n d e n e n E r g e b n i s s e . M a n s p r i c h t bei e i n e r s o l c h e n
:-
:-
.
3\Vir werden dieses Prädikat im nächsten Kapitel wieder benötigen
1. die a k t u e l l e S t r u k t u r ist e i n e V a r i a b l e : n i m m die g e f u n d e n e
Variable zur Liste der bereits bekannten Variablen hinzu
2. die a k t u e l l e S t r u k t u r ist a t o m a r : die L i s t e d e r b e r e i t s g e f u n denen Variablen bleibt unverändert
150
KAPITEL
11.
EINGEBAUTE
PRÄDIKATE'-
11.3.
151
META-PROGRAMMIERUNG
ff
3 . die a k t u e l l e S t r u k t u r ist ein k o m p l e x e r T e r m : zerlege
den
T e r m m i t = . . in F u n k t o r u n d L i s t e d e r A r g u m e n t e u n d füge
assert(X)
t r ä g t d e n T e r m X in die D a t e n b a s i s ein.
retract(X)
löscht die e r s t e K l a u s e l d e r D a t e n b a s i s , die m i t X
alle V a r i a b l e n , die in d e n A r g u m e n t e n e n t h a l t e n sind, zur
als T e r m unifizierbar ist. Ü b e r B a c k t r a c k i n g w e r d e n w e i t e r e
Eingabeliste hinzu
passende E i n t r ä g e gelöscht.
Das Prädikat l i s t v a r s
benutzt einfach l i s t v a r ,
u m f ü r jedes
A r g u m e n t des k o m p l e x e n T e r m s die V a r i a b l e n z u r E i n g a b e l i s t e
Sehr wichtig ist es, zu b e a c h t e n , d a ß d i e S e i t e n e f f e k t e v o n a s s e r t
hinzuzufügen.
und r e t r a c t ,
also die V e r ä n d e r u n g e n i n d e r D a t e n b a s i s ,
beim
B a c k t r a c k i n g nicht z u r ü c k g e n o m m e n w e r d e n .
11.3.3
Manipulation der Datenbasis
W i r wissen b e r e i t s , d a ß in P R O L O G P r ä d i k a t e u n d T e r m e absolut
i d e n t i s c h a u f g e b a u t sind. E i n F a k t ist n i c h t s a n d e r e s als ein Term
m i t d e m P r ä d i k a t s n a m e n als F u n k t o r . E i n e R e g e l ist ein Term
mit dem Funktor
: - , d e r K o p f ist d a s e r s t e A r g u m e n t u n d der
R u m p f das zweite. F ü r b e s t i m m t e F u n k t o r e n wie z . B .
:-,
=..,
. . . e r l a u b t u n s P R O L O G lediglich e i n e v e r e i n f a c h t e Schreibweise.
S o l c h e speziellen F u n k t o r e n heißen
Beispiel 11.8
Operatoren.
Beispiel 1 1 . 9 Das Prädikat r e t r a c t a l l ( X )
soll alle F a k t e n , die
mit X als T e r m unifizierbar sind u n d alle R e g e l n , d e r e n K o p f m i t X
unifizierbar ist, a u s der D a t e n b a s i s l ö s c h e n . D a z u n ü t z e n w i r a u s ,
daß r e t r a c t
b e i m B a c k t r a c k i n g jeweils e i n e n w e i t e r e n
Eintrag
löscht, s o l a n g e bis keine w e i t e r e M ö g l i c h k e i t b e s t e h t .
retractall(X)
:-
retract(X),
D i e d r i t t e K l a u s e l a u s B e i s p i e l 1 1 . 3 . 2 m ü ß t e ohne
fail.
r e t r a c t a l l (X)
V e r w e n d u n g von O p e r a t o r e n die f o l g e n d e F o r m e r h a l t e n :
:-
retract((X:-Y)),
:-(listvar(Complex,In,0ut),
fail.
','(=..(Complex,[FunctorlArgs]),
retractall(X).
listvars(Args,In,Out)
)
Die e r s t e K l a u s e l v o n r e t r a c t a l l
)
löscht alle passenden F a k t e n ,
die zweite alle p a s s e n d e n R e g e l n u n d d i e d r i t t e s o r g t d a f ü r , d a ß
D e r P R O L O G - I n t e r p r e t e r weiß ü b e r die spezielle B e d e u t u n g der
r e t r a c t a l l i m m e r m i t success
beendet wird.
F u n k t o r e n : - u n d , B e s c h e i d u n d b e n u t z t sie z u r S t e u e r u n g der
Inferenzmaschine.
Wenn nun aber T e r m e und P r ä d i k a t e g e n a u dieselbe
Form
h a b e n , w a s liegt d a n n n ä h e r , als P r ä d i k a t e e b e n f a l l s w i e T e r m e
11.3.4
Call
Im v o r i g e n A b s c h n i t t h a b e n w i r d i e D a t e n b a s i s m a n i p u l i e r t , die
a l s D a t e n z u b e h a n d e l n , sie zu k o n s t r u i e r e n o d e r z u v e r ä n d e r n ?
die I n f e r e n z m a s c h i n e f ü r i h r e B e w e i s e b e n ü t z t . J e t z t wollen w i r
U n s fehlen lediglich n o c h M ö g l i c h k e i t e n , s o k o n s t r u i e r t e P r ä d i k a t e
das e i n g e b a u t e P r ä d i k a t c a l l v o r s t e l l e n , m i t d e m w i r d e r Infe-
i n die D a t e n b a s i s e i n z u t r a g e n o d e r sie d e r I n f e r e n z m a s c h i n e als
r e n z m a s c h i n e einen T e r m als B e w e i s z i e l ü b e r g e b e n k ö n n e n .
Beweisziel z u ü b e r g e b e n .
'
v
Z u r M a n i p u l a t i o n d e r D a t e n b a s i s stellt P R O L O G d i e f o l g e n - .
den eingebauten Prädikate zur Verfügung:
Beispiel 1 1 . 1 0 Das Prädikat u n i q u e ( P )
soll d i e e r s t e
Lösung
des P r ä d i k a t s P liefern. B a c k t r a c k i n g e r g i b t d a n n s o f o r t /<u7,-"
152
KAPITEL
unique(P)
11.
EINGEBAUTE
PRÄDIKATE
11.3.
:-
E l e m e n t d e r L i s t e L zu unifizieren. Ü b e r B a c k t r a c k i n g e r h ä l t m a r
n a c h e i n a n d e r alle L ö s u n g e n . B e t r a c h t e n w i r d a m i t f o l g e n d e Beispiele v o n b a g o f u n d s e t o f :
die
I n f e r e n z m a s c h i n e angewiesen, P z u b e w e i s e n ; g e h t dies g u t , folgt
s o f o r t d e r cut,
?- bagof(X,member(X,[b,a,c,b]),L).
L = [b,a,c,b]
yes
wodurch weitere L ö s u n g e n für u n i q u e abgeschnit-
ten werden.
D a s P r ä d i k a t u n i q u e ist ein g u t e s B e i s p i e l d a f ü r , w i e in ei-
?setof(X,member(X,[b.a.c.b]),L).
L = [a,b,c]
n e m P r o g r a m m die V e r w e n d u n g des cut v e r m i e d e n w e r d e n k a n n .
S t a t t i m P r ä d i k a t P den cut e i n z u s e t z e n , r e a l i s i e r t m a n e i n e cutfreie
15:
B e i s p i e l 1 1 . 1 1 Die P r ä d i k a t m e m b e r ( X , L ) v e r s u c h t X m i t e i n e n
call(P),
D i e R e a l i s i e r u n g ist sehr einfach: es w i r d lediglich m i t c a l l
META-PROGRAMMIERUNG
t
yes
Version von P und benützt beim A u f r u f von P das Prädikat
Mit d e n M ö g l i c h k e i t e n z u r M e t a - P r o g r a m m i e r u n g , die P R O L O G
uns b i e t e t , k ö n n e n w i r leicht e i n e e i g e n e V a r i a n t e v o n b a g o f r e a lisieren.
u n i q u e , u m a u s z u d r ü c k e n , d a ß P hier d e t e r m i n i s t i s c h ist. D i e s hat
a u ß e r d e r R e d u z i e r u n g d e r A n z a h l v o n cut i m P r o g r a m m zwei weit e r e schöne Effekte:
B e i s p i e l 1 1 . 1 2 D a s P r ä d i k a t m y - b a g o f ( X , P , L ) soll a l l e E r g e b nisse v o n P f ü r d i e V a r i a b l e X in d e r L i s t e L e r g e b e n .
1 . d e r L e s e r des P r o g r a m m s sieht s o f o r t b e i m A u f r u f v o n P,
d a ß hier ein d e t e r m i n i s t i s c h e s P r ä d i k a t v o r l i e g t
2 . d a s P r ä d i k a t P k a n n allgeiner g e s c h r i e b e n w e r d e n u n d da- »
d u r c h e h e r a u c h in e i n e m a n d e r e n P r o g r a m m w i e d e r v e r w e n - 1
det werden
\
I m N o r m a l f a l l liefert ein B e w e i s in P R O L O G i m m e r e i n e L ö s u n g
zu einer Anfrage und dann über B a c k t r a c k i n g evtl. weitere. I n '
m a n c h e n F ä l l e n ist es a b e r n ü t z l i c h , s t a t t e i n e r L ö s u n g s o f o r t eine
L i s t e m i t allen m ö g l i c h e n L ö s u n g e n f ü r ein P r ä d i k a t z u e r h a l t e n . •••
D a z u stellt P R O L O G zwei e i n g e b a u t e P r ä d i k a t e z u r V e r f ü g u n g :
bagof (X,P,L)
ergibt in L die L i s t e a l l e r L ö s u n g e n f ü r X, die für *
d a s P r ä d i k a t P möglich s i n d
setof(X,P,L)
a r b e i t e t wie b a g o f , a b e r d o p p e l t e L ö s u n g e n wer- ;
d e n a u s d e r L i s t e L e n t f e r n t u n d a u ß e r d e m w i r d L in der i,
my_bagof(X.P.L)
:-
compute_all(X,P),
list_all(L),
compute_all(X,P)
:-
call(P),
assert(bagof_solution(X)),
fail.
compute_all(X,P).
list_all([XlL])
:-
retract(bagof_solution(X)) ,
list_all(L).
list.alKC]) .
Regel sortiert
Mit c o m p u t . a l l
e
D a m i t diese P r ä d i k a t e sinnvolle L ö s u n g e n e r g e b e n , m u ß n a t ü r l i c h
die V a r i a b l e X in d e m P r ä d i k a t P v o r k o m m e n .
w e r d e n ü b e r B a c k t r a c k i n g alle L ö s u n g e n
Prädikats P erzeugt u n d der jeweilige W e r t für X m i t a s s e r t
des
in
« e D a t e n b a s i s e i n g e t r a g e n . D a b e i m u ß X n a t ü r l i c h e i n e in P aufw e n d e V a r i a b l e sein, s o n s t ist dies ( m e i s t ) sinnlos. M i t
list.all
154
KAPITEL
11.
EINGEBAUTE
PRÄDIKATE^
w e r d e n die L ö s u n g e n n a c h e i n a n d e r w i e d e r a u s d e r
I
Datenbasis'"
g e l ö s c h t u n d d a b e i in einer L i s t e a u f g e s a m m e l t .
11.3.5
'*
Not
•,;
yes
?-
unverheirateter_student(X) .
no
Also folgert P R O L O G m e s s e r s c h r f , d a ß P e t e r ein u n v e r h e i r a t e t e r
S t u d e n t ist. Soweit f u n k t i o n i e r t d a s P r ä d i k a t a l s o . D i e z w e i t e A n -
k ö n n e n u n s ein P r ä d i k a t n o t ( P ) s c h r e i b e n , d a s g e r a d e d a n n be-
frage, bei der das P r ä d i k a t m i t e i n e r V a r i a b l e n a u f g e r u f e n w i r d ,
w e i s b a r ist, w e n n P nicht b e w e i s b a r ist:
soll die F r a g e b e a n t w o r t e n , w e r e i n u n v e r h e i r a t e t e r S t u d e n t ist.
Eigentlich würden wir e r w a r t e n , d a ß als E r g e b n i s P e t e r b e s t i m m t
:-
wird. Dies funktioniert leider n i c h t . P R O L O G v e r s u c h t
call(P),
!,
löö
ist S t u d e n t u n d es gibt keinen B e w e i s d a f ü r , d a ß e r v e r h e i r a t e t ist.
call
läßt sich Negation auch noch etwas universeller ausdrücken. Wir
not(P)
SONSTIGES
Das E r g e b n i s d e r e r s t e n A n f r a g e i m B e i s p i e l ist v ö l l i g k l a r : P e t e r
I m Z u s a m m e n h a n g m i t d e m cut h a b e n w i r b e r e i t s e i n e F o r m der
N e g a t i o n von Prädikaten gesehen. D u r c h V e r w e n d u n g von
11.4.
nämlich
z u n ä c h s t z u zeigen, d a ß es n i e m a n d e n g i b t , d e r v e r h e i r a t e t
fail.
ist.
Dies gelingt a b e r nicht u n d s c h o n s c h e i t e r t d a s g e s a m t e P r ä d i k a t .
not(P).
W ü r d e m a n die b e i d e n U n t e r b e w e i s z i e l e i m R u m p f v e r t a u s c h e n ,
In der ersten Klausel von n o t
wird versucht,
P zu
F a l l s d i e s gelingt, folgt sofort eine c u i - / o i 7 - K o m b i n a t i o n ,
n o t ( P ) fail
erhielte m a n d a s g e w ü n s c h t e E r g e b n i s .
beweisen.
Dies liegt d a r a n , d a ß d a n n i m n e g i e r t e n B e w e i s z i e l k e i n e u n -
wodurch
i n s t a n t i i e r t e V a r i a b l e m e h r a u f t r i t t . A l l g e m e i n gilt:
e r g i b t . F a l l s P nicht b e w e i s b a r i s t , e r h ä l t m a n d u r c h
d i e z w e i t e K l a u s e l d a n n success.
'. ;
I n P R O L O G ist m e i s t a u c h ein e i n g e b a u t e s P r ä d i k a t f ü r n o t
E r g e b n i s , w e n n in d e m n e g i e r t e n B e w e i s z i e l k e i n e u n -
v o r h a n d e n , d a s als \+ g e s c h r i e b e n w i r d .
intantiierten Variablen vorkommen.
L e i d e r w i r d d u r c h n o t keine volle N e g a t i o n i m S i n n e d e r Logik
a u s g e d r ü c k t . W a s P R O L O G realisiert ist d i e s o g e n a n n t e
as failure.
Dies m u ß d e r V e r w e n d u n g v o n N e g a t i o n i m m e r
negation
Dies f ü h r t m a n c h m a l z u e t w a s u n i n t u i t i v e n E r g e b n i s -
B e i s p i e l 1 1 . 1 3 Das Prädikat
berücksichtigt
w e r d e n u n d e v t l . die R e i h e n f o l g e d e r U n t e r b e w e i s z i e l e in e i n e r
Klausel entsprechend gewählt werden.
s e n , w i e es d a s folgende Beispiel i l l u s t r i e r t .
u n v e r h e i r a t e r . s t u d e n t (X)
ü b e r p r ü f e n , o b eine g e g e b e n e P e r s o n ein u n v e r h e i r a t e r
N e g a t i o n in P R O L O G liefert n u r d a n n e i n k o r r e k t e s
soll
11.4
Student
ist:
Sonstiges
H e u t i g e P R O L O G - S y s t e m e b i e t e n in d e r R e g e l e i n e V i e l z a h l einunverheirateter_student(X)
\+
:-
g e b a u t e r P r ä d i k a t e , die alle f ü r d i e v e r s c h i e d e n s t e n
verheiratet(X),
Aufgaben
m e h r oder weniger nützlich sind. E s w ü r d e a b e r z u weit führen,
Student(X).
h i e r a u c h n u r alle j e n e z u b e s p r e c h e n , die s o g a r i n e i g e n t l i c h al-
Student(peter).
len S y s t e m e n v o r h a n d e n sind. W i r wollen u n s a u f e i n e A u s w a h l
b e s c h r ä n k e n , die ein M i n i m u m d a r s t e l l t , u m i n d e r P r a x i s r e a -
verheiratet(hans).
*
listische P r o g r a m m e z u e n t w i c k e l n . D a z u f e h l e n u n s n o c h einige
wenige P r ä d i k a t e , die in diesem A b s c h n i t t z u s a m m e n g e f a ß t sind.
?-
unverheirateter_student(peter).
KAPITEL
156
11.4.1
11.
EINGEBAUTE
PRÄDIKATE
Arithmetische Ausdrücke
I n m a n c h e n F ä l l e n g e n ü g t es n i c h t , d u r c h U n i f i k a t i o n i m m e r k o m I arithmetische Ausdrücke auch gerne einmal ihren W e r t berechnen
i k ö n n e n . D a z u b i e t e t P R O L O G einige a r i t h m e t i s c h e O p e r a t o r e n ,
w i e z . B . +, - , * , / u n d mod, u n d e i n e n E v a l u a t i o n s o p e r a t o r i s a n .
Y
SONSTIGES
157
D a aber Stringverarbeitung sehr häufig v o r k o m m t u n d Listen
I p l e x e r e T e n n e aufzubauen, sondern m a n m ö c h t e insbesondere für
X is
11.4.
gilt, falls Y ein a r i t h m e t i s c h e r A u s d r u c k ist, a l s o n u r
von A S C I I - C o d e s für den P r o g r a m m i e r e r sehr unleserlich sind,
b i e t e t P R O L O G e i n e spezielle S c h r e i b w e i s e f ü r S t r i n g s a n . S t a t t
[97,110,116,111,110]
darf einfach a u c h " a n t o n "
geschrieben
w e r d e n . P R O L O G ü b e r s e t z t dies z u r V e r a r b e i t u n g in d i e e n t s p r e chende Liste.
Beispiel 11.14
Eines der wichtigsten P r ä d i k a t e der Stringverar-
arithmetische O p e r a t o r e n , Zahlen, Variablen u n d K l a m m e r n
b e i t u n g ist c o n c a t e n a t e ( S l , S 2 , S ) , d a s V e r k e t t e n z w e i e r S t r i n g s
e n t h ä l t , in d e m alle V a r i a b l e n m i t Z a h l e n i n s t a n t i i e r t sind
S l u n d S2 zu e i n e m G e s a m t s t r i n g S. D u r c h d i e D a r s t e l l u n g
und X mit d e m Ergebnis der Berechnung, der
L i s t e n ist dies t r i v i a l :
I
Evaluation,
als
v o n Y unifiziert w i r d .
concatenate(Sl,S2,S)
I A u ß e r d e m b e s t e h t die M ö g l i c h k e i t , die W e r t e v o n a r i t h m e t i s c h e n
:-
append(Sl,S2,S).
A u s d r ü c k e n i h r e r G r ö ß e n a c h zu v e r g l e i c h e n .
X < Y
gilt, falls die E v a l u a t i o n v o n X eine W e r t e r g i b t , d e r
ner
als d e r W e r t d e r E v a l u a t i o n v o n Y ist
X =< Y
e n t s p r e c h e n d m i t kleiner
oder
gleich
X >= Y
e n t s p r e c h e n d m i t größer
oder
gleich
X > Y
entsprechend mit
11.4.2
Unter
klei-
D a z u schreiben wir d a s Prädikat s u b s t r i n g ( S , S u b S , N ) , wobei N
die P o s i t i o n des T e i l s t r i n g s SubS in S i s t .
substring(S,SubS,N)
größer
:-
append(Prefix,Rest,S),
append(SubS,Suffix,Rest),
Strings
e i n e m String
B e i s p i e l 1 1 . 1 5 E i n e w e i t e r e w i c h t i g e A u f g a b e ist e s , f e s t z u s t e l len o b ein g e g e b e n e r S t r i n g einen z w e i t e n S t r i n g a l s Teil e n t h ä l t .
length(Prefix.lf) .
v e r s t e h t m a n eine F o l g e v o n
Zeichen,
die
m a n bearbeiten können möchte. Im Gegensatz zu A t o m e n m u ß
Die Realisierung von s u b s t r i n g verwendet append, u m den String
b e i S t r i n g s a u c h d e r Zugriff a u f Teile m ö g l i c h sein. D i e V e r a r b e i -
S in drei Teile s o z u z e r l e g e n , d a ß SubS g e r a d e d e n m i t t l e r e n Teil
t u n g v o n Z e i c h e n k e t t e n stellt eine s e h r h ä u f i g a u f t r e t e n d e A u f g a b e
d a r s t e l l t . M i t l e n g t h w i r d die L ä n g e d e s T e i l e s v o n S b e s t i m m t ,
f ü r d e n P r o g r a m m i e r e r d a r . In d e n m e i s t e n P r o g r a m m i e r s p r a c h e n
d e r v o r SubS liegt, w a s g e r a d e d e r P o s i t i o n v o n SubS in S e n t -
g i b t es d e s h a l b eine spezielle D a t e n s t r u k t u r f ü r S t r i n g s . P R O L O G
s p r i c h t , falls m a n die P o s i t i o n s z ä h l u n g bei N u l l b e g i n n t .
4
d a g e g e n kennt keine s o l c h e S p e z i a l s t r u k t u r . S t a t t d e s s e n v e r w e n d e t
m a n e i n f a c h Listen
von ASCII-Codes.
Dies h a t d e n V o r t e i l , d a ß
alle M ö g l i c h k e i t e n d e r L i s t e n v e r a r b e i t u n g f ü r S t r i n g s v e r w e n d e t
Beispiel 11.16
Ein Prädikat zur Berechnung
der Länge
eines
S t r i n g s k ö n n e n w i r leicht definieren d u r c h :
w e r d e n k ö n n e n , w e i s P R O L O G e i n e s e h r g r o ß e F l e x i b i l i t ä t bei d e r
Stringverarbeitung gibt. A u ß e r d e m h a b e n die m e i s t e n A n w e n d u n gen mit Ein- und A u s g a b e zu tun. U n d hier verwendet
ebenfalls A S C I I - C o d e s .
PROLOG
^Natürlich ist diese Realisierung sehr ineffizient. Ein gezielt arbeitendes
Suchverfahren wäre besser als das blinde Probieren von Zerlegungen durch
append.
158
KAPITEL
11.
EINGEBA
UTE
PRÄDIKATE
11.5.
159
BEISPIEL
•*
«1?
11.5.1
length([] , 0 ) .
length([First IRest],N)
:-
Die g e w ü n s c h t e A u s g a b e v o n r e a d - s e n t e n c e
length(Rest.M),
N is
Entwurf
M+l.
{•
G e l e g e n t l i c h m ö c h t e m a n A t o m e in S t r i n g s v e r w a n d e l n o d e r u m -
steht bereits fest:
eine L i s t e v o n W ö r t e r n , d i e d u r c h S t r i n g s d a r g e s t e l l t s i n d . S t r i n g s
wiederum sind Listen von A S C I I - C o d e s .
Die e r s t e G r o b s k i z z e f ü r d a s P r o g r a m m sieht a l s o s o a u s :
g e k e h r t . D a z u g i b t es in P R O L O G d a s e i n g e b a u t e P r ä d i k a t name:
name ( A , S )
gilt, falls A ein A t o m u n d S ein S t r i n g ist, s o d a ß die
einzelne E l e m e n t e d e r L i s t e S g e r a d e d e n A S C I I - C o d e s der
• Einlesen
eines
Satzes
bedeutet
Einlesen
einer
• E i n l e s e n einer L i s t e v o n W ö r t e r n b e d e u t e t
in A e n t h a l t e n e n B u c h s t a b e n e n t s p r e c h e n
Liste
von
Wörtern
Einlesen eines
W o r t e s gefolgt v o n e i n e r L i s t e v o n W ö r t e r n
D i e P a r s e r für u n s e r e b i s h e r i g e n G r a m m a t i k e n e r w a r t e n S ä t z e imm e r a l s L i s t e n v o n A t o m e n . W e n n w i r a l l e r d i n g s e i n e n S a t z mit
r e a d . s e n t e n c e einlesen, so erhalten wir Listen von Strings. Um
u n s e r e P a r s e r w e i t e r v e r w e n d e n zu k ö n n e n , m ü s s e n w i r e i n e Konv e r t i e r u n g d u r c h f ü h r e n . D a z u s c h r e i b e n w i r ein P r ä d i k a t c o n v e r t .
B e i s p i e l 1 1 . 1 7 Das
Prädikat
convert (Atoms, S t r i n g s )
soll
e i n e L i s t e v o n A t o m e n a u f eine e n t s p r e c h e n d e L i s t e v o n Strings
• E i n l e s e n eines W o r t e s b e d e u t e t E i n l e s e n eines e i n z e l n e n Z e i c h e n s gefolgt v o n einer L i s t e v o n Z e i c h e n
Über die T a s t a t u r w e r d e n einzelne Z e i c h e n e i n g e g e b e n . W i r e r h a l t e n a l s o lediglich eine F o l g e v o n A S C I I - C o d e s . W i e k a n n d i e s e r
Folge die g e w ü n s c h t e S t r u k t u r g e g e b e n w e r d e n ? D a z u h a l t e n w i r
folgendes fest:
abbilden und umgekehrt.
• die E i n g a b e eines P u n k t e s o d e r F r a g e z e i c h e n s b e e n d e t
c o n v e r t ( [ ] , [] ) .
convert([Atom I Atoms],[String I S t r i n g s ] )
:-
• ein W o r t ist eine z u s a m m e n h ä n g e n d e K e t t e v o n Z e i c h e n , d i e
name(Atom,String),
k e i n e L e e r z e i c h e n sind. O d e r a n d e r s f o r m u l i e r t : e i n W o r t e n -
convert(Atoms.Strings).
11.5
den
Satz
de erkennt m a n durch das Einlesen eines L e e r z e i c h e n s
Beispiel
D a r a u s e r g e b e n sich die A b b r u c h b e d i n g u n g e n f ü r d a s E i n l e s e n v o n
W o r t l i s t e n u n d Zeichenlisten.
W i r wollen ein P r ä d i k a t r e a d - s e n t e n c e ( X ) e n t w i c k e l n , d a s einen
A n d i e s e r Stelle ist es sehr w i c h t i g , s i c h d a r a n z u e r i n n e r n , d a ß
S a t z v o n d e r T a s t a t u r einliest u n d ihn a l s e i n e L i s t e v o n S t r i n g s
sämtliche Ein- und Ausgabeprädikate deterministisch sind u n d ihr
i n d e r V a r i a b l e n X a b l e g t . E i n Beispiel z u r I l l u s t r a t i o n :
?-
Seiteneffekt b e i m B a c k t r a c k i n g n i c h t r ü c k g ä n g i g g e m a c h t w e r d e n
kann. W e n n w i r also b e i m E i n l e s e n eines L e e r z e i c h e n s d i e s e s als
read_sentence(X).
dies
ist
ein
X =
["dies","ist","ein","satz","."]
W o r t e n d e b e h a n d e l n wollen, s o d ü r f e n w i r in d e r e n t s p r e c h e n d e n
satz.
K l a u s e l n i c h t e i n f a c h ein Zeichen e i n l e s e n u n d p r ü f e n , o b e i n L e e r zeichen vorliegt. E i n solches V o r g e h e n w ü r d e , falls es s i c h u m kein
sehr
L e e r z e i c h e n h a n d e l t , dieses a u f N i m m e r w i e d e r s e h e n a u s d e r E i n -
u n ü b e r s i c h t l i c h a u s s i e h t , d a die S t r i n g s v o n P R O L O G als L i s t e n
g a b e v e r b r a u c h e n , s o d a ß eine a n d e r e K l a u s e l , d i e e i g e n t l i c h d i e s e n
von A S C I I - C o d e s ausgegeben werden.
Fall b e h a n d e l n soll, dieses Z e i c h e n g a r n i c h t m e h r s i e h t .
D i e A u s g a b e w u r d e e t w a s a u f b e r e i t e t , weil sie t a t s ä c h l i c h
160
KAPITEL
11.
EINGEBAUTE
PRÄDIKAT
U.6.
Char i s
W i r m ü s s e n a l s o sicherstellen, d a ß e i n Z e i c h e n n u r e i n m a l eing e l e s e n u n d d a n n a u c h wirklich v e r a r b e i t e t w i r d , b e v o r ein weiten
".".
read.wordlist(Char,["?"])
Char i s
res Zeichen eingelesen wird.
161
ZUSAMMENFASSUNG
:-
"?".
read.wordlist(Char,[FirstWordlRestOfWordList])
11.5.2
:-
read.word(Char,FirstWord,FirstCharOfNextWord),
Realisierung
read.wordlist(FirstCharOfNextWord.RestOfWordList).
H i e r ist n u n a l s o d a s v o l l s t ä n d i g e P r o g r a m m :
'/, r e a d . w o r d ( C h a r , W o r d , F i r s t C h a r O f N e x t W o r d )
7.
read_sentence(Sentence)
7.
7. Z w e c k :
Einlesen
7, A r g u m e n t e :
Sentence
eines
Satzes
von d e r
7,
bei
CALL: u n i n s t a n t i i e r t e
7.
bei
EXIT:
7. B e i s p i e l :
?-
7.
X =
7. H i n w e i s e :
-
ist
ein
aufeinanderfolgende
getrennt
7.
7,
-
die
Woerter
Leerzeichen
Satzes
oder e i n
wird
7.
e i n e n Punkt
7,
u n m i t t e l b a r n a c h dem l e t z t e n
X
beendet.
7,
KEIN L e e r z e i c h e n
-
7.
innerhalb
Insbesondere
verwendet
read_sentence(ListOfWords)
durch
Fragezeichen
darf
Wort
'/,
das
erste
Zeichenliste
ist
Zeichen
"
auf
deren
als
des n a e c h s t e n
read_word(Char, [] .NextChar)
is
Word,
und g i b t
3.
erstes
Argument
Wortes
zurueck
:-
",
read.word (Char, [ ] , Char)
Char
is
read.word (Char, [] ,Char)
Char
is
:-
".".
:-
"?".
read.word(Char,[Char I RestOfWord],FirstCharOfNextWord)
getO(NextChar),
read.word(NextChar,RestOfWord,FirstCharOfNextWord).
vorher
stehen
des S a t z e s
Satzzeichen
7.
."]
sein
Eingabe e i n e s
eine
getO(NextChar).
["dies","ist","ein","satz","
zwei
liest
Zeichen Char
Char
satz.
muessen durch genau e i n
7,
Variable
STRINGS
read.sentence(X).
> dies
7.
LISTE v o n
Tastatur
'/,
'/,
duerfen
keine
werden
11.6
Zusammenfassung
Wenn Sie in die V e r l e g e n h e i t k o m m e n , e i n m a l ein g r ö ß e r e s P r o g r a m m z u e n t w i c k e l n , d a n n b e s o r g e n Sie sich d a s H a n d b u c h I h r e s
:-
P R O L O G - S y s t e m s u n d v e r s c h a f f e n sich e i n e n U b e r b l i c k ü b e r die
.getO(Char),
dort v o r h a n d e n e n e i n g e b a u t e n P r ä d i k a t e .
A b e r ein w i c h t i g e r T i p ist a n g e b r a c h t : H a l t e n Sie s i c h m i t
read_wordlist(Char,ListOfWords),
der V e r w e n d u n g spezieller K o n s t r u k t i o n e n ,
laubt
7.
7,
eine
Liste
von W o e r t e r n ,
7,
Zeichen Char i s t
read_wordlist(Char,["."])
Wenn
Sie I h r P r o g r a m m
die Ihr S y s t e m
später
einmal
tion sonst m e i s t s e h r g r o ß . V e r w e n d e n Sie a l s o n a c h M ö g l i c h k e i t
deren
erstes
nur die h i e r u n d d a r ü b e r h i n a u s vielleicht g e r a d e n o c h die in
[DECsystem-10 Prolog User's Manual] beschriebenen
:-
er-
a u f ei-
n e m a n d e r e n P R O L O G - S y s t e m v e r w e n d e n w o l l e n , ist d i e F r u s t r a -
read_wordlist(Char,WordList)
liest
zurück.
Prädikate.
:-
162
KAPITEL
11.
EINGEBAUTE
PRÄDIKATE*
D i e s e w e r d e n Sie in f a s t allen P R O L O G - S y s t e m e n f i n d e n .
Die Implementierung von Prädikaten zur E i n - und Ausgabe
¡1.7.
163
ÜBUNGEN
reverse ( [ ] , [ ] ) .
reverse([First|Rest],ReversedList)
:-
ist in P R O L O G oft e i n e e x t r e m kniffelige A n g e l e g e n h e i t . U m dem
reverse(Rest.ReversedRest),
P r o g r a m m i e r e r diese l ä s t i g e n u n d z e i t r a u b e n d e n A r b e i t e n zu er-
append([First].ReversedRest.ReversedList) .
l e i c h t e r n , b i e t e n viele S y s t e m e z u s ä t z l i c h w e i t e r e e i n g e b a u t e P r ä d i k a t e a n . L e s e n Sie d o c h einfach m a l i m H a n d b u c h z u Ihrem
S y s t e m n a c h , b e v o r Sie g r a u e H a a r e b e i m S c h r e i b e n e i n e r Benutzerschnittstelle für eines Ihrer P r o g r a m m e b e k o m m e n !
W e n n Sie S p e z i a l i t ä t e n Ihres P R O L O G - S y s t e m s
ausnützen,
s o l l t e n Sie d e r e n G e b r a u c h i m m e r g u t d o k u m e n t i e r e n u n d außerd e m d a r a u f a c h t e n , d a ß sie n u r i n n e r h a l b w e n i g e r P r ä d i k a t e vork o m m e n . D e r G r o ß t e i l des S y s t e m s sollte i m m e r in
Standard-
P R O L O G g e s c h r i e b e n sein.
Benutzen Sie d e n i m A b s c h n i t t 1 1 . 3 . 2 b e s c h r i e b e n e n T r i c k , u m ein
effizientes P r o g r a m m z u m U m d r e h e n e i n e r L i s t e z u s c h r e i b e n .
Übung 11.4
E r w e i t e r n Sie f ü r d a s P r o b l e m w e g s u c h e a u s K a -
pitel 5 die M e n g e d e r F a k t e n ü b e r m ö g l i c h e V e r b i n d u n g e n . L a s sen Sie z u , d a ß e i n z e l n e V e r b i n d u n g e n a u c h in d e r G e g e n r i c h t u n g
begangen w e r d e n k ö n n e n . U n t e r s u c h e n Sie d a s
von ? -
Ablaufverhalten
w e g s u c h e ( S t a r t , E n d e , Weg) . . W e l c h e s P r o b l e m ist e n t -
s t a n d e n ? W i e k ö n n t e d e m a b g e h o l f e n w e r d e n ? V e r b e s s e r n Sie d a s
Programm entsprechend.
11.7
Übungen
Übung 11.1
Ü b u n g 1 1 . 5 E r w e i t e r n Sie d a s P r ä d i k a t r e a d . s e n t e n c e a u s A b -
S c h r e i b e n Sie ein P r ä d i k a t , d a s e i n e L i s t e übersicht-
lich a u s g i b t , z . B . a u f j e d e r Zeile ein E l e m e n t . E i n P r o g r a m m , das
schnitt 1 1 . 5 s o , d a ß
b e s t i m m t e D a t e n s t r u k t u r e n in einer speziellen, g u t l e s b a r e n F o r m
1. zwischen W ö r t e r n beliebig viele L e e r z e i c h e n s t e h e n k ö n n e n
a u s g i b t , n e n n e n w i r pretty
2. S a t z z e i c h e n wie K o m m a , S e m i k o l o n , . . . i n n e r h a l b eines S a t -
printer.
zes v e r w e n d e t w e r d e n d ü r f e n . S a t z z e i c h e n sollen a l s eigenÜ b u n g 11.2
E r w e i t e r n Sie d a s P r ä d i k a t a u s Ü b u n g 1 1 . 1 s o , daß
Listenelemente, die w i e d e r u m Listen sind, g e n a u s o
aufbereitet
Ü b u n g 1 1 . 3 D a s folgende P r o g r a m m z u m U m d r e h e n einer Liste
w i r d oft a u c h „ n a i v e r e v e r s e " g e n a n n t , weil es u n m i t t e l b a r die
I d e e , wie eine L i s t e u m z u d r e h e n ist, in ein r e k u r s i v e s
Prädikat
u m s e t z t . L e i d e r b e n ö t i g t es e i n e n e n o r m e n R e c h e n a u f w a n d .
ständige W ö r t e r behandelt werden
3 . v o r d e m S a t z z e i c h e n a m S a t z e n d e b e l i e b i g viele L e e r z e i c h e n
Kapitel 12
Ein kleines Dialogsystem
In d i e s e m K a p i t e l wollen w i r ein kleines D i a l o g s y s t e m e n t w i c k e l n
u n d d a b e i die F r ü c h t e d e r A r b e i t d e r l e t z t e n K a p i t e l e r n t e n .
Es
soll gezeigt w e r d e n , w i e d i e e i n z e l n e n T e i l e , die w i r b e r e i t s k e n n e n ,
sinnvoll u n d e i n f a c h z u e i n e m g r ö ß e r e n G a n z e n z u s a m m e n g e s t e c k t
werden können.
U n s e r D i a l o g s y s t e m soll z . B . z u f o l g e n d e m
D i a l o g in d e r L a g e sein:
?-
dialog.
> ist
sokrates
sterblich?
nein
> a l l e menschen
ok
sind
sterblich,
philosophischen
166
KAPITEL
> sokrates
ist
12.
ein
EIN
KLEINES
mensch,
( p r o c e s s ) . Anschließend wird d a s Ergebnis ausgegeben
ok
> ist
sokrates
sterblich?
Mit der E i n g a b e ade kann der B e n u t z e r den Dialog beenden.
Wir w o l l e n s p ä t e r p r o c e s s
ist
sterblich?
j
sterblich?
Dialog b e e n d e t w i r d .
V o r A u f r u f des P r ä d i k a t s i n p u t e r z e u g e n wir m i t p r o m p t ein
ist
xanthippe
ein
mensch,
Symbol a u f d e m B i l d s c h i r m , d a s d e m B e n u t z e r a n d e u t e n soll, d a ß
er m i t d e r E i n g a b e a n d e r R e i h e ist. E i n s o l c h e s S y m b o l
sterblich?
man einen
nennt
Prompt.
a
> wer
ist
sokrates
>
Verarbeitung
von d i a l o g , in d e r n u r n o c h a d e a u s g e g e b e n w i r d u n d d a n n d e r
xanthippe
> xanthippe
ok
> ist
so r e a l i s i e r e n , d a ß die
von a d e ein fail e r g i b t . D i e s f ü h r t u n s d a n n in die z w e i t e K l a u s e l
sokrates
> ist
nein
(output)
und schließlich d e r D i a l o g v o n v o r n e b e g o n n e n .
ja
> wer
167
DIALOGSYSTEM
prompt
sterblich?
xanthippe
ade.
ade
: -
XI
is
">"
,
X2
is
"
,
"
put(XI),
put(X2).
D i e A u f g a b e b e s t e h t a l s o d a r i n , S ä t z e e i n z u l e s e n , z u e r k e n n e n , ob
es sich u m A u s s a g e s ä t z e o d e r F r a g e n h a n d e l t , b e i A u s s a g e n d e r e n
B e d e u t u n g abzuspeichern und Fragen entsprechend d e m vorhand e n e n W i s s e n zu b e a n t w o r t e n .
W i r können sofort das Prädikat d i a l o g
dialog
Zur
Realisierung
von
input
benutzen
wir
das
Prädikat
r e a d _ s e n t e n c e . D a d u r c h e r h a l t e n wir eine L i s t e v o n S t r i n g s . D a
u n s e r e P a r s e r a b e r e i n e L i s t e v o n A t o m e n als E i n g a b e e r w a r t e n ,
benutzen wir c o n v e r t zur U m w a n d l u n g . D a s letzte E l e m e n t
angeben:
der
L i s t e ist ein S a t z z e i c h e n . M i t d e l e t e _ l a s t l ö s c h e n w i r d i e s e s a u s
der L i s t e . D i e L i s t e o h n e d a s S a t z z e i c h e n ist die e i g e n t l i c h e E i n -
:-
prompt,
g a b e , die z u a n a l y s i e r e n ist. G l e i c h z e i t i g v e r w e n d e n w i r d a s S a t z -
input(Type,Input),
zeichen als K o d i e r u n g d e s T y p s d e r E i n g a b e ; e i n e F r a g e
nl,
i m m e r mit einem Fragezeichen, eine A u s s a g e m i t e i n e m
process(Type,Input,Output),
W i r b e e n d e n i n p u t m i t e i n e m cut,
Output(Output),
allen a n d e r e n E i n - u n d A u s g a b e p r ä d i k a t e n , u m ein d e t e r m i n i s t i -
nl,
sches P r ä d i k a t
dialog.
dialog
d a es sich g a n z k l a r , w i e bei
handelt.
input(Typ e,Input)
:-
endet
Punkt.
:-
read_sentence(ListOfStrings),
write(ade),
convert(ListOfAtoms.ListOfStrings),
nl.
delete.last(Type,ListOfAtoms,Input),
I
Mit
dialog
w i r d e i n e Schleife r e a l i s i e r t ,
in
der
zunächst
S a t z eingelesen wird ( i n p u t ) ; dabei wird gleich festgestellt,
ein
ob
e i n e A u s s a g e o d e r F r a g e vorliegt. D i e s e E i n g a b e w i r d v e r a r b e i t e t
Bei d e r V e r a r b e i t u n g d e r E i n g a b e s i n d z u n ä c h s t d r e i F ä l l e z u u n terscheiden:
KAPITEL
168
12.
EIN
KLEINES
DIALOGSYSTEM
169
der Datenbasis ab. D a m i t steht die Information s p ä t e r z u m B e -
1 . E n d e des Dialogs
antworten von Fragen zur Verfügung.
2 . B e a r b e i t u n g einer A u s s a g e
D i e d r i t t e K l a u s e l dient d a z u , bei e i n e m n i c h t - a n a l y s i e r b a r e n
3 . B e a r b e i t u n g einer F r a g e
S a t z d e m B e n u t z e r dieses U n v e r s t ä n d n i s k u n d z u t u n .
Z u r V e r a r b e i t u n g v o n A u s s a g e n u n d A n f r a g e n m ü s s e n w i r diese
Die vierte Klausel analysiert eine eingegebene F r a g e m i t d e m -
z u n ä c h s t syntaktisch analysieren u n d eine s e m a n t i s c h e R e p r ä s e n -
selben P a r s e r wie bei A u s s a g e n . D i e S e m a n t i k e r h ä l t m a n w i e d e r
t a t i o n a u f b a u e n . D a z u v e r w e n d e n w i r d e n i m K a p i t e l 1 0 entwickel-
als P R O L O G - F o r m e l . D i e s e w i r d a n d a s P r ä d i k a t p r o v e g e g e b e n ,
t e n P a r s e r , d e r gleichzeitig m i t d e r A n a l y s e e i n e l o g i s c h e F o r m e l
das e i n e n B e w e i s f ü r diese F o r m e l s u c h t .
D i e fünfte K l a u s e l ist w i e d e r f ü r n i c h t - a n a l y s i e r b a r e E i n g a b e n
in P R O L O G - N o t a t i o n f ü r d e n E i n g a b e s a t z e r z e u g t .
D a s d r i t t e A r g u m e n t v o n p r o c e s s ist d a s E r g e b n i s d e r V e r a r b e i t u n g . W i r g e h e n d a b e i v o n e i n e r L i s t e v o n A t o m e n a u s , d a bei
'/. E n d e
!,
'/,
B e i d e r B e a n t w o r t u n g v o n F r a g e n s i n d zwei F ä l l e z u u n t e r scheiden:
F r a g e n j a auch mehrere Antworten möglich sind.
process('.',[ade],_)
vorgesehen.
:-
fail.
Aussage
1.
Ja-Nein-Fragen
2.
Ergänzungsfragen
Diese F ä l l e sind leicht a u s e i n a n d e r z u h a l t e n , w e n n w i r u n s n o c h
process('.',In,[ok])
:-
e i n m a l d a s E r g e b n i s d e r S e m a n t i k k o n s t r u k t i o n für diese b e i d e n
s(Sem,In, []) ,
Fragetypen ansehen:
assert(Sem),
! .
7, A u s s a g e n i c h t
process
?-
analysierbar
s(Sem,[ist,sokrates,sterblich],[]).
Sem =
('.'.In,[wie,'bitte?']).
?-
(term(sterblich(sokrates)):-true)
s(Sem,[wer,ist.sterblich],[]).
Sem =
(term(sterblich(_067D)):-true)
7. F r a g e
process('?',In,Out)
:-
In b e i d e n F ä l l e n e r h a l t e n w i r ein F a k t , d . h . d e r R u m p f e n t h ä l t n u r
s ( S e m , I n , [] ) ,
das A t o m t r u e . B e i e i n e r J a - N e i n - F r a g e e n t h ä l t d e r K o p f k e i n e
prove(Sem,Out),
V a r i a b l e , bei e i n e r E r g ä n z u n g s f r a g e w i r d d a s , w o n a c h g e f r a g t i s t ,
! ,
d u r c h eine V a r i a b l e a u s g e d r ü c k t .
1
7. F r a g e n i c h t
analysierbar
W i r v e r w e n d e n d e s h a l b l i s t v a r , u m e i n e L i s t e aller V a r i a b l e n
processC?' ,In, [wie,'bitte?'] ) .
im K o p f zu e r h a l t e n . Ist diese L i s t e l e e r , h a n d e l t es sich u m e i n e
D a s E n d e des D i a l o g s wird d u r c h d i e E i n g a b e a d e a u s g e l ö s t . Die
e r s t e K l a u s e l p r ü f t diesen F a l l a b u n d e r z e u g t g e g e b e n e n f a l l s ein
fail.
Die
zweite
Klausel
analysiert
die
Eingabe,
eine
Aussage,
( s ( S e m , I n , [ ] ) ) u n d s p e i c h e r t die S e m a n t i k Sem m i t a s s e r t
in
Ja-Nein-Frage.
'Dies ist übrigens kein Programmiertrick, sondern durchaus auch linguistisch motivierbar. Ergänzungsfragen sind eben gerade so gebaut, daß nach
einem unbekannten Argument im Satz gefragt wird und das wird in der Semantik durch eine Variable ausgedrückt.
KAPITEL
170
12.
EIN
KLEINES
DIALOGSYSTEM
D i e B e a n t w o r t u n g einer F r a g e ist n u n g a n z e i n f a c h . B e i
171
Ja-
L i s t e v o n A t o m e n jeweils g e t r e n n t d u r c h ein L e e r z e i c h e n a u s g i b t :
N e i n - F r a g e n v e r s u c h e n w i r einen B e w e i s d e r F o r m e l , d i e d i e A n f r a g e r e p r ä s e n t i e r t . Dies geschieht d u r c h c a l l ( H e a d ) .
output([OnlyOne])
Falls der
B e w e i s gelingt, lautet die Antwort j a .
A n d i e s e r S t e l l e z a h l t es sich a u s , d a ß w i r a l s
semantische
Repräsentation der Eingabe P R O L O G - F o r m e l n
gewählt
S o k ö n n e n wir die g e s a m t e Lösungssuche d e m
PROLOG-Inter-
:-
write(OnlyOne),
Output([First IRest])
haben.
:-
write(First),
writeC
p r e t e r ü b e r l a s s e n u n d b r a u c h e n u n s d a r ü b e r n i c h t d e n K o p f zu
' ) ,
output(Rest) .
zerbrechen.
B e i einer Ergänzungsfrage könnten wir ebenfalls
D a m i t ist die R e a l i s i e r u n g u n s e r e s k l e i n e n D i a l o g s y s t e m s
call(Head)
b e n u t z e n u n d a l s E r g e b n i s die I n s t a n t i i e r u n g d e r V a r i a b l e n
higes P r o d u k t g e s c h a f f e n . F ü r ein r e a l i s t i s c h e s D i a l o g s y s t e m w ä r e
H e a d , d i e w i r m i t l i s t v a r b e s t i m m t h a b e n , z u r ü c k g e b e n . D a wir
viel m e h r A r b e i t n ö t i g . E s m ü ß t e v o r a l l e m i n d e n f o l g e n d e n B e -
a b e r alle m ö g l i c h e n I n s t a n t i i e r u n g e n a l s E r g e b n i s e r h a l t e n m ö c h -
r e i c h e n s e h r viel g e t a n w e r d e n :
t e n , w u r d e b a g o f v e r w e n d e t . Die A n t w o r t ist s o m i t d i e L i s t e aller
möglichen Lösungen.
1. M a n b e n ö t i g t ein u m f a n g r e i c h e s s y n t a k t i s c h e s F r a g m e n t d e r
Falls eine F r a g e nicht beweisbar ist, s c h e i t e r t d a s Unterbeweis-
Sprache u n d die zugehörigen S e m a n t i k k o n s t r u k t i o n s r e g e l n
ziel c a l l b z w . b a g o f . D a m i t s c h e i t e r t a u c h d i e j e w e i l i g e K l a u s e l
v o n p r o v e . In d i e s e m F a l l e e r h a l t e n w i r d u r c h d i e d r i t t e K l a u s e l
2. D i e I n t e r a k t i o n m i t d e r W i s s e n s b a s i s m u ß s e h r viel a u s geklügelter sein
die Antwort n e i n .
'/, A n t w o r t
'/,
3 . V e r n ü n f t i g e D i a l o g e sind n i c h t o h n e
u n d Dialogplanung
möglich
erzeugen
Ja-Wein-Frage
p r o v e (Sem, [ j a ] )
Sem =
5.
listvar(Head,ListOfVars),
=
[]
,
W a s a b e r bei u n s e r e m M i n i m a l s y s t e m d e u t l i c h w u r d e , ist, d a ß
Ergaenzungsf rage
prove(Sem,Result)
Sem =
m a n in P R O L O G m i t s e h r wenig A u f w a n d s c h o n ein f u n k t i o n i e -
:-
rendes S y s t e m , e i n e n Prototyp,
(Head:-true),
aufbauen kann. P R O L O G erlaubt
schnelles U m s e t z e n v o n I d e e n , d i e a u f l o g i s c h e r E b e n e b e r e i t s for-
listvar(Head,ListOfVars),
muliert sind o d e r leicht f o r m u l i e r b a r s i n d , i n e i n l a u f f ä h i g e s P r o -
ListOfVars
gramm. D u r c h Verbesserung einzelner K o m p o n e n t e n kann d a n n
=
[Var]
,
bagof(Var,call(Head),Result).
%
...
Die L i s t e ließe sich w a h r s c h e i n l i c h beliebig f o r t s e t z e n .
call(Head) .
'/,
Benutzermodellierung
4 . W i r b r a u c h e n eine „ r i c h t i g e " G e n e r i e r u n g
(Head:-true),
ListOfVars
abge-
schlossen. N a t ü r l i c h h a b e n w i r d a m i t kein i n d e r P r a x i s e i n s a t z f ä -
in
keine Antwort
gefunden,
also
die L e i s t u n g s f ä h i g k e i t n a c h u n d n a c h e r h ö h t w e r d e n . M a n s p r i c h t
"nein"
sagen
v
,
prove(Sem,[nein]).
deshalb oft v o n rapid
prototyping.
Diese E i g e n s c h a f t ist eine der
großen S t ä r k e n v o n P R O L O G , d i e z u r r a s c h e n V e r b r e i t u n g dieser
A l s l e t z t e T e i l a u f g a b e bleibt n u r n o c h die A u s g a b e d e r E r g e b n i s s e
P r o g r a m m i e r s p r a c h e a u c h ü b e r d e n U n i v e r s i t ä t s b e r e i c h h i n a u s in
ü b r i g . D a z u s c h r e i b e n w i r d a s P r ä d i k a t O u t p u t , d a s einfach
den E n t w i c k l u n g s l a b o r s d e r I n d u s t r i e g e f ü h r t h a t .
e i n
*».;
Anhang A
Lösungen
Für die meisten Übungen finden Sie hier Lösungsvorschläge. In der Regel
ist die angegebene Lösung nicht die einzig mögliche, oft auch nicht die
bestmögliche. W i r möchten hier lediglich Vorschläge machen, die weiterhelfen, wenn Sie beim Bearbeiten der Übungen mal nicht weiterkommen
oder unsicher sind.
174
ANHANG
A.
175
LOSUNGEN
Einführung
1.2
• die Verschachtelung von Strukturen sollte die hierarchische Beziehung zwischen diesen Strukturen widerspiegeln.
W i r wählen wieder „sprechende" Prädikatsnamen, um die inten-
dierte Bedeutung eines Prädikats schon beim Lesen seiner Definition
nahezulegen:
'/, L o r e und Gerd s i n d
1.
verheiratet(annette,Johann).
2.
enthaelt(ottos-schreibtisch,
Schreibmaterial(anzahl(Kugelschreiber,
verheiratet
5),
verheiratet(lore.gerd).
anzahl(blaetter,
verheiratet(gerd.lora).
57)),
sonstiges(anzahl(Zeitschrift enartikel,
'/. X i s t G r o s s v a t e r von Y
grossvater(X.Y)
8),
:-
anzahl(flaschenoeffner,
vater(X.Z),
1))).
vater(Z,Y).
7, auch d e r V a t e r d e r M u t t e r i s t
grossvater(X.Y)
ein
Grossvater
3.
kategorien(verben(einstellige.verben,
:-
zweistellige-verben,
vater(X.Z),
dreistellige-verben,
mutter(Z.Y).
vierstellige.verben),
nomen,
7, wer wen l i e b t
adj ekt ive (praenominale.ad j ekt i v e ,
liebt(lore,gerd).
praedikative.adjektive),
liebt(gerd,lore).
praepositionen,
liebt(gitte.fido).
artikel,
adverben,
Partikel).
Strukturen
2.1
1.
Fido
Variable
2.
nummer-24
Atom, und damit auch a t o m a r
3.
hallo.jungs
4.
h a l l o (Jungs)
Atom, und damit auch a t o m a r
komplexer Term
5.
Jungs
Variable
6.
X
Atom, und damit auch a t o m a r
7.
Y
Variable
2.2
Unifikation
3.1
1.
2.
?no
4.
turen zueinander in Beziehung setzen,
? - X = Y.
yes
3.
volle Darstellungen sind:
• „einleuchtende" Wahl der Prädikate und Funktoren, die Teilstruk-
. = X.
X = Y
Folgende Lösungen sind nur Vorschläge. Es gibt, wie immer sehr
viele Möglichkeiten, die Dinge darzustellen. Gewisse Kriterien für sinn-
?-
yes.
?-
a(X,Y,Z)
= a(q,U).
'/, v e r s c h i e d e n e S t e l l i g k e l t e n f u e r
a(X,Y,Z)
X =W
Y = P
= a(W,P,t).
a
ANHANG
176
z
A.
LOSUNGEN
= t
Beweisverfahren
yes
?-
a(b(C))
no
A
X
Y
8.
4.2
= b(a(C)).
% Funktoren
?-
177
verschieden
obst(X)
:-
pflanze(Y),
fl(f2(f3,f4),f5(f6,X,Y),g)
fl(A,f5(B,f7,f8),H).
frucht.von(Y,X) ,
= f2(f3,f4)
= f7
= f8
essbar(X).
pflanze(apfelbaum).
pflanze(kaktus).
H = g
yes
pflanze(himbeerstrauch).
? - X = X.
pflanze(hundsrose).
yes
frucht.von(apfelbaum,apfel).
?- f(X)
pflanze(stachelbeerstrauch).
frucht-vonCkaktus,feige).
= X.
Diese beiden Terme sind nicht unifizierbar. Die meisten
han-
frucht.vonChimbeerstrauch.himbeere) .
delsüblichen P R O L O G - S y s t e m e kommen jedoch mit dieser Art
frucht-von(Stachelbeerstrauch,Stachelbeere) .
von Anfrage nicht zurecht, sondern geraten in eine „unendliche"
frucht.von(hundsrose,hagebutte) .
Schleife, weil sie aus Effizienzgründen auf den occur check verzich-
essbar(apfel).
ten. Das heißt, es wird nicht überprüft, ob eine Variable im lin-
essbar(feige).
ken und rechten Term auf verschiedenen Einbettungsebenen vor-
essbar(himbeere).
kommt. Die Konsequenz ist, daß „sich die K a t z e in den Schwanz
essbar(Stachelbeere).
beißt" und versucht wird, eine in sich selbst eingebettete („zir4.3
kuläre") Struktur aufzubauen.
huhn(X)
:-
ei(Y).
ei(X)
:-
huhn(Y).
Beide möglichen Anfragen führen in eine unendliche
9.
?- fl(f2(f3,f4),f5(f6,X,Y),g)
no
10.
11.
12.
X verschiedene S t e l l i g k e i t e n f ü r
?- a = a(X,Y).
no
Ä Atom und komplexer Term n i c h t
?-
a = a.
Schleife:
= f l ( A , f 5 ( B , f 7 ) ,H) .
f5
unifizierbar
?-
huhn(Welches).
?-
ei(Welches).
Rekursion
yes
5.2
Eine mögliche Lösung:
? - qwertz = qwerty.
no
X zwei v e r s c h i e d e n e Atome
gruppe(mitarbeiterinnen(Johanna,emilie ,sof i a ) ) .
gruppe(mitarbeiterinnen(helena,Ott i l i e ,
178
ANHANG
A.
179
LÖSUNGEN
josephine,Jacqueline)).
delete(Element,AlteListe,NeueListe).
l
gruppe(mitarbeiterinnen(evelin,hermine)).
X
chefin(verena).
chefin(magdalena).
X
-
chef in(manuela) .
I
X
X
X
-
chefin(caroline).
firma(hierarchie(Chefin,Hitarbeiterinnen)):chefin(Chefin),
I n e i n e r l e e r e n L i s t e i s t n i c h t s zu
Element,
delete(_, [ ] , [ ] ) .
gruppe(Mitarbeiterinnen).
delete(Element,[Element IRest],Rest).
delete(Element,[ElementII Rest],[Elementl|NeuerRest]):-
firma(hierarchie(Chefin,Hierarchiel,Hierarchie2)):chefin(Chefin),
X h i e r m u e s s t e e i g e n t l i c h noch
ausgeschlossen
firma(Hierarchiel),
X werden, d a s s Element = Elementl
firma(Hierarchie2).
delete(Element,Rest,NeuerRest).
5.4
loeschen.
I s t das e r s t e Listenelement das passende
loesche es
- P a s s t das e r s t e Element n i c h t ,
l o e s c h e d a s E l e m e n t aus d e r R e s t l i s t e
Läßt man zu, Wege in beiden Richtungen zu durchlaufen, ist
6.3
Das Prädikat r e p l a c e ist wiederum eine Erweiterung von d e l e t e
es natürlich möglich, im Kreis zu gehen. U m solche Zyklen zu ver-
um ein viertes Argument, nämlich das Element, das s t a t t des gelöschten
meiden, müßte das Prädikat so erweitert werden, daß es nachprüft,
Elements eingesetzt wird.
ob eine „neue" Station auf dem Weg zum Ziel nicht bereits im schon
zurückgelegten Weg enthalten ist und diesen Pfad dann ausschließt.
X
D a für die eigentliche P R O L O G - L ö s u n g dieses Problems P R O L O G -
X
Sprachkonstrukte benötigt werden, die erst später eingeführt werden,
X
wird hier auf die Lösung der Übungsaufgabe 11.4 verwiesen.
X
- I n e i n e r l e e r e n L i s t e i s t n i c h t s zu
X
- Ist
X
5.5
X
term(argvunent) .
X
term(functor(Argument)) :-
replace(AltesElement.NeuesElement,
AlteListe.NeueListe).
das e r s t e Listenelement
Element,
ersetze
ersetzen.
das p a s s e n d e
es.
- P a s s t das e r s t e Element n i c h t ,
e n t s p r e c h e n d e E l e m e n t aus d e r
ersetze
das
Restliste
replace^,., [ ] , [ ] ) .
replace(Element.NeuesElement,
term(Argument).
[Element I R e s t ] , [ N e u e s E l e m e n t I R e s t ] ) .
Listen
replace(Element.NeuesElement,
[ElementlIRest], [ElementlINeuerRest])
6.1
X h i e r m u e s s t e e i g e n t l i c h noch
X werden, d a s s Element = E l e m e n t l
ersetze4(NeuesViertesElement,
replace(Element.NeuesElement,Rest.NeuerRest).
[Erstes.Zweites.Drittes,.
IRest],
6.4
[ E r s t e s . Z w e i t e s . D r i t t e s .NeuesViertesElement
IRest]).
6.2
Arbeitet analog dem Prädikat e l e m e n t ,
:-
ausgeschlossen
Das Prädikat f ahndung macht nichts anderes, als sich den Daten-
satz zu einer Person zu holen und zu testen, ob das gewünschte Merkmal
in diesem Datensatz vorhanden ist.
allerdings mit einer '
zusätzlichen Abbruchbedingung, nämlich für die leere Liste.
**"
fahndung(Merkmal,Datensatz)
:-
ANHANG
180
A.
LÖSUNGEN
181
person(Datensatz),
element(Merkmal,Datensatz).
(f)
Geldstücke
2. Abbildungen
6.5
X
y.
reverse(Liste,Etsil).
- Eine l e e r e L i s t e i s t Spiegelbild i h r e r
'/,
- Bei einer nicht leeren
Die Abbildungen zwischen den verschiedenen Objekten sind bereits in der Aufgabenstellung definiert.
selbst
Realisierung:
Liste:
1. Darstellung der Objekte in P R O L O G
'/,
d r e h e i h r e R e s t l i s t e um, h a e n g e
'/.
d a s e r s t e Element an d i e u m g e d r e h t e
reverse([ ] , [ ] ) .
r a v e r s a ( [Erstes I Rest].UmgedrehteListe)
reverse(Rest,UmgedrehterRest),
Restliste
:-
(a)
zauberstab(StabFarbe,GriffFarbe.Spitze)
(b)
drei-rote.tuecher
(c)
hase(Farbe,OhrenFarbe,AugenFarbe)
(d) mit ( F a r b e )
append(UmgedrehterRest, [ E r s t e s ] . U m g e d r e h t e L i s t e ) .
Programmiertechnik
(e)
muetze(Farbe)
(f)
geldstuecke
2. Die Beziehungen in P R O L O G formuliert:
7.1
Z a u b e r e r ( O b j ekt,VerzaubertesObj e k t ) : -
permute(Liste, [ErstesElement|Rest]):-
Zauberer1(Objekt.VerzaubertesObjekt) .
append(Listel,[ErstesElement|Liste2].Liste) ,
Zauberer(Objekt,VerzaubertesObjekt):-
append(Listel,Liste2,Liste3),
zauberer2(0bjekt,VerzaubertesObjekt) .
permute(Liste3,Rest).
p e r m u t e ( • , • ) . / * Abbruchbedingung
Zauberer(Objekt.VerzaubertesObjekt):-
*/
zauberer3(Objekt.VerzaubertesObjekt) .
append(D . L i s t e , L i s t e ) .
append([ErstesElementIRest] ,
zaubererl(zauberstab(gelb,_,.),
Liste,
drei-rote_tuecher) .
[ErstesElementiListel]):-
zauberer2(hase(schwarz,weiss,blau),
append(Rest,Liste,Listel).
hase(weiss,weiss,rot)).
7.2
Konzeptioneller
Entwurf.
zauberer2(hase(braun,_,-)).VerzaubertesObjekt):zauberer3(hut(blau).VerzaubertesObjekt) .
1. Welche Objekte treten auf?
zauberer3(muetze(gelb),hut(schwarz)) .
zauberer3(muetze(gelb),geldstuecke).
( a ) Zauberstäbe: gelbe Zauberstäbe, grüne Zauberstäbe mit
zauberer3(hut(blau),
schwarzem Griff und weißer Spitze
zauberstab(gruen,schwarz,weiss)).
( b ) Mengen von roten Tüchern
( c ) Hasen: Hasen mit weißen Ohren und blauen Augen, weiße
Hasen mit weißen Ohren und
( d ) Hüte: blaue und schwarze
( e ) Mützen, gelbe
Toten
7.3
Konzeptioneller
Entwurf
Augen, braune Hasen
1. Klassen von Objekten:
( a ) Nomina: k a t z e , maus
182
ANHANG
A.
183
LOSUNGEN
( b ) Artikel: d i e , e i n e r
Deflnite Clause
Grammars
( c ) Präposition: n a c h
9.1
( d ) Verb: s u c h t
schen Subjekt-NP und V P gesorgt werden und für die Übereinstimmung
2. Verbindungen zwischen Objekten:
( a ) Ein Nomen bildet für sich schon eine Einheit.
( b ) Ein Artikel benötigt rechts von sich ein Nomen, um eine
von Numerus zwischen D E T und N beim Aufbau einer NP. W i r verwenden einen Term a g r (NUH, PER), dessen erstes Argument für die Kodierung der Numerusinformation und das zweite für die Person verwendet
wird.
Nominalphrase darzustellen.
s
np(AGR) — > n(AGR).
phrase, um eine Präpositionalphrase zu bilden.
vp(AGR) — > v(AGR), n p ( _ ) .
( d ) Ein Verb wie sucht benötigt rechts von sich eine Präpositio-
vp(AGR) — > v(AGR).
nalphrase und links von sich eine Nominalphrase, um einen
Satz zu bilden.
— > [mary] .
— > [woman] .
n(agr(sg,3))
Realisierung
n(agr(sg,3))
Objekte
W ö r t e r sind A t o m e . Phrasen sind Listen von W ö r t e r n . Wort- oder
n(agr(pl,3))
— > [women].
n(agr(sg,D)
—> [ i ] .
—> [ y o u ] .
n(agr(sg,2))
Phrasenklassen werden durch Prädikate dargestellt.
2. Die
— > np(AGR), vp(AGR)
np(AGR) — > d e t ( A G R ) , n(AGR)
( c ) Eine Präposition benötigt rechts von sich eine Nominal-
1. Die
Es muß für die Übereinstimmung von Person und Numerus zwi-
7.
...
Verbindungen
det(agr(_,3))
--> [the] .
n(katze).
n(maus).
det(agr(sg,3))
—> [ a n ] .
np([Artikel,Nomen]):-
v(agr(sg,3))
--> [loves] .
--> [love] .
v(agr(sg,l))
artikel(Artikel),
—> [ l o v e ] .
--> [love] .
v(agr(sg,2))
n(Nomen).
v(agr(pl,J)
pp( [ P r a e p o s i t i o n l N P h r a s e ] ) : artikel(Artikel),
np(NPhrase).
9.2
artikel(die) .
ben vorsehen und darüber hinaus Fälle, in denen beides möglich ist.
7.
...
W i r wollen die Möglichkeit von transitiven und intransitiven Ver-
artikel(einer).
Dazu erweitern wir die Verbeinträge der D C G aus Übung 9.1 um ein
s(Satz):-
weiteres Argument.
np(NPhrase),
verb(Verb),
pp(PPhrase),
appand(NPhrase,[VerblPPhrase] . S a t z ) .
verb(sucht).
vp(AGR) — > v ( A G R . t r a n s ) ,
vp(AGR) — >
np(_).
v(AGR,intrans).
v(agr(sg,3).intrans)
—>
[sleeps] .
v(agr(sg,l),intrans)
—>
[sleep] .
184
ANHANG
—>
v ( a g r ( p l , _ ) , i n t r a n s ) —>
v(agr(sg,3),trans)
—>
—>
v(agr(sg,l),trans)
—>
v(agr(sg,2),trans)
—>
v(agr(pl,_),trans)
-->
v(agr(sg,3),_)
v(agr(sg,l),_)
—>
—>
v(agr(sg,2),_)
v(agr(pl,_),_)
—>
v(agr(sg,2).intrans)
9.3
A.
LÖSUNGEN
[sleep]
[sleep]
[likes]
185
k
Eingebaute
11.1
[like] .
pp.list(D).
[like] .
pp.list([FirstIRest])
[like] .
write(First),
[sings]
nl,
pp.li3t(Rest).
[sing] .
11.2
pp_list(List)
:-
pp.list(O.List).
Erkennen einer Folge von a und b genau diese Folge in einer Liste aufzusammeln. Die zweite Folge muß dann einfach identisch sein.
s —>
:-
[sing] .
[sing].
Die D C G für diese Sprache verwendet ein A r g u m e n t dafür, beim
s —> a b ( X ) , c ,
Prädikate
pp_list(Tab, • ) .
pp.list(Tab, [First 1Rest])
ab(X).
:-
pp_elem(Tab,First),
c.
pp.list(Tab,Rest).
ab([X])
-->
ab([X])
—> b ( X ) .
a(X).
pp_elem(Tab,[First 1 Rest])
ab([X|Y])
--> a(X),
ab(Y).
ab([X|Y])
—> b ( X ) ,
ab(Y).
a(a)
-->
[a] .
b(b)
—>
[b].
c
-->
[c].
:-
NewTab i s Tab + 3 ,
pp.list(NewTab,[First IR e s t ] ) .
pp.elem(Tab.X)
:-
tab(Tab),
write(X),
nl.
11.3
Deutsch statt
PROLOG
reverse(List.Tsil)
7.
reverse(G .Tsil.Tsil).
Entscheidungsfrage
s(SStruktur)
:-
reverse(List, • ,Tsil).
10.2
reverse([FirstIRest],In,Out)
—>
:-
r e v e r s e ( R e s t , LFirst I In] , 0 u t ) .
kopula,
np(NPStruktur),
11.4
Läßt man zu, Wege in beiden Richtungen zu durchlaufen, ist es
praedikatsnomen(PraedNStruktur),
natürlich möglich, im Kreis zu gehen. U m solche Zyklen zu vermeiden,
{ k o n s t r u i e r e - s (NPStrukur, P r a e d N S t r u k t u r , S S t r u k t u r ) } .
muß das Prädikat so erweitert werden, daß es nachprüft, ob eine „neue"
7.
'«er»
eigenname((term(-,_) : - t r u e ) )
Station auf dem Weg zum Ziel nicht bereits im schon zurückgelegten Weg
—>
[wer].
enthalten ist und diesen Pfad dann ausschließt. Dazu m u ß w e g s u c h e um
ANHANG
186
A.
LÖSUNGEN
ein A r g u m e n t erweitert werden, auf welchem die Information über den
eliminate.empty(ListOfWords,Sentence) ,
zurückgelegten Weg aufgesammelt wird. So eine Argumentstelle wird
auch Akkumulator
genannt. Der Gesamtweg wird jetzt in der verkehrten
Reihenfolge angegeben. Aufgerufen wird das Prädikat zum Beispiel so:
?-
wegsuche(bahnhof,uni.bahnhof,Weg).
read_wordlist(punctuation(Word),[WordlRestOfWordList])
skip(Char),
Beispiellösung:
'/.
Am Z i e l p u n k t i s t d e r z u r u e c k g e l e g t e Weg g l e i c h dem Gesamtweg
wegsuche(Punkt,Punkt,Weg,Weg).
'/.
read_wordlist(end_of.sentence(Word), [Word]).
Rekursiver
:-
weg(Anfangspunkt.NaechsterPunkt),
not(liegt.auf(NaechsterPunkt,GegangenerWeg)),
wegsuche(NaechsterPunkt,
GesamtWeg).
'/.
e i n Punkt l i e g t
Char i s
"
:-
",
read_word(Char, • ,end_of.sentence(Word))
weg(NaechsterPunkt.GegangenerWeg),
prueft,
read_word(Char, • .NextChar)
skip(NextChar).
Endpunkt,
'/.
read_word(Char, • ,punctuation(Word))
:-
punctuation(Char.Word).
ob e i n Punkt auf dem Weg l i e g t :
Der Punkt l i e g t
auf s i c h
selbst
t a t s ä c h l i c h auf dem Weg
liegt.auf(Punkt,weg(Punkt,.)).
'/.
Der Punkt l i e g t
v i e l l e i c h t noch a u f dem RestWeg
l i e g t . a u f (Punkt,weg(-.RestWeg))
:-
liegt.auf(Punkt,RestWeg).
11.5
:-
end.of_sentence(Char,Word).
read_word(Char,[Char|RestOfWord].FirstCharOfNextWord)
getO(NextChar),
read.word(NextChar,RestOfWord,FirstCharOfNextWord) .
liegt.auf(Punkt.Punkt).
'/.
: -
read.wordlist(FirstCharOfNextWord,RestOfWordList) .
Schritt
l i e g t . a u f (Punkt,Weg)
read.wordlist(Char,[FirstWordIRestOfWordList])
read_word(Char,FirstWord,FirstCharOfNextWord),
wegsuche(Anfangspunkt ,Endpunkt ,GegangenerWeg ,GesamtWeg)
'/.
read.wordlist(Char.RestOfWordList).
W i r definieren zunächst ein Prädikat s k i p , das beliebig viele
Leerzeichen überliest bis ein anderes Zeichen gefunden wird. Dieses
wird dann abgeliefert. Wenn wir dann getO durch s k i p ersetzen, haben wir bereits fast alles geschafft. Das einzige Problem besteht da-
skip(Char)
:-
Space i s "
",
repeat,
getO(Char),
Char \= S p a c e .
end.of.sentence(Char,".")
:-
Char
end.of_sentence(Char,"?")
:-
Char i s
"?".
end.of_sentence(Char,"!")
:-
Char i s
"!".
punctuation(Char,",")
: - Char
is
Fall erhalten wir „leere" W ö r t e r ( [ ] ) . W i r schreiben uns ein Prädikat
punctuation(Char,";")
: - Char
is
e l i m i n a t e . e m p t y , das solche leeren W ö r t e r wieder entfernt. Insgesamt
punctuation(Char,":")
: - Char
is
erhalten wir folgendes P r o g r a m m :
punctuation(Char,"-")
: - Char
is
read.sentence(Sentence)
e l i m i n a t e . e m p t y ( • , [] ) .
rin, daß auch vor Satzzeichen Leerzeichen auftreten können. In diesem
:-
skip(Char),
read.wordlist(Char.ListOfWords),
e l i m i n a t e _ e m p t y ( [ [ ] 1R] ,RR)
:-
is
188
ANHANG
A.
LÖSUNGEN
eliminate_empty(R,RR).
e l i m i n a t e . e m p t y ( [ F I R ] , [FI RR] )
: -
F \- • .
eliminate_empty(R,RR).
Anhang B
Glossar
Die Begriffe werden nicht unbedingt in ihrer allgemeinen Bedeutung
erklärt, sondern in Bezug auf ihre Verwendung im P R O L O G - J a r g o n .
anonyme Variable
Variable, deren Name und Wert keine Rolle spie-
len; geschrieben als Unterstrich
Argument
Substruktur auf erster Einbettungstiefe in einem P r ä d i k a t .
In v a t e r ( g e r d , g i t t e ) sind die Argumente g e r d und g i t t e
Atom
nicht weiter zerlegbare Struktur; z . B . g e r d , g i t t e
atomare Struktur
Aufruf
A t o m e und Zahlen
der Versuch, eine Zielklausel aus einer Menge von P r o g r a m m -
klauseln zu beweisen
Aussage
Beschreibung eines Sachverhaltes, der wahr oder falsch ist;
z . B . „Sokrates ist sterblich"
Axiom
Aussage, die als wahr vorausgesetzt wird
Backtracking
Zurücksetzen (des Beweisganges) an den letzten Ver-
zweigungspunkt, um eine weitere Alternative zu versuchen
#
Beweis
(wiederholte) Verknüpfung von Programmklauseln nach dem
Schema einer logischen Schlußregel, um die Gültigkeit einer Zielklausel zu zeigen
Compiler
P r o g r a m m , das andere P r o g r a m m e in eine „niedrigere"
Programmiersprache übersetzt, damit sie effizienter ausgeführt
werden können
Datenbasis
siehe Wissensbasis
190
ANHANG
DCG
B.
GLOSSAR
191
Definite Clause G r a m m a r
debugging
mit Funktor k r e u z t und den Argumenten f r i e d r i c h s t r
Suchen und Entfernen von Fehlern aus einem P r o g r a m m
definite Klausel
siehe Programmklausel
Definite Clause G r a m m a r
Konjunktion
sers für diese Grammatik übersetzt wird
Dialekt
Variante einer Programmiersprache. Verschiedene P R O L O G -
Dialekte unterscheiden sich vor allem bezüglich Notation und A r t ,
Konklusion
Kopf
Verknüpfung zweier Aussagen mit „oder"; die Disjunk-
Fakt
„Logical Inferences Per Second"; ein Maß für die Geschwindigkeit von Beweisen in verschiedenen P R O L O G - S y s t e m e n
Literal
negiertes oder nicht-negiertes Prädikat; ein nicht-negiertes Li-
teral heißt positiv, ein negiertes
tion „A oder B " ist falsch, wenn A und B falsch sind; in P R O L O G
fail
Kopf einer Regel
positives Literal
LIPS
Name und/oder Bedeutung der eingebauten Prädikate
Disjunktion
logische Verknüpfung von Formeln mit „ u n d " ; die Kon-
junktion „A und B " ist wahr, wenn A und B wahr sind
Kodierung einer G r a m m a t i k , die von
P R O L O G direkt in eine Menge von Programmklauseln eines Par-
nur durch Angabe zweier Klauseln möglich
match
1. Scheitern eines (Teil-)Beweises 2. eingebautes P r ä d i k a t , das immer scheitert
Modus Ponens
Klausel, die nur aus dem Kopf besteht, also eine Aussage, die
bedingungslos gültig ist
Funktor
siehe Unifikation
Schlußregel, die es erlaubt ein F a k t und die Bedin-
der Regel als bewiesen abzuleiten
Negation
die Negation „nicht A " einer Aussage A gilt, wenn A nicht
gilt; in P R O L O G nur eingeschränkt möglich
Hornklausel
Konjunktion von Literalen, die höchstens ein positives
Literal enthält
Implikation
Umsetzung eines Problemlöseverfahrens in ein
Verknüpfung zweier Aussagen mit „wenn, d a n n " ; die Im-
Parameter
siehe Argument
Prädikat(sdefinition)
Prämisse
Rumpf einer Regel
plikation „wenn A, dann B " ist falsch, wenn A wahr und B falsch
ist; Implikationen werden bei der Anwendung von Schlußregeln
Programmklausel
benutzt; in P R O L O G wird Implikation „rückwärts" geschrieben:
B :- A
Instantiierung
Unifikation einer Variablen mit einem Term; dadurch
erhält die Variable einen „ W e r t " zugeordnet
Interpreter
P r o g r a m m , das andere P r o g r a m m e ausführt, ohne sie zu-
Prozedur
Regel
Klausel, die aus einem Kopf und einem R u m p f , der nicht t r u e
ist, besteht
gensatz zu Compiler)
Rekursion
komplexer Term
ist
kreuzt(friedrichstr,kronenstr)
ein zweistelliger
Beziehung zwischen Strukturen
Resolution
mindestens zweistufige hierarchische S t r u k t u r , z . B .
Term
für P R O L O G gleichbedeutend mit Beweis
manchmal s t a t t Prädikatsdefinition verwendet
Relation
Konjunktion von Literalen; ein Fakt oder eine Regel
Konjunktion von Literalen, die genau ein positi-
ves Literal enthalten, auch Regeln und Fakten genannt
vor in eine „niedrigere" Programmiersprache zu übersetzen (GeKlausel
eine Menge von Programmklauseln
Programmlauf
einzelner Beweisschritt; Anwendung einer Schlußregel
Bündel von Programmklauseln, deren Köpfe
hinsichtlich Prädikatsname und Steifigkeit übereinstimmen
Programm
Inferenz
negativ
gung im Rumpf einer Regel zu verknüpfen und daraus den K o p f
der Name einer Struktur; siehe auch komplexer T e r m
Implementierung
Programm
und
kronenstr
siehe Rekursion
syntaktische Schlußregel dia auf dem „Modus P o n e n s "
basiert; wird von der PROLOG-Inferenzmaschine verwendet
Rumpf
Liste von negativen Literalen; Bedingungen; Voraussetzungen
192
ANHANG
Schlußregel
B.
GLOSSAR
Vorschrift, wie aus einem oder mehreren gültigen Aus-
sagen weitere gültige Aussagen abgeleitet werden dürfen; oft auch
Schlußschema
Steifigkeit
genannt
Zahl der Argumente
Struktur
siehe Term
Suchraum
Ein P R O L O G - P r o g r a m m
spannt einen Suchraum
auf
durch die Hierarchie oder das Netz von Alternativen, die durch
Literaturverzeichnis
die Klauseln in einem Prädikat vorgegeben sind
System
meist: größere Anzahl von zusammenarbeitenden
Program-
men. Ein P R O L O G - S y s t e m besteht zum Beispiel mindestens aus
einem Interpreter und einer Menge von Systemprädikaten
Systemprädikat
„eingebaute" Prädikate; P r ä d i k a t e , die dem Benut-
zer vom P R O L O G - S y s t e m zur Verfügung gestellt werden
Term
grundlegende Datenstruktur in P R O L O G ; es gibt drei Arten
von Termen: Atomare Terme, Variablen und komplexe Terme.
trace
Protokoll des Programmlaufs.
Unifikation
Variable
Identisch-Machen von Termen
Platzhalter für beliebige Struktur
Verzweigungspunkt
Stelle in einem Suchraum, an dem eine E n t -
scheidung zwischen mehreren Alternativen zur Weitersuche nötig
ist
Wissensbasis
Zielklausel
Menge der Programmklauseln
negatives Literal, das also nicht unter die Menge der P r o -
grammklauseln fällt
[Belli 1986] Belli, F. ( 1 9 8 6 ) : Einführung in die logische Programmierung
mit P R O L O G . Bibliographisches Institut, Mannheim.
[Bonevac 1987] Bonevac, D. ( 1 9 8 7 ) : Deduction. Introductory Symbolic
Logic. Mayfield Publishing Company, P a l o Alto, California.
[Bratko 1987] Bratko, I. ( 1 9 8 7 ) : P R O L O G . Programmierung für künstliche Intelligenz. Addison-Wesley, Bonn.
[Clark/McCabe 1987] Clark, K . L . und F . G . M c C a b e ( 1 9 8 7 ) : MicroP R O L O G . Logische Programmierung. Mit Beiträgen von M.H. van
Emden, J . R . Ennals, S. Gregory, P. H a m m o n d , R . A . Kowalski, F .
Kriwaczek, M . J . Sergot. Oldenbourg Verlag, München.
[Clocksin/Mellish 1987] Clocksin, W . F . und C S . Mellish ( 1 9 8 7 ) : Programming in P R O L O G . 3rd edition, Springer-Verlag, Berlin.
[Conlon 1985] Conlon,
T.
(1985):
Start
Problem-Solving
with
P R O L O G . Addison-Wesley, Reading, Mass.
[Cordes et al. 1988] Cordes, R.; R . Kruse; H. Langendörfer; H. Rust
( 1 9 8 8 ) : P R O L O G . Eine methodische Einführung. Vieweg, Braunschweig.
[DECsystem-10 Prolog User's Manual] D e p a r t m e n t of Artificial Intelligence, University of Edinburgh, Edinburgh, Scotland.
[Dickenberger 1987] Dickenberger, U. ( 1 9 8 7 ) : W i e die Alten den Tod
bedichten. Die Inschriften des S t u t t g a r t Hoppenlau-Friedhofs. Magisterarbeit, Institut für Literaturwissenschaft, Universität Stuttgart.
[Gazdar/Mellish 1987] Gazdar, G. and C. Mellish ( 1 9 8 7 ) : Natural Language Processing In P R O L O G . A n Introduction T o Computational Linguistics. New Horizons in Linguistics 2. E d . by John Lyons,
194
LITERATURVERZEICHNIS
LITERATURVERZEICHNIS
Richard C o a t e s , Gerald Gazdar and M a r g a r e t Deuchar. Penguin
[Schöning 1987] Schöning, U. ( 1 9 8 7 ) : Logik für Informatiker. Bibliographisches Institut Wissenschaftsverlag, Mannheim. Reihe Informa-
Books.
[Giannesini et al. 1988] Giannesini, F.; H. Kanoui; R . Pasero und M.
van Caneghem ( 1 9 8 8 ) : P R O L O G . Addison-Wesley, Bonn.
tik, Band 56.
[Sterling/Shapiro 1988] Sterling, L. und E . Shapiro ( 1 9 8 8 ) : P R O L O G .
Fortgeschrittene Programmiertechniken. Addison-Wesley, Bonn.
[Hanus 1987] Hanus, M. ( 1 9 8 7 ) : Problemlösen mit P R O L O G . Teubner,
Stuttgart.
[Walker et al. 1987] Walker, A., M. M c C o r d , J . F . Sowa und W . G . Wilson ( 1 9 8 7 ) : Knowledge Systems and P R O L O G . A Logical Approach
[Holland 1986] Holland, G . (19S6): Problemlosen mit m i c r o - P R O L O G .
Teubner, S t u t t g a r t .
( 1 9 8 8 ) : P R O L O G . Grundlagen und Anwendungen. Leitfäden der
angewandten Informatik, Teubner Verlag, S t u t t g a r t , 2. Auflage.
[Kluzniak/Szpakowicz 1985] Kluzniak, F . und S. Szpakowicz
(1985):
P R O L O G for Programmers. Academic Press, London.
[Kononenko/Lavrac 1988] Kononenko,
I.
und
N.
Lavrac
(1988):
P R O L O G Through Examples. A P r a c t i c a l P r o g r a m m i n g Guide.
Sigma Press, Wilmslow, Cheshire, U . K . "
[Kowalski 1979] Kowalski, R. ( 1 9 7 9 ) : Logic for Problem Solving. NorthHolland, New York.
[Malpas 1987] Malpas, J . ( 1 9 8 7 ) : P R O L O G : A Relational Language and
its Applications. Prentice Hall, Englewood Cliffs, N . J .
[Marcus 1987] Marcus, C. ( 1 9 8 7 ) : P R O L O G P r o g r a m m i n g . Applications for Database Systems, E x p e r t Systems, and N a t u r a l ' L a n g u a g e
Systems. Addison-Wesley Publications, Reading, M a s s .
[Pereira/Shieber 1987] Pereira, F. und S.M.Shieber ( 1 9 8 7 ) : P R O L O G
And Natural Language Analysis. Center for the Study of Language
and Information. Stanford University, Stanford, California.
Pereira, F . C . N , and D.H.D. W a r r e n ( 1 9 8 0 ) : Definite
Clause G r a m m a r s for Natural Language Analysis. A Survey of
the Formalism and a Comparison with Augmented Transition Networks. In: Artificial Intelligence, 13, 2 3 1 - 2 7 8 .
[Rogers 1987] Rogers, J . B .
to E x p e r t Systems and Natural L a n g u a g e P r o c e s s i n g . AddisonWesley Publishing Company, Reading, Massachusetts.
[Kleine Büning/Schmitgen 1988] Kleine Büning, H. und S. Schmitgen
[Pereira/Warren]
195
(1987): A
PROLOG
Primer.
Addison-
Wesley, Reading, Mass.
[Schnupp 1986] Schnupp, P. ( 1 9 8 6 ) : P R O L O G : Einführung in die P r o grammierpraxis. Hanser, München.
LITERATURVERZEICHNIS
196
Anmerkungen zur Literatur
Die Popularität von P R O L O G drückt sich auch in der wachsenden Zahl
von Veröffentlichungen aus. Das Literaturverzeichnis stellt eine Auswahl
der neueren Veröffentlichungen dar und verweist außerdem auf einige etwas speziellere Quellen, die für das vorliegende Buch verwendet wurden.
Index
Nur vier Titel, die für das weitere Arbeiten mit P R O L O G für Sie
wahrscheinlich von größerer Bedeutung sind, sollen hier kurz besprochen
werden:
• [Clocksin/Mellish 1987]: Eine der ersten leicht
;
verständlichen
<
Belegung
44
\+
156
PROLOG-Einführungen. Standardwerk. Beschreibt den de facto-
=..
Standard von P R O L O G .
=<
156
>=
156
• [Giannesini et al. 1 9 8 8 ] : Einführung und Vertiefung, ausführliche
Anwendungsbeispiele für natürlichsprachliche Systeme,
kleines
E x p e r t e n s y s t e m . Verwendet P R O L O G II.
147
>
156
!
142
,
19
• [Pereira/Shieber 1987]: Gute Übersicht über gängige Algorithmen
:-
18
der Computerlinguistik und deren Kodierung in P R O L O G . Setzt
?-
19
• [Sterling/Shapiro 1988]: Fortgeschrittene Programmiertechniken.
call
151
157
158
142
cut-fail-Kombination
Datenbasis
DCG
Sehr gute Einfuhrung in die Theorie und P r a x i s der Logikpro-
Ableitung
Akkumulator
50,61
91
149, 186
Algorithmus
31
Ambiguität
Anfrage
95
14, 38
append
deklarativ
delete
146
atomar
2 4 , 27, 3 0 , 50
atomic
146
augmentieren
16
bagof
152
Baum
108
178
deterministisch
138
Eindeutigkeit
element
145
62
konzeptioneller
151
atom
134
Evaluation
137
24
83
Definite Clause G r a m m a r
25
Atom
14
Entwurf
63
Argument
144
103
debugging
70
grammierung.
Axiom
93
cut
Abbruchbedingung
assert
Blatt
convert
Abbildung
ASCII
14, 37
concatenate
Kenntnisse in Logik, Automatentheorie und Computerlinguistik
voraus. Geeignet als weiterführende L i t e r a t u r zu diesem B u c h .
2 6 , 32
Beweis
154
fail
140,144
Fakt
16
Funktor
getO
119
70
156
25
1 3 6 , 137
Grammatik
kontextfreie
90
kontextsensitive
Implikation
18
90
103
198
INDEX
Inferenzmaschine
Instantiierung
integer
is
14
o c c u r check
32, 39, 45
61
Kategorie
lexikalische
90
Klausel
16, 19, 39
Knoten
93
Kommentar
komplex
Konstante
Startsymbol
Prädikat
19
92
119
prozedurale
Prompt
put
leere
58
listvar
Regel
Mehrdeutigkeit
member
95
146
37, 38
158
Negation
Nichtterminalsymbol
138
154
49
repeat
141
replace
179
retract
151
retractall
144
negation as failure
nonvar
18
Rekursionschritt
Meta-Programmierung
name
146
158
73
Rekursion
61
Modus Ponens
136
Redundanz
93
reverse
154
90
151
180
„naive"
Rumpf.
Scheitern
Schleife
Syntaxfehler
83
162
19, 39
43
51
61
146
2 6 , 27, 3 0
26
uninstantiierte
26
Variablenbelegung
45
Verfeinerungsstufe
Wissensbasis
30
80
14
Wissensrepräsentation
24
write
24
25
Terminalsymbol
trace
var
82
Variablenersetzung
138
45, 46
140
Unifikation
29
uninstantüert
32
134
read.sentence
148
Markierung
171
1 3 6 , 137
read
58
93
true
167
Prototyp
57
139
133
prozedural
90
Syntaxbaum
komplexer
„prozedurales"
92
24
Term
14
40
anonyme
23
Teilstruktur
PROLOG
Unteranfrage
Variable
atomare
tab
90
„pure"
Listenkonstruktor
90
Programmiersprache
92
157
Liste
134
90
30
156
Struktur
138
118
162
Produktion
19,39
Lexikon
String
134
pretty printer
19
Konstruktionsregel
length
Stelligkeit
eingebautes
Konstituentenstruktur
not
119
Präterminalsymbol
25
Konstituente
nl
partiell
180
151
147
Unterprädikat
Sprachanalyse
deterministisches
120
134, 135
152
97
permute
univ
72
Parsing
17
Konjunktion
setof
built-in
27,50
kompositioneil
97
unique
37
Schnittstelle
Seiteneffekt
Parser
ist_liste
Lesart
Schlußregel
150
146
156
Kopf
176
Operator
199
INDEX
90
136
Wurzel
Zahl
93
25
Zielklausel
39
85