> < ^ Date: Sat, 18 Nov 1995 10:21:51 NFT
> < ^ From: Claude Quitte <quitte@knuth.univ-poitiers.fr >
> ^ Subject: PreImagesRepresentative

Here a problem with the function "PreImagesRepresentatives" wich
returns "false" instead of an antecedent (which exists !).

--------------- the gap source ---------------------------
LogTo("bug2.gap.result") ;

# Pour les matrices a coefficients dans un corps premier
pretty := function(M)
   local Copy_M, nm, n, m, i, j ;
   Copy_M := Copy(M) ;
   nm := DimensionsMat(Copy_M) ;
   n := nm[1] ; m := nm[2] ;
   for i in [1..n] do
      for j in [1..m] do
         Copy_M[i][j] := IntFFE(Copy_M[i][j]) ;
      od ;
   od ;
   return Copy_M ;
end ;

q := 5 ;
GL2Fq := GeneralLinearGroup(2, q) ;
for g in GL2Fq.generators do Print(pretty(g), "\n") ; od ;
Size(GL2Fq) ;
# h := generateur de Fq-{0}
h := Z(q) * [[1, 0], [0, 1]] ;; pretty(h) ;
Order(GL2Fq, h) ;

# C := centre de GL(2,Fq)
C := Subgroup(GL2Fq, [h]) ; C.name := "C" ;
Size(C) ;
C = Centre(GL2Fq) ;

# PGL2(Fq) = GL2(Fq)/centre
PGL2Fq := GL2Fq / C ;  PGL2Fq.name := "PGL2Fq" ;
Size(PGL2Fq) ;

# l'application canonique class : GL2Fq -> PGL2Fq
class := function(x) return FactorGroupElement(C, x) ; end ;

# sous-groupe K de Jean-Louis d'ordre 24
f := class((Z(q)^0 * [[1, 1], [2, 3]])) ;
of := Order(PGL2Fq, f) ;
g := class((Z(q)^0 * [[1, 3], [3, 1]])) ;
og := Order(PGL2Fq, g) ;
K := Subgroup(PGL2Fq, [f, g]) ; K.name := "K" ;
Size(K) ;

K_Left_Cosets := LeftCosets(PGL2Fq, K) ;
Operation_Of_PGL2Fq_On_K_Left_Cosets := Operation(PGL2Fq, K_Left_Cosets, OnLeft) ;
perm := OperationHomomorphism(PGL2Fq, Operation_Of_PGL2Fq_On_K_Left_Cosets) ;

IsSurjective(perm) ;
PreImagesRepresentative(perm, (1,4,2)) ;
PreImagesRepresentative(perm, (1,4)) ;

LogTo() ;

------------------ the result ---------------------------------------------------

gap>
gap> # Pour les matrices a coefficients dans un corps premier
gap> pretty := function(M)
>    local Copy_M, nm, n, m, i, j ;
>    Copy_M := Copy(M) ;
>    nm := DimensionsMat(Copy_M) ;
>    n := nm[1] ; m := nm[2] ;
>    for i in [1..n] do
>       for j in [1..m] do
>          Copy_M[i][j] := IntFFE(Copy_M[i][j]) ;
>       od ;
>    od ;
>    return Copy_M ;
> end ;
function ( M ) ... end
gap>
gap> q := 5 ;
5
gap> GL2Fq := GeneralLinearGroup(2, q) ;
GL(2,5)
gap> for g in GL2Fq.generators do Print(pretty(g), "\n") ; od ;
[ [ 2, 0 ], [ 0, 1 ] ]
[ [ 4, 1 ], [ 4, 0 ] ]
gap> Size(GL2Fq) ;
480
gap> # h := generateur de Fq-{0}
gap> h := Z(q) * [[1, 0], [0, 1]] ;; pretty(h) ;
[ [ 2, 0 ], [ 0, 2 ] ]
gap> Order(GL2Fq, h) ;
4
gap>
gap> # C := centre de GL(2,Fq)
gap> C := Subgroup(GL2Fq, [h]) ; C.name := "C" ;
Subgroup( GL(2,5), [ [ [ Z(5), 0*Z(5) ], [ 0*Z(5), Z(5) ] ] ] )
"C"
gap> Size(C) ;
4
gap> C = Centre(GL2Fq) ;
true
gap>
gap> # PGL2(Fq) = GL2(Fq)/centre
gap> PGL2Fq := GL2Fq / C ;  PGL2Fq.name := "PGL2Fq" ;
(GL(2,5) / C)
"PGL2Fq"
gap> Size(PGL2Fq) ;
120
gap>
gap> # l'application canonique class : GL2Fq -> PGL2Fq
gap> class := function(x) return FactorGroupElement(C, x) ; end ;
function ( x ) ... end
gap>
gap> # sous-groupe K de Jean-Louis d'ordre 24
gap> f := class((Z(q)^0 * [[1, 1], [2, 3]])) ;
FactorGroupElement( C, [ [ Z(5)^3, Z(5)^3 ], [ Z(5)^0, Z(5)^2 ] ] )
gap> of := Order(PGL2Fq, f) ;
3
gap> g := class((Z(q)^0 * [[1, 3], [3, 1]])) ;
FactorGroupElement( C, [ [ Z(5)^2, Z(5) ], [ Z(5), Z(5)^2 ] ] )
gap> og := Order(PGL2Fq, g) ;
4
gap> K := Subgroup(PGL2Fq, [f, g]) ; K.name := "K" ;
Subgroup( (GL(2,5) / C),
[ FactorGroupElement( C, [ [ Z(5)^3, Z(5)^3 ], [ Z(5)^0, Z(5)^2 ] ] ),
  FactorGroupElement( C, [ [ Z(5)^2, Z(5) ], [ Z(5), Z(5)^2 ] ] ) ] )
"K"
gap> Size(K) ;
24
gap>
gap> K_Left_Cosets := LeftCosets(PGL2Fq, K) ;
[ (FactorGroupElement( C, [ [ Z(5)^0, 0*Z(5) ], [ 0*Z(5), Z(5)^0 ] ] )*K),
  (FactorGroupElement( C, [ [ 0*Z(5), Z(5)^2 ], [ Z(5)^0, Z(5)^2 ] ] )*K),
  (FactorGroupElement( C, [ [ 0*Z(5), Z(5) ], [ Z(5)^0, Z(5)^2 ] ] )*K),
  (FactorGroupElement( C, [ [ Z(5)^2, Z(5)^0 ], [ Z(5)^2, 0*Z(5) ] ] )*K),
  (FactorGroupElement( C, [ [ 0*Z(5), Z(5)^0 ], [ Z(5)^0, Z(5)^2 ] ] )*K) ]
gap> Operation_Of_PGL2Fq_On_K_Left_Cosets := Operation(PGL2Fq, K_Left_Cosets, OnLeft) ;
Group( (2,4,5,3), (1,4,2) )
gap> perm := OperationHomomorphism(PGL2Fq, Operation_Of_PGL2Fq_On_K_Left_Cosets) ;
OperationHomomorphism( (GL(2,5) / C), Group( (2,4,5,3), (1,4,2) ) )
gap>
gap> IsSurjective(perm) ;
true
gap> PreImagesRepresentative(perm, (1,4,2)) ;
FactorGroupElement( C, [ [ Z(5)^2, Z(5)^0 ], [ Z(5)^2, 0*Z(5) ] ] )
gap> PreImagesRepresentative(perm, (1,4)) ;
false
gap>
gap> LogTo() ;

--------------------------------------------------------------------------

Best regards

--
Claude Quitte
Dept de Mathematiques
40 Av du recteur Pineau
86022 Poitiers Cedex FRANCE
E-mail Internet : quitte@knuth.univ-poitiers.fr
Fax : 33-49-45-40-10


> < [top]