diff --git a/previews/PR8/.documenter-siteinfo.json b/previews/PR8/.documenter-siteinfo.json index cbac484..d6e294b 100644 --- a/previews/PR8/.documenter-siteinfo.json +++ b/previews/PR8/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-10-09T14:51:30","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-10-11T05:52:20","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/previews/PR8/about/index.html b/previews/PR8/about/index.html index 12ae7f8..73d8999 100644 --- a/previews/PR8/about/index.html +++ b/previews/PR8/about/index.html @@ -1,2 +1,2 @@ -About · LieGroups.jl
+About · LieGroups.jl
diff --git a/previews/PR8/assets/android-chrome-192x192.png b/previews/PR8/assets/android-chrome-192x192.png index d056784..13b0572 100644 Binary files a/previews/PR8/assets/android-chrome-192x192.png and b/previews/PR8/assets/android-chrome-192x192.png differ diff --git a/previews/PR8/assets/android-chrome-512x512.png b/previews/PR8/assets/android-chrome-512x512.png index 78ccfca..73c276f 100644 Binary files a/previews/PR8/assets/android-chrome-512x512.png and b/previews/PR8/assets/android-chrome-512x512.png differ diff --git a/previews/PR8/assets/apple-touch-icon.png b/previews/PR8/assets/apple-touch-icon.png index cadab6b..2910eb2 100644 Binary files a/previews/PR8/assets/apple-touch-icon.png and b/previews/PR8/assets/apple-touch-icon.png differ diff --git a/previews/PR8/assets/favicon-16x16.png b/previews/PR8/assets/favicon-16x16.png index 6672c8c..4331a3b 100644 Binary files a/previews/PR8/assets/favicon-16x16.png and b/previews/PR8/assets/favicon-16x16.png differ diff --git a/previews/PR8/assets/favicon-32x32.png b/previews/PR8/assets/favicon-32x32.png index 25b9ea2..d3bbafe 100644 Binary files a/previews/PR8/assets/favicon-32x32.png and b/previews/PR8/assets/favicon-32x32.png differ diff --git a/previews/PR8/assets/favicon.ico b/previews/PR8/assets/favicon.ico index 9efdb1c..baf97b8 100644 Binary files a/previews/PR8/assets/favicon.ico and b/previews/PR8/assets/favicon.ico differ diff --git a/previews/PR8/assets/logo-dark.png b/previews/PR8/assets/logo-dark.png index 6bdb0fd..b569fd9 100644 Binary files a/previews/PR8/assets/logo-dark.png and b/previews/PR8/assets/logo-dark.png differ diff --git a/previews/PR8/assets/logo-dark_big.png b/previews/PR8/assets/logo-dark_big.png index 6d29e59..4f73668 100644 Binary files a/previews/PR8/assets/logo-dark_big.png and b/previews/PR8/assets/logo-dark_big.png differ diff --git a/previews/PR8/assets/logo.png b/previews/PR8/assets/logo.png index aa30ed2..dec1ef1 100644 Binary files a/previews/PR8/assets/logo.png and b/previews/PR8/assets/logo.png differ diff --git a/previews/PR8/assets/logo_big.png b/previews/PR8/assets/logo_big.png index 40b51f7..f1b06cf 100644 Binary files a/previews/PR8/assets/logo_big.png and b/previews/PR8/assets/logo_big.png differ diff --git a/previews/PR8/assets/logo_text.png b/previews/PR8/assets/logo_text.png index da79f44..3f05814 100644 Binary files a/previews/PR8/assets/logo_text.png and b/previews/PR8/assets/logo_text.png differ diff --git a/previews/PR8/assets/logo_text_dark.png b/previews/PR8/assets/logo_text_dark.png index a798898..53a96f3 100644 Binary files a/previews/PR8/assets/logo_text_dark.png and b/previews/PR8/assets/logo_text_dark.png differ diff --git a/previews/PR8/assets/logo_text_readme.png b/previews/PR8/assets/logo_text_readme.png index 3d1167a..43f2db2 100644 Binary files a/previews/PR8/assets/logo_text_readme.png and b/previews/PR8/assets/logo_text_readme.png differ diff --git a/previews/PR8/assets/logo_text_readme_dark.png b/previews/PR8/assets/logo_text_readme_dark.png index fc5c20f..bbfc3eb 100644 Binary files a/previews/PR8/assets/logo_text_readme_dark.png and b/previews/PR8/assets/logo_text_readme_dark.png differ diff --git a/previews/PR8/assets/safari-pinned-tab.svg b/previews/PR8/assets/safari-pinned-tab.svg deleted file mode 100644 index 91bf799..0000000 --- a/previews/PR8/assets/safari-pinned-tab.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - diff --git a/previews/PR8/assets/site.webmanifest b/previews/PR8/assets/site.webmanifest index b20abb7..45dc8a2 100644 --- a/previews/PR8/assets/site.webmanifest +++ b/previews/PR8/assets/site.webmanifest @@ -1,19 +1 @@ -{ - "name": "", - "short_name": "", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/previews/PR8/contributing/index.html b/previews/PR8/contributing/index.html index ea7e0a6..c27282e 100644 --- a/previews/PR8/contributing/index.html +++ b/previews/PR8/contributing/index.html @@ -1,2 +1,2 @@ -Contributing to LieGroups.jl · LieGroups.jl

Contributing to LieGroups.jl

First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.

The following is a set of guidelines to LieGroups.jl.

Table of contents

I just have a question

The developer can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.

How can I file an issue?

If you found a bug or want to propose a feature, please open an issue in within the GitHub repository.

How can I contribute?

Currently we are still consolidating most details and defaults, but feel free to contribute to these discussions within this repository.

Code style

Try to follow the documentation guidelines from the Julia documentation as well as Blue Style. Run JuliaFormatter.jl on the repository in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style. Furthermore vale is run on both Markdown and code files, affecting documentation and source code comments

Please follow a few internal conventions:

  • It is preferred that the AbstractManoptProblem's struct contains information about the general structure of the problem.
  • Any implemented function should be accompanied by its mathematical formulae if a closed form exists.
  • AbstractManoptProblem and helping functions are stored within the plan/ folder and sorted by properties of the problem and/or solver at hand.
  • the solver state is usually stored with the solver itself
  • Within the source code of one algorithm, following the state, the high level interface should be next, then the initialization, then the step.
  • Otherwise an alphabetical order of functions is preferable.
  • The preceding implies that the mutating variant of a function follows the non-mutating variant.
  • There should be no dangling = signs.
  • Always add a newline between things of different types (struct/method/const).
  • Always add a newline between methods for different functions (including mutating/nonmutating variants).
  • Prefer to have no newline between methods for the same function; when reasonable, merge the documentation strings.
  • All import/using/include should be in the main module file.

Concerning documentation

  • if possible provide both mathematical formulae and literature references using DocumenterCitations.jl and BibTeX where possible
  • Always document all input variables and keyword arguments

If you implement an algorithm with a certain numerical example in mind, it would be great, if this could be added to the ManoptExamples.jl package as well.

+Contributing to LieGroups.jl · LieGroups.jl

Contributing to LieGroups.jl

First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.

The following is a set of guidelines to LieGroups.jl.

Table of contents

I just have a question

The developer can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.

How can I file an issue?

If you found a bug or want to propose a feature, please open an issue in within the GitHub repository.

How can I contribute?

Currently we are still consolidating most details and defaults, but feel free to contribute to these discussions within this repository.

Code style

Try to follow the documentation guidelines from the Julia documentation as well as Blue Style. Run JuliaFormatter.jl on the repository in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style.

Please follow a few internal conventions:

  • Any implemented function should be accompanied by its mathematical formulae if a closed form exists.
  • A Lie group, a Lie group action or a Lie algebra should be implemented in it own file
  • an alphabetical order of functions in every file is preferable.
  • The preceding implies that the mutating variant of a function follows the non-mutating variant.
  • usually, both the allocating and the mutating variants of a function should be documented. For avoiding duplication, one doc string attached to both is preferrable
  • There should be no dangling = signs.
  • Always add a newline between things of different types (struct/method/const).
  • Always add a newline between methods for different functions (including allocating/mutating variants).
  • Prefer to have no newline between methods for the same function; when reasonable, merge the documentation strings.
  • All import/using/include should be in the main module file.
  • import is discouraged and the explicit full name, like Base.exp should be used when implementing functions

Concerning documentation

  • if possible provide both mathematical formulae and literature references using DocumenterCitations.jl and BibTeX where possible
  • Always document all input variables and keyword arguments
diff --git a/previews/PR8/groups/index.html b/previews/PR8/groups/index.html index e72258f..2914df1 100644 --- a/previews/PR8/groups/index.html +++ b/previews/PR8/groups/index.html @@ -1,2 +1,2 @@ -List of Lie Groups · LieGroups.jl
+List of Lie Groups · LieGroups.jl
diff --git a/previews/PR8/groups/translation/index.html b/previews/PR8/groups/translation/index.html index 7e352eb..92fe717 100644 --- a/previews/PR8/groups/translation/index.html +++ b/previews/PR8/groups/translation/index.html @@ -1,2 +1,2 @@ -Translation group · LieGroups.jl
+Translation group · LieGroups.jl
diff --git a/previews/PR8/index.html b/previews/PR8/index.html index 5490212..e793a74 100644 --- a/previews/PR8/index.html +++ b/previews/PR8/index.html @@ -1,2 +1,2 @@ -Home · LieGroups.jl
+Home · LieGroups.jl
diff --git a/previews/PR8/interface/index.html b/previews/PR8/interface/index.html index 0f0cd29..e02a3a7 100644 --- a/previews/PR8/interface/index.html +++ b/previews/PR8/interface/index.html @@ -1,60 +1,60 @@ -An Interface for Lie Groups · LieGroups.jl

The interface for Lie Groups

LieGroups.LieGroupType
LieGroup{𝔽,M<:AbstractManifold{𝔽}, O<:AbstractGroupOperation}

Represent a Lie Group $\mathcal G$.

A Lie Group $\mathcal G$ is a group endowed with the structure of a manifold such that the group operations $∘: \mathcal G×\mathcal G → \mathcal G$, see compose and the inverse operation $⋅^{-1}: \mathcal G → \mathcal G$, see inv are smooth, see for example [HN12, Definition 9.1.1].

Lie groups are named after the Norwegian mathematician Marius Sophus Lie (1842–1899).

Fields

Constructor

LieGroup(M::AbstractManifold, op::AbstractGroupOperation; vectors=LeftInvariantRepresentation())

Generate a Lie group based on a manifold M and a group operation op, where vectors by default are stored in the Lie Algebra.

source
LieGroups.LieAlgebraType
LieAlgebra{𝔽, G} <: AbstractManifold{𝔽}

Represent the Lie Algebra $\mathfrak g$, that is a $𝔽$vector space with an associated lie_bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The Lie algebras considered here are those related to a LieGroup $\mathcal G$, namely the tangent space the tangent space $T_{\mathrm e}\mathcal G$ at the Identity, this is internally just a const of the corresponding TangentSpace.

Constructor

LieAlgebra(G::LieGroup)

Return the Lie Algebra belonging to the LieGroup G.

source

Group Operations

LieGroups.AbstractGroupOperationType
AbstractGroupOperation

Represent a type of group operation for a LieGroup $\mathcal G$, that is a smooth binary operation $∘ : \mathcal G × \mathcal G → \mathcal G$ on elements of a Lie group $\mathcal G$.

source
LieGroups.IdentityType
Identity{O<:AbstractGroupOperation}

Represent the group identity element $e ∈ \mathcal G$ on a LieGroup $\mathcal G$ with AbstractGroupOperation of type O.

Similar to the philosophy that points are agnostic of their group at hand, the identity does not store the group $\mathcal G$ it belongs to. However it depends on the type of the AbstractGroupOperation used.

See also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.

Constructors

Identity(::LieGroup{𝔽,M,O}) where {𝔽,M,O<:AbstractGroupOperation}
+An Interface for Lie Groups · LieGroups.jl

The interface for Lie Groups

LieGroups.LieGroupType
LieGroup{𝔽,M<:AbstractManifold{𝔽}, O<:AbstractGroupOperation}

Represent a Lie Group $\mathcal G$.

A Lie Group $\mathcal G$ is a group endowed with the structure of a manifold such that the group operations $∘: \mathcal G×\mathcal G → \mathcal G$, see compose and the inverse operation $⋅^{-1}: \mathcal G → \mathcal G$, see inv are smooth, see for example [HN12, Definition 9.1.1].

Lie groups are named after the Norwegian mathematician Marius Sophus Lie (1842–1899).

Fields

Constructor

LieGroup(M::AbstractManifold, op::AbstractGroupOperation; vectors=LeftInvariantRepresentation())

Generate a Lie group based on a manifold M and a group operation op, where vectors by default are stored in the Lie Algebra.

source
LieGroups.LieAlgebraType
LieAlgebra{𝔽, G} <: AbstractManifold{𝔽}

Represent the Lie Algebra $\mathfrak g$, that is a $𝔽$vector space with an associated lie_bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The Lie algebras considered here are those related to a LieGroup $\mathcal G$, namely the tangent space the tangent space $T_{\mathrm e}\mathcal G$ at the Identity, this is internally just a const of the corresponding TangentSpace.

Constructor

LieAlgebra(G::LieGroup)

Return the Lie Algebra belonging to the LieGroup G.

source

Group Operations

LieGroups.AbstractGroupOperationType
AbstractGroupOperation

Represent a type of group operation for a LieGroup $\mathcal G$, that is a smooth binary operation $∘ : \mathcal G × \mathcal G → \mathcal G$ on elements of a Lie group $\mathcal G$.

source
LieGroups.IdentityType
Identity{O<:AbstractGroupOperation}

Represent the group identity element $e ∈ \mathcal G$ on a LieGroup $\mathcal G$ with AbstractGroupOperation of type O.

Similar to the philosophy that points are agnostic of their group at hand, the identity does not store the group $\mathcal G$ it belongs to. However it depends on the type of the AbstractGroupOperation used.

See also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.

Constructors

Identity(::LieGroup{𝔽,M,O}) where {𝔽,M,O<:AbstractGroupOperation}
 Identity(o::AbstractGroupOperation)
-Identity(::Type{AbstractGroupOperation})

create the identity of the corresponding subtype O<:AbstractGroupOperation

source

Functions on Lie Groups

Base.adjointFunction
adjoint(G::LieGroup, g X)
-adjoint!(G::LieGroup, Y, g, X)

Compute the adjoint $\mathrm{Ad}(g): \mathfrak g → \mathfrak g$, which is defined as the differential diff_conjugate of the conjugate $c_g(h) = g∘h∘g^{-1}$ evaluated at the Identity $h=\mathrm e$. The operation can be performed in-place of Y.

\[ \mathrm{Ad}(g)[X] = D c_g(\mathrm e) [X], \qquad X ∈ \mathfrak g.\]

see [HN12, Section 9.2.3].

On matrix Lie groups the adjoint reads $\mathrm{Ad}(g)[X] = g∘X∘g^{-1}$.

source
LieGroups.adjoint!Function
adjoint(G::LieGroup, g X)
-adjoint!(G::LieGroup, Y, g, X)

Compute the adjoint $\mathrm{Ad}(g): \mathfrak g → \mathfrak g$, which is defined as the differential diff_conjugate of the conjugate $c_g(h) = g∘h∘g^{-1}$ evaluated at the Identity $h=\mathrm e$. The operation can be performed in-place of Y.

\[ \mathrm{Ad}(g)[X] = D c_g(\mathrm e) [X], \qquad X ∈ \mathfrak g.\]

see [HN12, Section 9.2.3].

On matrix Lie groups the adjoint reads $\mathrm{Ad}(g)[X] = g∘X∘g^{-1}$.

source
LieGroups.composeFunction
compose(G::LieGroup, g, h)
-compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.compose!Function
compose(G::LieGroup, g, h)
-compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.diff_left_composeFunction
diff_left_compose(G::LieGroup, g, h, X)
-diff_left_compose!(G::LieGroup, Y, g, h, X)

Compute the differential of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is Compute $Dλ_g(h)[X]$, $X ∈ 𝔤$. This can be done in-place of Y.

source
LieGroups.diff_left_compose!Function
diff_left_compose(G::LieGroup, g, h, X)
-diff_left_compose!(G::LieGroup, Y, g, h, X)

Compute the differential of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is Compute $Dλ_g(h)[X]$, $X ∈ 𝔤$. This can be done in-place of Y.

source
LieGroups.diff_right_composeFunction
diff_right_compose(G::LieGroup, h, g, X)
-diff_right_compose!(G::LieGroup, Y, h, g, X)

Compute the differential of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $Dρ_g(h)[X]$, $X ∈ 𝔤$ This can be done in-place of Y.

source
LieGroups.diff_right_compose!Function
diff_right_compose(G::LieGroup, h, g, X)
-diff_right_compose!(G::LieGroup, Y, h, g, X)

Compute the differential of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $Dρ_g(h)[X]$, $X ∈ 𝔤$ This can be done in-place of Y.

source
LieGroups.inv_left_composeFunction
inv_left_compose(G::LieGroup, g, h)
-inv_left_compose!(G::LieGroup, k, g, h)

Compute the inverse of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is, compute $λ_g^{-1}(h) = g^{-1}∘h$. This can be done in-place of k.

source
LieGroups.inv_left_compose!Function
compose(G::LieGroup, g, h)
-compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.inv_right_composeFunction
inv_right_compose(G::LieGroup, h, g)
-inv_right_compose!(G::LieGroup, k, h, g)

Compute the inverse of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $ρ_g^{-1}(h) = h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.inv_right_compose!Function
inv_right_compose(G::LieGroup, h, g)
-inv_right_compose!(G::LieGroup, k, h, g)

Compute the inverse of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $ρ_g^{-1}(h) = h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.conjugateFunction
conjugate(G::LieGroup, g, h)
-conjugate!(G::LieGroup, k, g, h)

Compute the conjugation map $c_g: \mathcal G → \mathcal G$ given by $c_g(h) = g∘h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.conjugate!Function
conjugate(G::LieGroup, g, h)
-conjugate!(G::LieGroup, k, g, h)

Compute the conjugation map $c_g: \mathcal G → \mathcal G$ given by $c_g(h) = g∘h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.diff_conjugateFunction
diff_conjugate(G::LieGroup, g, h, X)
-diff_conjugate!(G::LieGroup, Y, g, h, X)

Compute the differential of the conjugate $c_g(h) = g∘h∘g^{-1}$, which can be performed in-place of Y.

\[ D(c_g(h))[X], \qquad X ∈ \mathfrak g.\]

source
LieGroups.diff_conjugate!Function
diff_conjugate(G::LieGroup, g, h, X)
-diff_conjugate!(G::LieGroup, Y, g, h, X)

Compute the differential of the conjugate $c_g(h) = g∘h∘g^{-1}$, which can be performed in-place of Y.

\[ D(c_g(h))[X], \qquad X ∈ \mathfrak g.\]

source
Base.expFunction
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

\[\exp_g X = g∘\exp_{\mathcal G}(X)\]

where X can be scaled by t, the computation can be performed in-place of h, and $\exp_{\mathcal G}$ denotes the Lie group exponential function.

Note

If g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.

Note

The Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).

source
exp(G::LieGroup, e::Identity, X)
-exp!(G::LieGroup, h, e::Identity, X)

Compute the (Lie group) exponential function

\[\exp_{\mathcal G}: \mathfrak g → \mathcal G,\qquad \exp_{\mathcal G}(X) = γ_X(1),\]

where $γ_X$ is the unique solution of the initial value problem

\[γ(0) = \mathrm e, \quad γ'(t) = γ(t)⋅X.\]

The computation can be performed in-place of h.

See also [HN12, Definition 9.2.2].

source
ManifoldsBase.exp!Function
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

\[\exp_g X = g∘\exp_{\mathcal G}(X)\]

where X can be scaled by t, the computation can be performed in-place of h, and $\exp_{\mathcal G}$ denotes the Lie group exponential function.

Note

If g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.

Note

The Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).

source
exp(G::LieGroup, e::Identity, X)
-exp!(G::LieGroup, h, e::Identity, X)

Compute the (Lie group) exponential function

\[\exp_{\mathcal G}: \mathfrak g → \mathcal G,\qquad \exp_{\mathcal G}(X) = γ_X(1),\]

where $γ_X$ is the unique solution of the initial value problem

\[γ(0) = \mathrm e, \quad γ'(t) = γ(t)⋅X.\]

The computation can be performed in-place of h.

See also [HN12, Definition 9.2.2].

source
LieGroups.identity_elementFunction
identity_element(G::LieGroup)
-identity_element!(G::LieGroup, g)

Return a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of $e$ as a point on G if points are not represented by arrays. This can be performed in-place of g.

source
LieGroups.identity_element!Function
identity_element(G::LieGroup)
-identity_element!(G::LieGroup, g)

Return a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of $e$ as a point on G if points are not represented by arrays. This can be performed in-place of g.

source
Base.invMethod
inv(G::LieGroup, g)
-inv!(G::LieGroup, h, g)

Compute the inverse group element $g^{-1}$ with respect to the AbstractGroupOperation $∘$ on the LieGroup $\mathcal G$, that is, return the unique element $h=g^{-1}$ such that $h∘g=\mathrm e$, where $\mathrm e$ denotes the Identity.

This can be done in-place of h, without side effects, that is you can do inv!(G, g, g).

source
LieGroups.inv!Function
inv(G::LieGroup, g)
-inv!(G::LieGroup, h, g)

Compute the inverse group element $g^{-1}$ with respect to the AbstractGroupOperation $∘$ on the LieGroup $\mathcal G$, that is, return the unique element $h=g^{-1}$ such that $h∘g=\mathrm e$, where $\mathrm e$ denotes the Identity.

This can be done in-place of h, without side effects, that is you can do inv!(G, g, g).

source
LieGroups.diff_invFunction
diff_inv(G::LieGroup, g, X)
-diff_inv!(G::LieGroup, Y, g, X)

Compute the differential of the function $ι_{\mathcal G}(p) = p^-1$, where `Dι_{\mathcal G}(p): \mathfrak g → \mathfrak g. This can be done in-place ofY`.

source
LieGroups.diff_inv!Function
diff_inv(G::LieGroup, g, X)
-diff_inv!(G::LieGroup, Y, g, X)

Compute the differential of the function $ι_{\mathcal G}(p) = p^-1$, where `Dι_{\mathcal G}(p): \mathfrak g → \mathfrak g. This can be done in-place ofY`.

source
Base.logFunction
log(G::LieGroup, g, h)
-log!(G::LieGroup, X, g, h)

Compute the Lie group logarithmic map

\[\log_g h = ∘\log_{\mathcal G}(g^{-1}∘h)\]

where $\log_{\mathcal G}$ denotes the Lie group logarithmic function The computation can be performed in-place of X.

Note

If g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.

Note

The Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).

source
log(G::LieGroup, e::Identity, g)
-log!(G::LieGroup, X, e::Identity, g)

Compute the (Lie group) logarithmic function $\log_{\mathcal G}: \mathcal G → \mathfrak g$, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.

source
ManifoldsBase.log!Function
log(G::LieGroup, g, h)
-log!(G::LieGroup, X, g, h)

Compute the Lie group logarithmic map

\[\log_g h = ∘\log_{\mathcal G}(g^{-1}∘h)\]

where $\log_{\mathcal G}$ denotes the Lie group logarithmic function The computation can be performed in-place of X.

Note

If g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.

Note

The Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).

source
log(G::LieGroup, e::Identity, g)
-log!(G::LieGroup, X, e::Identity, g)

Compute the (Lie group) logarithmic function $\log_{\mathcal G}: \mathcal G → \mathfrak g$, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.

source

Actions on Lie groups

LieGroups.AbstractLeftGroupActionTypeType
AbstractLeftGroupActionType <: AbstractGroupActionType

A type representing a (smooth) group action $σ: \mathcal G × \mathcal M → \mathcal M$ of a LieGroup $\mathcal G$ acting (from the left) on an AbstractManifold $\mathcal M$. with the following properties

  1. $σ(\mathrm e, p) = p$ holds for all $p ∈ \mathcal M$
  2. $σ(g, σ(h, p)) = σ(g∘h, p)$ holds for all $g,h ∈ \mathcal G$, $p ∈ \mathcal M$

where $∘$ denotes the group operation of the LieGroup $\mathcal G$. See also [HN12, Definition 9.1.11].

The type of action can be seen a bit better when writing the action as a family $σ_g(p)$: we obtain from the second property as

\[ σ_g(σ_h(p)) = σ_{gh}(p)\]

and see that $g$ appears on the left.

To emphasize the side the group operation is acting from, we sometimes write $σ^{\mathrm L}$. If the action is clear from context we write $σ(g, p) = g ⋅ p$.

One notable example of a left action is the inverse of an action of AbstractRightGroupActionType $σ^{\mathrm R}$, which is given by $τ_g = (σ^{\mathrm R}_g)^{-1} = σ^{\mathrm R}_{g^{-1}}$. We obtain

\[τ_g(τ_h(p)) +Identity(::Type{AbstractGroupOperation})

create the identity of the corresponding subtype O<:AbstractGroupOperation

source

Functions on Lie Groups

Base.adjointFunction
adjoint(G::LieGroup, g X)
+adjoint!(G::LieGroup, Y, g, X)

Compute the adjoint $\mathrm{Ad}(g): \mathfrak g → \mathfrak g$, which is defined as the differential diff_conjugate of the conjugate $c_g(h) = g∘h∘g^{-1}$ evaluated at the Identity $h=\mathrm e$. The operation can be performed in-place of Y.

\[ \mathrm{Ad}(g)[X] = D c_g(\mathrm e) [X], \qquad X ∈ \mathfrak g.\]

see [HN12, Section 9.2.3].

On matrix Lie groups the adjoint reads $\mathrm{Ad}(g)[X] = g∘X∘g^{-1}$.

source
LieGroups.adjoint!Function
adjoint(G::LieGroup, g X)
+adjoint!(G::LieGroup, Y, g, X)

Compute the adjoint $\mathrm{Ad}(g): \mathfrak g → \mathfrak g$, which is defined as the differential diff_conjugate of the conjugate $c_g(h) = g∘h∘g^{-1}$ evaluated at the Identity $h=\mathrm e$. The operation can be performed in-place of Y.

\[ \mathrm{Ad}(g)[X] = D c_g(\mathrm e) [X], \qquad X ∈ \mathfrak g.\]

see [HN12, Section 9.2.3].

On matrix Lie groups the adjoint reads $\mathrm{Ad}(g)[X] = g∘X∘g^{-1}$.

source
LieGroups.composeFunction
compose(G::LieGroup, g, h)
+compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.compose!Function
compose(G::LieGroup, g, h)
+compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.diff_left_composeFunction
diff_left_compose(G::LieGroup, g, h, X)
+diff_left_compose!(G::LieGroup, Y, g, h, X)

Compute the differential of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is Compute $Dλ_g(h)[X]$, $X ∈ 𝔤$. This can be done in-place of Y.

source
LieGroups.diff_left_compose!Function
diff_left_compose(G::LieGroup, g, h, X)
+diff_left_compose!(G::LieGroup, Y, g, h, X)

Compute the differential of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is Compute $Dλ_g(h)[X]$, $X ∈ 𝔤$. This can be done in-place of Y.

source
LieGroups.diff_right_composeFunction
diff_right_compose(G::LieGroup, h, g, X)
+diff_right_compose!(G::LieGroup, Y, h, g, X)

Compute the differential of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $Dρ_g(h)[X]$, $X ∈ 𝔤$ This can be done in-place of Y.

source
LieGroups.diff_right_compose!Function
diff_right_compose(G::LieGroup, h, g, X)
+diff_right_compose!(G::LieGroup, Y, h, g, X)

Compute the differential of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $Dρ_g(h)[X]$, $X ∈ 𝔤$ This can be done in-place of Y.

source
LieGroups.inv_left_composeFunction
inv_left_compose(G::LieGroup, g, h)
+inv_left_compose!(G::LieGroup, k, g, h)

Compute the inverse of the left group multiplication $λ_g(h) = g∘h$, on the LieGroup G, that is, compute $λ_g^{-1}(h) = g^{-1}∘h$. This can be done in-place of k.

source
LieGroups.inv_left_compose!Function
compose(G::LieGroup, g, h)
+compose!(G::LieGroup, k, g, h)

Perform the group oepration $g ∘ h$ for two $g, h ∈ \mathcal G$ on the LieGroup G. This can also be done in-place of h.

source
LieGroups.inv_right_composeFunction
inv_right_compose(G::LieGroup, h, g)
+inv_right_compose!(G::LieGroup, k, h, g)

Compute the inverse of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $ρ_g^{-1}(h) = h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.inv_right_compose!Function
inv_right_compose(G::LieGroup, h, g)
+inv_right_compose!(G::LieGroup, k, h, g)

Compute the inverse of the right group multiplication $ρ_g(h) = h∘g$, on the LieGroup G, that is Compute $ρ_g^{-1}(h) = h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.conjugateFunction
conjugate(G::LieGroup, g, h)
+conjugate!(G::LieGroup, k, g, h)

Compute the conjugation map $c_g: \mathcal G → \mathcal G$ given by $c_g(h) = g∘h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.conjugate!Function
conjugate(G::LieGroup, g, h)
+conjugate!(G::LieGroup, k, g, h)

Compute the conjugation map $c_g: \mathcal G → \mathcal G$ given by $c_g(h) = g∘h∘g^{-1}$. This can be done in-place of k.

source
LieGroups.diff_conjugateFunction
diff_conjugate(G::LieGroup, g, h, X)
+diff_conjugate!(G::LieGroup, Y, g, h, X)

Compute the differential of the conjugate $c_g(h) = g∘h∘g^{-1}$, which can be performed in-place of Y.

\[ D(c_g(h))[X], \qquad X ∈ \mathfrak g.\]

source
LieGroups.diff_conjugate!Function
diff_conjugate(G::LieGroup, g, h, X)
+diff_conjugate!(G::LieGroup, Y, g, h, X)

Compute the differential of the conjugate $c_g(h) = g∘h∘g^{-1}$, which can be performed in-place of Y.

\[ D(c_g(h))[X], \qquad X ∈ \mathfrak g.\]

source
Base.expFunction
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

\[\exp_g X = g∘\exp_{\mathcal G}(X)\]

where X can be scaled by t, the computation can be performed in-place of h, and $\exp_{\mathcal G}$ denotes the Lie group exponential function.

Note

If g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.

Note

The Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).

source
exp(G::LieGroup, e::Identity, X)
+exp!(G::LieGroup, h, e::Identity, X)

Compute the (Lie group) exponential function

\[\exp_{\mathcal G}: \mathfrak g → \mathcal G,\qquad \exp_{\mathcal G}(X) = γ_X(1),\]

where $γ_X$ is the unique solution of the initial value problem

\[γ(0) = \mathrm e, \quad γ'(t) = γ(t)⋅X.\]

The computation can be performed in-place of h.

See also [HN12, Definition 9.2.2].

source
ManifoldsBase.exp!Function
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

\[\exp_g X = g∘\exp_{\mathcal G}(X)\]

where X can be scaled by t, the computation can be performed in-place of h, and $\exp_{\mathcal G}$ denotes the Lie group exponential function.

Note

If g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.

Note

The Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).

source
exp(G::LieGroup, e::Identity, X)
+exp!(G::LieGroup, h, e::Identity, X)

Compute the (Lie group) exponential function

\[\exp_{\mathcal G}: \mathfrak g → \mathcal G,\qquad \exp_{\mathcal G}(X) = γ_X(1),\]

where $γ_X$ is the unique solution of the initial value problem

\[γ(0) = \mathrm e, \quad γ'(t) = γ(t)⋅X.\]

The computation can be performed in-place of h.

See also [HN12, Definition 9.2.2].

source
LieGroups.identity_elementFunction
identity_element(G::LieGroup)
+identity_element!(G::LieGroup, g)

Return a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of $e$ as a point on G if points are not represented by arrays. This can be performed in-place of g.

source
LieGroups.identity_element!Function
identity_element(G::LieGroup)
+identity_element!(G::LieGroup, g)

Return a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of $e$ as a point on G if points are not represented by arrays. This can be performed in-place of g.

source
Base.invMethod
inv(G::LieGroup, g)
+inv!(G::LieGroup, h, g)

Compute the inverse group element $g^{-1}$ with respect to the AbstractGroupOperation $∘$ on the LieGroup $\mathcal G$, that is, return the unique element $h=g^{-1}$ such that $h∘g=\mathrm e$, where $\mathrm e$ denotes the Identity.

This can be done in-place of h, without side effects, that is you can do inv!(G, g, g).

source
LieGroups.inv!Function
inv(G::LieGroup, g)
+inv!(G::LieGroup, h, g)

Compute the inverse group element $g^{-1}$ with respect to the AbstractGroupOperation $∘$ on the LieGroup $\mathcal G$, that is, return the unique element $h=g^{-1}$ such that $h∘g=\mathrm e$, where $\mathrm e$ denotes the Identity.

This can be done in-place of h, without side effects, that is you can do inv!(G, g, g).

source
LieGroups.diff_invFunction
diff_inv(G::LieGroup, g, X)
+diff_inv!(G::LieGroup, Y, g, X)

Compute the differential of the function $ι_{\mathcal G}(p) = p^-1$, where `Dι_{\mathcal G}(p): \mathfrak g → \mathfrak g. This can be done in-place ofY`.

source
LieGroups.diff_inv!Function
diff_inv(G::LieGroup, g, X)
+diff_inv!(G::LieGroup, Y, g, X)

Compute the differential of the function $ι_{\mathcal G}(p) = p^-1$, where `Dι_{\mathcal G}(p): \mathfrak g → \mathfrak g. This can be done in-place ofY`.

source
Base.logFunction
log(G::LieGroup, g, h)
+log!(G::LieGroup, X, g, h)

Compute the Lie group logarithmic map

\[\log_g h = ∘\log_{\mathcal G}(g^{-1}∘h)\]

where $\log_{\mathcal G}$ denotes the Lie group logarithmic function The computation can be performed in-place of X.

Note

If g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.

Note

The Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).

source
log(G::LieGroup, e::Identity, g)
+log!(G::LieGroup, X, e::Identity, g)

Compute the (Lie group) logarithmic function $\log_{\mathcal G}: \mathcal G → \mathfrak g$, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.

source
ManifoldsBase.log!Function
log(G::LieGroup, g, h)
+log!(G::LieGroup, X, g, h)

Compute the Lie group logarithmic map

\[\log_g h = ∘\log_{\mathcal G}(g^{-1}∘h)\]

where $\log_{\mathcal G}$ denotes the Lie group logarithmic function The computation can be performed in-place of X.

Note

If g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.

Note

The Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold $\mathcal M$. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).

source
log(G::LieGroup, e::Identity, g)
+log!(G::LieGroup, X, e::Identity, g)

Compute the (Lie group) logarithmic function $\log_{\mathcal G}: \mathcal G → \mathfrak g$, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.

source

Actions on Lie groups

LieGroups.AbstractLeftGroupActionTypeType
AbstractLeftGroupActionType <: AbstractGroupActionType

A type representing a (smooth) group action $σ: \mathcal G × \mathcal M → \mathcal M$ of a LieGroup $\mathcal G$ acting (from the left) on an AbstractManifold $\mathcal M$. with the following properties

  1. $σ(\mathrm e, p) = p$ holds for all $p ∈ \mathcal M$
  2. $σ(g, σ(h, p)) = σ(g∘h, p)$ holds for all $g,h ∈ \mathcal G$, $p ∈ \mathcal M$

where $∘$ denotes the group operation of the LieGroup $\mathcal G$. See also [HN12, Definition 9.1.11].

The type of action can be seen a bit better when writing the action as a family $σ_g(p)$: we obtain from the second property as

\[ σ_g(σ_h(p)) = σ_{gh}(p)\]

and see that $g$ appears on the left.

To emphasize the side the group operation is acting from, we sometimes write $σ^{\mathrm L}$. If the action is clear from context we write $σ(g, p) = g ⋅ p$.

One notable example of a left action is the inverse of an action of AbstractRightGroupActionType $σ^{\mathrm R}$, which is given by $τ_g = (σ^{\mathrm R}_g)^{-1} = σ^{\mathrm R}_{g^{-1}}$. We obtain

\[τ_g(τ_h(p)) = σ^{\mathrm R}_{g^{-1}}(σ^{\mathrm R}_{h^{-1}}(p)) = σ^{\mathrm R}_{h^{-1}g^{-1}}(p) = σ^{\mathrm R}_{(gh)^{-1}}(p) -τ_{gh}(p).\]

Note

In function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.

source
LieGroups.AbstractRightGroupActionTypeType
AbstractRightGroupActionType <: AbstractGroupActionType

A type representing a (smooth) group action $σ: \mathcal M × \mathcal G → \mathcal M$ of a LieGroup $\mathcal G$ acting (from the right) on an AbstractManifold $\mathcal M$. with the following properties

  1. $σ(p, \mathrm e) = p$ holds for all $p ∈ \mathcal M$
  2. $σ(σ(p, g), h) = σ(p, g∘h)$ holds for all $g,h ∈ \mathcal G$, $p ∈ \mathcal M$

where $∘$ denotes the group operation of the LieGroup $\mathcal G$. See also [HN12, Remark 9.1.12].

The type of action can be seen a bit better when writing the action as a family $σ_g(p)$: we obtain from the second property as

\[ σ_g(σ_h(p)) = σ_{hg}(p)\]

and see that $g$ appears on the right.

To emphasize the side the group operation is acting from, we sometimes write $σ^{\mathrm R}$. If the action is clear from context we write $σ(p, g) = p ⋅ g$.

One notable example of a right action is the inverse of an action of AbstractLeftGroupActionType $σ^{\mathrm L}$, which is given by $τ_g = (σ^{\mathrm L}_g)^{-1} = σ^{\mathrm L}_{g^{-1}}$. We obtain

\[τ_g(τ_h(p)) +τ_{gh}(p).\]

Note

In function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.

source
LieGroups.AbstractRightGroupActionTypeType
AbstractRightGroupActionType <: AbstractGroupActionType

A type representing a (smooth) group action $σ: \mathcal M × \mathcal G → \mathcal M$ of a LieGroup $\mathcal G$ acting (from the right) on an AbstractManifold $\mathcal M$. with the following properties

  1. $σ(p, \mathrm e) = p$ holds for all $p ∈ \mathcal M$
  2. $σ(σ(p, g), h) = σ(p, g∘h)$ holds for all $g,h ∈ \mathcal G$, $p ∈ \mathcal M$

where $∘$ denotes the group operation of the LieGroup $\mathcal G$. See also [HN12, Remark 9.1.12].

The type of action can be seen a bit better when writing the action as a family $σ_g(p)$: we obtain from the second property as

\[ σ_g(σ_h(p)) = σ_{hg}(p)\]

and see that $g$ appears on the right.

To emphasize the side the group operation is acting from, we sometimes write $σ^{\mathrm R}$. If the action is clear from context we write $σ(p, g) = p ⋅ g$.

One notable example of a right action is the inverse of an action of AbstractLeftGroupActionType $σ^{\mathrm L}$, which is given by $τ_g = (σ^{\mathrm L}_g)^{-1} = σ^{\mathrm L}_{g^{-1}}$. We obtain

\[τ_g(τ_h(p)) = σ^{\mathrm L}_{g^{-1}}(σ^{\mathrm L}_{h^{-1}}(p)) = σ^{\mathrm L}_{g^{-1}h^{-1}}(p) = σ^{\mathrm L}_{(hg)^{-1}}(p) -τ_{hg}(p).\]

Note

In function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.

source

Functions for Lie group actions

LieGroups.diff_apply!Method
diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
-diff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_p σ_g(p): T_p\mathcal M → T_{σ_g(p)}\mathcal M$, where for a left group action we have $σ_g(p) = σ(g,p)$, for a right action $σ_g(p) = σ(p, g)$.

source
LieGroups.diff_applyMethod
diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
-diff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_p σ_g(p): T_p\mathcal M → T_{σ_g(p)}\mathcal M$, where for a left group action we have $σ_g(p) = σ(g,p)$, for a right action $σ_g(p) = σ(p, g)$.

source
LieGroups.diff_group_apply!Method
diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
-diff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$, where we use the short hand notation $σ_p(g) = σ(g,p)$ for a left action, and for a right action $σ_p(g) = σ(p, g)$.

source
LieGroups.diff_group_applyMethod
diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
-diff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$, where we use the short hand notation $σ_p(g) = σ(g,p)$ for a left action, and for a right action $σ_p(g) = σ(p, g)$.

source
LieGroups.switchMethod
switch(T::AbstractGroupActionType)

Return the object representing an AbstractGroupActionType related to a group operation action that switched the side, that is it turns a left action type into its corresponding right action type.

source
LieGroups.switchMethod
 switch(A::AbstractGroupAction{T})

Return the group operation action representing the similar AbstractGroupAction of AbstractGroupActionType T but acting from the other side. It switches left to right and vice versa. This is done by returning the group action with the “switched” type of T.

source
Manifolds.apply!Method
apply(A::AbstractGroupAction{T, L, M}, g, p)
-apply!(A::AbstractGroupAction{T, L, M}, q, g, p)

Apply the group action induced by $g ∈ \mathcal G$ to $p ∈ \mathcal M$, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.

source
Manifolds.applyMethod
apply(A::AbstractGroupAction{T, L, M}, g, p)
-apply!(A::AbstractGroupAction{T, L, M}, q, g, p)

Apply the group action induced by $g ∈ \mathcal G$ to $p ∈ \mathcal M$, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.

source

Specific Lie group actions

LieGroups.InverseLeftGroupOperationType
InverseLeftGroupOperation <: AbstractRightGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a LeftGroupOperation $σ_h$ as

\[τ_h(g) \coloneqq σ_h^{-1}(g) = σ(h^{-1},g) = h^{-1}∘g\]

Note that while in naming it is the inverse of the left action, it's properties yield that is is an AbstractRightGroupActionType, since

\[τ_g(τ_h(p)) +τ_{hg}(p).\]

Note

In function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.

source

Functions for Lie group actions

LieGroups.diff_apply!Method
diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
+diff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_p σ_g(p): T_p\mathcal M → T_{σ_g(p)}\mathcal M$, where for a left group action we have $σ_g(p) = σ(g,p)$, for a right action $σ_g(p) = σ(p, g)$.

source
LieGroups.diff_applyMethod
diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
+diff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_p σ_g(p): T_p\mathcal M → T_{σ_g(p)}\mathcal M$, where for a left group action we have $σ_g(p) = σ(g,p)$, for a right action $σ_g(p) = σ(p, g)$.

source
LieGroups.diff_group_apply!Method
diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
+diff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$, where we use the short hand notation $σ_p(g) = σ(g,p)$ for a left action, and for a right action $σ_p(g) = σ(p, g)$.

source
LieGroups.diff_group_applyMethod
diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)
+diff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$, where we use the short hand notation $σ_p(g) = σ(g,p)$ for a left action, and for a right action $σ_p(g) = σ(p, g)$.

source
LieGroups.switchMethod
switch(T::AbstractGroupActionType)

Return the object representing an AbstractGroupActionType related to a group operation action that switched the side, that is it turns a left action type into its corresponding right action type.

source
LieGroups.switchMethod
 switch(A::AbstractGroupAction{T})

Return the group operation action representing the similar AbstractGroupAction of AbstractGroupActionType T but acting from the other side. It switches left to right and vice versa. This is done by returning the group action with the “switched” type of T.

source
Manifolds.apply!Method
apply(A::AbstractGroupAction{T, L, M}, g, p)
+apply!(A::AbstractGroupAction{T, L, M}, q, g, p)

Apply the group action induced by $g ∈ \mathcal G$ to $p ∈ \mathcal M$, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.

source
Manifolds.applyMethod
apply(A::AbstractGroupAction{T, L, M}, g, p)
+apply!(A::AbstractGroupAction{T, L, M}, q, g, p)

Apply the group action induced by $g ∈ \mathcal G$ to $p ∈ \mathcal M$, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.

source

Specific Lie group actions

LieGroups.InverseLeftGroupOperationType
InverseLeftGroupOperation <: AbstractRightGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a LeftGroupOperation $σ_h$ as

\[τ_h(g) \coloneqq σ_h^{-1}(g) = σ(h^{-1},g) = h^{-1}∘g\]

Note that while in naming it is the inverse of the left action, it's properties yield that is is an AbstractRightGroupActionType, since

\[τ_g(τ_h(p)) = σ^{\mathrm L}_{g^{-1}}(σ^{\mathrm L}_{h^{-1}}(p)) = σ^{\mathrm L}_{g^{-1}h^{-1}}(p) = σ^{\mathrm L}_{(hg)^{-1}}(p) -τ_{hg}(p).\]

for its inverse $(σ_h)^{-1}$ see InverseLeftGroupOperation.

Note

Some literature also calls this by itself the right group operation action.

source
LieGroups.InverseRightGroupOperationType
InverseRightGroupOperation <: AbstractLeftGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a RightGroupOperation $σ_h$ as

\[τ_h(g) \coloneqq σ_h^{-1}(g) = σ(h^{-1},g) = g∘h^{-1}\]

Note that while in naming it is the inverse of the right action, it's properties yield that is is an AbstractLeftGroupActionType, since

\[τ_g(τ_h(p)) +τ_{hg}(p).\]

for its inverse $(σ_h)^{-1}$ see InverseLeftGroupOperation.

Note

Some literature also calls this by itself the right group operation action.

source
LieGroups.InverseRightGroupOperationType
InverseRightGroupOperation <: AbstractLeftGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a RightGroupOperation $σ_h$ as

\[τ_h(g) \coloneqq σ_h^{-1}(g) = σ(h^{-1},g) = g∘h^{-1}\]

Note that while in naming it is the inverse of the right action, it's properties yield that is is an AbstractLeftGroupActionType, since

\[τ_g(τ_h(p)) = σ^{\mathrm R}_{g^{-1}}(σ^{\mathrm R}_{h^{-1}}(p)) = σ^{\mathrm R}_{h^{-1}g^{-1}}(p) = σ^{\mathrm R}_{(gh)^{-1}}(p) -τ_{gh}(p).\]

for its inverse $(σ_h)^{-1}$ see InverseLeftGroupOperation.

source
Base.invMethod
inv(::GroupOperationAction)

return the inverse group operation action, that is, use the type representing the inverse operation.

source
Manifolds.apply!Method
apply(A::GroupOperationAction, g, h)
-apply!(A::GroupOperationAction, k, g, h)

apply the stored group operation action, using compose $∘$. this can be done in-place of k.

source
Manifolds.applyMethod
apply(A::GroupOperationAction, g, h)
-apply!(A::GroupOperationAction, k, g, h)

apply the stored group operation action, using compose $∘$. this can be done in-place of k.

source

Functions on Lie Algebras

LieGroups.lie_bracketFunction
lie_bracket!(𝔤::LieAlgebra, X, Y)
-lie_bracket!(𝔤::LieAlgebra, Z, X, Y)

Compute the Lie bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The computation can be done in-place of Z.

source
LieGroups.lie_bracket!Function
lie_bracket!(𝔤::LieAlgebra, X, Y)
-lie_bracket!(𝔤::LieAlgebra, Z, X, Y)

Compute the Lie bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The computation can be done in-place of Z.

source

Specific Group Operations

For some generic group operations, an easy generic implementation can be provided. This section lists these specific cases and what is implemented for these.

Additive Group operation

LieGroups.AdditionGroupOperationType
AdditionGroupOperation <: AbstractGroupOperation

A group operation that is realised introducing defaults that fall back to + and - being overloaded, for example compose(G::LieGroup{𝔽,M,AdditionGroupOperation}, a,b) = a+b

source

Multiplicative Group operation

Literature

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
+τ_{gh}(p).\]

for its inverse $(σ_h)^{-1}$ see InverseLeftGroupOperation.

source
LieGroups.LeftGroupOperationType
LeftGroupOperation <: AbstractLeftGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself from the left, that is

\[σ_h(g) = σ(h,g) = h∘g\]

for its inverse $(σ_h)^{-1}$ see InverseLeftGroupOperation.

source
LieGroups.RightGroupOperationType
RightGroupOperation <: AbstractRightGroupActionType

A type for the AbstractLeftGroupActionType when acting on the group itself gfrom the right

\[σ_h(g) = σ(h,g) = g∘h\]

for its inverse $(σ_h)^{-1}$ see InverseRightGroupOperation.

source
Base.invMethod
inv(::GroupOperationAction)

return the inverse group operation action, that is, use the type representing the inverse operation.

source
Base.invMethod
inv(::InverseLeftGroupOperation)

Return the inverse of the InverseLeftGroupOperation, that is the LeftGroupOperation.

source
Base.invMethod
inv(::InverseRightGroupOperation)

Return the inverse of the InverseRightGroupOperation, that is the RightGroupOperation.

source
Base.invMethod
inv(::LeftGroupOperation)

Return the inverse of the LeftGroupOperation, that is the InverseLeftGroupOperation.

source
Base.invMethod
inv(::RightGroupOperation)

Return the inverse of the RightGroupOperation, that is the InverseRightGroupOperation.

source
LieGroups.diff_apply!Method

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$ of a group operation action, that is

source
LieGroups.diff_applyMethod

Compute the differential $D_g σ_p(g): T_g\mathcal G → T_{σ_p(g)}\mathcal M$ of a group operation action, that is

source
LieGroups.switchMethod
switch(::InverseLeftGroupOperation)

Return the InverseRightGroupOperation, that is, turns $σ_g = g^{-1}∘h$ into $τ_g(h) = h∘g^{-1}$

source
LieGroups.switchMethod
switch(::InverseRightGroupOperation)

Return the InverseLeftGroupOperation, that is, turns $σ_g = h∘g^{-1}$ into $τ_g(h) = g^{-1}∘h$

source
LieGroups.switchMethod
switch(::LeftGroupOperation)

Return the RightGroupOperation, that is, turns $σ_g = g∘h$ into $τ_g(h) = h∘g$

source
LieGroups.switchMethod
switch(::RightGroupOperation)

Return the LeftGroupOperation, that is, turns $σ_g = h∘g$ into $τ_g(h) = g∘h$

source
Manifolds.apply!Method
apply(A::GroupOperationAction, g, h)
+apply!(A::GroupOperationAction, k, g, h)

apply the stored group operation action, using compose $∘$. this can be done in-place of k.

source
Manifolds.applyMethod
apply(A::GroupOperationAction, g, h)
+apply!(A::GroupOperationAction, k, g, h)

apply the stored group operation action, using compose $∘$. this can be done in-place of k.

source

Functions on Lie Algebras

LieGroups.lie_bracketFunction
lie_bracket!(𝔤::LieAlgebra, X, Y)
+lie_bracket!(𝔤::LieAlgebra, Z, X, Y)

Compute the Lie bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The computation can be done in-place of Z.

source
LieGroups.lie_bracket!Function
lie_bracket!(𝔤::LieAlgebra, X, Y)
+lie_bracket!(𝔤::LieAlgebra, Z, X, Y)

Compute the Lie bracket $[⋅,⋅]: \mathfrak g×\mathfrak g → \mathfrak g$ which fulfills

  1. $[X,X] = 0$ for all $X ∈ \mathfrak g$
  2. The Jacobi identity holds $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z ∈ \mathfrak g$.

The computation can be done in-place of Z.

source

Specific Group Operations

For some generic group operations, an easy generic implementation can be provided. This section lists these specific cases and what is implemented for these.

Additive Group operation

LieGroups.AdditionGroupOperationType
AdditionGroupOperation <: AbstractGroupOperation

A group operation that is realised introducing defaults that fall back to + and - being overloaded, for example compose(G::LieGroup{𝔽,M,AdditionGroupOperation}, a,b) = a+b

source

Multiplicative Group operation

Literature

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
diff --git a/previews/PR8/news/index.html b/previews/PR8/news/index.html index 4f4482b..58564eb 100644 --- a/previews/PR8/news/index.html +++ b/previews/PR8/news/index.html @@ -1,2 +1,2 @@ -Changelog · LieGroups.jl

Changelog

All notable Changes to the Julia package LieGroups.jl will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.0] - unreleased

Everything denoted by “formerly” refers to the previous name in Manifolds.jl.

Added

  • LieAlgebra
  • LieGroup (formerly GroupManifold) as well as the concrete groups
    • AdditiveGroup (formerly TranslationGroup)
  • AbstractGroupOperation as well as its concrete subtypes
    • AdditionGroupOperation (formerly AdditionOperation)
  • AbstractGroupActionType with its 2 specific (new) abstract
    • AbstractLeftGroupActionType
    • AbstractRightGroupActionType
  • For the group operation actions there are now
    • LeftGroupOperation (formerly LeftForwardAction)
    • RightGroupOperation (formerly RightBackwardAction)
    • InverseLeftGroupOperation (formerly RightForwardAction)
    • InverseRightGroupOperation (formerly LeftBackwardAction)
  • applyand apply!
  • base_manifold to access the manifold within a Lie group
  • compose and compose!
  • conjugate and conjugate!
  • diff_apply, diff_apply!, diff_group_apply, and diff_group_apply! (formerly apply_diff_[group][!])
  • diff_left_compose, diff_left_compose!, diff_right_compose, diff_right_compose! (formerly translate_diff with different sides)
  • exp(G::LieGroup, g, X) and exp!(G::LieGroup, h, g, X) (formerly exp_inv and exp_inv!)
  • exp(G::LieGroup, ::Identity, X) and exp!(G::LieGroup, h, ::Identity, X) (formerly exp_lie and exp_lie!)
  • Identity
  • idenity_element and identity_element!
  • inv and inv! (inv(::AbstractGroupAction) was formerly switch_direction)
  • inv_left_compose, inv_left_compose! and inv_right_compose, inv_right_compose! (these functions correspond to inverse_translate with corresponding direction and side)
  • is_identity
  • Lie_bracket and Lie_bracket! (formerly lie_bracket)
  • log(G::LieGroup, g, h) and log!(G::LieGroup, X, g, h) (formerly log_inv and log_inv!)
  • log(G::LieGroup, ::Identity, g) and log!(G::LieGroup, X, ::Identity, g) (formerly log_lie and log_lie!)
  • switch (formerly switch_side)

Compared to Manifolds.jl

  • all translate functions are not implemented here, since you can just use compose. The differentials are implemented as listed above with respect to both left and right argument of compose
  • all inverse_apply functions are not implemented here, since it is recommended to use apply(inv(A), g, p) as a replacement.

Old Changelog pre 0.1.0

Two previous releases where done by Yueh-Hua Tu in 2022 before he was so kind to transfer the development to the JuliaManifolds GitHub organisation.

All notable changes to this project will be documented in this file.

[0.0.2]

  • fix SE{3} and add jacobian
  • define dof and dim for Lie algebra and jacobian of inv
  • add action for SE{N}
  • add se3_location example
+Changelog · LieGroups.jl

Changelog

All notable Changes to the Julia package LieGroups.jl will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.0] - unreleased

Everything denoted by “formerly” refers to the previous name in Manifolds.jl.

Added

  • LieAlgebra
  • LieGroup (formerly GroupManifold) as well as the concrete groups
    • AdditiveGroup (formerly TranslationGroup)
  • AbstractGroupOperation as well as its concrete subtypes
    • AdditionGroupOperation (formerly AdditionOperation)
  • AbstractGroupActionType with its 2 specific (new) abstract
    • AbstractLeftGroupActionType
    • AbstractRightGroupActionType
  • For the group operation actions there are now
    • LeftGroupOperation (formerly LeftForwardAction)
    • RightGroupOperation (formerly RightBackwardAction)
    • InverseLeftGroupOperation (formerly RightForwardAction)
    • InverseRightGroupOperation (formerly LeftBackwardAction)
  • applyand apply!
  • base_manifold to access the manifold within a Lie group
  • compose and compose!
  • conjugate and conjugate!
  • diff_apply, diff_apply!, diff_group_apply, and diff_group_apply! (formerly apply_diff_[group][!])
  • diff_left_compose, diff_left_compose!, diff_right_compose, diff_right_compose! (formerly translate_diff with different sides)
  • exp(G::LieGroup, g, X) and exp!(G::LieGroup, h, g, X) (formerly exp_inv and exp_inv!)
  • exp(G::LieGroup, ::Identity, X) and exp!(G::LieGroup, h, ::Identity, X) (formerly exp_lie and exp_lie!)
  • Identity
  • idenity_element and identity_element!
  • inv and inv! (inv(::AbstractGroupAction) was formerly switch_direction)
  • inv_left_compose, inv_left_compose! and inv_right_compose, inv_right_compose! (these functions correspond to inverse_translate with corresponding direction and side)
  • is_identity
  • Lie_bracket and Lie_bracket! (formerly lie_bracket)
  • log(G::LieGroup, g, h) and log!(G::LieGroup, X, g, h) (formerly log_inv and log_inv!)
  • log(G::LieGroup, ::Identity, g) and log!(G::LieGroup, X, ::Identity, g) (formerly log_lie and log_lie!)
  • switch (formerly switch_side)

Compared to Manifolds.jl

  • all translate functions are not implemented here, since you can just use compose. The differentials are implemented as listed above with respect to both left and right argument of compose
  • all inverse_apply functions are not implemented here, since it is recommended to use apply(inv(A), g, p) as a replacement.

Old Changelog pre 0.1.0

Two previous releases where done by Yueh-Hua Tu in 2022 before he was so kind to transfer the development to the JuliaManifolds GitHub organisation.

All notable changes to this project will be documented in this file.

[0.0.2]

  • fix SE{3} and add jacobian
  • define dof and dim for Lie algebra and jacobian of inv
  • add action for SE{N}
  • add se3_location example
diff --git a/previews/PR8/notation/index.html b/previews/PR8/notation/index.html index 0ba2ac0..8696916 100644 --- a/previews/PR8/notation/index.html +++ b/previews/PR8/notation/index.html @@ -1,2 +1,2 @@ -Notation · LieGroups.jl

Notation on LIe Groups

For most of the notation used throughout this package, we follow [HN12]

SymbolDescriptionAlso usedComment
$∘$a group operation
$c:\mathcal G → \mathcal G, c_g$the conjugation map (with g)
$\mathrm{e}$identity element of a group
$g, h, k$elements on a (Lie) group. Sometimes called points.$g_1, g_2, ...$
$\mathfrak g$a Lie algebra
$\mathcal{G}$a (Lie) group
$λ_g: \mathcal G → \mathcal G$the left multiplication map $λ_g(h) = g∘h$
$\mathcal M$a manifold$\mathcal M_1, \mathcal M_2,\ldots,\mathcal N$
$\operatorname{Exp}$the matrix exponential
$\operatorname{Log}$the matrix logarithm
$ρ_g: \mathcal G → \mathcal G$the right multiplication map $ρ_g(h) = h∘g$
$σ: \mathcal G × \mathcal M$a left group actionwe use $σ_g(p)$ if the group element is fixed
$τ: \mathcal M × \mathcal G$a right group action$σ_\mathrm{R}$we use $τ_g(p)$ if the group element is fixed
$T_p \mathcal M$the tangent space at $p$
+Notation · LieGroups.jl

Notation on LIe Groups

For most of the notation used throughout this package, we follow [HN12]

SymbolDescriptionAlso usedComment
$∘$a group operation
$c:\mathcal G → \mathcal G, c_g$the conjugation map (with g)
$\mathrm{e}$identity element of a group
$g, h, k$elements on a (Lie) group. Sometimes called points.$g_1, g_2, ...$
$\mathfrak g$a Lie algebra
$\mathcal{G}$a (Lie) group
$λ_g: \mathcal G → \mathcal G$the left multiplication map $λ_g(h) = g∘h$
$\mathcal M$a manifold$\mathcal M_1, \mathcal M_2,\ldots,\mathcal N$
$\operatorname{Exp}$the matrix exponential
$\operatorname{Log}$the matrix logarithm
$ρ_g: \mathcal G → \mathcal G$the right multiplication map $ρ_g(h) = h∘g$
$σ: \mathcal G × \mathcal M$a left group actionwe use $σ_g(p)$ if the group element is fixed
$τ: \mathcal M × \mathcal G$a right group action$σ_\mathrm{R}$we use $τ_g(p)$ if the group element is fixed
$T_p \mathcal M$the tangent space at $p$
diff --git a/previews/PR8/references/index.html b/previews/PR8/references/index.html index 7f034a1..4301ae6 100644 --- a/previews/PR8/references/index.html +++ b/previews/PR8/references/index.html @@ -1,2 +1,2 @@ -References · LieGroups.jl

Literature

This is all literature mentioned / referenced in the LieGroups.jl documentation. Usually you find a small reference section at the end of every documentation page that contains the corresponding references as well.

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
+References · LieGroups.jl

Literature

This is all literature mentioned / referenced in the LieGroups.jl documentation. Usually you find a small reference section at the end of every documentation page that contains the corresponding references as well.

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
diff --git a/previews/PR8/search_index.js b/previews/PR8/search_index.js index 9d8a972..374b7d6 100644 --- a/previews/PR8/search_index.js +++ b/previews/PR8/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"groups/translation/#The-Lie-group-of-translations-on-an-Euclidean-space","page":"Translation group","title":"The Lie group of translations on an Euclidean space","text":"","category":"section"},{"location":"groups/translation/","page":"Translation group","title":"Translation group","text":"TranslationGroup","category":"page"},{"location":"groups/translation/#LieGroups.TranslationGroup","page":"Translation group","title":"LieGroups.TranslationGroup","text":"TranslationGroup{𝔽}\n\nThe Lie group consisting of the AdditionGroupOperation on some Euclidean space.\n\nConstructor\n\nTODO\n\n\n\n\n\n","category":"type"},{"location":"groups/translation/#Functions","page":"Translation group","title":"Functions","text":"","category":"section"},{"location":"groups/translation/","page":"Translation group","title":"Translation group","text":"Modules = [LieGroups]\nPages = [\"groups/translation_group.jl\"]\nOrder = [:function]","category":"page"},{"location":"references/#Literature","page":"References","title":"Literature","text":"","category":"section"},{"location":"references/","page":"References","title":"References","text":"This is all literature mentioned / referenced in the LieGroups.jl documentation. Usually you find a small reference section at the end of every documentation page that contains the corresponding references as well.","category":"page"},{"location":"references/","page":"References","title":"References","text":"J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).\n\n\n\n","category":"page"},{"location":"interface/#The-interface-for-Lie-Groups","page":"An Interface for Lie Groups","title":"The interface for Lie Groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"LieGroup\nLieAlgebra","category":"page"},{"location":"interface/#LieGroups.LieGroup","page":"An Interface for Lie Groups","title":"LieGroups.LieGroup","text":"LieGroup{𝔽,M<:AbstractManifold{𝔽}, O<:AbstractGroupOperation}\n\nRepresent a Lie Group mathcal G.\n\nA Lie Group mathcal G is a group endowed with the structure of a manifold such that the group operations mathcal Gmathcal G mathcal G, see compose and the inverse operation ^-1 mathcal G mathcal G, see inv are smooth, see for example [HN12, Definition 9.1.1].\n\nLie groups are named after the Norwegian mathematician Marius Sophus Lie (1842–1899).\n\nFields\n\nmanifold: an AbstractManifold mathcal M\nop: an AbstractGroupOperation on that manifold\n\nConstructor\n\nLieGroup(M::AbstractManifold, op::AbstractGroupOperation; vectors=LeftInvariantRepresentation())\n\nGenerate a Lie group based on a manifold M and a group operation op, where vectors by default are stored in the Lie Algebra.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.LieAlgebra","page":"An Interface for Lie Groups","title":"LieGroups.LieAlgebra","text":"LieAlgebra{𝔽, G} <: AbstractManifold{𝔽}\n\nRepresent the Lie Algebra mathfrak g, that is a 𝔽vector space with an associated lie_bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe Lie algebras considered here are those related to a LieGroup mathcal G, namely the tangent space the tangent space T_mathrm emathcal G at the Identity, this is internally just a const of the corresponding TangentSpace.\n\nConstructor\n\nLieAlgebra(G::LieGroup)\n\nReturn the Lie Algebra belonging to the LieGroup G.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Group-Operations","page":"An Interface for Lie Groups","title":"Group Operations","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"AbstractGroupOperation\nIdentity","category":"page"},{"location":"interface/#LieGroups.AbstractGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupOperation","text":"AbstractGroupOperation\n\nRepresent a type of group operation for a LieGroup mathcal G, that is a smooth binary operation mathcal G mathcal G mathcal G on elements of a Lie group mathcal G.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.Identity","page":"An Interface for Lie Groups","title":"LieGroups.Identity","text":"Identity{O<:AbstractGroupOperation}\n\nRepresent the group identity element e mathcal G on a LieGroup mathcal G with AbstractGroupOperation of type O.\n\nSimilar to the philosophy that points are agnostic of their group at hand, the identity does not store the group mathcal G it belongs to. However it depends on the type of the AbstractGroupOperation used.\n\nSee also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.\n\nConstructors\n\nIdentity(::LieGroup{𝔽,M,O}) where {𝔽,M,O<:AbstractGroupOperation}\nIdentity(o::AbstractGroupOperation)\nIdentity(::Type{AbstractGroupOperation})\n\ncreate the identity of the corresponding subtype O<:AbstractGroupOperation\n\n\n\n\n\n","category":"type"},{"location":"interface/#Functions-on-Lie-Groups","page":"An Interface for Lie Groups","title":"Functions on Lie Groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"adjoint\nadjoint!\nbase_manifold\ncompose\ncompose!\ndiff_left_compose\ndiff_left_compose!\ndiff_right_compose\ndiff_right_compose!\ninv_left_compose\ninv_left_compose!\ninv_right_compose\ninv_right_compose!\nconjugate\nconjugate!\ndiff_conjugate\ndiff_conjugate!\nexp\nexp!\nidentity_element\nidentity_element!\nis_identity\ninv(::LieGroup, ::Any)\ninv!\ndiff_inv\ndiff_inv!\nlog\nlog!","category":"page"},{"location":"interface/#Base.adjoint","page":"An Interface for Lie Groups","title":"Base.adjoint","text":"adjoint(G::LieGroup, g X)\nadjoint!(G::LieGroup, Y, g, X)\n\nCompute the adjoint mathrmAd(g) mathfrak g mathfrak g, which is defined as the differential diff_conjugate of the conjugate c_g(h) = ghg^-1 evaluated at the Identity h=mathrm e. The operation can be performed in-place of Y.\n\n mathrmAd(g)X = D c_g(mathrm e) X qquad X mathfrak g\n\nsee [HN12, Section 9.2.3].\n\nOn matrix Lie groups the adjoint reads mathrmAd(g)X = gXg^-1.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.adjoint!","page":"An Interface for Lie Groups","title":"LieGroups.adjoint!","text":"adjoint(G::LieGroup, g X)\nadjoint!(G::LieGroup, Y, g, X)\n\nCompute the adjoint mathrmAd(g) mathfrak g mathfrak g, which is defined as the differential diff_conjugate of the conjugate c_g(h) = ghg^-1 evaluated at the Identity h=mathrm e. The operation can be performed in-place of Y.\n\n mathrmAd(g)X = D c_g(mathrm e) X qquad X mathfrak g\n\nsee [HN12, Section 9.2.3].\n\nOn matrix Lie groups the adjoint reads mathrmAd(g)X = gXg^-1.\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.base_manifold","page":"An Interface for Lie Groups","title":"ManifoldsBase.base_manifold","text":"base_manifold(G::LieGroup)\n\nReturn the manifold stored within the LieGroup G.\n\n\n\n\n\nbase_manifold(A::AbstractGroupAction)\n\nReturn the AbstractManifold of the AbstractGroupAction.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.compose","page":"An Interface for Lie Groups","title":"LieGroups.compose","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.compose!","page":"An Interface for Lie Groups","title":"LieGroups.compose!","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_left_compose","page":"An Interface for Lie Groups","title":"LieGroups.diff_left_compose","text":"diff_left_compose(G::LieGroup, g, h, X)\ndiff_left_compose!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is Compute Dλ_g(h)X, X 𝔤. This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_left_compose!","page":"An Interface for Lie Groups","title":"LieGroups.diff_left_compose!","text":"diff_left_compose(G::LieGroup, g, h, X)\ndiff_left_compose!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is Compute Dλ_g(h)X, X 𝔤. This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_right_compose","page":"An Interface for Lie Groups","title":"LieGroups.diff_right_compose","text":"diff_right_compose(G::LieGroup, h, g, X)\ndiff_right_compose!(G::LieGroup, Y, h, g, X)\n\nCompute the differential of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute Dρ_g(h)X, X 𝔤 This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_right_compose!","page":"An Interface for Lie Groups","title":"LieGroups.diff_right_compose!","text":"diff_right_compose(G::LieGroup, h, g, X)\ndiff_right_compose!(G::LieGroup, Y, h, g, X)\n\nCompute the differential of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute Dρ_g(h)X, X 𝔤 This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_left_compose","page":"An Interface for Lie Groups","title":"LieGroups.inv_left_compose","text":"inv_left_compose(G::LieGroup, g, h)\ninv_left_compose!(G::LieGroup, k, g, h)\n\nCompute the inverse of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is, compute λ_g^-1(h) = g^-1h. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_left_compose!","page":"An Interface for Lie Groups","title":"LieGroups.inv_left_compose!","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_right_compose","page":"An Interface for Lie Groups","title":"LieGroups.inv_right_compose","text":"inv_right_compose(G::LieGroup, h, g)\ninv_right_compose!(G::LieGroup, k, h, g)\n\nCompute the inverse of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute ρ_g^-1(h) = hg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_right_compose!","page":"An Interface for Lie Groups","title":"LieGroups.inv_right_compose!","text":"inv_right_compose(G::LieGroup, h, g)\ninv_right_compose!(G::LieGroup, k, h, g)\n\nCompute the inverse of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute ρ_g^-1(h) = hg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.conjugate","page":"An Interface for Lie Groups","title":"LieGroups.conjugate","text":"conjugate(G::LieGroup, g, h)\nconjugate!(G::LieGroup, k, g, h)\n\nCompute the conjugation map c_g mathcal G mathcal G given by c_g(h) = ghg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.conjugate!","page":"An Interface for Lie Groups","title":"LieGroups.conjugate!","text":"conjugate(G::LieGroup, g, h)\nconjugate!(G::LieGroup, k, g, h)\n\nCompute the conjugation map c_g mathcal G mathcal G given by c_g(h) = ghg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_conjugate","page":"An Interface for Lie Groups","title":"LieGroups.diff_conjugate","text":"diff_conjugate(G::LieGroup, g, h, X)\ndiff_conjugate!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the conjugate c_g(h) = ghg^-1, which can be performed in-place of Y.\n\n D(c_g(h))X qquad X mathfrak g\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_conjugate!","page":"An Interface for Lie Groups","title":"LieGroups.diff_conjugate!","text":"diff_conjugate(G::LieGroup, g, h, X)\ndiff_conjugate!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the conjugate c_g(h) = ghg^-1, which can be performed in-place of Y.\n\n D(c_g(h))X qquad X mathfrak g\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.exp","page":"An Interface for Lie Groups","title":"Base.exp","text":"exp(G::LieGroup, g, X, t::Number=1)\nexp!(G::LieGroup, h, g, X, t::Number=1)\n\nCompute the Lie group exponential map given by\n\nexp_g X = gexp_mathcal G(X)\n\nwhere X can be scaled by t, the computation can be performed in-place of h, and exp_mathcal G denotes the Lie group exponential function.\n\nnote: Note\nIf g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).\n\n\n\n\n\nexp(G::LieGroup, e::Identity, X)\nexp!(G::LieGroup, h, e::Identity, X)\n\nCompute the (Lie group) exponential function\n\nexp_mathcal G mathfrak g mathcal Gqquad exp_mathcal G(X) = γ_X(1)\n\nwhere γ_X is the unique solution of the initial value problem\n\nγ(0) = mathrm e quad γ(t) = γ(t)X\n\nThe computation can be performed in-place of h.\n\nSee also [HN12, Definition 9.2.2].\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.exp!","page":"An Interface for Lie Groups","title":"ManifoldsBase.exp!","text":"exp(G::LieGroup, g, X, t::Number=1)\nexp!(G::LieGroup, h, g, X, t::Number=1)\n\nCompute the Lie group exponential map given by\n\nexp_g X = gexp_mathcal G(X)\n\nwhere X can be scaled by t, the computation can be performed in-place of h, and exp_mathcal G denotes the Lie group exponential function.\n\nnote: Note\nIf g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).\n\n\n\n\n\nexp(G::LieGroup, e::Identity, X)\nexp!(G::LieGroup, h, e::Identity, X)\n\nCompute the (Lie group) exponential function\n\nexp_mathcal G mathfrak g mathcal Gqquad exp_mathcal G(X) = γ_X(1)\n\nwhere γ_X is the unique solution of the initial value problem\n\nγ(0) = mathrm e quad γ(t) = γ(t)X\n\nThe computation can be performed in-place of h.\n\nSee also [HN12, Definition 9.2.2].\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.identity_element","page":"An Interface for Lie Groups","title":"LieGroups.identity_element","text":"identity_element(G::LieGroup)\nidentity_element!(G::LieGroup, g)\n\nReturn a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of e as a point on G if points are not represented by arrays. This can be performed in-place of g.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.identity_element!","page":"An Interface for Lie Groups","title":"LieGroups.identity_element!","text":"identity_element(G::LieGroup)\nidentity_element!(G::LieGroup, g)\n\nReturn a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of e as a point on G if points are not represented by arrays. This can be performed in-place of g.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.is_identity","page":"An Interface for Lie Groups","title":"LieGroups.is_identity","text":"is_identity(G::LieGroup, q; kwargs)\n\nCheck whether q is the identity on the LieGroup mathcal G. This means it is either the Identity{O} with the respect to the corresponding AbstractGroupOperation O, or (approximately) the correct point representation.\n\nSee also\n\nidentity_element, identity_element!\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.inv-Tuple{LieGroup, Any}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(G::LieGroup, g)\ninv!(G::LieGroup, h, g)\n\nCompute the inverse group element g^-1 with respect to the AbstractGroupOperation on the LieGroup mathcal G, that is, return the unique element h=g^-1 such that hg=mathrm e, where mathrm e denotes the Identity.\n\nThis can be done in-place of h, without side effects, that is you can do inv!(G, g, g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.inv!","page":"An Interface for Lie Groups","title":"LieGroups.inv!","text":"inv(G::LieGroup, g)\ninv!(G::LieGroup, h, g)\n\nCompute the inverse group element g^-1 with respect to the AbstractGroupOperation on the LieGroup mathcal G, that is, return the unique element h=g^-1 such that hg=mathrm e, where mathrm e denotes the Identity.\n\nThis can be done in-place of h, without side effects, that is you can do inv!(G, g, g).\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_inv","page":"An Interface for Lie Groups","title":"LieGroups.diff_inv","text":"diff_inv(G::LieGroup, g, X)\ndiff_inv!(G::LieGroup, Y, g, X)\n\nCompute the differential of the function ι_mathcal G(p) = p^-1, where `Dι_{\\mathcal G}(p): \\mathfrak g → \\mathfrak g. This can be done in-place ofY`.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_inv!","page":"An Interface for Lie Groups","title":"LieGroups.diff_inv!","text":"diff_inv(G::LieGroup, g, X)\ndiff_inv!(G::LieGroup, Y, g, X)\n\nCompute the differential of the function ι_mathcal G(p) = p^-1, where `Dι_{\\mathcal G}(p): \\mathfrak g → \\mathfrak g. This can be done in-place ofY`.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.log","page":"An Interface for Lie Groups","title":"Base.log","text":"log(G::LieGroup, g, h)\nlog!(G::LieGroup, X, g, h)\n\nCompute the Lie group logarithmic map\n\nlog_g h = log_mathcal G(g^-1h)\n\nwhere log_mathcal G denotes the Lie group logarithmic function The computation can be performed in-place of X.\n\nnote: Note\nIf g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).\n\n\n\n\n\nlog(G::LieGroup, e::Identity, g)\nlog!(G::LieGroup, X, e::Identity, g)\n\nCompute the (Lie group) logarithmic function log_mathcal G mathcal G mathfrak g, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.log!","page":"An Interface for Lie Groups","title":"ManifoldsBase.log!","text":"log(G::LieGroup, g, h)\nlog!(G::LieGroup, X, g, h)\n\nCompute the Lie group logarithmic map\n\nlog_g h = log_mathcal G(g^-1h)\n\nwhere log_mathcal G denotes the Lie group logarithmic function The computation can be performed in-place of X.\n\nnote: Note\nIf g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).\n\n\n\n\n\nlog(G::LieGroup, e::Identity, g)\nlog!(G::LieGroup, X, e::Identity, g)\n\nCompute the (Lie group) logarithmic function log_mathcal G mathcal G mathfrak g, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Actions-on-Lie-groups","page":"An Interface for Lie Groups","title":"Actions on Lie groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:type]","category":"page"},{"location":"interface/#LieGroups.AbstractGroupAction","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupAction","text":"AbstractGroupAction{T<:AbstractGroupActionType, L<:LieGroup, M<:AbstractManifold}\n\nAn abstract group action of AbstractGroupActionType T of a LieGroup of type L acting on an AbstractManifold of type M.\n\nSee [HN12, Section 9.1.3] for more details.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupActionType","text":"AbstractGroupActionType\n\nAn abstract supertype for group actions.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractLeftGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractLeftGroupActionType","text":"AbstractLeftGroupActionType <: AbstractGroupActionType\n\nA type representing a (smooth) group action σ mathcal G mathcal M mathcal M of a LieGroup mathcal G acting (from the left) on an AbstractManifold mathcal M. with the following properties\n\nσ(mathrm e p) = p holds for all p mathcal M\nσ(g σ(h p)) = σ(gh p) holds for all gh mathcal G, p mathcal M\n\nwhere denotes the group operation of the LieGroup mathcal G. See also [HN12, Definition 9.1.11].\n\nThe type of action can be seen a bit better when writing the action as a family σ_g(p): we obtain from the second property as\n\n σ_g(σ_h(p)) = σ_gh(p)\n\nand see that g appears on the left.\n\nTo emphasize the side the group operation is acting from, we sometimes write σ^mathrm L. If the action is clear from context we write σ(g p) = g p.\n\nOne notable example of a left action is the inverse of an action of AbstractRightGroupActionType σ^mathrm R, which is given by τ_g = (σ^mathrm R_g)^-1 = σ^mathrm R_g^-1. We obtain\n\nτ_g(τ_h(p))\n= σ^mathrm R_g^-1(σ^mathrm R_h^-1(p))\n= σ^mathrm R_h^-1g^-1(p)\n= σ^mathrm R_(gh)^-1(p)\nτ_gh(p)\n\nnote: Note\nIn function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractRightGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractRightGroupActionType","text":"AbstractRightGroupActionType <: AbstractGroupActionType\n\nA type representing a (smooth) group action σ mathcal M mathcal G mathcal M of a LieGroup mathcal G acting (from the right) on an AbstractManifold mathcal M. with the following properties\n\nσ(p mathrm e) = p holds for all p mathcal M\nσ(σ(p g) h) = σ(p gh) holds for all gh mathcal G, p mathcal M\n\nwhere denotes the group operation of the LieGroup mathcal G. See also [HN12, Remark 9.1.12].\n\nThe type of action can be seen a bit better when writing the action as a family σ_g(p): we obtain from the second property as\n\n σ_g(σ_h(p)) = σ_hg(p)\n\nand see that g appears on the right.\n\nTo emphasize the side the group operation is acting from, we sometimes write σ^mathrm R. If the action is clear from context we write σ(p g) = p g.\n\nOne notable example of a right action is the inverse of an action of AbstractLeftGroupActionType σ^mathrm L, which is given by τ_g = (σ^mathrm L_g)^-1 = σ^mathrm L_g^-1. We obtain\n\nτ_g(τ_h(p))\n= σ^mathrm L_g^-1(σ^mathrm L_h^-1(p))\n= σ^mathrm L_g^-1h^-1(p)\n= σ^mathrm L_(hg)^-1(p)\nτ_hg(p)\n\nnote: Note\nIn function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Functions-for-Lie-group-actions","page":"An Interface for Lie Groups","title":"Functions for Lie group actions","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:function]","category":"page"},{"location":"interface/#Base.inv-Tuple{AbstractGroupActionType}","page":"An Interface for Lie Groups","title":"Base.inv","text":" inv(T::AbstractGroupActionType)\n\nReturn the type representing the inverse of an AbstractGroupActionType.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"Base.inv","text":" inv(A::AbstractGroupAction{T})\n\nReturn the tuple representing the inverse of an AbstractGroupAction of AbstractGroupActionType T. This is usually done by returning the group action with the inverse type of T.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.base_lie_group-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"LieGroups.base_lie_group","text":"base_Lie_group(A::AbstractGroupAction)\n\nReturn the LieGroup of the AbstractGroupAction.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply!","text":"diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_p σ_g(p) T_pmathcal M T_σ_g(p)mathcal M, where for a left group action we have σ_g(p) = σ(gp), for a right action σ_g(p) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply","text":"diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_p σ_g(p) T_pmathcal M T_σ_g(p)mathcal M, where for a left group action we have σ_g(p) = σ(gp), for a right action σ_g(p) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_group_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_group_apply!","text":"diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M, where we use the short hand notation σ_p(g) = σ(gp) for a left action, and for a right action σ_p(g) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_group_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_group_apply","text":"diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M, where we use the short hand notation σ_p(g) = σ(gp) for a left action, and for a right action σ_p(g) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{AbstractGroupActionType}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(T::AbstractGroupActionType)\n\nReturn the object representing an AbstractGroupActionType related to a group operation action that switched the side, that is it turns a left action type into its corresponding right action type.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":" switch(A::AbstractGroupAction{T})\n\nReturn the group operation action representing the similar AbstractGroupAction of AbstractGroupActionType T but acting from the other side. It switches left to right and vice versa. This is done by returning the group action with the “switched” type of T.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply!","text":"apply(A::AbstractGroupAction{T, L, M}, g, p)\napply!(A::AbstractGroupAction{T, L, M}, q, g, p)\n\nApply the group action induced by g mathcal G to p mathcal M, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply-Tuple{AbstractGroupAction, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply","text":"apply(A::AbstractGroupAction{T, L, M}, g, p)\napply!(A::AbstractGroupAction{T, L, M}, q, g, p)\n\nApply the group action induced by g mathcal G to p mathcal M, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.\n\n\n\n\n\n","category":"method"},{"location":"interface/#ManifoldsBase.base_manifold-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"ManifoldsBase.base_manifold","text":"base_manifold(A::AbstractGroupAction)\n\nReturn the AbstractManifold of the AbstractGroupAction.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Specific-Lie-group-actions","page":"An Interface for Lie Groups","title":"Specific Lie group actions","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_operation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"interface/#LieGroups.GroupOperationAction","page":"An Interface for Lie Groups","title":"LieGroups.GroupOperationAction","text":"GroupOperationAction{T<:AbstractLeftGroupActionType,G<:LieGroup} <: AbstractGroupAction{T,G,G}\n\nThe AbstractGroupAction.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.InverseLeftGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.InverseLeftGroupOperation","text":"InverseLeftGroupOperation <: AbstractRightGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a LeftGroupOperation σ_h as\n\nτ_h(g) coloneqq σ_h^-1(g) = σ(h^-1g) = h^-1g\n\nNote that while in naming it is the inverse of the left action, it's properties yield that is is an AbstractRightGroupActionType, since\n\nτ_g(τ_h(p))\n= σ^mathrm L_g^-1(σ^mathrm L_h^-1(p))\n= σ^mathrm L_g^-1h^-1(p)\n= σ^mathrm L_(hg)^-1(p)\nτ_hg(p)\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\nnote: Note\nSome literature also calls this by itself the right group operation action.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.InverseRightGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.InverseRightGroupOperation","text":"InverseRightGroupOperation <: AbstractLeftGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a RightGroupOperation σ_h as\n\nτ_h(g) coloneqq σ_h^-1(g) = σ(h^-1g) = gh^-1\n\nNote that while in naming it is the inverse of the right action, it's properties yield that is is an AbstractLeftGroupActionType, since\n\nτ_g(τ_h(p))\n= σ^mathrm R_g^-1(σ^mathrm R_h^-1(p))\n= σ^mathrm R_h^-1g^-1(p)\n= σ^mathrm R_(gh)^-1(p)\nτ_gh(p)\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.LeftGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.LeftGroupOperation","text":"LeftGroupOperation <: AbstractLeftGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself from the left, that is\n\nσ_h(g) = σ(hg) = hg\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.RightGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.RightGroupOperation","text":"RightGroupOperation <: AbstractRightGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself gfrom the right\n\nσ_h(g) = σ(hg) = gh\n\nfor its inverse (σ_h)^-1 see InverseRightGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Base.inv-Tuple{GroupOperationAction}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::GroupOperationAction)\n\nreturn the inverse group operation action, that is, use the type representing the inverse operation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{InverseLeftGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::InverseLeftGroupOperation)\n\nReturn the inverse of the InverseLeftGroupOperation, that is the LeftGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{InverseRightGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::InverseRightGroupOperation)\n\nReturn the inverse of the InverseRightGroupOperation, that is the RightGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{LeftGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::LeftGroupOperation)\n\nReturn the inverse of the LeftGroupOperation, that is the InverseLeftGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{RightGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::RightGroupOperation)\n\nReturn the inverse of the RightGroupOperation, that is the InverseRightGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply!-Tuple{GroupOperationAction, Vararg{Any, 4}}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply!","text":"Compute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M of a group operation action, that is\n\nfor the LeftGroupOperation this calls diff_left_compose(G, g, h, X)\nfor the RightGroupOperation this calls diff_right_compose(G, g, h, X)\nfor the InverseLeftGroupOperation this calls diff_left_compose with g^-1\nfor the InverseRightGroupOperation this calls diff_right_compose with g^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply-Tuple{GroupOperationAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply","text":"Compute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M of a group operation action, that is\n\nfor the LeftGroupOperation this calls diff_left_compose(G, g, h, X)\nfor the RightGroupOperation this calls diff_right_compose(G, g, h, X)\nfor the InverseLeftGroupOperation this calls diff_left_compose with g^-1\nfor the InverseRightGroupOperation this calls diff_right_compose with g^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{InverseLeftGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::InverseLeftGroupOperation)\n\nReturn the InverseRightGroupOperation, that is, turns σ_g = g^-1h into τ_g(h) = hg^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{InverseRightGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::InverseRightGroupOperation)\n\nReturn the InverseLeftGroupOperation, that is, turns σ_g = hg^-1 into τ_g(h) = g^-1h\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{LeftGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::LeftGroupOperation)\n\nReturn the RightGroupOperation, that is, turns σ_g = gh into τ_g(h) = hg\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{RightGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::RightGroupOperation)\n\nReturn the LeftGroupOperation, that is, turns σ_g = hg into τ_g(h) = gh\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply!-Tuple{GroupOperationAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply!","text":"apply(A::GroupOperationAction, g, h)\napply!(A::GroupOperationAction, k, g, h)\n\napply the stored group operation action, using compose . this can be done in-place of k.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply-Tuple{GroupOperationAction, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply","text":"apply(A::GroupOperationAction, g, h)\napply!(A::GroupOperationAction, k, g, h)\n\napply the stored group operation action, using compose . this can be done in-place of k.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Functions-on-Lie-Algebras","page":"An Interface for Lie Groups","title":"Functions on Lie Algebras","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"lie_bracket\nlie_bracket!","category":"page"},{"location":"interface/#LieGroups.lie_bracket","page":"An Interface for Lie Groups","title":"LieGroups.lie_bracket","text":"lie_bracket!(𝔤::LieAlgebra, X, Y)\nlie_bracket!(𝔤::LieAlgebra, Z, X, Y)\n\nCompute the Lie bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe computation can be done in-place of Z.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.lie_bracket!","page":"An Interface for Lie Groups","title":"LieGroups.lie_bracket!","text":"lie_bracket!(𝔤::LieAlgebra, X, Y)\nlie_bracket!(𝔤::LieAlgebra, Z, X, Y)\n\nCompute the Lie bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe computation can be done in-place of Z.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Specific-Group-Operations","page":"An Interface for Lie Groups","title":"Specific Group Operations","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"For some generic group operations, an easy generic implementation can be provided. This section lists these specific cases and what is implemented for these.","category":"page"},{"location":"interface/#Additive-Group-operation","page":"An Interface for Lie Groups","title":"Additive Group operation","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"AdditionGroupOperation","category":"page"},{"location":"interface/#LieGroups.AdditionGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.AdditionGroupOperation","text":"AdditionGroupOperation <: AbstractGroupOperation\n\nA group operation that is realised introducing defaults that fall back to + and - being overloaded, for example compose(G::LieGroup{𝔽,M,AdditionGroupOperation}, a,b) = a+b\n\n\n\n\n\n","category":"type"},{"location":"interface/#Multiplicative-Group-operation","page":"An Interface for Lie Groups","title":"Multiplicative Group operation","text":"","category":"section"},{"location":"interface/#Literature","page":"An Interface for Lie Groups","title":"Literature","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).\n\n\n\n","category":"page"},{"location":"about/#About-LieGroups.jl","page":"About","title":"About LieGroups.jl","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"EditURL = \"https://github.com/JuliaManifolds/LieGroups.jl/blob/main/CONTRIBUTING.md\"","category":"page"},{"location":"contributing/#Contributing-to-LieGroups.jl","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"The following is a set of guidelines to LieGroups.jl.","category":"page"},{"location":"contributing/#Table-of-contents","page":"Contributing to LieGroups.jl","title":"Table of contents","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Contributing to LieGroups.jl - Table of Contents\nI just have a question\nHow can I file an issue?\nHow can I contribute?\nCode style","category":"page"},{"location":"contributing/#I-just-have-a-question","page":"Contributing to LieGroups.jl","title":"I just have a question","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"The developer can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.","category":"page"},{"location":"contributing/#How-can-I-file-an-issue?","page":"Contributing to LieGroups.jl","title":"How can I file an issue?","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"If you found a bug or want to propose a feature, please open an issue in within the GitHub repository.","category":"page"},{"location":"contributing/#How-can-I-contribute?","page":"Contributing to LieGroups.jl","title":"How can I contribute?","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Currently we are still consolidating most details and defaults, but feel free to contribute to these discussions within this repository.","category":"page"},{"location":"contributing/#Code-style","page":"Contributing to LieGroups.jl","title":"Code style","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Try to follow the documentation guidelines from the Julia documentation as well as Blue Style. Run JuliaFormatter.jl on the repository in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style. Furthermore vale is run on both Markdown and code files, affecting documentation and source code comments","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Please follow a few internal conventions:","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"It is preferred that the AbstractManoptProblem's struct contains information about the general structure of the problem.\nAny implemented function should be accompanied by its mathematical formulae if a closed form exists.\nAbstractManoptProblem and helping functions are stored within the plan/ folder and sorted by properties of the problem and/or solver at hand.\nthe solver state is usually stored with the solver itself\nWithin the source code of one algorithm, following the state, the high level interface should be next, then the initialization, then the step.\nOtherwise an alphabetical order of functions is preferable.\nThe preceding implies that the mutating variant of a function follows the non-mutating variant.\nThere should be no dangling = signs.\nAlways add a newline between things of different types (struct/method/const).\nAlways add a newline between methods for different functions (including mutating/nonmutating variants).\nPrefer to have no newline between methods for the same function; when reasonable, merge the documentation strings.\nAll import/using/include should be in the main module file.","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Concerning documentation","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"if possible provide both mathematical formulae and literature references using DocumenterCitations.jl and BibTeX where possible\nAlways document all input variables and keyword arguments","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"If you implement an algorithm with a certain numerical example in mind, it would be great, if this could be added to the ManoptExamples.jl package as well.","category":"page"},{"location":"groups/#An-overview-of-LIe-groups","page":"List of Lie Groups","title":"An overview of LIe groups","text":"","category":"section"},{"location":"groups/#Alphabetical-List-of-Lie-groups","page":"List of Lie Groups","title":"Alphabetical List of Lie groups","text":"","category":"section"},{"location":"groups/","page":"List of Lie Groups","title":"List of Lie Groups","text":"Group Manifold Comment\nTranslationGroup Euclidean + ","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"EditURL = \"https://github.com/JuliaManifolds/LieGroups.jl/blob/main/NEWS.md\"","category":"page"},{"location":"news/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"All notable Changes to the Julia package LieGroups.jl will be documented in this file.","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.","category":"page"},{"location":"news/#[0.1.0]-unreleased","page":"Changelog","title":"[0.1.0] - unreleased","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Everything denoted by “formerly” refers to the previous name in Manifolds.jl.","category":"page"},{"location":"news/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"LieAlgebra\nLieGroup (formerly GroupManifold) as well as the concrete groups\nAdditiveGroup (formerly TranslationGroup)\nAbstractGroupOperation as well as its concrete subtypes\nAdditionGroupOperation (formerly AdditionOperation)\nAbstractGroupActionType with its 2 specific (new) abstract\nAbstractLeftGroupActionType\nAbstractRightGroupActionType\nFor the group operation actions there are now\nLeftGroupOperation (formerly LeftForwardAction)\nRightGroupOperation (formerly RightBackwardAction)\nInverseLeftGroupOperation (formerly RightForwardAction)\nInverseRightGroupOperation (formerly LeftBackwardAction)\napplyand apply!\nbase_manifold to access the manifold within a Lie group\ncompose and compose!\nconjugate and conjugate!\ndiff_apply, diff_apply!, diff_group_apply, and diff_group_apply! (formerly apply_diff_[group][!])\ndiff_left_compose, diff_left_compose!, diff_right_compose, diff_right_compose! (formerly translate_diff with different sides)\nexp(G::LieGroup, g, X) and exp!(G::LieGroup, h, g, X) (formerly exp_inv and exp_inv!)\nexp(G::LieGroup, ::Identity, X) and exp!(G::LieGroup, h, ::Identity, X) (formerly exp_lie and exp_lie!)\nIdentity\nidenity_element and identity_element!\ninv and inv! (inv(::AbstractGroupAction) was formerly switch_direction)\ninv_left_compose, inv_left_compose! and inv_right_compose, inv_right_compose! (these functions correspond to inverse_translate with corresponding direction and side)\nis_identity\nLie_bracket and Lie_bracket! (formerly lie_bracket)\nlog(G::LieGroup, g, h) and log!(G::LieGroup, X, g, h) (formerly log_inv and log_inv!)\nlog(G::LieGroup, ::Identity, g) and log!(G::LieGroup, X, ::Identity, g) (formerly log_lie and log_lie!)\nswitch (formerly switch_side)","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Compared to Manifolds.jl","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"all translate functions are not implemented here, since you can just use compose. The differentials are implemented as listed above with respect to both left and right argument of compose\nall inverse_apply functions are not implemented here, since it is recommended to use apply(inv(A), g, p) as a replacement.","category":"page"},{"location":"news/#Old-Changelog-pre-0.1.0","page":"Changelog","title":"Old Changelog pre 0.1.0","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Two previous releases where done by Yueh-Hua Tu in 2022 before he was so kind to transfer the development to the JuliaManifolds GitHub organisation.","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"All notable changes to this project will be documented in this file.","category":"page"},{"location":"news/#[0.0.2]","page":"Changelog","title":"[0.0.2]","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"fix SE{3} and add jacobian\ndefine dof and dim for Lie algebra and jacobian of inv\nadd action for SE{N}\nadd se3_location example","category":"page"},{"location":"#LieGroups.jl","page":"Home","title":"LieGroups.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Welcome to the Documentation of LieGroups.jl.","category":"page"},{"location":"notation/#Notation-on-LIe-Groups","page":"Notation","title":"Notation on LIe Groups","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"For most of the notation used throughout this package, we follow [HN12]","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Symbol Description Also used Comment\n a group operation \ncmathcal G mathcal G c_g the conjugation map (with g) \nmathrme identity element of a group \ng h k elements on a (Lie) group. Sometimes called points. g_1 g_2 \nmathfrak g a Lie algebra \nmathcalG a (Lie) group \nλ_g mathcal G mathcal G the left multiplication map λ_g(h) = gh \nmathcal M a manifold mathcal M_1 mathcal M_2ldotsmathcal N \noperatornameExp the matrix exponential \noperatornameLog the matrix logarithm \nρ_g mathcal G mathcal G the right multiplication map ρ_g(h) = hg \nσ mathcal G mathcal M a left group action we use σ_g(p) if the group element is fixed \nτ mathcal M mathcal G a right group action σ_mathrmR we use τ_g(p) if the group element is fixed\nT_p mathcal M the tangent space at p ","category":"page"}] +[{"location":"groups/translation/#The-Lie-group-of-translations-on-an-Euclidean-space","page":"Translation group","title":"The Lie group of translations on an Euclidean space","text":"","category":"section"},{"location":"groups/translation/","page":"Translation group","title":"Translation group","text":"TranslationGroup","category":"page"},{"location":"groups/translation/#LieGroups.TranslationGroup","page":"Translation group","title":"LieGroups.TranslationGroup","text":"TranslationGroup{𝔽}\n\nThe Lie group consisting of the AdditionGroupOperation on some Euclidean space.\n\nConstructor\n\nTODO\n\n\n\n\n\n","category":"type"},{"location":"groups/translation/#Functions","page":"Translation group","title":"Functions","text":"","category":"section"},{"location":"groups/translation/","page":"Translation group","title":"Translation group","text":"Modules = [LieGroups]\nPages = [\"groups/translation_group.jl\"]\nOrder = [:function]","category":"page"},{"location":"references/#Literature","page":"References","title":"Literature","text":"","category":"section"},{"location":"references/","page":"References","title":"References","text":"This is all literature mentioned / referenced in the LieGroups.jl documentation. Usually you find a small reference section at the end of every documentation page that contains the corresponding references as well.","category":"page"},{"location":"references/","page":"References","title":"References","text":"J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).\n\n\n\n","category":"page"},{"location":"interface/#The-interface-for-Lie-Groups","page":"An Interface for Lie Groups","title":"The interface for Lie Groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"LieGroup\nLieAlgebra","category":"page"},{"location":"interface/#LieGroups.LieGroup","page":"An Interface for Lie Groups","title":"LieGroups.LieGroup","text":"LieGroup{𝔽,M<:AbstractManifold{𝔽}, O<:AbstractGroupOperation}\n\nRepresent a Lie Group mathcal G.\n\nA Lie Group mathcal G is a group endowed with the structure of a manifold such that the group operations mathcal Gmathcal G mathcal G, see compose and the inverse operation ^-1 mathcal G mathcal G, see inv are smooth, see for example [HN12, Definition 9.1.1].\n\nLie groups are named after the Norwegian mathematician Marius Sophus Lie (1842–1899).\n\nFields\n\nmanifold: an AbstractManifold mathcal M\nop: an AbstractGroupOperation on that manifold\n\nConstructor\n\nLieGroup(M::AbstractManifold, op::AbstractGroupOperation; vectors=LeftInvariantRepresentation())\n\nGenerate a Lie group based on a manifold M and a group operation op, where vectors by default are stored in the Lie Algebra.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.LieAlgebra","page":"An Interface for Lie Groups","title":"LieGroups.LieAlgebra","text":"LieAlgebra{𝔽, G} <: AbstractManifold{𝔽}\n\nRepresent the Lie Algebra mathfrak g, that is a 𝔽vector space with an associated lie_bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe Lie algebras considered here are those related to a LieGroup mathcal G, namely the tangent space the tangent space T_mathrm emathcal G at the Identity, this is internally just a const of the corresponding TangentSpace.\n\nConstructor\n\nLieAlgebra(G::LieGroup)\n\nReturn the Lie Algebra belonging to the LieGroup G.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Group-Operations","page":"An Interface for Lie Groups","title":"Group Operations","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"AbstractGroupOperation\nIdentity","category":"page"},{"location":"interface/#LieGroups.AbstractGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupOperation","text":"AbstractGroupOperation\n\nRepresent a type of group operation for a LieGroup mathcal G, that is a smooth binary operation mathcal G mathcal G mathcal G on elements of a Lie group mathcal G.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.Identity","page":"An Interface for Lie Groups","title":"LieGroups.Identity","text":"Identity{O<:AbstractGroupOperation}\n\nRepresent the group identity element e mathcal G on a LieGroup mathcal G with AbstractGroupOperation of type O.\n\nSimilar to the philosophy that points are agnostic of their group at hand, the identity does not store the group mathcal G it belongs to. However it depends on the type of the AbstractGroupOperation used.\n\nSee also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.\n\nConstructors\n\nIdentity(::LieGroup{𝔽,M,O}) where {𝔽,M,O<:AbstractGroupOperation}\nIdentity(o::AbstractGroupOperation)\nIdentity(::Type{AbstractGroupOperation})\n\ncreate the identity of the corresponding subtype O<:AbstractGroupOperation\n\n\n\n\n\n","category":"type"},{"location":"interface/#Functions-on-Lie-Groups","page":"An Interface for Lie Groups","title":"Functions on Lie Groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"adjoint\nadjoint!\nbase_manifold\ncompose\ncompose!\ndiff_left_compose\ndiff_left_compose!\ndiff_right_compose\ndiff_right_compose!\ninv_left_compose\ninv_left_compose!\ninv_right_compose\ninv_right_compose!\nconjugate\nconjugate!\ndiff_conjugate\ndiff_conjugate!\nexp\nexp!\nidentity_element\nidentity_element!\nis_identity\ninv(::LieGroup, ::Any)\ninv!\ndiff_inv\ndiff_inv!\nlog\nlog!","category":"page"},{"location":"interface/#Base.adjoint","page":"An Interface for Lie Groups","title":"Base.adjoint","text":"adjoint(G::LieGroup, g X)\nadjoint!(G::LieGroup, Y, g, X)\n\nCompute the adjoint mathrmAd(g) mathfrak g mathfrak g, which is defined as the differential diff_conjugate of the conjugate c_g(h) = ghg^-1 evaluated at the Identity h=mathrm e. The operation can be performed in-place of Y.\n\n mathrmAd(g)X = D c_g(mathrm e) X qquad X mathfrak g\n\nsee [HN12, Section 9.2.3].\n\nOn matrix Lie groups the adjoint reads mathrmAd(g)X = gXg^-1.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.adjoint!","page":"An Interface for Lie Groups","title":"LieGroups.adjoint!","text":"adjoint(G::LieGroup, g X)\nadjoint!(G::LieGroup, Y, g, X)\n\nCompute the adjoint mathrmAd(g) mathfrak g mathfrak g, which is defined as the differential diff_conjugate of the conjugate c_g(h) = ghg^-1 evaluated at the Identity h=mathrm e. The operation can be performed in-place of Y.\n\n mathrmAd(g)X = D c_g(mathrm e) X qquad X mathfrak g\n\nsee [HN12, Section 9.2.3].\n\nOn matrix Lie groups the adjoint reads mathrmAd(g)X = gXg^-1.\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.base_manifold","page":"An Interface for Lie Groups","title":"ManifoldsBase.base_manifold","text":"base_manifold(G::LieGroup)\n\nReturn the manifold stored within the LieGroup G.\n\n\n\n\n\nbase_manifold(A::AbstractGroupAction)\n\nReturn the AbstractManifold of the AbstractGroupAction.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.compose","page":"An Interface for Lie Groups","title":"LieGroups.compose","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.compose!","page":"An Interface for Lie Groups","title":"LieGroups.compose!","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_left_compose","page":"An Interface for Lie Groups","title":"LieGroups.diff_left_compose","text":"diff_left_compose(G::LieGroup, g, h, X)\ndiff_left_compose!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is Compute Dλ_g(h)X, X 𝔤. This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_left_compose!","page":"An Interface for Lie Groups","title":"LieGroups.diff_left_compose!","text":"diff_left_compose(G::LieGroup, g, h, X)\ndiff_left_compose!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is Compute Dλ_g(h)X, X 𝔤. This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_right_compose","page":"An Interface for Lie Groups","title":"LieGroups.diff_right_compose","text":"diff_right_compose(G::LieGroup, h, g, X)\ndiff_right_compose!(G::LieGroup, Y, h, g, X)\n\nCompute the differential of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute Dρ_g(h)X, X 𝔤 This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_right_compose!","page":"An Interface for Lie Groups","title":"LieGroups.diff_right_compose!","text":"diff_right_compose(G::LieGroup, h, g, X)\ndiff_right_compose!(G::LieGroup, Y, h, g, X)\n\nCompute the differential of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute Dρ_g(h)X, X 𝔤 This can be done in-place of Y.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_left_compose","page":"An Interface for Lie Groups","title":"LieGroups.inv_left_compose","text":"inv_left_compose(G::LieGroup, g, h)\ninv_left_compose!(G::LieGroup, k, g, h)\n\nCompute the inverse of the left group multiplication λ_g(h) = gh, on the LieGroup G, that is, compute λ_g^-1(h) = g^-1h. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_left_compose!","page":"An Interface for Lie Groups","title":"LieGroups.inv_left_compose!","text":"compose(G::LieGroup, g, h)\ncompose!(G::LieGroup, k, g, h)\n\nPerform the group oepration g h for two g h mathcal G on the LieGroup G. This can also be done in-place of h.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_right_compose","page":"An Interface for Lie Groups","title":"LieGroups.inv_right_compose","text":"inv_right_compose(G::LieGroup, h, g)\ninv_right_compose!(G::LieGroup, k, h, g)\n\nCompute the inverse of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute ρ_g^-1(h) = hg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.inv_right_compose!","page":"An Interface for Lie Groups","title":"LieGroups.inv_right_compose!","text":"inv_right_compose(G::LieGroup, h, g)\ninv_right_compose!(G::LieGroup, k, h, g)\n\nCompute the inverse of the right group multiplication ρ_g(h) = hg, on the LieGroup G, that is Compute ρ_g^-1(h) = hg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.conjugate","page":"An Interface for Lie Groups","title":"LieGroups.conjugate","text":"conjugate(G::LieGroup, g, h)\nconjugate!(G::LieGroup, k, g, h)\n\nCompute the conjugation map c_g mathcal G mathcal G given by c_g(h) = ghg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.conjugate!","page":"An Interface for Lie Groups","title":"LieGroups.conjugate!","text":"conjugate(G::LieGroup, g, h)\nconjugate!(G::LieGroup, k, g, h)\n\nCompute the conjugation map c_g mathcal G mathcal G given by c_g(h) = ghg^-1. This can be done in-place of k.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_conjugate","page":"An Interface for Lie Groups","title":"LieGroups.diff_conjugate","text":"diff_conjugate(G::LieGroup, g, h, X)\ndiff_conjugate!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the conjugate c_g(h) = ghg^-1, which can be performed in-place of Y.\n\n D(c_g(h))X qquad X mathfrak g\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_conjugate!","page":"An Interface for Lie Groups","title":"LieGroups.diff_conjugate!","text":"diff_conjugate(G::LieGroup, g, h, X)\ndiff_conjugate!(G::LieGroup, Y, g, h, X)\n\nCompute the differential of the conjugate c_g(h) = ghg^-1, which can be performed in-place of Y.\n\n D(c_g(h))X qquad X mathfrak g\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.exp","page":"An Interface for Lie Groups","title":"Base.exp","text":"exp(G::LieGroup, g, X, t::Number=1)\nexp!(G::LieGroup, h, g, X, t::Number=1)\n\nCompute the Lie group exponential map given by\n\nexp_g X = gexp_mathcal G(X)\n\nwhere X can be scaled by t, the computation can be performed in-place of h, and exp_mathcal G denotes the Lie group exponential function.\n\nnote: Note\nIf g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).\n\n\n\n\n\nexp(G::LieGroup, e::Identity, X)\nexp!(G::LieGroup, h, e::Identity, X)\n\nCompute the (Lie group) exponential function\n\nexp_mathcal G mathfrak g mathcal Gqquad exp_mathcal G(X) = γ_X(1)\n\nwhere γ_X is the unique solution of the initial value problem\n\nγ(0) = mathrm e quad γ(t) = γ(t)X\n\nThe computation can be performed in-place of h.\n\nSee also [HN12, Definition 9.2.2].\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.exp!","page":"An Interface for Lie Groups","title":"ManifoldsBase.exp!","text":"exp(G::LieGroup, g, X, t::Number=1)\nexp!(G::LieGroup, h, g, X, t::Number=1)\n\nCompute the Lie group exponential map given by\n\nexp_g X = gexp_mathcal G(X)\n\nwhere X can be scaled by t, the computation can be performed in-place of h, and exp_mathcal G denotes the Lie group exponential function.\n\nnote: Note\nIf g is the Identity the Lie group exponential function is computed directly. Implementing the Lie group exponential function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group exponential map is usually different from the exponential map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) exponential map, use exp(base_manifoldG, g, X).\n\n\n\n\n\nexp(G::LieGroup, e::Identity, X)\nexp!(G::LieGroup, h, e::Identity, X)\n\nCompute the (Lie group) exponential function\n\nexp_mathcal G mathfrak g mathcal Gqquad exp_mathcal G(X) = γ_X(1)\n\nwhere γ_X is the unique solution of the initial value problem\n\nγ(0) = mathrm e quad γ(t) = γ(t)X\n\nThe computation can be performed in-place of h.\n\nSee also [HN12, Definition 9.2.2].\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.identity_element","page":"An Interface for Lie Groups","title":"LieGroups.identity_element","text":"identity_element(G::LieGroup)\nidentity_element!(G::LieGroup, g)\n\nReturn a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of e as a point on G if points are not represented by arrays. This can be performed in-place of g.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.identity_element!","page":"An Interface for Lie Groups","title":"LieGroups.identity_element!","text":"identity_element(G::LieGroup)\nidentity_element!(G::LieGroup, g)\n\nReturn a point representation of the Identity on the LieGroup G. By default this representation is the default array or number representation. It should return the corresponding default representation of e as a point on G if points are not represented by arrays. This can be performed in-place of g.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.is_identity","page":"An Interface for Lie Groups","title":"LieGroups.is_identity","text":"is_identity(G::LieGroup, q; kwargs)\n\nCheck whether q is the identity on the LieGroup mathcal G. This means it is either the Identity{O} with the respect to the corresponding AbstractGroupOperation O, or (approximately) the correct point representation.\n\nSee also\n\nidentity_element, identity_element!\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.inv-Tuple{LieGroup, Any}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(G::LieGroup, g)\ninv!(G::LieGroup, h, g)\n\nCompute the inverse group element g^-1 with respect to the AbstractGroupOperation on the LieGroup mathcal G, that is, return the unique element h=g^-1 such that hg=mathrm e, where mathrm e denotes the Identity.\n\nThis can be done in-place of h, without side effects, that is you can do inv!(G, g, g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.inv!","page":"An Interface for Lie Groups","title":"LieGroups.inv!","text":"inv(G::LieGroup, g)\ninv!(G::LieGroup, h, g)\n\nCompute the inverse group element g^-1 with respect to the AbstractGroupOperation on the LieGroup mathcal G, that is, return the unique element h=g^-1 such that hg=mathrm e, where mathrm e denotes the Identity.\n\nThis can be done in-place of h, without side effects, that is you can do inv!(G, g, g).\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_inv","page":"An Interface for Lie Groups","title":"LieGroups.diff_inv","text":"diff_inv(G::LieGroup, g, X)\ndiff_inv!(G::LieGroup, Y, g, X)\n\nCompute the differential of the function ι_mathcal G(p) = p^-1, where `Dι_{\\mathcal G}(p): \\mathfrak g → \\mathfrak g. This can be done in-place ofY`.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.diff_inv!","page":"An Interface for Lie Groups","title":"LieGroups.diff_inv!","text":"diff_inv(G::LieGroup, g, X)\ndiff_inv!(G::LieGroup, Y, g, X)\n\nCompute the differential of the function ι_mathcal G(p) = p^-1, where `Dι_{\\mathcal G}(p): \\mathfrak g → \\mathfrak g. This can be done in-place ofY`.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Base.log","page":"An Interface for Lie Groups","title":"Base.log","text":"log(G::LieGroup, g, h)\nlog!(G::LieGroup, X, g, h)\n\nCompute the Lie group logarithmic map\n\nlog_g h = log_mathcal G(g^-1h)\n\nwhere log_mathcal G denotes the Lie group logarithmic function The computation can be performed in-place of X.\n\nnote: Note\nIf g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).\n\n\n\n\n\nlog(G::LieGroup, e::Identity, g)\nlog!(G::LieGroup, X, e::Identity, g)\n\nCompute the (Lie group) logarithmic function log_mathcal G mathcal G mathfrak g, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.\n\n\n\n\n\n","category":"function"},{"location":"interface/#ManifoldsBase.log!","page":"An Interface for Lie Groups","title":"ManifoldsBase.log!","text":"log(G::LieGroup, g, h)\nlog!(G::LieGroup, X, g, h)\n\nCompute the Lie group logarithmic map\n\nlog_g h = log_mathcal G(g^-1h)\n\nwhere log_mathcal G denotes the Lie group logarithmic function The computation can be performed in-place of X.\n\nnote: Note\nIf g is the Identity the Lie group logarithmic function is computed directly. Implementing the Lie group logarithmic function introduces a default implementation for this function.\n\nnote: Note\nThe Lie group logarithmic map is usually different from the logarithmic map with respect to the metric of the underlying Riemannian manifold mathcal M. To access the (Riemannian) logarithmic map, use log(base_manifoldG, g, h).\n\n\n\n\n\nlog(G::LieGroup, e::Identity, g)\nlog!(G::LieGroup, X, e::Identity, g)\n\nCompute the (Lie group) logarithmic function log_mathcal G mathcal G mathfrak g, which is the inverse of the Lie group exponential function The compuation can be performed in-place of X.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Actions-on-Lie-groups","page":"An Interface for Lie Groups","title":"Actions on Lie groups","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:type]","category":"page"},{"location":"interface/#LieGroups.AbstractGroupAction","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupAction","text":"AbstractGroupAction{T<:AbstractGroupActionType, L<:LieGroup, M<:AbstractManifold}\n\nAn abstract group action of AbstractGroupActionType T of a LieGroup of type L acting on an AbstractManifold of type M.\n\nSee [HN12, Section 9.1.3] for more details.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractGroupActionType","text":"AbstractGroupActionType\n\nAn abstract supertype for group actions.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractLeftGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractLeftGroupActionType","text":"AbstractLeftGroupActionType <: AbstractGroupActionType\n\nA type representing a (smooth) group action σ mathcal G mathcal M mathcal M of a LieGroup mathcal G acting (from the left) on an AbstractManifold mathcal M. with the following properties\n\nσ(mathrm e p) = p holds for all p mathcal M\nσ(g σ(h p)) = σ(gh p) holds for all gh mathcal G, p mathcal M\n\nwhere denotes the group operation of the LieGroup mathcal G. See also [HN12, Definition 9.1.11].\n\nThe type of action can be seen a bit better when writing the action as a family σ_g(p): we obtain from the second property as\n\n σ_g(σ_h(p)) = σ_gh(p)\n\nand see that g appears on the left.\n\nTo emphasize the side the group operation is acting from, we sometimes write σ^mathrm L. If the action is clear from context we write σ(g p) = g p.\n\nOne notable example of a left action is the inverse of an action of AbstractRightGroupActionType σ^mathrm R, which is given by τ_g = (σ^mathrm R_g)^-1 = σ^mathrm R_g^-1. We obtain\n\nτ_g(τ_h(p))\n= σ^mathrm R_g^-1(σ^mathrm R_h^-1(p))\n= σ^mathrm R_h^-1g^-1(p)\n= σ^mathrm R_(gh)^-1(p)\nτ_gh(p)\n\nnote: Note\nIn function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.AbstractRightGroupActionType","page":"An Interface for Lie Groups","title":"LieGroups.AbstractRightGroupActionType","text":"AbstractRightGroupActionType <: AbstractGroupActionType\n\nA type representing a (smooth) group action σ mathcal M mathcal G mathcal M of a LieGroup mathcal G acting (from the right) on an AbstractManifold mathcal M. with the following properties\n\nσ(p mathrm e) = p holds for all p mathcal M\nσ(σ(p g) h) = σ(p gh) holds for all gh mathcal G, p mathcal M\n\nwhere denotes the group operation of the LieGroup mathcal G. See also [HN12, Remark 9.1.12].\n\nThe type of action can be seen a bit better when writing the action as a family σ_g(p): we obtain from the second property as\n\n σ_g(σ_h(p)) = σ_hg(p)\n\nand see that g appears on the right.\n\nTo emphasize the side the group operation is acting from, we sometimes write σ^mathrm R. If the action is clear from context we write σ(p g) = p g.\n\nOne notable example of a right action is the inverse of an action of AbstractLeftGroupActionType σ^mathrm L, which is given by τ_g = (σ^mathrm L_g)^-1 = σ^mathrm L_g^-1. We obtain\n\nτ_g(τ_h(p))\n= σ^mathrm L_g^-1(σ^mathrm L_h^-1(p))\n= σ^mathrm L_g^-1h^-1(p)\n= σ^mathrm L_(hg)^-1(p)\nτ_hg(p)\n\nnote: Note\nIn function definitions we follow the idea of the family of actions and use the order (M, g, p) in function signatures.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Functions-for-Lie-group-actions","page":"An Interface for Lie Groups","title":"Functions for Lie group actions","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:function]","category":"page"},{"location":"interface/#Base.inv-Tuple{AbstractGroupActionType}","page":"An Interface for Lie Groups","title":"Base.inv","text":" inv(T::AbstractGroupActionType)\n\nReturn the type representing the inverse of an AbstractGroupActionType.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"Base.inv","text":" inv(A::AbstractGroupAction{T})\n\nReturn the tuple representing the inverse of an AbstractGroupAction of AbstractGroupActionType T. This is usually done by returning the group action with the inverse type of T.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.base_lie_group-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"LieGroups.base_lie_group","text":"base_Lie_group(A::AbstractGroupAction)\n\nReturn the LieGroup of the AbstractGroupAction.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply!","text":"diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_p σ_g(p) T_pmathcal M T_σ_g(p)mathcal M, where for a left group action we have σ_g(p) = σ(gp), for a right action σ_g(p) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply","text":"diff_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_p σ_g(p) T_pmathcal M T_σ_g(p)mathcal M, where for a left group action we have σ_g(p) = σ(gp), for a right action σ_g(p) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_group_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_group_apply!","text":"diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M, where we use the short hand notation σ_p(g) = σ(gp) for a left action, and for a right action σ_p(g) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_group_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_group_apply","text":"diff_group_apply(A::AbstractGroupAction{T, L, M}, g, p, X)\ndiff_group_apply!(A::AbstractGroupAction{T, L, M}, Y, g, p, X)\n\nCompute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M, where we use the short hand notation σ_p(g) = σ(gp) for a left action, and for a right action σ_p(g) = σ(p g).\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{AbstractGroupActionType}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(T::AbstractGroupActionType)\n\nReturn the object representing an AbstractGroupActionType related to a group operation action that switched the side, that is it turns a left action type into its corresponding right action type.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":" switch(A::AbstractGroupAction{T})\n\nReturn the group operation action representing the similar AbstractGroupAction of AbstractGroupActionType T but acting from the other side. It switches left to right and vice versa. This is done by returning the group action with the “switched” type of T.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply!","text":"apply(A::AbstractGroupAction{T, L, M}, g, p)\napply!(A::AbstractGroupAction{T, L, M}, q, g, p)\n\nApply the group action induced by g mathcal G to p mathcal M, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply-Tuple{AbstractGroupAction, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply","text":"apply(A::AbstractGroupAction{T, L, M}, g, p)\napply!(A::AbstractGroupAction{T, L, M}, q, g, p)\n\nApply the group action induced by g mathcal G to p mathcal M, where the kind of group action is indicated by the AbstractGroupActionType T. This can be perfomed in-place of q.\n\n\n\n\n\n","category":"method"},{"location":"interface/#ManifoldsBase.base_manifold-Tuple{AbstractGroupAction}","page":"An Interface for Lie Groups","title":"ManifoldsBase.base_manifold","text":"base_manifold(A::AbstractGroupAction)\n\nReturn the AbstractManifold of the AbstractGroupAction.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Specific-Lie-group-actions","page":"An Interface for Lie Groups","title":"Specific Lie group actions","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"Modules = [LieGroups]\nPages = [\"group_operation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"interface/#LieGroups.GroupOperationAction","page":"An Interface for Lie Groups","title":"LieGroups.GroupOperationAction","text":"GroupOperationAction{T<:AbstractLeftGroupActionType,G<:LieGroup} <: AbstractGroupAction{T,G,G}\n\nThe AbstractGroupAction.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.InverseLeftGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.InverseLeftGroupOperation","text":"InverseLeftGroupOperation <: AbstractRightGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a LeftGroupOperation σ_h as\n\nτ_h(g) coloneqq σ_h^-1(g) = σ(h^-1g) = h^-1g\n\nNote that while in naming it is the inverse of the left action, it's properties yield that is is an AbstractRightGroupActionType, since\n\nτ_g(τ_h(p))\n= σ^mathrm L_g^-1(σ^mathrm L_h^-1(p))\n= σ^mathrm L_g^-1h^-1(p)\n= σ^mathrm L_(hg)^-1(p)\nτ_hg(p)\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\nnote: Note\nSome literature also calls this by itself the right group operation action.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.InverseRightGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.InverseRightGroupOperation","text":"InverseRightGroupOperation <: AbstractLeftGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself given by the inverse of a RightGroupOperation σ_h as\n\nτ_h(g) coloneqq σ_h^-1(g) = σ(h^-1g) = gh^-1\n\nNote that while in naming it is the inverse of the right action, it's properties yield that is is an AbstractLeftGroupActionType, since\n\nτ_g(τ_h(p))\n= σ^mathrm R_g^-1(σ^mathrm R_h^-1(p))\n= σ^mathrm R_h^-1g^-1(p)\n= σ^mathrm R_(gh)^-1(p)\nτ_gh(p)\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.LeftGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.LeftGroupOperation","text":"LeftGroupOperation <: AbstractLeftGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself from the left, that is\n\nσ_h(g) = σ(hg) = hg\n\nfor its inverse (σ_h)^-1 see InverseLeftGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#LieGroups.RightGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.RightGroupOperation","text":"RightGroupOperation <: AbstractRightGroupActionType\n\nA type for the AbstractLeftGroupActionType when acting on the group itself gfrom the right\n\nσ_h(g) = σ(hg) = gh\n\nfor its inverse (σ_h)^-1 see InverseRightGroupOperation.\n\n\n\n\n\n","category":"type"},{"location":"interface/#Base.inv-Tuple{GroupOperationAction}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::GroupOperationAction)\n\nreturn the inverse group operation action, that is, use the type representing the inverse operation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{InverseLeftGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::InverseLeftGroupOperation)\n\nReturn the inverse of the InverseLeftGroupOperation, that is the LeftGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{InverseRightGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::InverseRightGroupOperation)\n\nReturn the inverse of the InverseRightGroupOperation, that is the RightGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{LeftGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::LeftGroupOperation)\n\nReturn the inverse of the LeftGroupOperation, that is the InverseLeftGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Base.inv-Tuple{RightGroupOperation}","page":"An Interface for Lie Groups","title":"Base.inv","text":"inv(::RightGroupOperation)\n\nReturn the inverse of the RightGroupOperation, that is the InverseRightGroupOperation.\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply!-Tuple{GroupOperationAction, Vararg{Any, 4}}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply!","text":"Compute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M of a group operation action, that is\n\nfor the LeftGroupOperation this calls diff_left_compose(G, g, h, X)\nfor the RightGroupOperation this calls diff_right_compose(G, g, h, X)\nfor the InverseLeftGroupOperation this calls diff_left_compose with g^-1\nfor the InverseRightGroupOperation this calls diff_right_compose with g^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.diff_apply-Tuple{GroupOperationAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"LieGroups.diff_apply","text":"Compute the differential D_g σ_p(g) T_gmathcal G T_σ_p(g)mathcal M of a group operation action, that is\n\nfor the LeftGroupOperation this calls diff_left_compose(G, g, h, X)\nfor the RightGroupOperation this calls diff_right_compose(G, g, h, X)\nfor the InverseLeftGroupOperation this calls diff_left_compose with g^-1\nfor the InverseRightGroupOperation this calls diff_right_compose with g^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{InverseLeftGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::InverseLeftGroupOperation)\n\nReturn the InverseRightGroupOperation, that is, turns σ_g = g^-1h into τ_g(h) = hg^-1\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{InverseRightGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::InverseRightGroupOperation)\n\nReturn the InverseLeftGroupOperation, that is, turns σ_g = hg^-1 into τ_g(h) = g^-1h\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{LeftGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::LeftGroupOperation)\n\nReturn the RightGroupOperation, that is, turns σ_g = gh into τ_g(h) = hg\n\n\n\n\n\n","category":"method"},{"location":"interface/#LieGroups.switch-Tuple{RightGroupOperation}","page":"An Interface for Lie Groups","title":"LieGroups.switch","text":"switch(::RightGroupOperation)\n\nReturn the LeftGroupOperation, that is, turns σ_g = hg into τ_g(h) = gh\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply!-Tuple{GroupOperationAction, Any, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply!","text":"apply(A::GroupOperationAction, g, h)\napply!(A::GroupOperationAction, k, g, h)\n\napply the stored group operation action, using compose . this can be done in-place of k.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Manifolds.apply-Tuple{GroupOperationAction, Any, Any}","page":"An Interface for Lie Groups","title":"Manifolds.apply","text":"apply(A::GroupOperationAction, g, h)\napply!(A::GroupOperationAction, k, g, h)\n\napply the stored group operation action, using compose . this can be done in-place of k.\n\n\n\n\n\n","category":"method"},{"location":"interface/#Functions-on-Lie-Algebras","page":"An Interface for Lie Groups","title":"Functions on Lie Algebras","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"lie_bracket\nlie_bracket!","category":"page"},{"location":"interface/#LieGroups.lie_bracket","page":"An Interface for Lie Groups","title":"LieGroups.lie_bracket","text":"lie_bracket!(𝔤::LieAlgebra, X, Y)\nlie_bracket!(𝔤::LieAlgebra, Z, X, Y)\n\nCompute the Lie bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe computation can be done in-place of Z.\n\n\n\n\n\n","category":"function"},{"location":"interface/#LieGroups.lie_bracket!","page":"An Interface for Lie Groups","title":"LieGroups.lie_bracket!","text":"lie_bracket!(𝔤::LieAlgebra, X, Y)\nlie_bracket!(𝔤::LieAlgebra, Z, X, Y)\n\nCompute the Lie bracket mathfrak gmathfrak g mathfrak g which fulfills\n\nXX = 0 for all X mathfrak g\nThe Jacobi identity holds X YZ = XYZ = Y XZ holds for all X Y Z mathfrak g.\n\nThe computation can be done in-place of Z.\n\n\n\n\n\n","category":"function"},{"location":"interface/#Specific-Group-Operations","page":"An Interface for Lie Groups","title":"Specific Group Operations","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"For some generic group operations, an easy generic implementation can be provided. This section lists these specific cases and what is implemented for these.","category":"page"},{"location":"interface/#Additive-Group-operation","page":"An Interface for Lie Groups","title":"Additive Group operation","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"AdditionGroupOperation","category":"page"},{"location":"interface/#LieGroups.AdditionGroupOperation","page":"An Interface for Lie Groups","title":"LieGroups.AdditionGroupOperation","text":"AdditionGroupOperation <: AbstractGroupOperation\n\nA group operation that is realised introducing defaults that fall back to + and - being overloaded, for example compose(G::LieGroup{𝔽,M,AdditionGroupOperation}, a,b) = a+b\n\n\n\n\n\n","category":"type"},{"location":"interface/#Multiplicative-Group-operation","page":"An Interface for Lie Groups","title":"Multiplicative Group operation","text":"","category":"section"},{"location":"interface/#Literature","page":"An Interface for Lie Groups","title":"Literature","text":"","category":"section"},{"location":"interface/","page":"An Interface for Lie Groups","title":"An Interface for Lie Groups","text":"J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).\n\n\n\n","category":"page"},{"location":"about/#About-LieGroups.jl","page":"About","title":"About LieGroups.jl","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"EditURL = \"https://github.com/JuliaManifolds/LieGroups.jl/blob/main/CONTRIBUTING.md\"","category":"page"},{"location":"contributing/#Contributing-to-LieGroups.jl","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"The following is a set of guidelines to LieGroups.jl.","category":"page"},{"location":"contributing/#Table-of-contents","page":"Contributing to LieGroups.jl","title":"Table of contents","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Contributing to LieGroups.jl - Table of Contents\nI just have a question\nHow can I file an issue?\nHow can I contribute?\nCode style","category":"page"},{"location":"contributing/#I-just-have-a-question","page":"Contributing to LieGroups.jl","title":"I just have a question","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"The developer can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.","category":"page"},{"location":"contributing/#How-can-I-file-an-issue?","page":"Contributing to LieGroups.jl","title":"How can I file an issue?","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"If you found a bug or want to propose a feature, please open an issue in within the GitHub repository.","category":"page"},{"location":"contributing/#How-can-I-contribute?","page":"Contributing to LieGroups.jl","title":"How can I contribute?","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Currently we are still consolidating most details and defaults, but feel free to contribute to these discussions within this repository.","category":"page"},{"location":"contributing/#Code-style","page":"Contributing to LieGroups.jl","title":"Code style","text":"","category":"section"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Try to follow the documentation guidelines from the Julia documentation as well as Blue Style. Run JuliaFormatter.jl on the repository in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style.","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Please follow a few internal conventions:","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Any implemented function should be accompanied by its mathematical formulae if a closed form exists.\nA Lie group, a Lie group action or a Lie algebra should be implemented in it own file\nan alphabetical order of functions in every file is preferable.\nThe preceding implies that the mutating variant of a function follows the non-mutating variant.\nusually, both the allocating and the mutating variants of a function should be documented. For avoiding duplication, one doc string attached to both is preferrable\nThere should be no dangling = signs.\nAlways add a newline between things of different types (struct/method/const).\nAlways add a newline between methods for different functions (including allocating/mutating variants).\nPrefer to have no newline between methods for the same function; when reasonable, merge the documentation strings.\nAll import/using/include should be in the main module file.\nimport is discouraged and the explicit full name, like Base.exp should be used when implementing functions","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"Concerning documentation","category":"page"},{"location":"contributing/","page":"Contributing to LieGroups.jl","title":"Contributing to LieGroups.jl","text":"if possible provide both mathematical formulae and literature references using DocumenterCitations.jl and BibTeX where possible\nAlways document all input variables and keyword arguments","category":"page"},{"location":"groups/#An-overview-of-LIe-groups","page":"List of Lie Groups","title":"An overview of LIe groups","text":"","category":"section"},{"location":"groups/#Alphabetical-List-of-Lie-groups","page":"List of Lie Groups","title":"Alphabetical List of Lie groups","text":"","category":"section"},{"location":"groups/","page":"List of Lie Groups","title":"List of Lie Groups","text":"Group Manifold Comment\nTranslationGroup Euclidean + ","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"EditURL = \"https://github.com/JuliaManifolds/LieGroups.jl/blob/main/NEWS.md\"","category":"page"},{"location":"news/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"All notable Changes to the Julia package LieGroups.jl will be documented in this file.","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.","category":"page"},{"location":"news/#[0.1.0]-unreleased","page":"Changelog","title":"[0.1.0] - unreleased","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Everything denoted by “formerly” refers to the previous name in Manifolds.jl.","category":"page"},{"location":"news/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"LieAlgebra\nLieGroup (formerly GroupManifold) as well as the concrete groups\nAdditiveGroup (formerly TranslationGroup)\nAbstractGroupOperation as well as its concrete subtypes\nAdditionGroupOperation (formerly AdditionOperation)\nAbstractGroupActionType with its 2 specific (new) abstract\nAbstractLeftGroupActionType\nAbstractRightGroupActionType\nFor the group operation actions there are now\nLeftGroupOperation (formerly LeftForwardAction)\nRightGroupOperation (formerly RightBackwardAction)\nInverseLeftGroupOperation (formerly RightForwardAction)\nInverseRightGroupOperation (formerly LeftBackwardAction)\napplyand apply!\nbase_manifold to access the manifold within a Lie group\ncompose and compose!\nconjugate and conjugate!\ndiff_apply, diff_apply!, diff_group_apply, and diff_group_apply! (formerly apply_diff_[group][!])\ndiff_left_compose, diff_left_compose!, diff_right_compose, diff_right_compose! (formerly translate_diff with different sides)\nexp(G::LieGroup, g, X) and exp!(G::LieGroup, h, g, X) (formerly exp_inv and exp_inv!)\nexp(G::LieGroup, ::Identity, X) and exp!(G::LieGroup, h, ::Identity, X) (formerly exp_lie and exp_lie!)\nIdentity\nidenity_element and identity_element!\ninv and inv! (inv(::AbstractGroupAction) was formerly switch_direction)\ninv_left_compose, inv_left_compose! and inv_right_compose, inv_right_compose! (these functions correspond to inverse_translate with corresponding direction and side)\nis_identity\nLie_bracket and Lie_bracket! (formerly lie_bracket)\nlog(G::LieGroup, g, h) and log!(G::LieGroup, X, g, h) (formerly log_inv and log_inv!)\nlog(G::LieGroup, ::Identity, g) and log!(G::LieGroup, X, ::Identity, g) (formerly log_lie and log_lie!)\nswitch (formerly switch_side)","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Compared to Manifolds.jl","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"all translate functions are not implemented here, since you can just use compose. The differentials are implemented as listed above with respect to both left and right argument of compose\nall inverse_apply functions are not implemented here, since it is recommended to use apply(inv(A), g, p) as a replacement.","category":"page"},{"location":"news/#Old-Changelog-pre-0.1.0","page":"Changelog","title":"Old Changelog pre 0.1.0","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"Two previous releases where done by Yueh-Hua Tu in 2022 before he was so kind to transfer the development to the JuliaManifolds GitHub organisation.","category":"page"},{"location":"news/","page":"Changelog","title":"Changelog","text":"All notable changes to this project will be documented in this file.","category":"page"},{"location":"news/#[0.0.2]","page":"Changelog","title":"[0.0.2]","text":"","category":"section"},{"location":"news/","page":"Changelog","title":"Changelog","text":"fix SE{3} and add jacobian\ndefine dof and dim for Lie algebra and jacobian of inv\nadd action for SE{N}\nadd se3_location example","category":"page"},{"location":"#LieGroups.jl","page":"Home","title":"LieGroups.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Welcome to the Documentation of LieGroups.jl.","category":"page"},{"location":"notation/#Notation-on-LIe-Groups","page":"Notation","title":"Notation on LIe Groups","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"For most of the notation used throughout this package, we follow [HN12]","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Symbol Description Also used Comment\n a group operation \ncmathcal G mathcal G c_g the conjugation map (with g) \nmathrme identity element of a group \ng h k elements on a (Lie) group. Sometimes called points. g_1 g_2 \nmathfrak g a Lie algebra \nmathcalG a (Lie) group \nλ_g mathcal G mathcal G the left multiplication map λ_g(h) = gh \nmathcal M a manifold mathcal M_1 mathcal M_2ldotsmathcal N \noperatornameExp the matrix exponential \noperatornameLog the matrix logarithm \nρ_g mathcal G mathcal G the right multiplication map ρ_g(h) = hg \nσ mathcal G mathcal M a left group action we use σ_g(p) if the group element is fixed \nτ mathcal M mathcal G a right group action σ_mathrmR we use τ_g(p) if the group element is fixed\nT_p mathcal M the tangent space at p ","category":"page"}] } diff --git a/previews/PR8/tutorials/getstarted/index.html b/previews/PR8/tutorials/getstarted/index.html index 95fdbe4..7ec4e62 100644 --- a/previews/PR8/tutorials/getstarted/index.html +++ b/previews/PR8/tutorials/getstarted/index.html @@ -1,2 +1,2 @@ -- · LieGroups.jl
+- · LieGroups.jl