Quotient manifold
Manifolds.IsQuotientManifold โ TypeIsQuotientManifold <: AbstractTraitSpecify that a certain decorated manifold is a quotient manifold in the sense that it provides implicitly (or explicitly through QuotientManifold properties of a quotient manifold.
See QuotientManifold for more details.
Manifolds.QuotientManifold โ TypeQuotientManifold{M <: AbstractManifold{๐ฝ}, N} <: AbstractManifold{๐ฝ}Equip a manifold $\mathcal M$ explicitly with the property of being a quotient manifold.
A manifold $\mathcal M$ is then a a quotient manifold of another manifold $\mathcal N$, i.e. for an equivalence relation $โผ$ on $\mathcal N$ we have
\[ \mathcal M = \mathcal N / โผ = \bigl\{ [p] : p โ \mathcal N \bigr\},\]
where $[p] โ \{ q โ \mathcal N : q โผ p\}$ denotes the equivalence class containing $p$. For more details see Subsection 3.4.1[AbsilMahonySepulchre2008].
This manifold type models an explicit quotient structure. This should be done if either the default implementation of $\mathcal M$ uses another representation different from the quotient structure or if it provides a (default) quotient structure that is different from the one introduced here.
Fields
manifoldโ the manifold $\mathcal M$ in the introduction above.total_spaceโ the manifold $\mathcal N$ in the introduction above.
Constructor
QuotientManifold(M,N)Create a manifold where M is the quotient manifold and Nis its total space.
Provided functions
Manifolds.canonical_project! โ Methodcanonical_project!(M, q, p)Compute the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold in place of q.
See canonical_project for more details.
Manifolds.canonical_project โ Methodcanonical_project(M, p)Compute the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection $ฯ$ from the total space $\mathcal N$ onto $\mathcal M$ given by
\[ ฯ = ฯ_{\mathcal N, \mathcal M} : \mathcal N โ \mathcal M, p โฆ ฯ_{\mathcal N, \mathcal M}(p) = [p].\]
in other words, this function implicitly assumes, that the total space $\mathcal N$ is given, for example explicitly when M is a QuotientManifold and p is a point on N.
Manifolds.differential_canonical_project! โ Methoddifferential_canonical_project!(M, Y, p, X)Compute the differential of the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold. See differential_canonical_project for details.
Manifolds.differential_canonical_project โ Methoddifferential_canonical_project(M, p, X)Compute the differential of the canonical projection $ฯ$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection $ฯ$ from the total space $\mathcal N$ onto $\mathcal M$, such that its differential
\[ Dฯ(p) : T_p\mathcal N โ T_{ฯ(p)}\mathcal M\]
where again the total space might be implicitly assumed, or explicitly when using a QuotientManifold M. So here p is a point on N and X is from $T_p\mathcal N$.
Manifolds.get_orbit_action โ Methodget_orbit_action(M::AbstractDecoratorManifold)Return the group action that generates the orbit of an equivalence class of the quotient manifold M for which equivalence classes are orbits of an action of a Lie group. For the case that
\[\mathcal M = \mathcal N / \mathcal O,\]
where $\mathcal O$ is a Lie group with its group action generating the orbit.
Manifolds.get_total_space โ Methodget_total_space(M::AbstractDecoratorManifold)Return the total space of a manifold that IsQuotientManifold, e.g. a QuotientManifold.
Manifolds.horizontal_lift! โ Methodhorizontal_lift(N, q, X)
horizontal_lift(QuotientManifold{M,N}, p, X)Compute the horizontal_lift of X from $T_p\mathcal M$, $p=ฯ(q)$. to `T_q\mathcal N in place of Y.
Manifolds.horizontal_lift โ Methodhorizontal_lift(N::AbstractManifold, q, X)
horizontal_lift(::QuotientManifold{๐ฝ,MT<:AbstractManifold{๐ฝ},NT<:AbstractManifold}, p, X) where {๐ฝ}Given a point q such that $p=ฯ(q)$ is a point on a quotient manifold M (implicitly given for the first case) and a tangent vector X this method computes a tangent vector Y on the horizontal space of $T_q\mathcal N$, i.e. the subspace that is orthogonal to the kernel of $Dฯ(q)$.
- AbsilMahonySepulchre2008
Absil, P.-A., Mahony, R. and Sepulchre R., Optimization Algorithms on Matrix Manifolds Princeton University Press, 2008, doi: 10.1515/9781400830244 open access