# 43.1 IsHomomorphism

`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
April 1997