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