I'm not sure of the original intent, but you could approach this as the Cartesian product of [1..5] * [1..10] * [1..10] which is then filtered such that the 2nd value is not smaller than the first, and the 3rd value is inclusively between the two
Couldn't taking the subset of a Cartesian product be considered to be dealing with one?
Even if you stick to ordinary (inner) joins, they are pullbacks, not products.