Nur falls jemand nicht bei Nr. 1 angefangen hat: Dies ist nicht die Musterlösung, sondern mein Vorschlag. [img]http://images.rapidforum.com/images/i23.gif[/img]

Zum überprüfen kann man sich ja mal kurz dies als Prologsource kopieren.

:- dynamic ausleihe/2.
ausleihe( dog12345, 56245 ).
ausleihe( bat64646, 56245 ).
ausleihe( bug17456, 55555 ).

:- dynamic vorbestellung/2.
vorbestellung( bug17456, 55555 ).
vorbestellung( bat64646, 56245 ).

:- dynamic leser/2.
leser(sorglos, susi, 56245, buddelweg, 1980).
leser(kochtopf, karl, 55555, bauernpfad, 1975).

Nun gehts los mit dem Testen:
(a)
Eingabe: leser(sorglos,susi,Lesernummer,_,_).
Ausgabe: Lesernummer = 56245

(b)
Eingabe: leser(Name,Vorname,_Lesernummer,_,_), vorbestellung(bug17456,_Lesernummer).
Ausgabe: Name = Karl, Vorname = Kochtopf

©
Eingabe: ausleihe(Signatur, 56245), not(vorbestellung(Signatur,_)).
Ausgabe: Signatur = dog12345 ;

Eigentlich gibt es hier nur etwas bei (b) zu beachten. Es darf die Signatur 'BUG17456' natürlich nicht in Großbuchstaben
übernommen werden. Ist nur der erste Buschstabe großgeschrieben, so wird der Eintrag nicht als Wert, sondern als Variabler
behandelt. Prolog versucht nun dies zu unifizieren, womit weder die Abfrage, noch die Datenbasis funktionieren können.