Ask Your Question
3

Get the small group id of the Heisenberg group over F_2[x]/(x^2)

asked 2025-05-11 23:01:52 +0200

Samarium-147 gravatar image

Hello everyone. I want to find information, in particular the small group id in the GAP library, of the Heisenber group over the ring F_2[x]/(x^2), which is small in order (4) but "complicated" in term of construction. The naive idea using the method

groups.matrix.Heisenberg

does not work because it only accepts finite fields and rings of integers modulo n as base rings. So I tried to construct explicitely the group:

P.<x> = GF(2)[]
R.<xx> = QuotientRing(P, P.ideal(x^2))

M = MatrixSpace(R, 3)
H = []
for a in R:
    for b in R:
        for c in R:
            matrix = M([[1, a, b], [0, 1, c], [0, 0, 1]])
            H.append(matrix)

HeisenbergGroup = MatrixGroup(H)

However, I can't use the method group_id because HeisenbergGroup.category shows that it is an object of FinitelyGeneratedMatrixGroup_generic_with_category, not of FinitelyGeneratedMatrixGroup_gap_with_category. (The same situation still happens even if I replace R by a slightly more simple ring

R = cartesian_product([GF(2),GF(2)])

I was wondering if there are some clever ways to get round the problem. Thank you in advance.

edit retag flag offensive close merge delete

Comments

1

It looks like a missing functionality (no .as_permutation_group()method) for MatrixGroups. I'd suggest to file a feature request at https://github.com/sagemath/sage/issues

Max Alekseyev gravatar imageMax Alekseyev ( 2025-05-13 21:58:21 +0200 )edit

Thank you for your suggestion! :)

Samarium-147 gravatar imageSamarium-147 ( 2025-05-18 08:16:42 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2025-06-24 17:18:39 +0200

dan_fulea gravatar image

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...

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2025-05-11 23:01:52 +0200

Seen: 122 times

Last updated: Jun 24