Conseguir un pedido en resolución predicada

Mire los siguientes objetivos (estoy usando swi-prolog con clpfd de Markus Triska):

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

Una posible consulta se ve así:

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

Quiero agregar una orden o algún tipo de prioridad de solución. Si "rechazar" es una respuesta válida paraInput=15, entonces el segundo objetivo ya no debe ser considerado, por lo que soloB=decline es una solución pero noB=offer.

Sé que podría agregar un!/0 pero entonces al revés no funcionaría. Dame todas las respuestas posibles para este predicado.

Teniendo en cuenta este ejemplo, unResult=offer solo debe ser verdad paraInput 0..10, porque de lo contrario el mayor objetivo de declive anterior debería disparar.

¿Estoy pensando demasiado imperativo cuando trato de considerar un orden dentro de predicados?

Respuestas a la pregunta(4)

Su respuesta a la pregunta