t_powerset (A) = Set(vector(2^#A,i,vecextract(Set(A),i-1))) \\ t_powerset (X) = {my (n,A,B,P,Q,R,S); \\ n=#X; if (n==0, return([[]])); if (n==1, return([[],X])); \\ A=X[1..n\2]; B=X[n\2+1..n]; P=t_powerset(A); Q=t_powerset(B); \\ R=setunion(P,Q); for (i=1,#P, S=P[i]; for (j=1,#Q, R=setunion(R,[setunion(S,Q[j])]))); R}