The Cool-lex order and associated algorithms for multiset permutations were invented by Aaron Williams (https://www.researchgate.net/profile/Aaron-Williams).
The publication is copyrighted by SIAM (Society for Industrial and Applied Mathematics).
You may need to obtain the respective permissions to use Cool-lex from both the author and SIAM, as governed by applicable laws and academic practices.
The code in this repository is authored by the mp-cool-lex-java contributors, and is licensed under Apache License, version 2.0 license.
@inbook{doi:10.1137/1.9781611973068.107,
author = {Aaron Williams},
title = {Loopless Generation of Multiset Permutations using a Constant Number of Variables by Prefix Shifts},
booktitle = {Proceedings of the 2009 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA)},
chapter = {},
pages = {987-996},
doi = {10.1137/1.9781611973068.107},
URL = {https://epubs.siam.org/doi/abs/10.1137/1.9781611973068.107},
eprint = {https://epubs.siam.org/doi/pdf/10.1137/1.9781611973068.107},
abstract = { Abstract This paper answers the following mathematical question: Can multiset permutations be ordered so that each permutation is a prefix shift of the previous permutation? Previously, the answer was known for the permutations of any set, and the permutations of any multiset whose corresponding set contains only two elements. This paper also answers the following algorithmic question: Can multiset permutations be generated by a loopless algorithm that uses sublinear additional storage? Previously, the best loopless algorithm used a linear amount of additional storage. The answers to these questions are both yes. }
}