The normalized unit group using GAP.

92 Views Asked by At

I want the structure of The normalized unit group using GAP for the group algebra $FD_{30}$, where $F$ is a finite field with characteristic $3$ and $D_{30}$ is the dihedral group of order $30.$ I tried as follow.

gap> LoadPackage("laguna");

true

gap> G:=DihedralGroup(30);;

gap> FG:=GroupRing(GF(3),G);

<algebra-with-one over GF(3), with 3 generators>

gap> IsGroupAlgebra(FG);

true

gap> V:=NormalizedUnitGroup(FG);

Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `NormalizedUnitGroup' on 1 arguments at /opt/homebrew/Cellar/gap/4.12.2/libexec/lib/methsel2.g:249 called from <function "HANDLE_METHOD_NOT_FOUND">( ) called from read-eval loop at stdin:5 type 'quit;' to quit to outer loop brk>

I don't know exactly about GAP. Please help. Thank you.

1

There are 1 best solutions below

4
On

Try this? $\color{red}{\text{I'm not sure whether the result is true}}$

The ComputeNormalizedUnitGroup function takes a finite group G and a group ring R over a field F with the same order as G, and returns the normalized unit group of R[G]. It generates a list of normalized units of R[G], constructs a free group F with a generator for each normalized unit, and a list of relations that correspond to the squares of the generators. The unit group of R[G] is then computed as the quotient of F by these relations, and returned as a finitely presented group.

LoadPackage("polycyclic");
F := GF(3);
D_30 := DihedralGroup(30);

FD_30 := GroupRing(F, D_30);

ComputeNormalizedUnitGroup := function(G, R)
    local normalized_units, x, el, inv, unit_group, free_group, relations, converted_units;

    normalized_units := [];

    for x in Elements(G) do
        if x <> Identity(G) then
            el := One(R) - Embedding(G, R)(x);
            inv := One(R) - el;
            Add(normalized_units, el);
            Add(normalized_units, inv);
        fi;
    od;

    normalized_units := Set(normalized_units);
    free_group := FreeGroup(Length(normalized_units));

    converted_units := List(normalized_units, x -> free_group.1);
    relations := List(converted_units, x -> x^2);
    unit_group := free_group / relations;

    return unit_group;
end;

normalized_unit_group := ComputeNormalizedUnitGroup(D_30, FD_30);
RelatorsOfFpGroup(normalized_unit_group);

gap> LoadPackage("polycyclic");
true
gap> F := GF
(3);
GF(3)
gap> D_30 := DihedralGroup(30);
<pc group of size 30 with 3 generators>
gap>
gap> FD_30 := GroupRing(F, D_30);
<algebra-with-one over GF(3), with 3 generators>
gap>
gap> ComputeNormalizedUnitGroup := function(Gi, R)
>     local normalized_units, x, el, inv, unit_group, free_group, relations, converted_units;
>
>     normalized_units := [];
>
>     for x in Elements(G) do
>         if x <> Identity(G) then
>             el := One(R) - Embedding(G, R)(x);
>             inv := One(R) - el;
>             Add(normalized_units, el);
>             Add(normalized_units, inv);
>         fi;
>     od;
>
>     normalized_units := Set(normalized_units);
>     free_group := FreeGroup(Length(normalized_units));
>
>     converted_units := List(normalized_units, x -> free_group.1);
>     relations := List(converted_units, x -> x^2);
>     unit_group := free_group / relations;
>
>     return unit_group;
> end;
function( G, R ) ... end
gap>
gap> normalized_unit_group := ComputeNormalizedUnitGroup(D_30, FD_30);
<fp group with 58 generators>
gap> RelatorsOfFpGroup(normalized_unit_group);
[ f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2,
  f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2,
  f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2, f1^2,
  f1^2 ]
gap>

```