1 | initial version |
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.