42.16 InverseMapping

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.

Previous Up Top Next
Index

GAP 3.4.4
April 1997