The product Lie group

LieGroups.ProductGroupOperationType
ProductGroupOperation{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...)
source
LieGroups.ProductLieGroupMethod
ProductLieGroup(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...).

source
LinearAlgebra.crossMethod
cross(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.

source
LinearAlgebra.crossMethod
cross(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)
Technical detail

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.

source