4

Does there exist a proper function in order to check a matrix belongs to GL(3,2) in GAP? I have already searched but I didn't find any function except "IsElementOfFpGroup". But GL(3,2) is not FpGroup.

Nil
  • 1,306

1 Answers1

7

First, a self-explanatory example in GAP:

1) Create the group:

gap> G:=GL(3,2);
SL(3,2)

2) This elements belongs to $G$:

gap> m:=[ [ 0*Z(2), Z(2)^0, Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ], 
>   [ 0*Z(2), Z(2)^0, 0*Z(2) ] ];
[ [ 0*Z(2), Z(2)^0, Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ], 
  [ 0*Z(2), Z(2)^0, 0*Z(2) ] ]
gap> Display(m);
 . 1 1
 1 1 1
 . 1 .
gap> m in G;
true

3) and this not:

gap> m:=[ [ Z(2)^0, Z(2)^0, Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ],
>   [ 0*Z(2), Z(2)^0, 0*Z(2) ] ];
[ [ Z(2)^0, Z(2)^0, Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ], 
  [ 0*Z(2), Z(2)^0, 0*Z(2) ] ]
gap> Display(m);
 1 1 1
 1 1 1
 . 1 .
gap> m in G;
false

The rest of the answer should actually tell how the GAP users are advised to act in order to be able to efficiently find information they need.

First of all, please familiarise yourself with the GAP Tutorial. You're not supposed to read it from first to last page, and you may skip Chapter on Operations and Methods for the first reading. But at least after that you will know where to return if you will need more information regarding certain areas.

Another hint is to use GAP Help system search facilities. Entering ??something, you will find all help sections in all books whose index entries contain the substring "something". For example, for the membership test you might have entered ??membership and then see the following:

gap> ??membership
Help: several entries match this topic - type ?2 to get match [2]

[1] Reference: Membership Test for Lists
[2] Reference: Membership Test for Collections
[3] Reference: \in operation for testing membership
[4] Reference: CanEasilyTestMembership
[5] CRISP: membership test!for classes
[6] FGA: Constructive membership test
[7] FR (not loaded): Membership in semigroups
[8] RCWA (not loaded): rcwa group membership test
[9] RCWA (not loaded): rcwa monoids membership test
[10] SONATA (not loaded): Membership of an ideal

In this case, entering ?3 would direct you exactly to the right place in the manual. If you are not lucky with one word, try synonyms etc.

Trying various "ad-hoc" methods to search for some functionality in GAP may lead to various misunderstandings and losing time, and possibly on relying on undocumented pieces of functionality which are not guaranteed to be preserved in the future versions of GAP.

For example, IsElementOfFpGroup, mentioned in the question, is a category (which tells what is the type of the element, and does not check any membership - you can't call it with two arguments):

gap> IsElementOfFpGroup;
<Category "IsElementOfFpGroup">
gap> F:=FreeGroup("x","y");
<free group on the generators [ x, y ]>
gap> G:=F/ParseRelators(GeneratorsOfGroup(F),"x^2=y^2=1,xy=yx");
<fp group on the generators [ x, y ]>
gap> z:=Random(G);
x
gap> IsElementOfFpGroup(z);
true
gap> GeneratorsOfGroup(F);
[ x, y ]
gap> IsElementOfFpGroup(last[1]);
false

So as you see, it wouldn't help even of your group would be an fp-group, since this is not a function which actually checks something. Instead, it is a category, which is used by GAP to determine what operations an object admits.

See also this question for some more hints on using the GAP help system.

Olexandr Konovalov
  • 7,002
  • 2
  • 34
  • 72
  • I've noticed that this (and also http://math.stackexchange.com/q/675484/) are still not accepted - please do not hesitate to ask if you need further details. Thanks! – Olexandr Konovalov Feb 02 '15 at 23:03