Interpretierung: Anfragen

Läuft ein PROLOG Prozess, z.B. in einem Shellfenster (§3.1.2) oder in einem xemacs Puffer (§4.2.2), wird einen Prompt gezeigt (in SICStus-PROLOG, ``?- ''), nach dem ein Benutzer dem PROLOG Prozess mit der Tastatur Anfragen stellen kann, z.B. eine consult/1 Anfrage, die eher eine Anweisung zum kompilieren ist (§5.1.1).

Am PROLOG Prompt gestellte Anfragen werden von PROLOG nicht in der gleichen Weise verarbeitet wie konsultierte Programmquelltexte, obwohl Anfragen und Programmquelltexte aus den gleichen Bestandteile (Fakten, Regeln, Terme, Logischen Operatoren, usw.) aufgebaut sind.

Anfragen werden statt von dem Compiler, von dem PROLOG Interpreter verarbeitet. Wird eine Anfrage gestellt, versucht der PROLOG Interpreter für diese Anfrage einen Beweis zu finden, mittels seiner Datenbasis aus Fakten, Regeln, usw. Wird ein Beweis gefunden, antwortet PROLOG mit ``Yes''; ist die Anfrage nicht beweisbar, antwortet PROLOG dagegen ``No''.

Kommt eine Variable in einer Anfrage vor, versucht PROLOG die Anfrage für mindestens eine Instantiierung dieser Variable zu beweisen. Ist dies gelungen, zeigt PROLOG die Instantiierungen aller in der Anfrage enthaltenen Variablen an, zusammen mit einem Prompt (``?''), um zu erfragen, ob mittels Backtracking weitere mögliche Instantiierungen der Variablen gesucht werden sollen, für die die gestellte Anfragen ebenfalls beweisbar ist. Tippt ein Benutzer bei diesem Prompt das Semikolon (``;''), such PROLOG nach weitere Instantiierungen. Tippt der Benutzer stattdessen Enter (\fbox{$\hookleftarrow$}), hört PROLOG mit dem Beweisverfahren an der Stelle auf, und gibt die Antwort ``Yes'' aus. Hat der Benutzer Semikolon getippt, und ist die Anfrage für keine weitere Variableninstantiierungen beweisbar, antwortet PROLOG mit ``No''.


Bryan Jurish
Fri Dec 1 23:18:36 CET 2000