find the matrix group defined by a matrix algebra or by a matrix of 1-forms - Maple Programming Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Mathematics : DifferentialGeometry : Group Actions : DifferentialGeometry/GroupActions/MatrixGroup

GroupActions[MatrixGroup] - find the matrix group defined by a matrix algebra or by a matrix of 1-forms

Calling Sequences

    MatrixGroup(A, vars)

    MatrixGroup(Omega, LR, identity)


     A         - a list of square matrices which define a matrix Lie algebra.

     vars      - a list of unassigned names, the variables for the matrix group

     Omega     - a matrix of 1-forms, the Maurer-Cartan matrix for a matrix group

     LR        - the string  "left" or "right"

     identity  - a list,  specifying the coordinates of the identity for the matrix group






Let A = A1 , A2, ... Ap be a list of p  square matrices. The set of matrices group A defines a matrix Lie algebra if it closed with respect to the matrix commutator, that is, for all i,j = 1... p there are constants Cij k such that: Ai, Aj = Ai AjAjAi = Cij k Ak .


A matrix Bx1, x2 , ... , xp, which is a function of p variables  x1, x2 , ... , xp , defines a matrix group if :

 [i] there are values x01, x02 , ... , x0p for which Bx01, x02 , ... , x0p is the identity matrix;

 [ii] the set of matrices Bx1, x2, ... , xp is closed under matrix multiplication, that is, Bx1, x2 , ... , xpBy1, y2 , ... , yp = Bz1, z2 , ... , zp; and

 [iii] the set of matrices Bx1, x2 , ... , xp is closed under matrix inversion  Bx1, x2 , ... , xp 1 =  By1, y2 , ... , yp.


If  Bx1, x2 , ... , xp  is a matrix group, then the partial derivatives  Ai =  B xi x01, x02 , ... , x0p define a matrix algebra.


 The first calling sequence MatrixGroup(A, vars) calculates the matrix group defined by the matrix algebra A = A1 , A2, ... ,Ap  from the products of  matrix exponentials expti Ai. Simple heuristics are used to relabel the group parameters ti in terms of the variables vars =  x1, x2 , ... , xp   in order to simplify the final expressions for the components of the matrix Bx1, x2 , ... , xp. These heuristics work best if the basis for matrix algebra A is given, to the maximal extent possible, in terms of strictly upper triangular matrices, strictly lower triangular matrices, and diagonal matrices. The matrix exponentials are computed using MatrixExponential.


 For the given matrix group Bx1, x2 , ... , xp, the left invariant and right invariant Maurer-Cartan forms are the matrices of 1-forms defined by

ΩL = B1 d B    and    ΩR = dB B1.    (*)

 Note that these forms satisfy the integrability conditions:  d ΩL +ΩL ΩL= 0 and d ΩR +ΩR ΩR = 0 .


The second calling sequence MatrixGroup(Omega, LR) returns the matrix group Bx1, x2 , ... , xp which satisfies the equations (*). The argument Omega is interpreted to be the left or right invariant Maurer-Cartan forms according to the value of the string LR. The equations (*) are integrated using pdsolve. If the integrability conditions on Omega are not satisfied, the pdsolve command will issues a warning and MatrixGroup will return NULL.


The command GroupAction is part of the DifferentialGeometry:-GroupActions package.  It can be used in the form MatrixGroup(...) only after executing the commands with(DifferentialGeometry) and with(GroupActions), but can always be used by executing DifferentialGeometry:-GroupActions:-MatrixGroup(...).


with(DifferentialGeometry): with(GroupActions): with(LieAlgebras): with(Library): with(Tools):


Example 1.

In this example, the matrix group for the Lie algebra of  2×2 upper triangular matrices is calculated.

A := [Matrix([[1, 0], [0,1]]), Matrix([[0, 1], [0,0]]), Matrix([[0, 0], [0, 1]])];




We can use the LieAlgebraData command to check that this set of matrices is closed under commutators and defines an abstract Lie algebra.




This result shows that the commutator of the second and third matrices in the list A is the 2nd matrices. Other commutators are 0.


Now find the matrix group Bx, y, z defined by the matrix algebra A.

B, id := MatrixGroup(A, [x, y, z]);




We can check this result in two ways. First, we can differentiate the elements of B with respect to the group parameters x, y, z to check that we recover the elements of the matrix algebra A. For this

we use the commands map and seq. For more complicated examples., it will be necessary to evaluate at the coordinates of the identity, given here by id.

C := [seq(map(diff, B, v), v = [x,y,z])];




In general, the list of initial matrices A and the matrices C obtained from the matrix group Bx, y, z will be different but it is always the case that spanA = spanC.  This can be checked using the GetComponents command.

GetComponents(C, A, trueorfalse = "on");




Secondly, one can use the command LieGroup (see Example 1) to directly verify that the matrix Bx, y, z does indeed define a matrix group.


Example 2.

In this example the matrix group for the Lie algebra of all 2×2 matrices is found.

A := [Matrix([[1, 0], [0,0]]), Matrix([[0, 1], [0,0]]), Matrix([[0, 0], [1, 0]]), Matrix([[0, 0], [0,1]])];



B, id := MatrixGroup(A, [a, b, c, d]);




Note that this result is in a much simpler form than that obtained from the product of exponentials of the individual elements of A.

 X := seq(eval(LinearAlgebra:-MatrixExponential(t||i*A[i])), i = 1..4);







Example 3.

In this example, the matrix group for the Lie algebra sl2  of all 2×2 trace-free matrices is determined.

A := [Matrix([[1, 0], [0, -1]]), Matrix([[0, 1], [0,0]]), Matrix([[0, 0], [1, 0]])];



B, id := MatrixGroup(A, [x, y, z]);




Note that the matrix Bx, y, z gives a parametrization of SL2, the matrix group of  2×2 matrices with determinant 1.





Example 4.

Here we shall find the matrix group associated to the adjoint representation of a Lie algebra. For this example, we shall use a Lie algebra from the tables of Lie algebras compiled by Patera, Sharp, Winternitz and Zassenhaus. See References, Retrieve, Adjoint.

LD := Retrieve("Winternitz", 1, [5, 37], alg);




Lie algebra: alg

alg > 

A := Adjoint();




alg > 

MatrixGroup(A, [u,v,x,y,z]);




Example 5.

In this example we find the matrix group for the infinitesimal automorphism group of a Lie algebra. The infinitesimal automorphisms of a Lie algebra are computed using the Derivations command.

alg > 

LD := Retrieve("Winternitz", 1, [5, 5], alg);


alg > 


Lie algebra: alg

alg > 

A := Derivations("Full");


alg > 

MatrixGroup(A, [seq(x||i, i = 1..nops(A))]);





Example 6.

In this example, a matrix group g is found from its Maurer-Cartan forms. First we initialize the 3-dimensional manifold M on which the Maurer-Cartan forms are defined.

M > 

DGsetup([x, y, z], M):

M > 

Omega := Matrix(2, 2, [evalDG(1/x*dx), evalDG(-z*dy/(x*y)+dz/x),0 &mult dx, evalDG(dy/y)]);




We check that these formulas satisfy the required integrability conditions.

M > 

ExteriorDerivative(Omega) &MatrixPlus (Omega &MatrixWedge Omega);




Since Ω is not defined at x=0,  y = 0 we choose x=1, y =1, z=0 as the coordinates for the identity.

M > 

MatrixGroup(Omega, "Left", [x = 1,y = 1,z = 0]);



See Also