# Can GAP determine whether a local algebra is Frobenius?

Let $$A$$ be a local(not necessarily commutative) finite dimensional algebra over a (finite if it helps) field $$K$$. Is there a way to check with GAP (without using QPA as we do not know quiver and relations for A in general) to quickly check whether $$A$$ is a Frobenius algebra? Note that this is equivalent to the condition that the vector space dimension of the socle of the regular module $$A$$ is one-dimensional.

A concrete situation I have in mind is this: Let $$B$$ be the algebra $$K[x_1,...,x_n]/(x^i_^2)$$ (which is the group algebra of the elementary abelian 2-groups when the characteristic of $$K$$ is 2) and $$A$$ a subalgebra with identity generated by some elements of $$B$$ of positive degree. $$B$$ could also be another group algebra of a $$p$$-group such as the quaternions.

Here is a concrete example (constructes using QPA, so you have to do LoadPackage("qpa") first in GAP):

Q:=Quiver(1,[[1,1,"x"],[1,1,"y"],[1,1,"z"]]);KQ:=PathAlgebra(GF(3),Q);AssignGeneratorVariables(KQ);rel:=[x*y-y*x,y*z-z*y,x*z-z*x,x^2,y^2,z^2];B:=KQ/rel;Dimension(B);

gens:=GeneratorsOfAlgebra(B);e:=gens;x:=gens;y:=gens;z:=gens;

A:=Subalgebra(B,[e,x+y+z,x*y,x*y*z]);O:=Basis(A);Dimension(A);

• If you can construct a matrix representation of (the action on) the regular module, you could use the MeatAxe to calculate the socle. Mar 15 at 13:50
• @ahulpke Thank you for the comment. I added a concrete example. Can you show how you would do it for this example (it is not Frobenius). I thought MeatAxe is something only for group algebras.
– Mare
Mar 15 at 16:07

The MeatAxe works for finite dimensional modules of associative algebras, given by matrices for algebra generators, describing the action on the module.

Build matrices for the regular module (by mapping basis elements with algebra generators, and decomposing the result in the basis), and make a MeatAxe module from it.

mats:=List(GeneratorsOfAlgebra(A),x->List(O,y->Coefficients(O,y*x)));
mo:=GModuleByMats(mats,GF(3));


When we calculate the socle, it is of dimension 2. Thus by your theorem the algebra is not Frobenius.

gap> bas:=MTX.BasisSocle(mo);
[ [ 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), Z(3)^0 ],
[ 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3) ] ]


(Of course one could do a shortcut in the code and stop as soon as it is known the socle is of dimension >1)

These vectors are in relation to the basis O that was chosen, so corresponding algebra elements are:

gap> List(bas,x->x*O);
[ [(Z(3)^0)*x*y+(Z(3)^0)*x*z+(Z(3)^0)*y*z], [(Z(3)^0)*x*y*z] ]

• Thank you very much. This is great. It could do an example in 10 seconds which needed 10 days with a supercomputer by using the "old" method to check for Frobenius ( done by calculating quiver and relations). Can one also obtain an explicit basis of the socle in terms of the basis elements of the algebra (and not just weird dimension vectors as a result)? Another question: Can one also obtain minimal generators quickly for such an algebra? Minimal generators are given by a vector space basis of $J / J^2$ when $J$ is the Jacobson radical of the algebra.
– Mare
Mar 15 at 16:26
• I've added information about the basis. I am somewhat confused by a basis of $J/J^2$ should generate the algebra. Would that not only generate $J$? (There is MTX.BasisRadical` to get $J$) Mar 15 at 16:49
• Of course I mean that $J/J^2$ generates the algebra as an algebra and not just as a vector space (so you are allowed to multiply the elements in $J/J^2$). Together with the identity you will get every element of the algebra in that way). $J/J^2$ correspond to the arrows in the quiver of the algebra, which of course generate the algebra with all primitive idempotents (but here the algebra is local and only the identity is a primitive idempotent).
– Mare
Mar 15 at 16:52
• To get the radical, do I have to use MTX.BasisRadical(mo); ? Because that gives an error.
– Mare
Mar 15 at 16:58
• Ah -- the radical code assumes the generators are invertible. I'll have to have a look at it. Mar 15 at 18:01