( ( powerset = done todo first . !arg:(?done.?todo) & ( !todo:%?first ?todo & (powerset$(!done !first.!todo),powerset$(!done.!todo)) | !done ) ) & out$(powerset$(.1 2 3 4)) );