Dieser Hinweis ist aus der Übung im WS 1994/95 oder aus einer noch älteren Übung oder war nie Teil einer Übung und ist daher möglicherweise für spätere Übungen nicht gültig!
Verbesserung von Prologs prozeduralem Verhalten Oft können durch das äußerst primitive Beweisverfahren gewisse Prädikate nicht zufriedenstellend allgemein implementiert werden. Etwa, wenn mehrere unendliche Lösungsmengen vorkommen. Im gewöhnlichen Prolog sollte man für jene Fälle, in denen das Aufzählen einer unendlichen Lösungsmenge unerwünscht ist, Fehler melden. (Vgl.Kapitel 13 im Skriptum). Aus diesem Grund gibt es (in manchen Prologsystemen, wie dem hier verwendeten) Erweiterung, die Prologs simple Beweistrategie verfeinern. Gelegentlich, vor allem bei Prädikaten, die auf Listen arbeiten, ist es sinnvoll, den Beweis eines Ziels aufzuschieben, und statt dessen andere Ziele zu beweisen. Durch die folgende Block- (oder wait) Deklaration wird gesagt, daß ein Ziel eines Prädikats aufgeschoben werden soll, wenn jene Argumente, die mit einem - gekennzeichnet sind, noch freie Variablen sind. :- block natürliche_zahl(-). Probieren Sie nun die ursprüngliche Version! Beachten Sie bitte, daß eine Blockdeklaration direkt vor einem Prädikat (ohne Leerzeile dazwischen) angegeben werden muß. Dadurch, daß Ziele aufgeschoben werden, kann es natürlich passieren, daß manche Ziele bis zuletzt nicht bewiesen werden, und auch nicht bewiesen werden könnten. Eine Anfrage wird dann zwar erfolgreich sein, (und insofern ist das Beweisverfahren dadurch inkorrekt), man muß nun aber die Antwort-,,substitution`` genauer betrachten. Wenn es nun eine Antwortsubstitution mit aufgeschobenen Zielen gibt, so muß man diese etwas differenzierter betrachten. Etwa: :- natürliche_zahl(N). \hinweis{PrologAllgemein} Zurück: \hinweis{init}