Programmieren in PROLOG Eine umfassende und praxisgerechte Einführung - Bothner, Peter P. -2009 (Vieweg+Teubner Verlag, 1991)
247 Arguments "prädikat", das als Prädikat anzugeben ist, an geeigneter Stelle enthalten sein muß. Bei der Unifizierung des Prädikats "/indall" wird das 3. Argument "Var. 1}. ", das eine Variable sein muß, mit einer Liste instanziert. Diese Liste enthält als Listenelemente alle diejenigen Instanzierungen der Variablen "Var_1", die aus der Unifizierung des Prädikats "prädikat" mit allen in der Wiba enthaltenen Prädikaten gleichen Namens resultieren. So können wir z. B. - auf der Basis von AUFI - alle in der Wiba enthaltenen Ankunftsorte wie folgt in einer Liste sammeln: ?-[ aufl ]. ?-findall(X,dic(_,x),Liste),write(,Liste: '),write(Liste). Liste: (kö,fu,ma,mü] X = _636 Liste = (kö,fu,ma,mü] 8. 5 Lösung einer klassischen Problemstellung Bislang haben wir die grundlegenden Sprachelemente von PROLOG und die Arbeitsweise der Inferenzkomponente bei der Ausführung eines PROLOG Programms am Beispiel der IC-Verbindungen kennengelemt. Das von uns stets verwendete Lösungsprinzip ist charakteristisch für weitere Aufgabenstellungen aus dem Gebiet des logischen Programmierens. Wie demonstrieren dies an der Lösung einer klassischen Problemstellung. Dazu wählen wir das Problem des Fährmanns aus, das wie folgt gekennzeichnet ist: - Ein Fährmann will drei Objekte (einen Wolf, eine Ziege und einen Kohlkopf) vom linken Ufer eines Flusses zum rechten Flußufer übersetzen. Er hat dabei zu beachten, daß das verfügbare Boot außer dem Fährmann nur ein weiteres Objekt fassen kann und daß bei Abwesenheit des Fährmanns die Ziege die Kohlköpfe und der Wolf die Ziege fressen wird (AUF30)