I'm finding programming various combinatorial searches (connected to mathematical music theory) in a general purpose computer language tedious, so I'd like pointers to computer platforms/environment purpose-built to enable such searches. If the answer has the form "Maple can do that" or "Mathematica can do that," then I'd appreciate pointers specific enough to get me started.

Within reason I would trade ease of specification against any optimization of the search algorithm, but I'd feel grateful for speed if I could have that too.

Here's an example of a typical question; I'm really hoping for an environment where I can specify such a search almost as succinctly as I now explain it (I use terminology from mathematical music theory but define everything in purely mathematical terms):

Write $T$ for the set of complex $12$th roots of unity.

*Tetrachord* means a subset of $T$ of cardinality $4$. *Row* means a permutation of T.

Fix two distinct rotation classes of tetrachords, $a$ and $b$. By definition row $R\in G_{a,b}$ if applying $R$ to the 24 tetrachords
in $a \cup b$ yields 24 tetrachords pairwise distinct up to isometry.

Find $\bigcup_{a,b} G_{a,b}$.

Thanks in advance for any help!!

`"set1 intersect set2={}"`

for disjointedness. $\endgroup$ – Brendan McKay Sep 13 '11 at 7:00