# (Real) Symplectic Grassmann

`Manifolds.SymplecticGrassmann`

— Type`SymplecticGrassmann{T,𝔽} <: AbstractEmbeddedManifold{𝔽, DefaultIsometricEmbeddingType}`

The symplectic Grassmann manifold consists of all symplectic subspaces of $ℝ^{2n}$ of dimension $2k$, $n ≥ k$.

Points on this manifold can be represented as corresponding representers on the `SymplecticStiefel`

\[\operatorname{SpGr}(2n,2k) = \bigl\{ \operatorname{span}(p)\ \big| \ p ∈ \operatorname{SpSt}(2n, 2k, ℝ)\},\]

or as projectors

\[\operatorname{SpGr}(2n, 2k, ℝ) = \bigl\{ p ∈ ℝ^{2n×2n} \ \big| \ p^2 = p, \operatorname{rank}(p) = 2k, p^+=p \bigr\},\]

where $⋅^+$ is the `symplectic_inverse`

. See also `ProjectorPoint`

and `StiefelPoint`

for these two representations, where arrays are interpreted as those on the Stiefel manifold.

With respect to the quotient structure, the canonical projection $π = π_{\mathrm{SpSt},\mathrm{SpGr}}$ is given by

\[π: \mathrm{SpSt}(2n2k) → \mathrm{SpGr}(2n,2k), p ↦ π(p) = pp^+.\]

The tangent space is either the tangent space from the symplectic Stiefel manifold, where tangent vectors are representers of their corresponding congruence classes, or for the representation as projectors, using a `ProjectorTVector`

as

\[ T_p\operatorname{SpGr}(2n, 2k, ℝ) = \bigl\{ [X,p] \ \mid\ X ∈ \mathfrak{sp}(2n,ℝ), Xp+pX = X \bigr\},\]

where $[X,p] = Xp-pX$ denotes the matrix commutator and $\mathfrak{sp}(2n,ℝ)$ is the Lie algebra of the symplectic group consisting of `HamiltonianMatrices`

.

The first representation is in `StiefelPoint`

s and `StiefelTVector`

s, which both represent their symplectic Grassmann equivalence class. Arrays are interpreted in this representation as well

For the representation in `ProjectorPoint`

and `ProjectorTVector`

s, we use the representation from the surjective submersion

\[ρ: \mathrm{SpSt}(2n,2k) → \mathrm{SpGr}(2n,2k), \qquad ρ(p) = pp^+\]

and its differential

\[\mathrm{d}ρ(p,X) = Xp^+ + pX^+,\]

respectively. The manifold was first introduced in [BZ21]

**Constructor**

`SymplecticGrassmann(2n::Int, 2k::Int, field::AbstractNumbers=ℝ; parameter::Symbol=:type)`

Generate the (real-valued) symplectic Grassmann manifold. of $2k$ dimensional symplectic subspace of $ℝ^{2n}$. Note that both dimensions passed to this constructor have to be even.

`ManifoldsBase.manifold_dimension`

— Method`manifold_dimension(::SymplecticGrassmann)`

Return the dimension of the `SymplecticGrassmann`

`(2n,2k)`

, which is

\[\operatorname{dim}\operatorname{SpGr}(2n, 2k) = 4(n-k)k,\]

see [BZ21], Section 4.

## The (default) symplectic Stiefel representation

`Base.exp`

— Method```
exp(::SymplecticGrassmann, p, X)
exp!(M::SymplecticGrassmann, q, p, X)
```

Compute the exponential mapping

\[ \exp\colon T\mathrm{SpGr}(2n, 2k) → \mathrm{SpGr}(2n, 2k)\]

when representing points and tangent vectors as symplectic bases and their tangents, i.e. on the `SymplecticStiefel`

manifold. Then we can just pass this on to `exp(::SymplecticStiefel, p, X)`

.

`ManifoldDiff.riemannian_gradient`

— Method`riemannian_gradient(M::SymplecticGrassmann, p, Y)`

Given a gradient $Y = \operatorname{grad} \tilde f(p)$ in the embedding $ℝ^{2n×2k}$ or at least around the `SymplecticGrassmann`

`M`

where `p`

(the embedding of) a point on `M`

, and the restriction $\tilde f$ to the `SymplecticStiefel`

be invariant for the equivalence classes. In other words $f(p) = f(qp)$ for $q \in \mathrm{Sp}(2k, ℝ)$, where $\mathrm{Sp}(2k, ℝ)$ denotes the `SymplecticMatrices`

manifold. Then the Riemannian gradient $X = \operatorname{grad} f(p)$ is given by

\[ X = J_{2n}^THJ_{2k}p^{\mathrm{T}}p - J_{2n}^TpJ_{2k}H^{\mathrm{T}}p,\]

where $J_{2n}$ denotes the `SymplecticElement`

, and $H = (I_{2n} - pp^+)J_{2n}^{\mathrm{T}}YJ$.

`ManifoldsBase.check_point`

— Method`check_point(M::SymplecticGrassmann, p; kwargs...)`

Check whether `p`

is a valid point on the `SymplecticGrassmann`

, $\operatorname{SpGr}(2n, 2k)$ manifold by verifying that it is a valid representer of an equivalence class of the corersponding `SymplecticStiefel`

manifold.

`ManifoldsBase.check_vector`

— Method`check_vector(M::SymplecticGrassmann, p, X; kwargs...)`

Check whether `X`

is a valid tangent vector at `p`

on the `SymplecticGrassmann`

, $\operatorname{SpGr}(2n, 2k)$ manifold by verifying that it is a valid representer of an equivalence class of the corersponding `SymplecticStiefel`

manifolds tangent space at `p`

.

`ManifoldsBase.inner`

— Method`inner(::SymplecticGrassmann, p, X, Y)`

Compute the Riemannian inner product $g^{\mathrm{SpGr}}_p(X,Y)$ on the `SymplecticGrassmann`

manifold `\mathrm{SpGr}`

`.

For the case where $p$ is represented by a point on the `SymplecticStiefel`

manifold acting as a representant of its equivalence class $[p] \in \mathrm{SpGr}$ and the tangent vectors $X,Y \in \mathrm{Hor}_p^π\operatorname{SpSt}(2n,2k)$ are horizontal tangent vectors.

Then the inner product reads according to Proposition Lemma 4.8 [BZ21].

\[g^{\mathrm{SpGr}}_p(X,Y) = \operatorname{tr}\bigl( (p^{\mathrm{T}}p)^{-1}X^{\mathrm{T}}(I_{2n} - pp^+)Y \bigr),\]

where $I_{2n}$ denotes the identity matrix and $(⋅)^+$ the `symplectic_inverse`

.

`ManifoldsBase.inverse_retract`

— Method```
inverse_retract(::SymplecticGrassmann, p, q, ::CayleyInverseRetraction)
inverse_retract!(::SymplecticGrassmann, q, p, X, ::CayleyInverseRetraction)
```

Compute the Cayley Inverse Retraction on the Symplectic Grassmann manifold, when the points are represented as symplectic bases, i.e. on the `SymplecticStiefel`

.

Here we can directly employ the `CaleyInverseRetraction`

on the symplectic Stiefel manifold.

`ManifoldsBase.retract`

— Method```
retract(::SymplecticGrassmann, p, X, ::CayleyRetraction)
retract!(::SymplecticGrassmann, q, p, X, ::CayleyRetraction)
```

Compute the Cayley retraction on the Symplectic Grassmann manifold, when the points are represented as symplectic bases, i.e. on the `SymplecticStiefel`

.

Here we can directly employ the `CaleyRetraction`

on the symplectic Stiefel manifold.

## The symplectic projector representation

`ManifoldsBase.check_point`

— Method`check_point(M::SymplecticGrassmann, p::ProjectorPoint; kwargs...)`

Check whether `p`

is a valid point on the `SymplecticGrassmann`

, $\operatorname{SpGr}(2n, 2k)$, that is a proper symplectic projection:

- $p^2 = p$, that is $p$ is a projection
- $\operatorname{rank}(p) = 2k$, that is, the supspace projected onto is of right dimension
- $p^+ = p$ the projection is symplectic.

`ManifoldsBase.check_vector`

— Method`check_vector(M::SymplecticGrassmann, p::ProjectorPoint, X::ProjectorTVector; kwargs...)`

Check whether `X`

is a valid tangent vector at `p`

on the `SymplecticGrassmann`

, $\operatorname{SpGr}(2n, 2k)$ manifold by verifying that it

- $X^+ = X$
- $X = Xp + pX$

For details see Proposition 4.2 in [BZ21] and the definition of $\mathfrak{sp}_P(2n)$ before, especially the $\bar{Ω}$, which is the representation for $X$ used here.

## Literature

- [BZ21]
- T. Bendokat and R. Zimmermann.
*The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications*, arXiv Preprint, 2108.12447 (2021), arXiv:2108.12447.