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