Любое значение string|int является значением типа string|int|любой тип
A | B | C = { (1, A), (2, B), (3, C) }. A | B = { (1, A), (2, B) }. не вижу противоречий. оба множества получены по тому определению что я выше написал, только маркеры выбираются детерменированно.