PROLOG
__
Eine Sprache der
Künstlichen Intelligenz
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Prolog
Programmieren in Logik
1. Einführung
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Inhalt - Einführung
• Historisches
• Charakterisierung
• Einordnung
• Das PROLOG-System
• Wichtige Interpreter-Befehle
• PROLOG-Quellcode
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Historisches
•
1972: ALAIN COLMERAUER (Marseille) und ROBERT KOWALSKI
(London) entwickeln PROLOG
•
Mitte 70er: DAVID D.H. WARREN baut den ersten lauffähigen Compiler,
wonach sich der heutige DEC-10 Standard richtet (Edinburgh-Standard)
•
80er Jahre: Eine ganze Reihe kommerzieller PROLOG-Systeme etablieren
sich
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Charakterisierung
Prolog ist eine deskriptive (beschreibende) Sprache:
•
•
•
ein Problem wird formal beschrieben (spezifiziert)
der Lösungsweg wird nicht durch Anweisungen einzeln festgelegt
das Prolog-System sucht eine vorgelegte Frage selbständig zu beantworten
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einordnung
Beziehung zwischen PROLOG und anderen Programmiersprachen aus
objektorientierter Sicht:
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einordnung
Für Theoretiker:
PROLOG kann als spezielle Schreibweise der
Prädikatenlogik erster Ordnung aufgefasst werden.
Für Praktiker:
PROLOG ist eine sehr intelligente relationale Datenbasis,
die durch Fakten zur Wissensbasis wird.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Das PROLOG-System
Benötigt werden:
• ein Texteditor zum Schreiben der PROLOGProgramme
z.B.: Notepad
• ein PROLOG-Interpreter zum Beantworten der
Anfragen
z.B.: SWI-PROLOG
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Der SWI-PROLOG-Editor
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Wichtige Interpreter-Befehle
• chdir ('D:\\Verz1\\Verz2').
– wechselt das aktuelle Verzeichnis
• consult (Dateiname).
– lädt das Programm in den Speicher
• mit den Tasten  und  kann man durch die letzten
Eingaben scrollen
Eingaben sind stets mit einem Punkt abzuschließen;
kommen Sonderzeichen vor, Hochkommas verwenden!
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
PROLOG-Quellcode
Der PROLOG-Quellcode wird mit einem ASCII-Editor
geschrieben und als PROLOG-File mit der Endung '.pl'
gespeichert.
Ein PROLOG-Programm kann in verschiedene Dateien
zerlegt werden (Module -> Wiederverwendbarkeit); im
"Hauptprogramm" werden die einzelnen Module wie folgt
geladen:
?- ensure_loaded(Dateiname1).
?- ensure_loaded(Dateiname2).
usw.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Prolog
Programmieren in Logik
2. Programmstruktur
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Inhalt - Programmstruktur
•
Einführung
•
Fakten
•
Datenbasis
•
Fragen an die Datenbasis
•
Aufgaben
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung
Um einen Gegenstandsbereich zu
beschreiben, benutzen wir Aussagen und zwar von zweierlei Art:
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung
(1) Aussagen, die Eigenschaften von Objekten oder
Beziehungen zwischen Objekten zum Ausdruck
bringen:
• Eisen ist ein Metall
• Sokrates lebte von 469 bis 399 v. Chr.
 Fakten (wahre Sachverhalte, Tatsachen)
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung
(2) Aussagen, die allgemeine Gesetze, d.h. Beziehungen
zwischen Fakten ausdrücken:
•
Metalle leiten elektrischen Strom
oder besser
•
Wenn X ein Metall ist, dann leitet X elektrischen Strom
 Regeln
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung
Ist das Wissen über den betrachteten
Gegenstandsbereich als Sammlung von
Fakten und Regeln dargestellt, so können
wir Fragen stellen – in der Erwartung, dass
sich diese aufgrund des in Fakten und
Regeln ausgedrückten Wissens
beantworten lassen.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung
Ein PROLOG-Programm sieht also so aus:
• Fakten
• Regeln
• Fragen
}
}
Datenbasis (Wissen)
Auswertungsprogramm
Fakten, Regeln und Fragen sind die wesentlichen Elemente
des Programmierens in PROLOG.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Der SWI-PROLOG-Editor
Datenbasis (Wissen)
Auswertungsprogramm
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Fakten
Ein Faktum ist eine Aussage, die eine Eigenschaft eines
Objektes oder eine Beziehung zwischen Objekten
ausdrückt:
Jupiter ist ein Planet
?- planet(jupiter).
Objekte werden klein geschrieben !
Paris ist die Hauptstadt von Frankreich
?- hauptstadt(paris,frankreich).
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Datenbasis
Eine endliche Menge von Fakten bildet bereits ein
PROLOG-Programm. Wir werden eine solche Menge im
folgenden auch Datenbasis nennen.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Beispiel 1
Eine PROLOG-Datenbasis soll erstellt werden, die
Verwandtschaftsbeziehungen griechischer Götter
ausdrückt.
Zunächst werden die Götter nach ihrem Geschlecht
klassifiziert:
?- maennlich(apollon).
?- weiblich(hera).
Dies sind sog. einstellige Prädikatsymbole.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Beispiel 1
Dann führen wir die Beziehung „Elternteil“ ein:
?- elternteil(zeus,apollon).
?- elternteil(metis,athene).
Dies sind sog. zweistellige Prädikatsymbole.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Beispiel 1
Damit sieht die Datenbasis so aus (beispiel1.pl):
maennlich(zeus).
maennlich(apollon).
maennlich(ares).
weiblich(hera).
weiblich(leto).
weiblich(metis).
weiblich(athene).
GK Info 13 (Hö)
elternteil(zeus,ares).
elternteil(hera,ares).
elternteil(zeus,apollon).
elternteil(leto,apollon).
elternteil(zeus,athene).
elternteil(metis,athene).
PROLOG – Eine Sprache der Künstlichen Intelligenz
Beispiel 1 im SWI-PROLOG-Editor
1. Eingabe der Fakten im oberen Teil des SWI-PROLOG-Editors.
2. consulten
Die Datenbasis (das Wissen) wird an
das Auswertungsprogramm übergeben.
3. Frage formulieren im unteren Teil des SWI-PROLOG-Editors.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Fragen
Wir können nun Fragen an das System stellen und damit
das in der Datenbasis gespeicherte Wissen abrufen.
Zuvor muss die Datenbasis in einem Editor erstellt,
gespeichert und dann in den PROLOG-Interpreter geladen
werden.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Entscheidungsfragen
Frage: Ist Zeus männlich?
?- maennlich(zeus).
Antwort: Yes.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
Ergänzungsfragen
Frage: Wie heißen die Eltern von Athene?
?- elternteil(E,athene).
Variablen werden groß geschrieben!
Antwort:
GK Info 13 (Hö)
E = zeus ;
E = metis ;
No
Durch das Drücken des Semikolons „;“
bzw. der ENTER-Taste ““ erhält man
die weiteren Antworten.
PROLOG – Eine Sprache der Künstlichen Intelligenz
AUFGABE 1:
Übersetzen Sie die folgenden Sätze in eine PROLOGDatenbasis:
Peter liebt Susi. Hans liebt Susi und Sabine. Sabine liebt
Peter und hasst Hans. Susi liebt Peter und Felix. Susi
hasst Sabine. Peter hasst Felix. Felix liebt sich selbst.
Stellen Sie folgende Anfragen:
Wen liebt Sabine? Wer liebt Sabine? Wer liebt wen? Wer
liebt jemanden, der ihn auch liebt? Wessen Liebe wird mit
Hass vergolten?
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
AUFGABE 2:
In einem Restaurant gibt es ein Menü bestehend aus
Vorspeise, Hauptgericht und Nachspeise:
Vorspeisen:
Tomatensuppe, Lauchsuppe, Fleischbrühe
Hauptgerichte: Sauerbraten mit Spätzle, Leberkäse mit
Kartoffeln, Hackbraten mit Reis
Nachspeisen: Eis, Obstsalat, Bienenstich.
Schreiben Sie ein PROLOG-Programm, das ein zweistelliges
Prädikat menue enthält. Dieses Prädikat soll Menüvorschläge
überprüfen und erzeugen können.
GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz

Einfuehrung PROLOG