42.11 PreImage

PreImage( bij, img )

In this form PreImage returns the preimage of the element img of the range of the bijection bij under bij. The preimage is the unique element of the source of bij that is mapped by bij to img. Note that bij must be a bijection, a mapping that is not a bijection is not allowed (see PreImages).

    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> PreImage( p4, (5,6,7) );
    Error, <bij> must be a bijection, not an arbitrary mapping
    gap> p5 := MappingByFunction( g, g, x -> x^5 );
    MappingByFunction( g, g, function ( x )
        return x ^ 5;
    end )
    gap> PreImage( p5, (2,4)(5,6,7) );
    (2,4)(5,7,6) 

PreImage( bij, imgs )

In this form PreImage returns the preimage of the elements imgs of the range of the bijection bij under bij. The primage of imgs is the set of all preimages of the elements in imgs. imgs may be a proper set (see Set) or a domain (see Domains). The result will be a subset of the source of bij, either as a proper set or as a domain. Again bij must be a bijection, a mapping that is not a bijection is not allowed (see PreImages).

    gap> PreImage( p4, [ (), (5,6,7) ] );
    [ (), (5,6,7), (2,4), (2,4)(5,6,7), (1,2)(3,4), (1,2)(3,4)(5,6,7), 
      (1,2,3,4), (1,2,3,4)(5,6,7), (1,3), (1,3)(5,6,7), (1,3)(2,4), 
      (1,3)(2,4)(5,6,7), (1,4,3,2), (1,4,3,2)(5,6,7), (1,4)(2,3), 
      (1,4)(2,3)(5,6,7) ]
    gap> PreImage( p5, Subgroup( g, [ (5,7,6), (2,4) ] ) );
    [ (), (5,6,7), (5,7,6), (2,4), (2,4)(5,6,7), (2,4)(5,7,6) ] 

PreImage( map )

In this form PreImage returns the preimage of the mapping map. The preimage is the set of elements elm of the source of map that are actually mapped to at least one element, i.e., for which PreImages( map, elm ) is nonempty. Note that in this case the argument may be an arbitrary mapping (especially a multi valued one).

    gap> PreImage( p4 ) = g;
    true 

PreImage firsts checks in which form it is called.

In the first case it calls bij.operations.PreImageElm( bij, elm ) and returns this value.

The default function called this way is MappingOps.PreImageElm, which checks that bij is indeed a bijection, calls PreImages( bij, elm ), and returns the single element of the set returned by PreImages. Look in the index under PreImage to see for which mappings this function is overlaid.

In the second case it calls bij.operations.PreImageSet( bij, elms ) and returns this value.

The default function called this way is MappingOps.PreImageSet, which checks that map is indeed a bijection, calls PreImages( bij, elms ), and returns this value. Look in the index under PreImage to see for which mappings this is overlaid.

In the third case it tests if the field map.preImage is bound. If this field is bound, it simply returns this value. Otherwise it calls map.operations.PreImageRange( map ), remembers the returned value in map.preImage, and returns it.

The default function called this way is MappingOps.PreImageRange, which calls PreImages( map, map.source ), and returns this value. This function is seldom overlaid, since all the work is done by map.operations.PreImagesSet.

Previous Up Top Next
Index

GAP 3.4.4
April 1997