The Heisenberg group

LieGroups.HeisenbergGroupType
HeisenbergGroup{T}

The HeisenbergGroup(n) is the group of $(n+2)×(n+2)$ matrices, see also [BP08] or Heisenberg group where T specifies the eltype of the matrix entries.

\[\begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & I_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix},\]

where $I_n$ is the $n×n$ unit matrix, $\mathbf{a}, \mathbf{b} ∈ ℝ^n$ are vectors of length $n$, $\mathbf{0}_n$ is the zero vector of length $n$, and $c ∈ ℝ$ is a real number. The group operation is matrix multiplication.

The Lie algebra consists of the elements

\[\begin{pmatrix} 0 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & Z_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 0\end{pmatrix},\]

where additionally $Z_n$ denotes the $n×n$ zero matrix.

source
Base.expMethod
exp(G::HeisenbergGroup, g, X)

Exponential map on the HeisenbergGroup G with the left-invariant metric.

We denote by g a point on the Heisenberg group and by $X$ a vector from the Lie algebra. These are of the form

\[g = \begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & I_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix} \qquad X = \begin{pmatrix} 0 & \mathbf{d}^{\mathrm{T}} & f\\ \mathbf{0}_n & Z_n & \mathbf{e}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 0\end{pmatrix},\]

where $I_n$ is the $n×n$ unit matrix, $Z_n$ is the $n×n$ zero matrix, $\mathbf{a}, \mathbf{b}, \mathbf{d}, \mathbf{e} ∈ ℝ^n$ are vectors of length $n$, $\mathbf{0}_n$ is the zero vector of length $n$, and $c,f ∈ ℝ$ are real numbers.

Then the formula reads

\[\exp_g(X) = \begin{pmatrix} 1 & (\mathbf{a}+\mathbf{d})^{\mathrm{T}} & c+f+\frac{1}{2}\mathbf{d}^{\mathrm{T}}\mathbf{e} + \mathbf{a}^{\mathrm{T}}\mathbf{e}\\ \mathbf{0}_n & I_n & \mathbf{b}+\mathbf{e}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix}.\]

source
Base.expMethod
exp(G::HeisenbergGroup, X)
exp!(G::HeisenbergGroup, g, X)

Compute the Lie group exponential for the HeisenbergGroup G of the vector X.

For $X = \begin{pmatrix} 0 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & Z_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 0\end{pmatrix}$ from the Lie algebra of the Heisenberg group, where $\mathbf{a}, \mathbf{b} ∈ ℝ^n$ vectors of length $n$, $\mathbf{0}_n$ is the zero vector of length $n$, $c ∈ ℝ$, and $Z_n$ denotes the $n×n$ zero matrix.

Then the

\[\exp_{\mathcal G}(X) = \begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c + \frac{1}{2}\mathbf{a}^{\mathrm{T}}\mathbf{b}\\ \mathbf{0}_n & I_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix},\]

where $I_n$ is the $n×n$ unit matrix.

This can be computed in-place of the Lie group element g.

source
Base.logMethod
log(G::HeisenbergGroup, g, h)

Compute the logarithmic map on the HeisenbergGroup group.

We denote two points $g, h$ from the Heisenberg by

\[g = \begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & I_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix} \qquad h = \begin{pmatrix} 1 & \mathbf{d}^{\mathrm{T}} & f\\ \mathbf{0}_n & I_n & \mathbf{e}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix},\]

where $I_n$ is the $n×n$ unit matrix, $\mathbf{a}, \mathbf{b}, \mathbf{d}, \mathbf{e} ∈ ℝ^n$ are vectors of length $n$, $\mathbf{0}_n$ is the zero vector of length $n$, and $c,f ∈ ℝ$ are real numbers.

Then formula reads

\[\log_g(h) = \begin{pmatrix} 0 & (\mathbf{d}-\mathbf{q})^{\mathrm{T}} & f - c + \mathbf{a}^{\mathrm{T}}\mathbf{b} - \mathbf{d}^{\mathrm{T}}\mathbf{e} - \frac{1}{2}(\mathbf{d}-\mathbf{a})^{\mathrm{T}}(\mathbf{e}-\mathbf{b})\\ \mathbf{0}_n & Z_n & \mathbf{e} - \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 0\end{pmatrix},\]

where additionally $Z_n$ denotes the $n×n$ zero matrix.

source
Base.logMethod
log(G::HeisenbergGroup, g)
log!(G::HeisenbergGroup, X, g)

Compute the Lie group logarithm for the HeisenbergGroup G.

For $g = \begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c\\ \mathbf{0}_n & I_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix}$ from the Lie algebra of the Heisenberg group, where $\mathbf{a}, \mathbf{b} ∈ ℝ^n$ vectors of length $n$, $\mathbf{0}_n$ is the zero vector of length $n$, $c ∈ ℝ$, and $I_n$ is the $n×n$ unit matrix.

Then the

\[\log_{\mathcal G}(g) = \begin{pmatrix} 1 & \mathbf{a}^{\mathrm{T}} & c - \frac{1}{2}\mathbf{a}^{\mathrm{T}}\mathbf{b}\\ \mathbf{0}_n & Z_n & \mathbf{b}\\ 0 & \mathbf{0}_n^{\mathrm{T}} & 1\end{pmatrix},\]

where $Z_n$ denotes the $n×n$ zero matrix.

This can be computed in-place of the Lie algebra vector X.

source

Literature

[BP08]
E. Biny and S. Pods. The Geometry of Heisenberg Groups: With Applications in Signal Theory, Optics, Quantization, and Field Quantization (American Mathematical Society, 2008).