Klauseln bestehen aus dem Prädikatsnamen und gegebenenfalls aus einer in Klammern eingeschlossenen Parameterliste, zusammen dem Kopf der Klausel. Die Parameter können Atome, Variable (Platzhalter für Atome) oder der Unterstrich _ sein, letzteres als Platzhalter für Atome ohne Wirkung.
Klauseln können weitere Prädikate aufrufen. In diesem Fall folgt auf dem Kopf nach :- die Liste dieser Prädikate, genannt Rumpf. Nur wenn alle Prädikate des Rumpfes den Wert true haben, erhält auch die Klausel den Wert true. Fakten sind Klauseln ohne Rumpf bzw. mit :-true als Rumpf und sind immer wahr.
Gestartet wird durch Aufruf eines Prädikats, bei dem evtl. Variable durch Atome ersetzt wurden. Der Rechner versucht dann, weitere Klauseln und Atome so zu einer Schlusskette zu kombinieren, so dass das aufrufende Prädikat den Wert true erhält. Ausgegeben werden die benötigten Atome und der Wahrheitswert. Prolog ermöglicht während des Kombinierens, selbstständig neue Klauseln zu bilden, die dann zur Problemlösung genutzt werden.
Ursprünglich wurde beim Ablauf eines Prolog-Programms dieses von einem Interpreter stückweise analysiert und in Maschinensprache umgesetzt. Mittlerweile gibt es auch Compiler, die das gesamte Programm vor dem Ablauf in Maschinensprache übersetzen und so einen deutlichen Geschwindigkeitsgewinn bieten.
Gearbeitet werden soll hier SWI-Prolog bzw. SWISH-Prolog. SWI-Prolog muss auf dem eigenen Rechner installiert werden, während SWISH-Prolog als dessen Online-Version ohne Installation auskommt.
|
Unter dem Menüpunkt File wird mit New angeboten, ein neues Programm zu erstellen oder ein altes mit Edit zu bearbeiten.
Consult kompiliert ein fertiges Programm, dessen Name hierzu eingegeben werden muss.
Ruft man New oder Edit auf, so öffnet sich ein zweites Fenster mit einem Editor, in dem man ein Programm auf gewohnte Weise bearbeiten kann. Ein Programm kann gespeichert oder geöffnet werden. Wichtig ist unter dem Menüpunkt Compile die Option Compile Buffer, mit der das angezeigte Programm kompiliert werden kann. |
|
Programmfehler werden bereits beim Editieren farblich markiert, ebenso Fehler, die beim Compilieren entdeckt werden.
Fehlermeldungen des Compilers werden als gesonderte Meldung angezeigt und ebenso im Hauptfenster.
Damit sind die für das Programmieren nötigen Funktionen von SWI-Prolog erklärt! |
|
Rechts unten (roter Pfeil) findet man das Hauptfenster, In ihm kann eine Abfrage eingeben werden, das durch den Button RUN
am rechten unteren Fensterrand gestartet werden kann.
Links kann man den Programmtext eingeben und bearbeiten. Dazu ist zunächst ist Program ( grüner Pfeil) anzuklicken, damit sich das linke Teilfenster zu einem Editor wandelt. Am linken oberen Bildschirmrand findet man ein Menü, das zusätzliche Aktionen wie Speichern und Laden von Dateien ermöglicht. Zum Aktivieren ist jeweils das kleine Dreieck rechts neben einem Menüpunkt anzuklicken. |
|
eltern(peter,kathi,conny). eltern(peter,kathi,ulrich). eltern(klaus,conny,bastian). eltern(bastian,conny,corinna). eltern(fritz,irene,lotti). eltern(fritz,irene,alfred). eltern(fritz,irene,christa). eltern(ulrich,lotti,moritz). eltern(ulrich,lotti,fabian). eltern(ulrich,lotti,anna). eltern(ulrich,lotti,theresa). |
Klauseln sind Fakten! |
Nun kann man weitere Prädikate ergänzen:
|
vater(K,V):-eltern(V,_,K). mutter(K,M):-eltern(_,M,K). oma(K,O):-vater(K,V),mutter(V,O). oma(K,O):-mutter(K,M),mutter(M,O). | Klauseln sind keine Fakten! |
Zur Erläuterung:
Aufgabe: Prädikate onkel, tante und vetter, cousine definieren
Gibt man im Hauptfenster oma(anna,X). ein, so werden die Großmütter aufgelistet.