Heisenberg Group¶
AUTHORS:
- Hilder Vitor Lima Pereira (2017-08): initial version 
- class sage.groups.matrix_gps.heisenberg.HeisenbergGroup(n=1, R=0)[source]¶
- Bases: - UniqueRepresentation,- FinitelyGeneratedMatrixGroup_gap- 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 - >>> from sage.all import * >>> H = groups.matrix.Heisenberg(); H Heisenberg group of degree 1 over Integer Ring >>> 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] ) >>> X, Y, Z = H.gens() >>> Z * X * Y**-Integer(1) [ 1 1 0] [ 0 1 -1] [ 0 0 1] >>> X * Y * X**-Integer(1) * Y**-Integer(1) == Z True >>> H = groups.matrix.Heisenberg(R=Integer(5)); H Heisenberg group of degree 1 over Ring of integers modulo 5 >>> H = groups.matrix.Heisenberg(n=Integer(3), R=Integer(13)); H Heisenberg group of degree 3 over Ring of integers modulo 13 - REFERENCES: - cardinality()[source]¶
- 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 - >>> from sage.all import * >>> H = groups.matrix.Heisenberg() >>> H.order() +Infinity >>> H = groups.matrix.Heisenberg(n=Integer(4)) >>> H.order() +Infinity >>> H = groups.matrix.Heisenberg(R=Integer(3)) >>> H.order() 27 >>> H = groups.matrix.Heisenberg(n=Integer(2), R=Integer(3)) >>> H.order() 243 >>> H = groups.matrix.Heisenberg(n=Integer(2), R=GF(Integer(4))) >>> H.order() 1024 
 - center()[source]¶
- Return the center of - self.- This is the subgroup generated by the \(z\), the matrix with a \(1\) in the upper right corner and along the diagonal. - EXAMPLES: - sage: H = groups.matrix.Heisenberg(2) sage: H.center() Subgroup with 1 generators ( [1 0 0 1] [0 1 0 0] [0 0 1 0] [0 0 0 1] ) of Heisenberg group of degree 2 over Integer Ring sage: H = groups.matrix.Heisenberg(3, 4) sage: H.center() Subgroup with 1 generators ( [1 0 0 0 1] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0] [0 0 0 0 1] ) of Heisenberg group of degree 3 over Ring of integers modulo 4 - >>> from sage.all import * >>> H = groups.matrix.Heisenberg(Integer(2)) >>> H.center() Subgroup with 1 generators ( [1 0 0 1] [0 1 0 0] [0 0 1 0] [0 0 0 1] ) of Heisenberg group of degree 2 over Integer Ring >>> H = groups.matrix.Heisenberg(Integer(3), Integer(4)) >>> H.center() Subgroup with 1 generators ( [1 0 0 0 1] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0] [0 0 0 0 1] ) of Heisenberg group of degree 3 over Ring of integers modulo 4 
 - order()[source]¶
- 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 - >>> from sage.all import * >>> H = groups.matrix.Heisenberg() >>> H.order() +Infinity >>> H = groups.matrix.Heisenberg(n=Integer(4)) >>> H.order() +Infinity >>> H = groups.matrix.Heisenberg(R=Integer(3)) >>> H.order() 27 >>> H = groups.matrix.Heisenberg(n=Integer(2), R=Integer(3)) >>> H.order() 243 >>> H = groups.matrix.Heisenberg(n=Integer(2), R=GF(Integer(4))) >>> H.order() 1024