Prolog-Grundzüge 2: Das Prolog-System

July 20, 2009 at 4:35 pm Leave a comment


Nachdem wir im letzten Prolog-Blogeintrag gesehen haben, wie man in Prolog prinzipiell Fakten und Regeln definiert, geht es in diesem Post um die grundsätzliche Handhabung von Prolog-Systemen. Ich verwende SWI-Prolog, das es für Linux, Mac und Windows gibt.

Grundsätzlich definiert man in Prolog Fakten und Regeln in Dateien – wie Quellcode in anderen Programmiersprachen auch. Prolog-Quelltextdateien enden auf .pl oder .pro (wenn man Verwechselungen mit Perl vermeiden will). Quelltextdateien lädt man in das Prolog-System, dass man im Fall von SWI-Prolog mit “swipl” startet – häufig ist auch auch der Shortcut “pl” definiert. Am einfachsten lädt man seine Dateien mit:

['meine_prolog_datei.pro'].

Wichtig ist, dass man den Punkt nicht vergisst. Das Prolog-System lädt die Datei ein und compiliert diese in eine interne Zwischenrepräsentation. Erwartet uns der Prompt “?-” und wir können interaktiv Abfragen auf den Fakten und Regeln definieren. Im vorigen Blogpost haben wir Fakten und Regeln für Benutzer und Gruppen definiert. Wir können jetzt z.B. fragen

?- gruppe(admin, stefan).

und erhalten als Antwort “true”. (“?-” gibt man nicht mit ein; das bezeichnet nur den Prompt).

Häufig liefern Regeln nicht nur ein Ergebnis, vor allem dann, wenn man in der Abfrage mit Variablen arbeitet.

?- gruppe(X, stefan).

liefert erst “X=admin” und dann “X=user”. Bei SWI-Prolog bekommt man zunächst nur “X=admin” angezeigt und wenn man dann “n” (für Next) eingibt “X=user”.

Wir werden bei einem späteren Blogpost noch sehen, dass man die strikte Unterscheidung zwischen Fakten und Regeln auf der einen und Abfragen auf der anderen Seite aufweichen kann. Man kann auch Abfragen in Quelltext-Dateien definiert und man kann auch mit dem Prolog-Prompt Fakten und Regeln definiert.

Entry filed under: 1. Tags: .

Tippfehler in Fit/Fitnesse-Artikel Prolog-Grundzüge 3: Listen

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d bloggers like this: