Non-deterministic predicates succeed zero or more times. Their 
results are tested either using findall/3 
or setof/3 
followed by a value-check or using the all or set 
options. The following are equivalent tests:
test(member) :-
        findall(X, member(X, [a,b,c]), Xs),
        Xs == [a,b,c].
test(member, all(X == [a,b,c])) :-
        member(X, [a,b,c]).