Hallo!
Ich habe mir einige Tutorials zum Thema Prolog angesehen und bin im Verständnis schon ein Stückchen weiter
In einem davon habe ich eine (eigentlich einfache) Übung gefunden, die ich allerdings nicht lösen konnte.
Folgende DB sei gegeben:
bigger(cat,mouse).
bigger(dog,cat).
bigger(sheep,dog).
bigger(horse,sheep).
bigger(elephant,horse).
Es soll aus der gegebenen „Datenbank“ ermittelt werden, ob ein Elefant größer ist als eine Maus:
biggerThan(A,B) :- bigger(A,B).
Da es keinen Fakt gibt, der besagt, dass ein Elefant größer ist, als eine Maus (biggerThan(elephant,mouse). ergibt false), muss ich eine (rekursive) Regel definieren, die aus den gegebenen Daten die Antwort sucht:
biggerThan(A,B) :- bigger(A,C), biggerThan(C,B).
Jedoch gibt mir meine Anfrage (biggerThan(elephant,mouse).) immernoch false zurück.
Eigentlich sollte Prolog doch jetzt ein C finden, dass kleiner ist als A (das wäre ja in diesem Fall das Pferd).
Nun prüft er, ob das Pferd auch größer ist, als die Maus.
Auch dafür ist kein Fakt definiert - es geht also immer so weiter…
Prolog müsste doch durch diese Rekursion jetzt bis zum Anfang der DB durchlaufen und heraus finden, dass der Elefant größer ist, als die Maus…
Wo liegt das Problem?
Danke schon mal
Christoph