A mapping map is represented by a record with the following components
isGeneralMapping:true, indicating that this is a general mapping.
source:
range:The following entries are optional. The functions with the corresponding names will generally test if they are present. If they are then their value is simply returned. Otherwise the functions will perform the computation and add those fields to those record for the next time.
isMapping:true if map is a single valued mapping and false otherwise.
isInjective 
isSurjective 
isBijection 
isHomomorphism 
isMonomorphism 
isEpimorphism 
isIsomorphism 
isEndomorphism 
isAutomorphism:true if  map  has  the  corresponding  property  and  false
        otherwise.
preImage:map.source   of   elements   pre  that  are
        actually mapped  to at   least  one   element, i.e.,   for  which
        Images( map, pre ) is nonempty.
image:map.range  of    the elements img    that
        are   actually  values of     the  mapping,   i.e.,   for   which
        PreImages( map, img ) is nonempty.
inverseMapping:map.range  to    map.source  that    maps  each   element
        img to the set PreImages( map, img ).
The following entry is optional. It must be bound only if the inverse of map is indeed a single valued mapping.
inverseFunction:The following entry is optional. It must be bound only if map is a homomorphism.
kernel:map.source  that   are  mapped   to   the
        identity element of map.range.
GAP 3.4.4