Since the number of generators never exceeds 6, the maximum number of combinations is (6, 3) = 20, so the space optimizations of using an iterator is mute.
Doing this way also allows to use set_difference and set_union to deal with collections of subgroups. This is not easily possible otherwise.