Hello,
Thanks for your system G.A.P. !
I have a problem with the function "IsInjective" (I use the version 3,
release 4, 18 May 95). Here the exact GAP file with its execution.
I don't know the best way to send a report problem so I put the 2 files
(the source file + execution). Is there a good way to transmit reports ??
Best regards.
------------------------------- cut here -----------
LogTo("bug1.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) ;
# Probleme GAP : IsInjective(perm) provoque une erreur
IsInjective(perm) ;
LogTo() ;
---------- and the execution ------------------------------------------
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>
gap> # Probleme GAP : IsInjective(perm) provoque une erreur
gap> IsInjective(perm) ;
Error, power of <c> and <d> is not defined in
<rec1> ^ <rec2> called from
G.operations.Core( G, U ) called from
Core( hom.source, Stabilizer( hom.source, orb[1], hom.range.operation.
operation ) ) called from
fun( i ) called from
List( Orbits( hom.source, hom.range.operation.domain, hom.range.operation.
operation ), function ( orb ) ... end ) called from
...
brk> quit ;
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