v0.1.0
LieGroups v0.1.0
Everything denoted by “formerly” refers to the previous name in Manifolds.jl.
Several structs have been changed from the pre-release, so these are breaking.
Added
LieAlgebraLieGroup(formerlyGroupManifold) as well as the concrete groupsTranslationGroupSpecialEuclideanGroup(formerlySpecialEuclidean) includingSpecialEuclideanMatrixPointandSpecialEuclideanMatrixTangentVectorwhen representing the points as affine (abstract) matricesSpecialEuclideanProductPointandSpecialEuclideanProductTangentVectorwhen representing them in a product structure, that is as anArrayPartitionfromRecursiveArrayTools.- neither of those types is necessary, besides for conversion between both. The product representation differs for the left and right semidirect product, while the affine matrix variant does not.
SpecialOrthogonalGroup(formerlySpecialOrthogonal)SpecialUnitaryGroup(formerlySpecialUnitary)OrthogonalGroup(formerlyOrthogonal)UnitaryGroup(formerlyUnitary) also for quaternions.GeneralLinearGroup(formerlyGeneralLinear)HeisenbergGroupLeftSemidirectProductLieGroup(formerlySemidirectProductGroup)⋉(alias forLeftSemidirectProductGroupOperationwhen adefault_left_action(G,H)is defined for the two groups)PowerLieGroup(formerlyPowerGroup)PowerGroupOperationto internally avoid ambiguities. Since the constructor always expects a Lie group, this is only necessary internallyProductLieGroup(formerlyProductGroup)RightSemidirectProductLieGroupSpecialLinearGroup(formerlySpecialLinear)SymplecticGroupCircleGroupnow with even three representations: Real line (mod 2π), Complex and plane circle⋊(alias forRightSemidirectProductGroupOperationwhen adefault_right_action(G,H)is defined for the two groups)- a
ValidationLieGroupverifying input and output of all interface functions, similar to theValidationManifoldwhich can also be used internally.
AbstractGroupOperationas well as its concrete subtypesAdditionGroupOperation(formerlyAdditionOperation)MatrixMultiplicationGroupOperation(formerlyMultiplicationOperation)PowerGroupOperation(formerly the Lie group was stored inside a power manifold)ProductGroupOperation(formerly the Lie groups were stored inside a product manifold)LeftSemidirectProductGroupOperation(this was formerly only implicitly stored in theSemidirectProductGroup)RightSemidirectProductGroupOperation
AbstractGroupActionTypewith its 2 specific (new) abstract subtypesAbstractLeftGroupActionTypeAbstractRightGroupActionType
- For the group operation actions there are now
LeftGroupOperationAction(formerlyLeftForwardAction)RightGroupOperationAction(formerlyRightBackwardAction)InverseLeftGroupOperationAction(formerlyRightForwardAction)InverseRightGroupOperationAction(formerlyLeftBackwardAction)
DefaultLieAlgebraOrthogonalBasis(replacesVeeOrthogonalBasis, which is still available inManifoldsBase.jl)AbstractLieGroupPointandAbstractLieAlgebraTangentVectoras abstract types to introduce point and Lie algebra tangent vector representationsIdentityapplyandapply!base_manifoldto access the manifold within a Lie groupcomposeandcompose!conjugateandconjugate!diff_apply,diff_apply!,diff_group_apply, anddiff_group_apply!(formerlyapply_diff_[group][!])diff_conjugateanddiff_conjugate!diff_left_compose,diff_left_compose!,diff_right_compose,diff_right_compose!(formerlytranslate_diffwith different sides)exp(G::LieGroup, g, X)andexp!(G::LieGroup, h, g, X)(formerlyexp_invandexp_inv!)exp(G::LieGroup, X)andexp!(G::LieGroup, h, X)(formerlyexp_lieandexp_lie!)hatandhat!, with slightly different signatures, since the base point is omitted.identity_elementandidentity_element!invandinv!(inv(::AbstractGroupAction)was formerlyswitch_direction)inv_left_compose,inv_left_compose!andinv_right_compose,inv_right_compose!(these functions correspond toinverse_translatewith corresponding direction and side)is_identitylie_bracketandlie_bracket!jacobian_conjugate(formerlyadjoint_matrix, which is now a special case of this)log(G::LieGroup, g, h)andlog!(G::LieGroup, X, g, h)(formerlylog_invandlog_inv!)log(G::LieGroup, ::Identity, g)andlog!(G::LieGroup, X, ::Identity, g)(formerlylog_lieandlog_lie!)switch(formerlyswitch_side)veeandvee!, with slightly different signatures, since the base point is omitted.
Compared to Manifolds.jl
- all
translatefunctions are not implemented here, since you can just usecompose. The differentials are implemented as listed above with respect to both left and right argument of compose - all
inverse_applyfunctions are not implemented here, since it is recommended to useapply(inv(A), g, p)as a replacement.
Merged pull requests:
- Add a ValidationLieGroup (#22) (@kellertuer)
- Implement a default for
jacobian_conjugate(#23) (@kellertuer) - A get-started tutorial (#24) (@kellertuer)
- Add symplectic group (#28) (@kellertuer)
- Port remaining groups (part 1/3): Quaternion Unitary (#29) (@kellertuer)
- Port remaining groups (part 2/3): Special Linear (#30) (@kellertuer)
- Port remaining groups (Part 3/3): The Circle group (#31) (@kellertuer)
Closed issues: