IsHomomorphism( map )
IsHomomorphism returns true if the mapping map is a homomorphism
and false otherwise. Signals an error if map is a multi valued
mapping.
A mapping map is a homomorphism if the source and the range are sources of the same category, and map respects the structure. For example, if both source and range are groups and for each x,y in the source (xy)^{map} = x^{map} y^{map}, then map is a homomorphism.
gap> g := Group( (1,2,3,4), (2,4), (5,6,7) );; g.name := "g";;
gap> p4 := MappingByFunction( g, g, x -> x^4 );
MappingByFunction( g, g, function ( x )
return x ^ 4;
end )
gap> IsHomomorphism( p4 );
true
gap> p5 := MappingByFunction( g, g, x -> x^5 );
MappingByFunction( g, g, function ( x )
return x ^ 5;
end )
gap> IsHomomorphism( p5 );
true
gap> p6 := MappingByFunction( g, g, x -> x^6 );
MappingByFunction( g, g, function ( x )
return x ^ 6;
end )
gap> IsHomomorphism( p6 );
false
IsHomomorphism first tests if the flag map.isHomomorphism is bound.
If the flag is bound, it returns its value. Otherwise it calls
map.source.operations.IsHomomorphism( map ), remembers the returned
value in map.isHomomorphism, and returns it.
The functions usually called this way are IsGroupHomomorphism if the
source of map is a group and IsFieldHomomorphism if the source of
map is a field (see IsGroupHomomorphism, IsFieldHomomorphism).
GAP 3.4.4