IsBijection( map )
IsBijection returns true if the mapping map is a bijection and
false otherwise. Signals an error if map is a multi valued mapping.
A mapping map is a bijection if for each element img of the range there is exactly one element elm of the source that map maps to img. We also say that map is bijective.
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> IsBijection( p4 );
false
gap> IsBijection( InverseMapping( p4 ) );
Error, <map> must be a single valued mapping
gap> p5 := MappingByFunction( g, g, x -> x^5 );
MappingByFunction( g, g, function ( x )
return x ^ 5;
end )
gap> IsBijection( p5 );
true
gap> IsBijection( InverseMapping( p5 ) );
true # 'p5' is a bijection
IsBijection first tests if the flag map.isBijection is bound. If
the flag is bound, it returns its value. Otherwise it calls
map.operations.IsBijection( map ), remembers the returned value in
map.isBijection, and returns it.
The default function called this way is MappingOps.IsBijection, which
calls IsInjective and IsSurjective, and returns the logical and of
the results. This function is seldom overlaid, because all the
interesting work is done by IsInjective and IsSurjective.
GAP 3.4.4