Eine Bestellung in Prädikatenauflösung bringen

Schau dir die folgenden Ziele an (ich benutze swi-prolog mit clpfd von Markus Triska):

result(Input,Result) :-
    Input #> 10,
    Result=decline.
result(Input,Result) :-
    Input in 0..20,
    Result=offer.

Eine mögliche Abfrage sieht folgendermaßen aus:

?- result(15,B).
B = decline ;
B = offer.

Ich möchte eine Bestellung oder eine Art Lösungspriorität hinzufügen. Wenn "ablehnen" ist eine gültige Antwort fürInput=15Dann sollte das zweite Tor nicht mehr in Betracht gezogen werden, so dass nurB=decline ist eine lösung aber nichtB=offer.

Ich weiß, dass ich eine hinzufügen könnte!/0 aber dann würde der umgekehrte Weg nicht funktionieren. Gib mir alle möglichen Antworten für dieses Prädikat.

In Anbetracht dieses Beispiels aResult=offer sollte nur wahr sein fürInput 0..10, weil sonst das höhere vorherige Ablehnungsziel ausgelöst werden sollte.

Denke ich zu zwingend, wenn ich versuche, eine Ordnung innerhalb von Prädikaten zu betrachten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage