I need to define an action of Modular Group on Galois Field(7). Someone can define me this programe works for it? In this program I could not follow that why is he taking GroupHomomorphismByImages? Sometimes I got confused, that how can we distinguish between GroupHomomorphismByImages and GroupHomomorphismByFunction, and sometimes take NaturalHomomorphismByNormalSubgroup, what is the difference between these homomorphisms that defines an action in GAP?
F := FreeGroup(2);
G := F/[F.1^2, F.2^3];
hgens := [(7,8)(1,6)(2,3)(4,5), (7,8,1)(2,4,6)];
H := Group(hgens);
f := GroupHomomorphismByImages(G,H,[G.1,G.2], hgens);
S := Stabiliser(H,8);
T := PreImage(f, S);
Index(G, T);
CosetTable(G,T);
GeneratorsOfGroup(T);
The most important way of creating group homomorphisms is to give images for a set of group generators, and then to extend it to the group generated by them, using the homomorphism property. This is done by
GroupHomomorphismByImages. If generators does not generate the group, or if the mapping of the generators does not extend to a homomorphism, thenfailis returned.GroupHomomorphismByFunctioncan be thought as a wrapper of a function that takes an element fromGand returns an element ofH, into a homomorphism fromGtoH. No test is performed on whether the functions actually gives a homomorphism between both groups, because this would require testing the full multiplication table. Thus, it's the user's responsibility to ensure that this is the case. Another warning is that if no function to compute preimages is given, computing preimages requires mapping every element of the source to find an element that maps to the requested image. This is time and memory consuming.Finally,
NaturalHomomorphismByNormalSubgroup(G,N)is very efficient when one is interested in constructing the factor groupG/Nhaving the normal subgroupN, to be able then to move betweenGandG/N. In this case, one needs not to care about the resulting group and images of generators ofG. GAP will try to select the image group as to make computations in it as efficient as possible.From this considerations, it looks like in the settings from the GAP example above,
GroupHomomorphismByImagesis the only way to go - one wants to specify a particular image of the homomorphism and images of generators ofG, needs to compute preimages and doesn't have the kernel of the homomorphism already constructed.