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