?- sat([-20, 10, 0, -3, 13, 12],L).
L = [-10,10,0,-3,10,10]
sat is short for saturate: these rules alter a list of positive integers so that any element whose abs. val. is > 10 keeps its sign but its abs. val is set to 10.
saturate([], []).
% too big
saturate([H|T], [X|Y]) :-
H>10, X is 10, saturate(T,Y).
% too small
saturate([H|T], [X|Y]) :-
H< -10, X is -10, saturate(T,Y).
% everything else
saturate([H|T], [X|Y]) :-
X is H, saturate(T,Y).
...
Perhaps surprisingly, hitting ; here will find more copies of your solution, as prolog does the matches in a different order: the number of repetitions is is 2N, where N is the number of elements > 10 or < 10. This is a job for... a (green) CUT!!.
Yes, rule order matters. For instance, the base case has to be at the top, as usual.
More interestingly, if the last rule is moved up to be the second rule, the first answer generated is that the list is just copied with no changes since it's a default-copy rule and will be used first, before the non-default cases that need attention. Originally, it's the last resort after rules 1,2,3 fail. If it's moved to 2nd place, hitting ; generates 2N solutions, not all the same (!!) as backtracking selects different rules.