A collection of functions to generate combinatorial objects like partitions, combinations, permutations, Young tableaux, various trees, etc.
The long-term goals are
- to be efficient;
- to be able to enumerate the structures with constant memory usage.
The short-term goal is to generate many interesting structures.
Naming conventions (subject to change):
- prime suffix: additional constrains, typically more general;
- underscore prefix: use plain lists instead of other types with enforced invariants;
- "random" prefix: generates random objects (typically with uniform distribution);
- "count" prefix: counting functions.