An Interface for Lie group actions
LieGroups.AbstractGroupActionType
β TypeAbstractGroupActionType
An abstract supertype for group action types, which are used within a GroupAction
.
LieGroups.AbstractLeftGroupActionType
β TypeAbstractLeftGroupActionType <: 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
- $Ο(\mathrm{e}, p) = p$ holds for all $p β \mathcal M$
- $Ο(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).\]
In function definitions we follow the idea of the family of actions and use the order (M, g, p)
in function signatures.
LieGroups.AbstractRightGroupActionType
β TypeAbstractRightGroupActionType <: 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
- $Ο(p, \mathrm{e}) = p$ holds for all $p β \mathcal M$
- $Ο(Ο(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).\]
In function definitions we follow the idea of the family of actions and use the order (M, g, p)
in function signatures.
LieGroups.GroupAction
β TypeGroupAction{T<:GroupActionType, L<:LieGroup, M<:AbstractManifold}
Specify a group action of AbstractGroupActionType
T
of a LieGroup
G
acting on M
.
Let $\mathcal M$ be a AbstractManifold
and $\mathcal G$ be a LieGroup
with group operation $β$.
A (smooth) action of the group $\mathcal G$ on the manifold $\mathcal M$ is a map
\[Ο: \mathcal G Γ \mathcal M β \mathcal M\]
with the properties
- $Ο(\mathrm{e}, p) = p$ holds for all $p β \mathcal M$
- $Ο(g, Ο(h, p)) = Ο(gβh, p)$ holds for all $g,h β \mathcal G$, $p β \mathcal M$
Fields
type::T
: The type of the group action.group::L
: The group acting.manifold::M
: The manifold the group acts upon.
See [HN12, Section 9.1.3] for more details.
Functions for Lie group actions
Base.inv
β Methodinv(::AbstractGroupActionType)
return the inverse group operation action, that is, use the type representing the inverse operation.
Base.inv
β Method inv(A::GroupAction{T})
Return the GroupAction
representing the inverse of an GroupAction
of AbstractGroupActionType
T
. This is usually done by returning the group action with the inverse type of T
.
LieGroups.base_lie_group
β Methodbase_lie_group(A::GroupAction)
Return the LieGroup
of the GroupAction
specifying the action.
LieGroups.default_left_action
β Methoddefault_left_action(G::LieGroup, M::AbstractManifold)
Return the default left action for a Lie group G
acting on a manifold M
.
LieGroups.default_right_action
β Methoddefault_right_action(G::LieGroup, M::AbstractManifold)
Return the default right action for a Lie group G
acting on a manifold M
.
LieGroups.diff_apply!
β Methoddiff_apply(A::GroupAction{T, L, M}, g, p, X)
diff_apply!(A::GroupAction{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)$.
LieGroups.diff_apply
β Methoddiff_apply(A::GroupAction{T, L, M}, g, p, X)
diff_apply!(A::GroupAction{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)$.
LieGroups.diff_group_apply!
β Methoddiff_group_apply(A::GroupAction{T, L, M}, g, p, X)
diff_group_apply!(A::GroupAction{T, L, M}, Y, g, p, X)
Compute the differential $D_g Ο_g(p): \mathfrak g β \mathfrak g$, where we use the short hand notation $Ο_p(g) = Ο(g,p)$ for a left action, and for a right action $Ο_p(g) = Ο(p, g)$.
LieGroups.diff_group_apply
β Methoddiff_group_apply(A::GroupAction{T, L, M}, g, p, X)
diff_group_apply!(A::GroupAction{T, L, M}, Y, g, p, X)
Compute the differential $D_g Ο_g(p): \mathfrak g β \mathfrak g$, where we use the short hand notation $Ο_p(g) = Ο(g,p)$ for a left action, and for a right action $Ο_p(g) = Ο(p, g)$.
LieGroups.switch
β Methodswitch(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.
LieGroups.switch
β Method switch(A::GroupAction{T})
Return the group operation action representing the similar GroupAction
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
.
Manifolds.apply!
β Methodapply(A::GroupAction{T, L, M}, g, p)
apply!(A::GroupAction{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 performed in-place of q
.
Manifolds.apply
β Methodapply(A::GroupAction{T, L, M}, g, p)
apply!(A::GroupAction{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 performed in-place of q
.
ManifoldsBase.base_manifold
β Methodbase_manifold(A::GroupAction)
Return the AbstractManifold
the group action acts upon.
Generic Lie group actions
LieGroups.InverseLeftGroupOperationAction
β TypeInverseLeftGroupOperationAction <: AbstractRightGroupActionType
A type for the AbstractLeftGroupActionType
when acting on the group itself given by the inverse of a LeftGroupOperationAction
$Ο_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 InverseLeftGroupOperationAction
.
Some literature also calls this by itself the right group operation action.
LieGroups.InverseRightGroupOperationAction
β TypeInverseRightGroupOperationAction <: AbstractLeftGroupActionType
A type for the AbstractLeftGroupActionType
when acting on the group itself given by the inverse of a RightGroupOperationAction
$Ο_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 InverseLeftGroupOperationAction
.
LieGroups.LeftGroupOperationAction
β TypeLeftGroupOperationAction <: AbstractLeftGroupActionType
A type for the AbstractLeftGroupActionType
when acting on the group itself from the left, that is
\[Ο_h(g) = Ο(h,g) = hβg\]
for its inverse $(Ο_h)^{-1}$ see InverseLeftGroupOperationAction
.
LieGroups.RightGroupOperationAction
β TypeRightGroupOperationAction <: AbstractRightGroupActionType
A type for the AbstractLeftGroupActionType
when acting on the group itself from the right.
\[Ο_h(g) = Ο(h,g) = gβh\]
for its inverse $(Ο_h)^{-1}$ see InverseRightGroupOperationAction
.
Base.inv
β Methodinv(::InverseLeftGroupOperationAction)
Return the inverse of the InverseLeftGroupOperationAction
, that is the LeftGroupOperationAction
.
Base.inv
β Methodinv(::InverseRightGroupOperationAction)
Return the inverse of the InverseRightGroupOperationAction
, that is the RightGroupOperationAction
.
Base.inv
β Methodinv(::LeftGroupOperationAction)
Return the inverse of the LeftGroupOperationAction
, that is the InverseLeftGroupOperationAction
.
Base.inv
β Methodinv(::RightGroupOperationAction)
Return the inverse of the RightGroupOperationAction
, that is the InverseRightGroupOperationAction
.
LieGroups.GroupOperationAction
β MethodGroupOperationAction(action::AbstractGroupActionType, group::LieGroup)
Return a GroupAction
for an AbstractGroupActionType
action
representing the group operation as an action of the group on itself.
LieGroups.switch
β Methodswitch(::InverseLeftGroupOperationAction)
Return the InverseRightGroupOperationAction
, that is, turns $Ο_g = g^{-1}βh$ into $Ο_g(h) = hβg^{-1}$
LieGroups.switch
β Methodswitch(::InverseRightGroupOperationAction)
Return the InverseLeftGroupOperationAction
, that is, turns $Ο_g = hβg^{-1}$ into $Ο_g(h) = g^{-1}βh$
LieGroups.switch
β Methodswitch(::LeftGroupOperationAction)
Return the RightGroupOperationAction
, that is, turns $Ο_g = gβh$ into $Ο_g(h) = hβg$
LieGroups.switch
β Methodswitch(::RightGroupOperationAction)
Return the LeftGroupOperationAction
, that is, turns $Ο_g = hβg$ into $Ο_g(h) = gβh$
Literature
- [HN12]
- J.Β Hilgert and K.-H.Β Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).