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