¿Existe una función adecuada para comprobar que una matriz pertenece a GL(3,2) en GAP? Ya he buscado pero no he encontrado ninguna función excepto "IsElementOfFpGroup". Pero GL(3,2) no es FpGroup.
Respuesta
¿Demasiados anuncios?En primer lugar, un ejemplo autoexplicativo en GAP:
1) Crea el grupo:
gap> G:=GL(3,2);
SL(3,2)
2) Estos elementos pertenecen a $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) y esto no:
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
El resto de la respuesta debe decir realmente cómo se aconseja a los usuarios del GAP que actúen para poder encontrar eficazmente la información que necesitan.
En primer lugar, familiarícese con el Tutorial GAP . No debes leerlo de la primera a la última página, y puedes saltarte el capítulo de Operaciones y Métodos para la primera lectura. Pero al menos después sabrá a dónde volver si necesita más información sobre determinadas áreas.
Otra sugerencia es utilizar los servicios de búsqueda del sistema de ayuda de GAP. Introducir ??something
encontrará todas las secciones de ayuda de todos los libros cuyas entradas del índice contengan la subcadena "algo". Por ejemplo, para la prueba de afiliación podría haber introducido ??membership
y luego ver lo siguiente:
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
En este caso, la introducción de ?3
te dirigirá exactamente al lugar correcto en el manual. Si no tienes suerte con una palabra, prueba con sinónimos, etc.
Intentar varios métodos "ad-hoc" para buscar alguna funcionalidad en GAP puede llevar a varios malentendidos y a perder tiempo, y posiblemente a depender de piezas de funcionalidad no documentadas que no se garantiza que se conserven en las futuras versiones de GAP.
Por ejemplo, IsElementOfFpGroup
mencionado en la pregunta, es una categoría (que dice cuál es el tipo del elemento, y no comprueba ninguna pertenencia - no se puede llamar con dos argumentos):
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
Así que, como ves, no serviría ni siquiera que tu grupo fuera un grupo fp, ya que no es una función que realmente compruebe algo. En cambio, es una categoría, que es utilizada por GAP para determinar qué operaciones admite un objeto.
Ver también esta pregunta para obtener más consejos sobre el uso del sistema de ayuda de GAP.