Since the main purpose of UnitLib is the date storage, it has only two main user functions to read the description of \(V(KG)\) for the given catalogue number of \(G\) in the Small Groups Library of the GAP system, and to save the description of \(V(KG)\) if the user would like to store it for the further usage for the group which is not contained in the library.
To use the UnitLib package first you need to load it as follows:
gap> LoadPackage("unitlib"); ---------------------------------------------------------------------------- Loading UnitLib 4.1.0 (The library of normalized unit groups of modular group algebras) by Olexandr Konovalov (https://alex-konovalov.github.io/) and Olena Yakimenko. maintained by: Olexandr Konovalov (https://alex-konovalov.github.io/). Homepage: https://gap-packages.github.io/unitlib Report issues at https://github.com/gap-packages/unitlib/issues ---------------------------------------------------------------------------- true
Examples below contain some functions from the LAGUNA package [BKRS], see their description in the LAGUNA manual (LAGUNA: LAGUNA package).
‣ PcNormalizedUnitGroupSmallGroup ( s, n ) | ( function ) |
Returns: PcGroup
Let s be a power of prime \(p\) and n is an integer from [ 1 .. NrSmallGroups(s) ]
. Then PcNormalizedUnitGroupSmallGroup(s,n)
returns the normalized unit group \(V(KG)\) of the modular group algebra \(KG\), where \(G\) is SmallGroup(s,n)
(see SmallGroup
(smallgrp: SmallGroup for group order and index)) and \(K\) is a field of \(p\) elements.
gap> PcNormalizedUnitGroupSmallGroup(128,161); <pc group of size 170141183460469231731687303715884105728 with 127 generators>
The result returned by PcNormalizedUnitGroupSmallGroup
is equivalent to the following:
gap> G := SmallGroup( s, n ); gap> p := PrimePGroup( G ); gap> K := GF( p ); gap> KG := GroupRing( K, G ); gap> PcNormalizedUnitGroup( KG );
Nevertheless, PcNormalizedUnitGroupSmallGroup
is not just a shortcut for such computation. It reads the description of the normalized unit group from the UnitLib library and then reconstructs all its necessary attributes and properties. Thus, if you would like to obtain the group algebra \(KG\) or the field \(K\) and the group \(G\), you should extract them from \(V(KG)\), which should be constructed first.
gap> V:=PcNormalizedUnitGroup(GroupRing(GF(2),SmallGroup(8,3))); <pc group of size 128 with 7 generators> gap> V1:=PcNormalizedUnitGroupSmallGroup(8,3); <pc group of size 128 with 7 generators> gap> V1=V; # two isomorphic groups but not identical objects false gap> IdGroup(V)=IdGroup(V1); true gap> IsomorphismGroups(V,V1); [ f1, f2, f3, f4, f5, f6, f7 ] -> [ f1, f2, f3, f4, f5, f6, f7 ] gap> KG:=UnderlyingGroupRing(V1); # now the correct way <algebra-with-one over GF(2), with 3 generators> gap> V1=PcNormalizedUnitGroup(KG); # V1 is an attribute of KG true gap> K:=UnderlyingField(KG); GF(2) gap> G:=UnderlyingGroup(KG); <pc group of size 8 with 3 generators>
Moreover, the original group \(G\) can be embedded into the output of the PcNormalizedUnitGroupSmallGroup
, as it is shown in the next example:
gap> f:=Embedding(G,V1); [ f1, f2, f3 ] -> [ f1, f2, f4 ] gap> g:=List(GeneratorsOfGroup(G), x -> x^f ); [ f1, f2, f4 ] gap> G1:=Subgroup(V1,g); Group([ f1, f2, f4 ]) gap> IdGroup(G1); [ 8, 3 ]
If the first argument s (the order of a group) is not a power of prime, an error message will appear. If s is >= 243, you will get a warning telling that the library does not contain \(V(KG)\) for \(G\) of such order, and you can use only data that you already stored in your unitlib/userdata
directory with the help of the function SavePcNormalizedUnitGroup
(2.1-2).
It is worth to mention that for some groups of order 243, the construction of the normalized unit group using PcNormalizedUnitGroupSmallGroup
may already require some noticeable amount of time. For example, it took about 166 seconds of CPU time to compute PcNormalizedUnitGroupSmallGroup(243,30)
on Intel Xeon 3.4 GHz with 2048 KB cache.
‣ SavePcNormalizedUnitGroup ( G ) | ( function ) |
‣ ParSavePcNormalizedUnitGroup ( G ) | ( function ) |
Returns: true
Let G be a finite \(p\)-group of order \(s\) from the Small Groups Library of the GAP system, constructed with the help of SmallGroup(s,n)
(see SmallGroup
(smallgrp: SmallGroup for group order and index)). Then SavePcNormalizedUnitGroup(G)
creates the file with the name of the form us_n.g
in the directory unitlib/userdata
, and returns true
if this file was successfully generated. This file contains the description of the normalized unit group \(V(KG)\) of the group algebra of the group G over the field of \(p\) elements.
If the order of G is >= 243, after this you can construct the group \(V(KG)\) using PcNormalizedUnitGroupSmallGroup
(2.1-1) similarly to the previous section. The preliminary warning will be displayed, telling that for such orders you can use only those groups that were already computed by the user and saved to the unitlib/userdata
directory. If there will be no such file there, you will get an error message, otherwise the computation will begin.
If the order of G is less than 243, then the file will be created in the unitlib/userdata
directory, but UnitLib will continue to use the file with the same name from the appropriate directory in unitlib/data
. You can compare these two files to make it sure that they are the same.
NOTE THAT:
1. The argument should be the underlying group \(G\) and not the normalized unit group \(V(KG)\).
2. The argument should be a group from the GAP Small Groups Library constructed with the help of SmallGroup(s,n)
, otherwise the date consistency may be lost.
ParSavePcNormalizedUnitGroup
works in the same way, but uses the function ParPcNormalizedUnitGroup
to parallelise the computation using the GAP package SCSCP.
gap> SavePcNormalizedUnitGroup( SmallGroup( 256, 56092 ) ); true gap> PcNormalizedUnitGroupSmallGroup( 256, 56092 ); WARNING : the library of V(KG) for groups of order 256 is not available yet !!! You can use only groups from the unitlib/userdata directory in case if you already computed their descriptions (See the manual for SavePcNormalizedUnitGroup). #I Description of V(KG) for G=SmallGroup(256, 56092) accepted, started its generation... <pc group of size 57896044618658097711785492504343953926634992332820282019728792003956564819968 with 255 generators>
generated by GAPDoc2HTML