The problem of how to generate subsets is well answered by this question. My question is about why my code does not. My own attempt at the problem was
subset2(_, []).
subset2(Set, [S|Subset]) :- member(S, Set), not(member(S, Subset)), subset2(Set, Subset).
While this does correctly test for subsets, it will only generate the emptyset. Why is this?