Is this related in any way to the shuffle operator, under which regular languages are closed? FLAT can be used to interate over all shuffles. Sub::Genius uses it to create sequentially consistent subroutine run schedules.
Comment on Re: Algorithm RFC: fast (pseudo-)random shuffle with no repetition