How to list all subgroup info of a (n abelian) group with Sage?

1.4k Views Asked by At

Using the Magma calculator at http://magma.maths.usyd.edu.au/calc/ I listed all subgroups of C3XC3 :

F<x, y>:=FreeAbelianGroup(2);
G:=quo<F | 3*x, 3*y>;
sub:=Subgroups(G);
sub

Conjugacy classes of subgroups
------------------------------

[1]     Order 9            Length 1
    Abelian Group isomorphic to Z/3 + Z/3
    Defined on 2 generators
    Relations:
        3*G.1 = 0
        3*G.2 = 0
[2]     Order 3            Length 1
    Abelian Group isomorphic to Z/3
    Defined on 1 generator in supergroup G:
        $.1 = 2*G.1
        Relations:
            3*$.1 = 0
[3]     Order 3            Length 1
    Abelian Group isomorphic to Z/3
    Defined on 1 generator in supergroup G:
        $.1 = G.2
        Relations:
            3*$.1 = 0
[4]     Order 3            Length 1
    Abelian Group isomorphic to Z/3
    Defined on 1 generator in supergroup G:
        $.1 = 2*G.1 + 2*G.2
        Relations:
            3*$.1 = 0
[5]     Order 3            Length 1
    Abelian Group isomorphic to Z/3
    Defined on 1 generator in supergroup G:
        $.1 = 2*G.1 + G.2
        Relations:
            3*$.1 = 0
[6]     Order 1            Length 1
    Abelian Group of order 1

How can I get the same information using Sage?

EDIT/UPDATE: Thanks to an answer of kcrisman I now have:

F.<x, y, z>=FreeGroup()
G=F/[x^2, y^6, z^6, x*y*x^-1*y^-1, x*z*x^-1*z^-1, y*z*y^-1*z^-1]
G_perm = G.as_permutation_group()
G_perm.structure_description()
len(G_perm.subgroups())
[G_perm.subgroups()[x].structure_description() for x in range (len(G_perm.subgroups()))]

Remaining questions are:

1) How do I get the generators and relations of the subgroups?

2) Is it possible to list only the subgroups which are only subgroups of the group and continue in a tree fashion manner?

3) No doubt there is a better, faster way to get the info, how?

1

There are 1 best solutions below

0
On BEST ANSWER

We could probably get this information more directly from Gap, but here is at least some of what you are looking for.

sage: F.<x, y> = FreeGroup()
sage: G=F / [x^3,y^3,x*y*x^-1*y^-1]
sage: G.order()
9
sage: H = G.as_permutation_group()
sage: H.subgroups()
[Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [()],
 Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [(1,4,5)(2,6,7)(3,8,9)],
 Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [(1,2,3)(4,6,8)(5,7,9)],
 Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [(1,6,9)(2,8,5)(3,4,7)],
 Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [(1,8,7)(2,4,9)(3,6,5)],
 Subgroup of (Permutation Group with generators [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]) generated by [(1,2,3)(4,6,8)(5,7,9), (1,4,5)(2,6,7)(3,8,9)]]