True if Goal is true and no previous solution of Goal 
bound
Witness to the same value. As previous answers need to be 
copied, equivalence testing is based on term variance (=@=/2). 
The variant distinct/1 
is equivalent to distinct(Goal,Goal).
If the answers are ground terms, the predicate behaves as the code 
below, but answers are returned as soon as they become available rather 
than first computing the complete answer set.
distinct(Goal) :-
    findall(Goal, Goal, List),
    list_to_set(List, Set),
    member(Goal, Set).