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