IsGroupHomomorphism( map )
IsGroupHomomorphism returns true if the function map is a group
homomorphism and false otherwise. Signals an error if map is a multi
value mapping.
A mapping map is a group homomorphism if its source G and range H are both groups and if for every pair of elements x, y in G it holds that (x y)^{map} = x^{map} y^{map}.
gap> s4 := Group( (1,2), (1,2,3,4) );;
gap> v4 := Subgroup( s4, [ (1,2)(3,4), (1,3)(2,4) ] );;
gap> phi := NaturalHomomorphism( s4, s4/v4 );;
gap> IsGroupHomomorphism( phi );
true
gap> IsHomomorphism( phi );
true # since the source is a group this is equivalent to the above
gap> IsGroupHomomorphism( FrobeniusAutomorphism( GF(16) ) );
false # it is a field automorphism
IsGroupHomomorphism first tests if the flag map.isGroupHomomorphism
is bound. If the flag is bound, IsGroupHomomorphism returns its value.
Otherwise it calls
map.source.operations.IsGroupHomomorphism( map ), remembers the
returned value in map.isGroupHomomorphism, and returns it. Note that
of course all functions that create group homomorphisms set the flag
map.isGroupHomomorphism to true, so that no function is called for
those group homomorphisms.
The default function called this way is MappingOps.IsGroupHomomorphism.
It computes all the elements of the source of map and for each such
element x and each generator y tests whether (xy)^{map} = x^{map}
y^{map}. Look under IsHomomorphism in the index to see for which
mappings this function is overlaid.
GAP 3.4.4