:- set_prolog_flag(flowlog_engine, wam).

member(X, [X|_]).
member(X, [_|Xs]) :- member(X, Xs).

ok :-
    bagof(X, member(X, [b,a]), Bag0),
    Bag0 == [b,a],

    setof(X, member(X, [b,a,a]), Set0),
    Set0 == [a,b],

    Ps = [p(1,a), p(1,b), p(2,c)],
    findall(Y-Bag, bagof(X, member(p(Y,X), Ps), Bag), Groups),
    Groups == [1-[a,b], 2-[c]],

    bagof(X, Y^member(p(Y,X), Ps), Bag1),
    Bag1 == [a,b,c],

    \+ bagof(_, member(_, []), _),
    \+ setof(_, member(_, []), _).

