The product Lie group
LieGroups.AbstractProductGroupOperation
— TypeAbstractProductGroupOperation <: AbstractGroupOperation
An abstract type to model group operations on a product manifold
LieGroups.ProductGroupOperation
— TypeProductGroupOperation{O<:NTuple{N,AbstractGroupOperation} where N} <: AbstractProductGroupOperation
A struct do model a tuple of group operations, one for each factor of a product group, that together forms a new group operation.
Access to the single operations can be done by pgo[i]
.
Constructor
ProductGroupOperation(o::AbstractGroupOperation...)
×(o::AbstractGroupOperation...) = ProductGroupOperation(o...)
LieGroups.ProductLieGroup
— MethodProductLieGroup(G1, G2, ..., Gn)
Return the LieGroup
of the product of Lie groups G1
, G2
, up to Gn
and all following Lie groups. This can be considered as a vector of Lie group, where the vector is always of the same length as the number of provided Lie Groups.
If none of the Lie groups are product Lie groups themselves, this is equivalent to G1 × G2 × ... × Gn
.
For an example illustrating the differences see [x
](@ref LinearAlgebra.cross(::LieGroup...)(::LieGroup...)
.
LinearAlgebra.cross
— Methodcross(O1::AbstractGroupOperation, O2::AbstractGroupOperation)
O1 × O2
O1 × O2 × O3 × ...
Return the ProductGroupOperation
For two AbstractGroupOperation` O1
and O2
, where for the case that one of them is a ProductGroupOperation
itself, the other is either prepended (if O1
is a product) or appended (if O2
is). If both are product operations, they are combined into one, keeping the order of operations.
For the case that more than two are concatenated with ×
this is iterated.
LinearAlgebra.cross
— Methodcross(G::LieGroup, H::LieGroup)
G × H
G1 × G2 × G3 × ...
Return the ProductLieGroup
For two LieGroups
G
and H
.
For the case that one of them is a product Lie group already, the other one is appended or prepended, depending on which one is the product; they are joined into one large product if both are product Lie groups.
In order to build a ProductLieGroup
that does not “splat” its arguments, or in other words to obtain “nested” products, use ProductLieGroup
(G1, G2, G3, ...)
.
Example.
For
G1 = TranslationGroup(2)
G2 = SpecialOrthogonalGroup(2)
G3 = GeneralLinearGroup(2)
We can have one large product Lie group
G = G1 × G2 × G3 # or equivalently ProductLieGroup(G1, G2, G3)
and alternatively generate a product of a Lie group with an existing product using
H = ProductLieGroup(G1, G2 × G3)
Since for the first, single Lie group, the order should be irrelevant, it means in practice that ×
behaves slightly different than ProductLieGroup
in that it “splats” its arguments. G
is equivalent to calling ProductLieGroup(G1, G2) × G3
or G1 × ProductLieGroup(G2, G3)
. Both, as G
would consist of vectors of length 3. These are different from both ProductLieGroup(ProductLieGroup(G1, G2), G3)
and ProductLieGroup(G1, ProductLieGroup(G2, G3))
, which are both vectors of length 2, where the first has a vector of length 2 in its first component, the second such a vector in its second component.