Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

In a simpler example, when the ring R is replaced by the field GF(2) the following works:

sage: HG = groups.matrix.Heisenberg(n=1, R=GF(2))
sage: HG.group_id()
[8, 3]

Instead of R=GF(2) option specification, one can also declare the 2 (for $\Bbb Z/2$):

sage: HG = groups.matrix.Heisenberg(n=1, R=2)
sage: HG.group_id()
[8, 3]

sage: HG
Heisenberg group of degree 1 over Ring of integers modulo 2

The documentation is here.

To still do something, we can ask for a better way to look at $\Bbb F_2[x]/(x^2)$. This is a ring with four elements, the dual ring of $\Bbb F_2$, its elements are $0,1,x,1+x$ with $x^2=0$, and it is isomorphic to $\Bbb Z/4$ by making $x$ correspond to $2$ (modulo four). So using this simpler instance of the same ring...

sage: HG = groups.matrix.Heisenberg(n=1, R=4)
sage: HG.group_id()
[64, 18]

sage: HG
Heisenberg group of degree 1 over Ring of integers modulo 4

(Using the other incarnation of the same ring is not accepted by GAP.)

Its order is thus as expected $4^3$ (for the three upper diagonal entries with values in $\Bbb Z/4$ taking independently their values), and it is on the place $18$ in the GAP list.


Of course, we can work in sage also with the GAP side. For instance:

sage: G64_18 = gap.SmallGroup(64, 18)
sage: G64_18
Group( [ f1, f2, f3, f4, f5, f6 ] )

sage: G64_18.SmallGeneratingSet()
[ f1, f2 ]

sage: f1, f2 = G64_18.SmallGeneratingSet()
sage: f1.Order(), f2.Order()
(4, 4)
sage: (f1*f2).Order(), (f2*f1).Order()
(8, 8)

sage: G64_18.StructureDescription()
(C4 x C4) : C4

To obtain an isomorphism one may try to find two elements in HG of order four each, so that both products (in either order) have order eight. Well, a canonical choice would be:

sage: h1 = HG([[1,1,0], [0,1,0], [0,0,1]])
sage: h2 = HG([[1,0,0], [0,1,1], [0,0,1]])
sage: h1.order(), h2.order()
(4, 4)
sage: (h1*h2).order(), (h2*h1).order()
(8, 8)
sage: h1, h2
(
[1 1 0]  [1 0 0]
[0 1 0]  [0 1 1]
[0 0 1], [0 0 1]
)
sage:

There is still a lot to be done to insure an isomorphism, the two worlds of sage and GAP-in-sage are not really miscible, but the path should be so...