IsEndomorphism( map )
IsEndomorphism returns true if the mapping map is a endomorphism
and false otherwise. Signals an error if map is a multi valued
mapping.
A mapping is an endomorphism if it is a homomorphism (see IsHomomorphism) and the range is a subset of the source.
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> IsEndomorphism( p4 );
true
gap> p5 := MappingByFunction( g, g, x -> x^5 );
MappingByFunction( g, g, function ( x )
return x ^ 5;
end )
gap> IsEndomorphism( p5 );
true
IsEndomorphism first test if the flag map.isEndomorphism is bound.
If the flag is bound, it returns this value. Otherwise it calls
map.operations.IsEndomorphism( map ), remembers the returned value
in map.isEndomorphism, and returns it.
The default function called this way is MappingOps.IsEndomorphism,
which tests if the range is a subset of the source, calls
IsHomomorphism, and returns the logical and of the results. This
function is seldom overlaid, because all the interesting work is done in
IsSubset and IsHomomorphism.
GAP 3.4.4