/*
set(trans_empty).
set(S),elem(X) -> set(trans_adds(S,X)).
set(S),elem(X) -> set(trans_subs(S,X)).
set(S1),set(S2) -> elem(f(S1,S2)).
elem(X),set(X) -> [].

*/

%set(S1),set(S2) -> 
	in(f(S1,S2),S1),S1=S2,in(f(S1,S2),S2).
%set(S1),set(S2),
	in(f(S1,S2),S1),in(f(S1,S2),S2) -> S1=S2.


%elem(X),
	in(X,trans_empty) -> [].
%elem(X1),elem(X2),set(S),
	in(X1,trans_adds(S,X2)) -> in(X1,S), X1 = X2.
%elem(X),set(S) -> 
	in(X,trans_adds(S,X)).
%elem(X),elem(Y),set(S),
	in(X,S) -> in(X,trans_adds(S,Y)).
%	in(X,S) -> trans_adds(S,X)=S.



%elem(X),set(S),
	in(X,trans_subs(S,X)) -> [].
%elem(X),elem(Y),set(S),
	in(X,trans_subs(S,Y)) -> in(X,S).
%	-> trans_subs(S,X)=S, in(X,S).
%elem(X),elem(Y),set(S),
	in(X,S) -> in(X,trans_subs(S,Y)),X=Y.


