Estimate the subgroup order of group of units in finite algebra in GAP

123 Views Asked by At

Let $G$ be a finite group $p$-group and $FG$ be a modular group algebra of $G$. Is there any way to estimate the order of subgroup generated by two or more elements of $U(FG)$, where $U(FG)$ is the group of units of $FG$? For small groups it extremely easy. The larger group and field, the more difficult this exercise is.

Example.

  • Easy.
gap> G := QuaternionGroup(8);;
gap> F := GF(2);;
gap> FG := GroupRing(F, G);;
gap> UFG := Units(FG);;
gap> Order(Subgroup(UFG, [Random(UFG), Random(UFG)]));
32
gap> Order(Subgroup(UFG, [Random(UFG), Random(UFG)]));
8
  • A little bit more difficult.
gap> G := OneSmallGroup(2^9);;
gap> F := GF(2);;
gap> FG := GroupRing(F, G);;
gap> FG_Teta := Embedding(G, FG);;
gap> Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta]);; 
gap> Order(Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta]));;
gap> Order(Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta])); 
16384
gap> Order(Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta]));
32768
gap> Order(Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta]));
2048

My main goal is to bypass the step of calculating the exact order of a subgroup and replace it with a logical condition, in which I will determine whether the order of the subgroup is not less than.

1

There are 1 best solutions below

2
On BEST ANSWER

If you convert to a matrix representation, you can work in a matrix group and that is much faster:

gap> bas:=Basis(FG);
CanonicalBasis( <algebra-with-one of dimension 512 over GF(2)> )
gap> H:=(Group([Random(G)^FG_Teta + Random(G)^FG_Teta + Random(G)^FG_Teta, Random(G)^FG_Teta]));
<group with 2 generators>
gap> mats:=List(GeneratorsOfGroup(H),x->List(bas,y->Coefficients(bas,y*x)));;
gap> HM:=Group(mats);
<matrix group with 2 generators>
gap> Size(HM:cheap);
32768

The use of the :cheap option in the last command will stop GAP from trying to improve the degree of the permutation representation that is used internally -- doing so might help if you do further calculations in the group.

If the group gets even larger, one can use the recog package (with the caveat that this is so far a result that is probabilistic with a small chance of error):

gap> U:=Units(FG);
gap> mats:=List(GeneratorsOfGroup(U),x->List(bas,y->Coefficients(bas,y*x)));;
gap> HM:=Group(mats);;
gap> Size(RecognizeGroup(HM));
670390396497129854978701249910292306373968291029619668886178072186088201503677\
3488400937149083451713845015929093243025426876941405973284973216824503042048