(phixonline)--> sequence powerset integer step = 1 function pst(object key, object /*data*/, object /*user_data*/) integer k = 1 while k<length(powerset) do k += step for j=1 to step do powerset[k] = append(powerset[k],key) k += 1 end for end while step *= 2 return 1 end function function power_set(integer d) powerset = repeat({},power(2,dict_size(d))) step = 1 traverse_dict(routine_id("pst"),0,d) return powerset end function integer d1234 = new_dict({{1,0},{2,0},{3,0},{4,0}}) ?power_set(d1234) integer d0 = new_dict() ?power_set(d0) setd({},0,d0) ?power_set(d0)