Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve docs of group exp and log, mention left-invariance #18

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/Lie_algebra/Lie_algebra_interface.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,20 @@ The Lie algebras considered here are those related to a [`LieGroup`](@ref) ``$(_
namely the tangent space ``T_{$(_math(:e))}$(_math(:G))`` at the [`Identity`](@ref),
this is internally just a `const` of the corresponding $(_link(:TangentSpace)).

!!! note "Convention"
A vector field ``$(_tex(:Cal,"X")): $(_math(:G)) → T$(_math(:G))``, ``X(g) ∈ T_g$(_math(:G))``
is called a left-invariant vector field if it satisfies

```math
$(_tex(:Cal,"X"))(λ_g(h)) = Dλ_g(h)[$(_tex(:Cal,"X"))(h)], $(_tex(:quad))$(_tex(:text, "for all"))$(_tex(:quad)) g, h ∈ $(_math(:G)),
```

where ``λ_g: $(_math(:G)) → $(_math(:G))`` is the left multiplication by ``g``.
Hence ``$(_tex(:Cal,"X"))`` is determined already when ``X ∈ $(_math(:𝔤))`` is given,
since ``$(_tex(:Cal,"X"))(g) = Dλ_g(e)[X]``, cf [HilgertNeeb:2012; Definition 9.1.7](@cite).

Throughout `LieGrous.jl`, we use this left-invariant convention.
mateuszbaran marked this conversation as resolved.
Show resolved Hide resolved

# Constructor

LieAlgebra(G::LieGroup)
Expand Down
2 changes: 2 additions & 0 deletions src/documentation_glossary.jl
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ define!(
)
define!(:LaTeX, :sum, raw"\sum")
define!(:LaTeX, :transp, raw"\mathrm{T}")
define!(:LaTeX, :text, (text) -> raw"\text" * "{$text}")

#
# ---
# Mathematics and semantic symbols
Expand Down
20 changes: 11 additions & 9 deletions src/interface.jl
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,9 @@ _doc_exp = """
exp(G::LieGroup, g, X, t::Number=1)
exp!(G::LieGroup, h, g, X, t::Number=1)

Compute the Lie group exponential map given by
Compute the Lie group exponential map for ``g∈$(_math(:G))`` and ``X∈$(_math(:𝔤))``,
where ``$(_math(:𝔤))`` denotes the [`LieAlgebra`](@ref) of ``$(_math(:G))``.
It is given by

```math
$(_tex(:exp))_g X = g$(_math(:∘))$(_tex(:exp))_{$(_math(:G))}(X)
Expand All @@ -355,9 +357,8 @@ $(_tex(:exp))_g X = g$(_math(:∘))$(_tex(:exp))_{$(_math(:G))}(X)
where `X` can be scaled by `t`, the computation can be performed in-place of `h`,
and ``$(_tex(:exp))_{$(_math(:G))}`` denotes the [Lie group exponential function](@ref exp(::LieGroup, ::Identity, :Any)).

!!! note
If `g` is the [`Identity`](@ref) the [Lie group exponential function](@ref exp(::LieGroup, ::Identity, :Any)) is computed directly.
Implementing the Lie group exponential function introduces a default implementation for this function.
If `g` is the [`Identity`](@ref) the [Lie group exponential function](@ref exp(::LieGroup, ::Identity, :Any)) ``$(_tex(:exp))_{$(_math(:G))}`` is computed directly.
Implementing the Lie group exponential function introduces a default implementation with the formula above.

!!! note
The Lie group exponential map is usually different from the exponential map with respect
Expand Down Expand Up @@ -666,7 +667,7 @@ _doc_is_vector = """

Check whether `X` is a tangent vector, that is an element of the [`LieAlgebra`](@ref)
of `G`.
The first variant calls [`is_point`](@extref ManifoldsBase.is_point) on the [`LieAlgebra`](@ref) `𝔤` of `G`.
The first variant calls [`is_point`](@extref `ManifoldsBase.is_point-Tuple{AbstractManifold, Any, Bool}`) on the [`LieAlgebra`](@ref) `𝔤` of `G`.
The second variant calls [`is_vector`](@extref ManifoldsBase.is_vector) on the $(_link(:AbstractManifold)) at the [`identity_element`](@ref).

All keyword arguments are passed on to the corresponding call
Expand Down Expand Up @@ -717,7 +718,9 @@ _doc_log = """
log(G::LieGroup, g, h)
log!(G::LieGroup, X, g, h)

Compute the Lie group logarithmic map
Compute the Lie group logarithmic map ``$(_tex(:log))_g: $(_math(:G)) → $(_math(:𝔤))``,
where ``$(_math(:𝔤))`` denotes the [`LieAlgebra`](@ref) of ``$(_math(:G))``.
It is given by

```math
$(_tex(:log))_g h = $(_tex(:log))_{$(_math(:G))}(g^{-1}$(_math(:∘))h)
Expand All @@ -726,9 +729,8 @@ $(_tex(:log))_g h = $(_tex(:log))_{$(_math(:G))}(g^{-1}$(_math(:∘))h)
where ``$(_tex(:log))_{$(_math(:G))}`` denotes the [Lie group logarithmic function](@ref log(::LieGroup, ::Identity, :Any))
The computation can be performed in-place of `X`.

!!! note
If `g` is the [`Identity`](@ref) the [Lie group logarithmic function](@ref log(::LieGroup, ::Identity, :Any)) is computed directly.
Implementing the Lie group logarithmic function introduces a default implementation for this function.
If `g` is the [`Identity`](@ref) the [Lie group logarithmic function](@ref log(::LieGroup, ::Identity, :Any)) ``$(_tex(:log))_{$(_math(:G))}`` is computed directly.
Implementing the Lie group logarithmic function introduces a default implementation for this function with the formula above.

!!! note
The Lie group logarithmic map is usually different from the logarithmic map with respect
Expand Down
Loading