Obtendo um pedido em resolução predicada

Olhe para os seguintes objetivos (estou usando o swi-prolog com o clpfd de Markus Triska):

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

Uma consulta possível é assim:

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

Eu quero adicionar um pedido ou algum tipo de prioridade de solução. Se "declinar" for uma resposta válida paraInput=15, então o segundo objetivo não deve ser mais considerado, de modo que apenasB=decline é uma solução, mas nãoB=offer.

Eu sei que eu poderia adicionar um!/0 mas o contrário não funcionaria. Dê-me todas as respostas possíveis para este predicado.

Considerando este exemplo, umResult=offer só deve ser verdade paraInput 0..10, porque senão a meta de declínio anterior maior deveria ser disparada.

Estou pensando muito imperativo quando tento considerar uma ordem dentro de predicados?

questionAnswers(4)

yourAnswerToTheQuestion