Ask Your Question

Revision history [back]

I don't know how you would pick the vector A — are there any known algorithms for that? If you have A, though, it's easy to set up:

sage: B = SymmetricGroup(4).algebra(QQ)
sage: U = B.basis()
sage: expansion = [(a*b).to_vector() for a in U for b in U]

At this point expansion will have 576 entries, one for each pair of basis elements a and b, and each entry will be a vector, the expansion of a*b in terms of the basis U. That is, the entries of the vector corresponding to basis elements indexed by $i$ and $j$ will the coefficients $c_{lij}$. Now form a matrix by taking the dot product of each of those vectors with A:

sage: A = random_vector(QQ, 24)
sage: entries = [(a*b).to_vector().dot_product(A) for a in U for b in U]
sage: m = matrix(24, 24, entries)
sage: m.determinant()
...

If I had to guess, I would guess that this is a sort of generic condition: if the determinant is nonzero for some vector, it is likely to be nonzero for most vectors. So picking a random one is not a bad way to start.