An Interface for Lie group actions
LieGroups.AbstractActionActsOnType
β TypeAbstractActionActsOnType
An abstract type representing what an action acts on, Most notably these are the ActionActsOnLeft
and ActionActsOnRight
, see their documentations for more details.
For its practical use see the SemidirectProductGroupOperation
.
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 AbstractLieGroup
$\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 AbstractLieGroup
$\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.
When writing about general group actions, the symbol $Ξ±$ is often used. The order of arguments then follows the same as the one of the left action. Most often we use the index notation $Ξ±_g(p)$. The definition of functions also follows this notation, i.e. we use e.g. apply(A, g, p)
One notable example of a left action is the inverse of an action of AbstractRightGroupActionType
$Ο$, which is given by $Ο_g = (Ο_g)^{-1} = Ο_{g^{-1}}$. We obtain
\[Ο_g(Ο_h(p)) = Ο_{g^{-1}}(Ο_{h^{-1}}(p)) = Ο_{h^{-1}g^{-1}}(p) = Ο_{(gh)^{-1}}(p) Ο_{gh}(p).\]
LieGroups.AbstractRightGroupActionType
β TypeAbstractRightGroupActionType <: AbstractGroupActionType
A type representing a (smooth) group action $Ο: \mathcal M Γ \mathcal G β \mathcal M$ of a AbstractLieGroup
$\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 AbstractLieGroup
$\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.
When writing about general group actions, the symbol $Ξ±$ is often used. In that case the order of arguments follows either the one from the left action, but most often we use the index notation. The definition of functions also follows this notation, i.e. we use e.g. apply(A, g, p)
One notable example of a right action is the inverse of an action of AbstractLeftGroupActionType
$Ο$, which is given by $Ο_g = (Ο_g)^{-1} = Ο_{g^{-1}}$. We obtain
\[Ο_g(Ο_h(p)) = Ο_{g^{-1}}(Ο_{h^{-1}}(p)) = Ο_{g^{-1}h^{-1}}(p) = Ο_{(hg)^{-1}}(p) Ο_{hg}(p).\]
LieGroups.ActionActsOnLeft
β TypeActionActsOnLeft <: AbstractActionActsOnType
An AbstractActionActsOnType
representing that an action acts on the left.
This is meant in the following way: Given a GroupAction
$Ξ±: \mathcal G Γ \mathcal H β \mathcal H$ where a Lie group $\mathcal G$ acts on another Lie group $\mathcal H$ with an arbitrary action.
Then, e.g. within the definition of the LeftSemidirectProductGroupOperation
or RightSemidirectProductGroupOperation
, we have two choices where the group action $Ξ±$ acts on, namely: Let $g β \mathcal G$ and $h_1,h_2 β \mathcal H$ be given, then this type represents the variant
\[Ξ±_g(h_1) β h_2,\]
where $β
$ denotes the group operation on $\mathcal H$. The Left
in the name of this type refers to the fact that the action is applied to the left element $h_1$.
Note that this is independent of both the type of action (left or right) and whether the semidirect product is a left or a right semidirect one.
For its practical use see the SemidirectProductGroupOperation
.
LieGroups.ActionActsOnRight
β TypeActionActsOnRight <: AbstractActionActsOnType
An AbstractActionActsOnType
representing that an action acts on the right.
This is meant in the following way: Given a GroupAction
$Ξ±: \mathcal G Γ \mathcal H β \mathcal H$ where a Lie group $\mathcal G$ acts on another Lie group $\mathcal H$ with an arbitrary action.
Then, e.g. within the definition of the LeftSemidirectProductGroupOperation
or RightSemidirectProductGroupOperation
, we have two choices where the group action $Ξ±$ acts on, namely: Let $g β \mathcal G$ and $h_1,h_2 β \mathcal H$ be given, then this type represents the variant
\[h_1 β Ξ±_g(h_2),\]
where $β
$ denotes the group operation on $\mathcal H$. The Right
in the name of this type refers to the fact that the action is applied to the right element $h_2$.
Note that this is independent of both the type of action (left or right) and whether the semidirect product is a left or a right semidirect one.
For its practical use see the SemidirectProductGroupOperation
.
LieGroups.GroupAction
β TypeGroupAction{T<:GroupActionType, L<:LieGroup, M<:AbstractManifold}
Specify a group action of AbstractGroupActionType
T
of a AbstractLieGroup
G
acting on an AbstractManifold
M
.
Let $\mathcal M$ be a AbstractManifold
and $\mathcal G$ be a AbstractLieGroup
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
Identity. $Ξ±(\mathrm{e}, p) = p$ holds for all $p β \mathcal M$
Compatibility. If $Ξ±$ is a $AbstractLeftGroupActionType$ we usually denote it by $Ο$ and the compatibility reads
\[Ο_g(Ο_h(p)) = Ο_{gβh}(p) \text{ holds for all} g,h β \mathcal G \text{ and} p β \mathcal M\]
If $Ξ±$ is a $AbstractRightGroupActionType$ we usually denote it by $Ο$ and the compatibility reads
\[Ο_g(Ο_h(p)) = Ο_{hβg}(p)`` holds for all ``g,h β \mathcal G \text{ for all} p β \mathcal M\]
intuitively the left/right property of an action specifies on which side the βouterβ group actions element $g$ gets βappendedβ in the composition.
Fields
type::
AbstractGroupActionType
: The type of the group action.group::
AbstractLieGroup
: The group acting.manifold::
AbstractManifold
: The manifold the group acts upon.
See [HN12, Section 9.1.3] for more details.
Constructors
GroupAction(
group::AbstractLieGroup, manifold::ManifoldsBase.AbstractManifold, type::AbstractGroupActionType
)
Generate a group action where the type of the action and what it acts on are keyword arguments. They default to the most common choice, that the ActionActsOnRight
.
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 AbstractLieGroup
of the GroupAction
specifying the action.
LieGroups.default_left_action
β Methoddefault_left_action(G::AbstractLieGroup, 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::AbstractLieGroup, M::AbstractManifold)
Return the default right action for a Lie group G
acting on a manifold M
.
LieGroups.diff_apply!
β Methoddiff_apply(A::GroupAction, g, p, X)
diff_apply!(A::GroupAction, Y, g, p, X)
Compute the differential $\mathrm{D}_p Ξ±_g(p): T_p\mathcal M β T_{Ο_g(p)}\mathcal M$.
LieGroups.diff_apply
β Methoddiff_apply(A::GroupAction, g, p, X)
diff_apply!(A::GroupAction, Y, g, p, X)
Compute the differential $\mathrm{D}_p Ξ±_g(p): T_p\mathcal M β T_{Ο_g(p)}\mathcal M$.
LieGroups.diff_group_apply!
β Methoddiff_group_apply(A::GroupAction, g, p, X)
diff_group_apply!(A::GroupAction, Y, g, p, X)
Compute the differential $\mathrm{d}_{\mathcal 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) = Ο(g,p)$.
LieGroups.diff_group_apply
β Methoddiff_group_apply(A::GroupAction, g, p, X)
diff_group_apply!(A::GroupAction, Y, g, p, X)
Compute the differential $\mathrm{d}_{\mathcal 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) = Ο(g,p)$.
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}, g, p)
apply!(A::GroupAction{T}, 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}, g, p)
apply!(A::GroupAction{T}, 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)) = Ο_{g^{-1}}(Ο_{h^{-1}}(p)) = Ο_{g^{-1}h^{-1}}(p) = Ο_{(hg)^{-1}}(p) Ο_{hg}(p).\]
for its inverse $(Ο_h)^{-1}$ see InverseLeftGroupOperationAction
.
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)) = Ο_{g^{-1}}(Ο_{h^{-1}}(p)) = Ο_{h^{-1}g^{-1}}(p) = Ο_{(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 AbstractRightGroupActionType
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
β FunctionGroupOperationAction(group::LieGroup, action=LeftGroupOperationAction(), on=ActionActsOnLeft())
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(h) = gβh$ into $Ο_g(h) = hβg$
LieGroups.switch
β Methodswitch(::RightGroupOperationAction)
Return the LeftGroupOperationAction
, that is, turns $Ο_g(h) = hβg$ into $Ο_g = gβh$
LieGroups.LeftMultiplicationGroupAction
β TypeLeftMultiplicationGroupAction <: AbstractLeftGroupActionType
Specify that in a GroupAction
with Lie group $\mathcal G$ and manifold $\mathcal M$, the group action is given by multiplication from the left:
Given an element $g β \mathcal G$ and a point $p β \mathcal M$, the family of actions $Ο_g: \mathcal M β \mathcal M$ is given by
\[Ο_g(p) = g*p\]
where $*$ denotes the matrix(-vector) multiplication.
Literature
- [HN12]
- J.Β Hilgert and K.-H.Β Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).