Leon Sterling, Ehud Shapiro: The Art of Prolog, Second Edition, The MIT Press 1994, ISBN 0-262-19338-9.
Betrachte das folgende Programm:
nats(0).
nats(s(X)) :- nats(X).
Die Anfrage ?- nats(X). ergibt dann folgendes:
?- nats(X).
X=0;
X=s(0);
X=s(s(0))
Wir können also sozusagen nacheinander beliebig viele natürliche Zahlen erzeugen.
Betrachten wir nun folgendes Programm:
add(0,X,X).
add(s(X),Y,s(Z)) :- add(X,Y,Z).
Dann kann dieses Programm Zahlen in Nachfolgernotation addieren:
?- add(s(s(s(0))),s(s(0)),X).
X=s(s(s(s(s(0)))))
Es kann aber auch subtrahieren!
?- add(s(s(0)),X,s(s(s(0)))).
X=s(0)
Man experimentiere mit Anfragen wie ?- add(X,Y,s(s(s(0)))). und vergleiche es mit dem Verhalten des append/3 Programms.
Nach diesen Vorbemerkungen sollten die Aufgaben loesbar sein. Sie sind nicht alle einfach. Ich freue mich über Rückmeldungen.
Einige weitere (schlecht kommentierte) Prolog Programme. (Unter anderem eine Lösung zu Aufgabe 28 von oben.)
Lösungshinweise zu
Übungsaufgaben von Andreas Maletti. Es handelt sich um die Aufgaben
zum WS01/02 und SS02, diese sind aber z.T. identisch mit denen des aktuellen Jahrgangs.
Mitschrift
der Besprechung der Logik-Klausur vom 16.06.01. (gescannt)
Lemmata
zum natürlichen Schliessen und Lösung der Klausuren vom 24.07.00
und vom 16.06.01(geTeXt)
natded2.sty style file (by Matthias Wendt)
natded.tex TeX Beispiel
natded.ps postscript für natded.tex