Ask Your Question

Testing whether a finite dimensional algebra is Frobenius

asked 2023-10-01 03:30:40 +0200

Kohlrabi gravatar image

updated 2023-10-02 20:16:30 +0200

Let $B$ be a finite dimensional algebra over a field $K$ with dimension $n$ over $K$. Sage can give us a $K$-basis of this algebra that we denote by $e_i$ (i=1,...,n). Here is an example:

B = SymmetricGroup(4).algebra(QQ) 

The structure constants $c_{l,i,j} $ of the algebra $B$ are defined by the condition: $e_i e_j = \sum\limits_{l}^{}{c_{l,i,j} e_l }$. For a list $A=[a_1,...,a_n]$ with field elements $a_i$ define the $n \times n$-matrix $P_A$ by $(P_A)_{i,j}= \sum\limits_{l}^{}{c_{l,i,j} a_l }$.

Question: How can one obtain the $P_A$ with Sage and check whether there exists a list A such that $P_A$ has non-zero determinant (meaning that $det(P_A)$ does not identically vanish to zero)?

The background of this question is that this is satisfied precisely when $B$ is a Frobenius algebra, see for example theorem 16.82 in the book "Lectures on Modules and Rings" by Lam.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2023-10-03 00:56:01 +0200

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.

edit flag offensive delete link more


Thank you very much. Is it possible to take as the entries of $A$ variables $a_i$ so that $det(P_A)$ is a polynomial in the variables $a_i$ and check whether this multi-variable polynomial is nonzero as a formal polynomial? (This should be at least ok over infinite fields).

Kohlrabi gravatar imageKohlrabi ( 2023-10-03 01:22:41 +0200 )edit

I realised that my previous comment might be stupid as calculating such big determinants with variables might take too long. Maybe one can view $P_A$ as a matrix with entries in the quotient field of the polynomial ring $K[a_1,a_2,...,a_n]$ and then check whether $P_A$ has full rank over the quotient field of $K[a_1,a_2,...,a_n]$ (which is equivalent to non-zero determinant). Is that something one can do with Sage? Im not sure how fast one can expect this to be but at least for small $n$ it might always work.

Kohlrabi gravatar imageKohlrabi ( 2023-10-03 01:40:04 +0200 )edit

You can define R = PolynomialRing(QQ, 24) and A = vector(R.gens()) and use that instead. Or use S = R.fraction_field() and A = vector(S.gens()). Computing with the resulting matrix is likely to be very slow. Using random vectors from the ground field will be much faster.

John Palmieri gravatar imageJohn Palmieri ( 2023-10-03 01:48:59 +0200 )edit

Thanks again. You might be right but I want a program that works for sure so I want to avoid random things. I tried to make a program using your advice:

def isfrobenius(B):
    U = B.basis()
    expansion = [(a*b).to_vector() for a in U for b in U]
    R = PolynomialRing(QQ,n,"z") 
    S = R.fraction_field()
    A = vector(R.gens())
    entries = [(a*b).to_vector().dot_product(A) for a in U for b in U]
    m = matrix(n, n, entries)

It seems to work (and is quick enough for small n). I will do some more tests. For bigger dimensions of algebras one probably needs some ideas on how to check whether this polynomial is non-zero in a better way.

Kohlrabi gravatar imageKohlrabi ( 2023-10-03 01:59:10 +0200 )edit

If you want a program that works for sure, you'd better write it yourself. Every program has bugs, so you should never rely on Sage (or Mathematica or anything else) for a mathematical proof. If you try a random vector and the determinant is nonzero, then you are likely in the Frobenius case. If you try 1000 random vectors and they all give zero determinant, that's strong evidence that it's not Frobenius. In either case, you should then try to supply an actual argument.

John Palmieri gravatar imageJohn Palmieri ( 2023-10-03 02:21:02 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2023-10-01 03:30:40 +0200

Seen: 152 times

Last updated: Oct 03 '23