Goto Chapter: Top 1 2 3 4 5 6 7 8 9 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

9 Group derivations
 9.1 Creating group derivations
 9.2 Operations for group derivations
 9.3 Images of group derivations

9 Group derivations

Let G and H be groups and let H act on G via automorphisms, i.e. there is a group homomorphism

\alpha \colon H \to \operatorname{Aut}(G)

such that g^h = \alpha(h)(g) for all g \in G and h \in H. A group derivation \delta \colon H \to G is a map such that

\delta(h_1h_2) = \delta(h_1)^{h_2}\delta(h_2).

Note that we do not require G to be abelian.

Algorithms designed for computing with twisted conjugacy classes can be leveraged to do computations involving group derivations, see [Ter25, Sec. 10] for a description on this.

Please note that the functions in this section require G and H to either both be finite, or both be PcpGroups.

9.1 Creating group derivations

The functions below only work for derivations between finite groups or between PcpGroups.

9.1-1 GroupDerivationByImages
‣ GroupDerivationByImages( H, G[[, gens], imgs], act )( function )
‣ GroupDerivationByImagesNC( H, G[[, gens], imgs], act )( function )

Returns: the specified group derivation, or fail if the given arguments do not define a derivation.

This works in the same vein as GroupHomomorphismByImages (Ref 40.1-1). The group H acts on the group G via act, which must be a homomorphism from H into a group of automorphisms of G. This command then returns the group derivation defined by mapping the list gens of generators of H to the list imgs of images in G.

If omitted, the arguments gens and imgs default to the GeneratorsOfGroup value of H and G respectively.

This function checks whether gens generate H and whether the mapping of the generators extends to a group derivation. This test can be expensive, so if one is certain that the given arguments produce a group derivation, these checks can be avoided by using the NC version.

9.1-2 GroupDerivationByFunction
‣ GroupDerivationByFunction( H, G, fun, act )( function )

Returns: the specified group derivation.

GroupDerivationByFunction works in the same vein as GroupHomomorphismByFunction (Ref 40.1-4). The group H acts on the group G via act, which must be a homomorphism from H into a group of automorphisms of G. This command then returns the group derivation defined by mapping the element h of H to the element fun( h ) of G, where fun is a GAP function.

No tests are performed to check whether the arguments really produce a group derivation.

gap> H := PcGroupCode( 149167619499417164, 72 );;
gap> G := PcGroupCode( 5551210572, 72 );;
gap> inn := InnerAutomorphism( G, G.2 );;
gap> hom := GroupHomomorphismByImages(
>      G, G,
>      [ G.1*G.2, G.5 ], [ G.1*G.2^2*G.3^2*G.4, G.5 ]
>    );;
gap> act := GroupHomomorphismByImages(
>      H, AutomorphismGroup( G ),
>      [ H.2, H.1*H.4 ], [ inn, hom ]
>    );;
gap> gens := [ H.2, H.1*H.4 ];;
gap> imgs := [ G.5, G.2 ];;
gap> der := GroupDerivationByImages( H, G, gens, imgs, act );
Group derivation [ f2, f1*f4 ] -> [ f5, f2 ]

9.2 Operations for group derivations

Many of the functions, operations, attributes... available to group homomorphisms are available for group derivations as well. We list some of the more useful ones.

9.2-1 IsInjective
‣ IsInjective( der )( property )

Returns: true if the group derivation der is injective, otherwise false.

9.2-2 IsSurjective
‣ IsSurjective( der )( property )

Returns: true if the group derivation der is surjective, otherwise false.

9.2-3 IsBijective
‣ IsBijective( der )( property )

Returns: true if the group derivation der is bijjective, otherwise false.

9.2-4 Kernel
‣ Kernel( der )( operation )

Returns: the set of elements that are mapped to the identity by der.

This will always be a subgroup of Source(der).

9.2-5 Image
‣ Image( der )( function )
‣ Image( der, elm )( function )
‣ Image( der, coll )( function )

Returns: the image of the group derivation der.

One can optionally give an element elm or a subgroup sub as a second argument, in which case Image will calculate the image of this argument under der.

9.2-6 PreImagesRepresentative
‣ PreImagesRepresentative( der, elm )( operation )

Returns: a preimage of the element elm under the group derivation der, or fail if no preimage exists.

9.2-7 PreImagges
‣ PreImages( der, elm )( function )

Returns: the set of all preimages of the element elm under the group derivation der.

This will always be a (right) coset of Kernel( der ), or the empty list.

gap> IsInjective( der ) or IsSurjective( der );
false
gap> K := Kernel( der );;
gap> Size( K );
9
gap> ImH := Image( der );
Group derivation image in Group( [ f1, f2, f3, f4, f5 ] )
gap> h1 := H.1*H.3;;
gap> g := Image( der, h1 );
f2*f4
gap> ImK := Image( der, K );
Group derivation image in Group( [ f1, f2, f3, f4, f5 ] )
gap> h2 := PreImagesRepresentative( der, g );;
gap> Image( der, h2 ) = g;
true
gap> PreIm := PreImages( der, g );
RightCoset(<group of size 9 with 2 generators>,<object>)
gap> PreIm = RightCoset( K, h2 );
true

9.3 Images of group derivations

In general, the image of a group derivation is not a subgroup. However, it is still possible to do a membership test, to calculate the number of elements, and to enumerate the elements if there are only finitely many.

9.3-1 \in
‣ \in( elm, img )( operation )

Returns: true if elm is an element of img, otherwise false.

9.3-2 Size
‣ Size( img )( attribute )

Returns: the number of elements in img.

9.3-3 List
‣ List( img )( function )

Returns: a list containing the elements of img.

gap> Size( ImH );
8
gap> Size( ImK );
1
gap> g in ImH;
true
gap> g in ImK;
false
gap> List( ImK );
[ <identity> of ... ]
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 Bib Ind

generated by GAPDoc2HTML