1:- module(tm, []).    2:- use_module(pac(basic)).    3:- use_module(util(meta2)).    4:- use_module(pac('expand-pac')).    5term_expansion --> pac:expand_pac.
    6:- use_module(pac(op)).    7
    8
    9% ?- cpr handle works.
   10% ?- listing(set).
   11% ?- set(pow([1,2,3])\pow([2,3]), X).
   12% ?- set(pow(pow([1,2,3])), X), length(X, L).
   13% ?- set(X, V).
   14
   15% ?- listing(set).
   16% ?- set(yaplus([a,b], [c,d]), R).
   17% ?- set(plus([a,b], [c,d]), R).
   18% ?- set(yayaplus([a,b], [c,d]), R).
   19
   20% ?- listing(set).
   21:- bekind(set, [nonvar, stop]).   22sgn(emptyset, 0, []).
   23sgn([], 0,	[]).
   24sgn([X|Y], 0, [X|Y]).
   25sgn(+, 2,	union).
   26sgn(plus, 2, pred([X, Y, Z]:-union(X, Y, Z))).
   27sgn(yaplus, 2, fun([X, Y]>> :union(X, Y))).
   28sgn(yayaplus, 2, fun([X, Y]>> :union@X@Y)).
   29sgn(&, 2,	intersection).
   30sgn(\, 2,	subtract).
   31sgn(pow, 1, powerset).
   32sgn(++, 2,	direct_sum).
   33sgn(*, 2,	product).
   34sgn(#, 2,	scramble_cons).
   35singleton(A) = xargs([X] >> [X])@ A.
   36:- ekind.   37
   38% :- bekind(yaset, [nonvar, stop, flip([2,1])]).
   39:- bekind(yaset, [nonvar, stop]).   40emptyset = [].
   41X