% experiemnts with setof go:-setof(X, (member(X,[1,2,3,4,0,-1,-2,-3,-4]), 4 is X*X), Root), write(Root). id(1234, jim). id(2345, joan). id(3456, jane). id(4567, jo). grade(1234, a). grade(2345, b). grade(3456, c). grade(4567, d). grade_roster_by_SSN(List):- setof( student(SSN,Name,Grade), ( id(SSN,Name), grade(SSN,Grade) ), List). grade_roster(List):- setof( student(Name,SSN,Grade), ( id(SSN,Name), grade(SSN,Grade) ), List). print_set(List):-member(X,List),write(X),nl,fail. one_name_grade(List):-setof(ng(Name,Grade), ( id(SSN,Name), grade(SSN,Grade) ), List). list_name_grade(List):-setof(ng(Name,Grade), SSN^( id(SSN,Name), grade(SSN,Grade) ), List).