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