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