# Heisenberg Group¶

AUTHORS:

• Hilder Vitor Lima Pereira (2017-08): initial version
class sage.groups.matrix_gps.heisenberg.HeisenbergGroup(n=1, R=0)

The Heisenberg group of degree $$n$$.

Let $$R$$ be a ring, and let $$n$$ be a positive integer. The Heisenberg group of degree $$n$$ over $$R$$ is a multiplicative group whose elements are matrices with the following form:

$\begin{split}\begin{pmatrix} 1 & x^T & z \\ 0 & I_n & y \\ 0 & 0 & 1 \end{pmatrix},\end{split}$

where $$x$$ and $$y$$ are column vectors in $$R^n$$, $$z$$ is a scalar in $$R$$, and $$I_n$$ is the identity matrix of size $$n$$.

INPUT:

• n – the degree of the Heisenberg group
• R – (default: $$\ZZ$$) the ring $$R$$ or a positive integer as a shorthand for the ring $$\ZZ/R\ZZ$$

EXAMPLES:

sage: H = groups.matrix.Heisenberg(); H
Heisenberg group of degree 1 over Integer Ring
sage: H.gens()
(
[1 1 0]  [1 0 0]  [1 0 1]
[0 1 0]  [0 1 1]  [0 1 0]
[0 0 1], [0 0 1], [0 0 1]
)
sage: X, Y, Z = H.gens()
sage: Z * X * Y**-1
[ 1  1  0]
[ 0  1 -1]
[ 0  0  1]
sage: X * Y * X**-1 * Y**-1 == Z
True

sage: H = groups.matrix.Heisenberg(R=5); H
Heisenberg group of degree 1 over Ring of integers modulo 5
sage: H = groups.matrix.Heisenberg(n=3, R=13); H
Heisenberg group of degree 3 over Ring of integers modulo 13


REFERENCES:

cardinality()

Return the order of self.

EXAMPLES:

sage: H = groups.matrix.Heisenberg()
sage: H.order()
+Infinity
sage: H = groups.matrix.Heisenberg(n=4)
sage: H.order()
+Infinity
sage: H = groups.matrix.Heisenberg(R=3)
sage: H.order()
27
sage: H = groups.matrix.Heisenberg(n=2, R=3)
sage: H.order()
243
sage: H = groups.matrix.Heisenberg(n=2, R=GF(4))
sage: H.order()
1024

order()

Return the order of self.

EXAMPLES:

sage: H = groups.matrix.Heisenberg()
sage: H.order()
+Infinity
sage: H = groups.matrix.Heisenberg(n=4)
sage: H.order()
+Infinity
sage: H = groups.matrix.Heisenberg(R=3)
sage: H.order()
27
sage: H = groups.matrix.Heisenberg(n=2, R=3)
sage: H.order()
243
sage: H = groups.matrix.Heisenberg(n=2, R=GF(4))
sage: H.order()
1024