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