diff --git a/previews/PR8/.documenter-siteinfo.json b/previews/PR8/.documenter-siteinfo.json index a6a7133..5baba2c 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-11T06:49:34","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-10-11T16:25:04","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 5d30761..b7586f0 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/contributing/index.html b/previews/PR8/contributing/index.html index f81ece1..c237ee5 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.

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
+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 7589a15..cb79511 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 58642a1..acc28ea 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 cb22f3a..4d4ac7c 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/actions/index.html b/previews/PR8/interface/actions/index.html index d0df56a..31a36a1 100644 --- a/previews/PR8/interface/actions/index.html +++ b/previews/PR8/interface/actions/index.html @@ -1,26 +1,26 @@ -A group action · LieGroups.jl

An Interface 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)) +A group action · LieGroups.jl

An Interface 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

Generic Lie group actions

For certain types of actions, a general implementation can be provided. These interfaces are documented here.

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

Generic Lie group actions

For certain types of actions, a general implementation can be provided. These interfaces are documented here.

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

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
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

Literature

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
diff --git a/previews/PR8/interface/group/index.html b/previews/PR8/interface/group/index.html index b25e151..672a5a6 100644 --- a/previews/PR8/interface/group/index.html +++ b/previews/PR8/interface/group/index.html @@ -1,34 +1,34 @@ -A Lie group and algebra · LieGroups.jl

The interface for Lie Groups and Lie algebras

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

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

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

Literature

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

The interface for Lie Groups and Lie algebras

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)

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

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
Manifolds.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.isapproxFunction
isapprox(M::LieGroup, g, h; kwargs...)

Check if points g and h from LieGroup are approximately equal. this function calls the corresponding isapprox on the AbstractManifold after handling the cases where one or more of the points are the Identity. All keyword argments are passed to this function as well.

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

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

Literature

[HN12]
J. Hilgert and K.-H. Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).
diff --git a/previews/PR8/interface/operations/index.html b/previews/PR8/interface/operations/index.html index e6ca8ff..0201153 100644 --- a/previews/PR8/interface/operations/index.html +++ b/previews/PR8/interface/operations/index.html @@ -1,4 +1,4 @@ -A group operation · LieGroups.jl

Lie 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}
+A group operation · LieGroups.jl

Lie 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

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
+Identity(::Type{AbstractGroupOperation})

create the identity of the corresponding subtype O<:AbstractGroupOperation

source

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
diff --git a/previews/PR8/news/index.html b/previews/PR8/news/index.html index d92e3f7..77df8a5 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 8ce90af..e2075e8 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/objects.inv b/previews/PR8/objects.inv index 74d4816..785dfde 100644 Binary files a/previews/PR8/objects.inv and b/previews/PR8/objects.inv differ diff --git a/previews/PR8/references/index.html b/previews/PR8/references/index.html index 3bfcd3b..3f763ff 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. 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. 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 5963a54..9aa732d 100644 --- a/previews/PR8/search_index.js +++ b/previews/PR8/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"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":"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. 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":"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":"interface/operations/#Lie-group-operations","page":"A group operation","title":"Lie group operations","text":"","category":"section"},{"location":"interface/operations/","page":"A group operation","title":"A group operation","text":"AbstractGroupOperation\nIdentity","category":"page"},{"location":"interface/operations/#LieGroups.AbstractGroupOperation","page":"A group operation","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/operations/#LieGroups.Identity","page":"A group operation","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/operations/","page":"A group operation","title":"A group operation","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/operations/#Additive-Group-operation","page":"A group operation","title":"Additive Group operation","text":"","category":"section"},{"location":"interface/operations/","page":"A group operation","title":"A group operation","text":"AdditionGroupOperation","category":"page"},{"location":"interface/operations/#LieGroups.AdditionGroupOperation","page":"A group operation","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":"about/#About-LieGroups.jl","page":"About","title":"About LieGroups.jl","text":"","category":"section"},{"location":"interface/actions/#An-Interface-Actions-on-Lie-groups","page":"A group action","title":"An Interface Actions on Lie groups","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:type]","category":"page"},{"location":"interface/actions/#LieGroups.AbstractGroupAction","page":"A group action","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/actions/#LieGroups.AbstractGroupActionType","page":"A group action","title":"LieGroups.AbstractGroupActionType","text":"AbstractGroupActionType\n\nAn abstract supertype for group actions.\n\n\n\n\n\n","category":"type"},{"location":"interface/actions/#LieGroups.AbstractLeftGroupActionType","page":"A group action","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/actions/#LieGroups.AbstractRightGroupActionType","page":"A group action","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/actions/#Functions-for-Lie-group-actions","page":"A group action","title":"Functions for Lie group actions","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:function]","category":"page"},{"location":"interface/actions/#Base.inv-Tuple{AbstractGroupActionType}","page":"A group action","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/actions/#Base.inv-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#LieGroups.base_lie_group-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#LieGroups.diff_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_group_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_group_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.switch-Tuple{AbstractGroupActionType}","page":"A group action","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/actions/#LieGroups.switch-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#Manifolds.apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#Manifolds.apply-Tuple{AbstractGroupAction, Any, Any}","page":"A group action","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/actions/#ManifoldsBase.base_manifold-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#Generic-Lie-group-actions","page":"A group action","title":"Generic Lie group actions","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"For certain types of actions, a general implementation can be provided. These interfaces are documented here.","category":"page"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_operation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"interface/actions/#LieGroups.GroupOperationAction","page":"A group action","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/actions/#LieGroups.InverseLeftGroupOperation","page":"A group action","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/actions/#LieGroups.InverseRightGroupOperation","page":"A group action","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/actions/#LieGroups.LeftGroupOperation","page":"A group action","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/actions/#LieGroups.RightGroupOperation","page":"A group action","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/actions/#Base.inv-Tuple{GroupOperationAction}","page":"A group action","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/actions/#Base.inv-Tuple{InverseLeftGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{InverseRightGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{LeftGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{RightGroupOperation}","page":"A group action","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/actions/#LieGroups.diff_apply!-Tuple{GroupOperationAction, Vararg{Any, 4}}","page":"A group action","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/actions/#LieGroups.diff_apply-Tuple{GroupOperationAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.switch-Tuple{InverseLeftGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{InverseRightGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{LeftGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{RightGroupOperation}","page":"A group action","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/actions/#Manifolds.apply!-Tuple{GroupOperationAction, Any, Any, Any}","page":"A group action","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/actions/#Manifolds.apply-Tuple{GroupOperationAction, Any, Any}","page":"A group action","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/actions/#Literature","page":"A group action","title":"Literature","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","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":"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":"interface/group/#The-interface-for-Lie-Groups-and-Lie-algebras","page":"A Lie group and algebra","title":"The interface for Lie Groups and Lie algebras","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","text":"LieGroup\nLieAlgebra","category":"page"},{"location":"interface/group/#LieGroups.LieGroup","page":"A Lie group and algebra","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/group/#LieGroups.LieAlgebra","page":"A Lie group and algebra","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/#Functions-on-Lie-Groups","page":"A Lie group and algebra","title":"Functions on Lie Groups","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","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/group/#Base.adjoint","page":"A Lie group and algebra","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/group/#LieGroups.adjoint!","page":"A Lie group and algebra","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/group/#ManifoldsBase.base_manifold","page":"A Lie group and algebra","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/group/#LieGroups.compose","page":"A Lie group and algebra","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/group/#LieGroups.compose!","page":"A Lie group and algebra","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/group/#LieGroups.diff_left_compose","page":"A Lie group and algebra","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/group/#LieGroups.diff_left_compose!","page":"A Lie group and algebra","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/group/#LieGroups.diff_right_compose","page":"A Lie group and algebra","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/group/#LieGroups.diff_right_compose!","page":"A Lie group and algebra","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/group/#LieGroups.inv_left_compose","page":"A Lie group and algebra","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/group/#LieGroups.inv_left_compose!","page":"A Lie group and algebra","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/group/#LieGroups.inv_right_compose","page":"A Lie group and algebra","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/group/#LieGroups.inv_right_compose!","page":"A Lie group and algebra","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/group/#LieGroups.conjugate","page":"A Lie group and algebra","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/group/#LieGroups.conjugate!","page":"A Lie group and algebra","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/group/#LieGroups.diff_conjugate","page":"A Lie group and algebra","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/group/#LieGroups.diff_conjugate!","page":"A Lie group and algebra","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/group/#Base.exp","page":"A Lie group and algebra","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/group/#ManifoldsBase.exp!","page":"A Lie group and algebra","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/group/#LieGroups.identity_element","page":"A Lie group and algebra","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/group/#LieGroups.identity_element!","page":"A Lie group and algebra","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/group/#LieGroups.is_identity","page":"A Lie group and algebra","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/group/#Base.inv-Tuple{LieGroup, Any}","page":"A Lie group and algebra","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/group/#LieGroups.inv!","page":"A Lie group and algebra","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/group/#LieGroups.diff_inv","page":"A Lie group and algebra","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/group/#LieGroups.diff_inv!","page":"A Lie group and algebra","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/group/#Base.log","page":"A Lie group and algebra","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/group/#ManifoldsBase.log!","page":"A Lie group and algebra","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/group/#Functions-on-Lie-Algebras","page":"A Lie group and algebra","title":"Functions on Lie Algebras","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","text":"lie_bracket\nlie_bracket!","category":"page"},{"location":"interface/group/#LieGroups.lie_bracket","page":"A Lie group and algebra","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/group/#LieGroups.lie_bracket!","page":"A Lie group and algebra","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/group/#Literature","page":"A Lie group and algebra","title":"Literature","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","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":"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":"#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":"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":"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":"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. 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":"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":"interface/operations/#Lie-group-operations","page":"A group operation","title":"Lie group operations","text":"","category":"section"},{"location":"interface/operations/","page":"A group operation","title":"A group operation","text":"AbstractGroupOperation\nIdentity","category":"page"},{"location":"interface/operations/#LieGroups.AbstractGroupOperation","page":"A group operation","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/operations/#LieGroups.Identity","page":"A group operation","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/operations/","page":"A group operation","title":"A group operation","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/operations/#Additive-Group-operation","page":"A group operation","title":"Additive Group operation","text":"","category":"section"},{"location":"interface/operations/","page":"A group operation","title":"A group operation","text":"AdditionGroupOperation","category":"page"},{"location":"interface/operations/#LieGroups.AdditionGroupOperation","page":"A group operation","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":"about/#About-LieGroups.jl","page":"About","title":"About LieGroups.jl","text":"","category":"section"},{"location":"interface/actions/#An-Interface-Actions-on-Lie-groups","page":"A group action","title":"An Interface Actions on Lie groups","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:type]","category":"page"},{"location":"interface/actions/#LieGroups.AbstractGroupAction","page":"A group action","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/actions/#LieGroups.AbstractGroupActionType","page":"A group action","title":"LieGroups.AbstractGroupActionType","text":"AbstractGroupActionType\n\nAn abstract supertype for group actions.\n\n\n\n\n\n","category":"type"},{"location":"interface/actions/#LieGroups.AbstractLeftGroupActionType","page":"A group action","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/actions/#LieGroups.AbstractRightGroupActionType","page":"A group action","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/actions/#Functions-for-Lie-group-actions","page":"A group action","title":"Functions for Lie group actions","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_action_interface.jl\"]\nOrder = [:function]","category":"page"},{"location":"interface/actions/#Base.inv-Tuple{AbstractGroupActionType}","page":"A group action","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/actions/#Base.inv-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#LieGroups.base_lie_group-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#LieGroups.diff_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_group_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.diff_group_apply-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.switch-Tuple{AbstractGroupActionType}","page":"A group action","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/actions/#LieGroups.switch-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#Manifolds.apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"A group action","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/actions/#Manifolds.apply-Tuple{AbstractGroupAction, Any, Any}","page":"A group action","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/actions/#ManifoldsBase.base_manifold-Tuple{AbstractGroupAction}","page":"A group action","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/actions/#Generic-Lie-group-actions","page":"A group action","title":"Generic Lie group actions","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"For certain types of actions, a general implementation can be provided. These interfaces are documented here.","category":"page"},{"location":"interface/actions/","page":"A group action","title":"A group action","text":"Modules = [LieGroups]\nPages = [\"group_operation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"interface/actions/#LieGroups.GroupOperationAction","page":"A group action","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/actions/#LieGroups.InverseLeftGroupOperation","page":"A group action","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/actions/#LieGroups.InverseRightGroupOperation","page":"A group action","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/actions/#LieGroups.LeftGroupOperation","page":"A group action","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/actions/#LieGroups.RightGroupOperation","page":"A group action","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/actions/#Base.inv-Tuple{GroupOperationAction}","page":"A group action","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/actions/#Base.inv-Tuple{InverseLeftGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{InverseRightGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{LeftGroupOperation}","page":"A group action","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/actions/#Base.inv-Tuple{RightGroupOperation}","page":"A group action","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/actions/#LieGroups.diff_apply!-Tuple{GroupOperationAction, Vararg{Any, 4}}","page":"A group action","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/actions/#LieGroups.diff_apply-Tuple{GroupOperationAction, Any, Any, Any}","page":"A group action","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/actions/#LieGroups.switch-Tuple{InverseLeftGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{InverseRightGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{LeftGroupOperation}","page":"A group action","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/actions/#LieGroups.switch-Tuple{RightGroupOperation}","page":"A group action","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/actions/#Manifolds.apply!-Tuple{GroupOperationAction, Any, Any, Any}","page":"A group action","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/actions/#Manifolds.apply-Tuple{GroupOperationAction, Any, Any}","page":"A group action","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/actions/#Literature","page":"A group action","title":"Literature","text":"","category":"section"},{"location":"interface/actions/","page":"A group action","title":"A group action","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":"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":"interface/group/#The-interface-for-Lie-Groups-and-Lie-algebras","page":"A Lie group and algebra","title":"The interface for Lie Groups and Lie algebras","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","text":"LieGroup\nLieAlgebra","category":"page"},{"location":"interface/group/#LieGroups.LieGroup","page":"A Lie group and algebra","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)\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/group/#LieGroups.LieAlgebra","page":"A Lie group and algebra","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/#Functions-on-Lie-Groups","page":"A Lie group and algebra","title":"Functions on Lie Groups","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","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\nisapprox\ninv(::LieGroup, ::Any)\ninv!\ndiff_inv\ndiff_inv!\nlog\nlog!","category":"page"},{"location":"interface/group/#Base.adjoint","page":"A Lie group and algebra","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/group/#LieGroups.adjoint!","page":"A Lie group and algebra","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/group/#ManifoldsBase.base_manifold","page":"A Lie group and algebra","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/group/#LieGroups.compose","page":"A Lie group and algebra","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/group/#LieGroups.compose!","page":"A Lie group and algebra","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/group/#LieGroups.diff_left_compose","page":"A Lie group and algebra","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/group/#LieGroups.diff_left_compose!","page":"A Lie group and algebra","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/group/#LieGroups.diff_right_compose","page":"A Lie group and algebra","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/group/#LieGroups.diff_right_compose!","page":"A Lie group and algebra","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/group/#LieGroups.inv_left_compose","page":"A Lie group and algebra","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/group/#LieGroups.inv_left_compose!","page":"A Lie group and algebra","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/group/#LieGroups.inv_right_compose","page":"A Lie group and algebra","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/group/#LieGroups.inv_right_compose!","page":"A Lie group and algebra","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/group/#LieGroups.conjugate","page":"A Lie group and algebra","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/group/#LieGroups.conjugate!","page":"A Lie group and algebra","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/group/#LieGroups.diff_conjugate","page":"A Lie group and algebra","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/group/#LieGroups.diff_conjugate!","page":"A Lie group and algebra","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/group/#Base.exp","page":"A Lie group and algebra","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/group/#ManifoldsBase.exp!","page":"A Lie group and algebra","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/group/#Manifolds.identity_element","page":"A Lie group and algebra","title":"Manifolds.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/group/#LieGroups.identity_element!","page":"A Lie group and algebra","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/group/#LieGroups.is_identity","page":"A Lie group and algebra","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/group/#Base.isapprox","page":"A Lie group and algebra","title":"Base.isapprox","text":"isapprox(M::LieGroup, g, h; kwargs...)\n\nCheck if points g and h from LieGroup are approximately equal. this function calls the corresponding isapprox on the AbstractManifold after handling the cases where one or more of the points are the Identity. All keyword argments are passed to this function as well.\n\n\n\n\n\n","category":"function"},{"location":"interface/group/#Base.inv-Tuple{LieGroup, Any}","page":"A Lie group and algebra","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/group/#LieGroups.inv!","page":"A Lie group and algebra","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/group/#LieGroups.diff_inv","page":"A Lie group and algebra","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/group/#LieGroups.diff_inv!","page":"A Lie group and algebra","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/group/#Base.log","page":"A Lie group and algebra","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/group/#ManifoldsBase.log!","page":"A Lie group and algebra","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/group/#Functions-on-Lie-Algebras","page":"A Lie group and algebra","title":"Functions on Lie Algebras","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","text":"lie_bracket\nlie_bracket!","category":"page"},{"location":"interface/group/#LieGroups.lie_bracket","page":"A Lie group and algebra","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/group/#LieGroups.lie_bracket!","page":"A Lie group and algebra","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/group/#Literature","page":"A Lie group and algebra","title":"Literature","text":"","category":"section"},{"location":"interface/group/","page":"A Lie group and algebra","title":"A Lie group and algebra","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":"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":"#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":"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{𝔽,T}\n\nThe Lie group consisting of the AdditionGroupOperation on some Euclidean space.\n\nConstructor\n\nTranslationGroup(n₁,...,nᵢ; kwargs...)\n\nGenerate the translation group on 𝔽^n₁nᵢ = Euclidean(n₁,...,nᵢ; field=𝔽), which is isomorphic to the group itself. all keyword arguments in kwargs... are passed on to Euclidean as well\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"}] } diff --git a/previews/PR8/tutorials/getstarted/index.html b/previews/PR8/tutorials/getstarted/index.html index 22c98ed..27682fa 100644 --- a/previews/PR8/tutorials/getstarted/index.html +++ b/previews/PR8/tutorials/getstarted/index.html @@ -1,2 +1,2 @@ -- · LieGroups.jl
+- · LieGroups.jl