Prolog _Anagramm?

Hallo,
ich tüfftele seit ein paar Tagen an einer Prologaufgabe, komme aber irgendwie nicht weiter. Die Aufgabe ist es, ein Programm zu erstellen/ ein Prädikat zu entwerfen, das es ermöglicht, alle möglichen Anagramme eines Wortes auszugeben:
Für dieses Problem hab’ ich Folgendes:
anagramm([], []).
anagramm([Kopf|Rest], Anagramm) :-
anagramm(Rest, N1),
auswählen(Kopf, N1, Anagramm).

auswählen(Element, Liste, [Element|Liste]).
auswählen(Element, [Kopf|Liste], [Kopf|Liste1]) :- auswählen(Element, Liste, Liste1).

Soweit klappt das ja auch, aber wie kann ich jetzt zusätzlich Anagramme ausschließen, die keinen Sinn ergeben? Beispielsweise bei dem Wort Maus könnte als akzeptierte Antwort Saum rauskommen, aber nicht Smua. Ich habe mir gedacht, dass ich vielleicht ein Lexikon aufstelle mit möglichen Wörtern und unmöglichen. Aber wie könnte ich dieses Lexikon mit meinen Prädikaten verknüpfen?
Kann mir da vielleicht jemand einen Denkanstoß geben? Oder irgendeinen anderen Tipp, wie ich das Problem lösen kann?

Hallo,

ob das als Lösung zulässig ist, weiss ich nicht, aber ich würde es so angehen:

Da es ohne Lexikon sowieso nicht geht, würde ich einfach das Lexikon durchscannen und alles raussuchen, was die gleichen Buchstaben enthält. Es würde helfen, das Lexikon einmal nach Wortlänge zu sortieren.

Gruss Reinhard