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