InverseMapping( map )
InverseMapping returns the inverse mapping of the mapping map. The
inverse mapping inv is a mapping with source map.range, range
map.source, such that each element elm of its source is mapped to
the set PreImages( map, elm ) (see PreImages). map may be a
multi valued mapping.
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> i4 := InverseMapping( p4 );
InverseMapping( MappingByFunction( g, g, function ( x )
return x ^ 4;
end ) )
gap> Images( i4, () );
[ (), (2,4), (1,2)(3,4), (1,2,3,4), (1,3), (1,3)(2,4), (1,4,3,2),
(1,4)(2,3) ]
InverseMapping first tests if the field map.inverseMapping is
bound. If the field is bound, it returns its value. Otherwise it calls
map.operations.InverseMapping( map ), remembers the returned value
in map.inverseMapping, and returns it.
The default function called this way is MappingOps.InverseMapping,
which constructs a new mapping inv. This new mapping remembers map
as its own inverse mapping in inv.inverseMapping and delegates
everything to it. For example to compute Image( inv, elm ),
inv.operations.ImageElm calls PreImage(inv.inverseMapping,elm).
Special types of mappings will overlay this default function with more
efficient functions.
GAP 3.4.4