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