Dima Pasechnik wrote
I came across a necessity to convert a mapping defined by
MappingByFunction into a permutation. Is there any GAP-function to do
My particular example arises when I want to define the group
in its action on the points of projective space $PG(n,q)$.
It is straightforward to get $PGL(n,q)$ and the extra mapping
f (Frobenius automorphism) needed to generate $G$.
However f is given as MappingByFunction and I don't see a regular
way to convert f into a permutation.
Here is one way to solve this problem.
gap> # We act on the lines of a two-dimensional space over GF(4). gap> elms:= NormedVectors( GF(4)^2 ); [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2) ], [ Z(2)^0, Z(2)^0 ], [ Z(2)^0, Z(2^2) ], [ Z(2)^0, Z(2^2)^2 ] ] gap> gap> # Get the general linear group. gap> g:= GL(2,4); GL(2,4) gap> gap> # Define the Frobenius automorphism, acting on lines. gap> normedfrob2:= MappingByFunction( elms, elms, > x -> NormedVector( List( x, y -> y^2 ) ) );; gap> gap> # Compute the permutations induced by the generators of GL(2,4). gap> p1:= Permutation( g.1, elms, OnLines ); (3,5,4) gap> p2:= Permutation( g.2, elms, OnLines ); (1,2,3) gap> gap> # Compute the permutation induced by the Frobenius automorphism. gap> p3:= GroupElementsOps.Permutation( normedfrob2, elms, OnPoints ); (4,5) gap> gap> # We have constructed a permutation representation of gap> # the group is P\GammaL(2,4). gap> Group( p3, p2, p1 ); Group( (4,5), (3,5,4), (1,2,3) )
Maybe in a forthcoming version of GAP 'Permutation' will also work for
computing the permutation action of mappings (that are bijections).
For the moment the method sketched above should suffice.