Подумал я о необходимости хеш-функции для множеств. Чтобы из хеша для set и элемента a быстро получить hash setHash a. Ну, и чтобы порядок получения множества не влиял на результат: hash (hash set a) b = hash (hash set b) a.
Пришел к выводу, что это возможно с помощью hash hashSet a = hashSet `xor` cryptoHash a.
Вроде, всё соблюдается. Особенно, если cryptoHash быстрый, типа
SipHash.
Это чтобы быстро сравнивать множества на равенство.