Lesson 7: Matrix Lie Algebra - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


LieAlgebra Lessons

 

Lesson 7:  Matrix Lie Algebras

 

 

Overview

The general linear Lie algebra and the Lie algebras of  upper triangular and strictly upper triangular matrices

The special linear Lie algebra sl(3)

The orthogonal Lie algebras so(4,0) and so(3,1)

The Euclidean Lie algebra e(3)

The exceptional Lie algebra g2

Overview

The set of all nxn matrices with real entries define a Lie algebra with Lie bracket given by the matrix commutator [a, b] = ab - ba This Lie algebra is called the general linear Lie algebra and is customarily denoted by gl(n). Its dimension is n^2.  In this lesson we will use the MatrixAlgebras command to create the general Lie algebra and some of its well-known and important subalgebras. You will learn to do the following.

– 

Calculate the structure equations for the general Lie algebra gl(n) for small values of n.

– 

Calculate the structure equations for the Lie algebra of all upper triangular matrices.

– 

Calculate the structure equations for the Lie algebra of all strictly upper triangular matrices.

– 

Calculate sl(3), the special linear Lie algebra, as a subalgebra of gl(3).

– 

Calculate the orthogonal Lie algebras so(4,0) and so(3,1) as subalgebras of gl(4).

– 

Calculate the Euclidean Lie algebra e(3) as a subalgebra of gl(4)

– 

Calculate the exceptional Lie algebra g2 as a subalgebra of gl(7)

We shall initialize each of these Lie algebras and calculate some simple properties. Further computation of matrix algebras can be found in the DifferentialGeometry Tutorial ClassicalMatrixAlgebras.

 

The general linear Lie algebra and the Lie algebras of  upper triangular and strictly upper triangular matrices

 

with(DifferentialGeometry): with(LieAlgebras):

 

Example 1.  We begin by using the MatrixAlgebras command to create the 4 dimensional Lie algebra gl(2) of all 2x2 matrices.

L, V, Omega := MatrixAlgebras("Full",2, gl2);

L,V,Ωe1,e2=e2,e1,e3=e3,e2,e3=e1e4,e2,e4=e2,e3,e4=e3,e11,e12,e21,e22,ε11,ε12,ε21,ε22

(2.1)

 

The command returns a sequence of 3 objects. The first object L is the Lie algebra data structure for gl(2). As always, the structure equations for the Lie algebra data structure are displayed, using the generic labels e1, e2, e3, e4 for the vectors in the Lie algebra.  The next output element V gives the labels that we shall use to denote the vectors in gl2 upon initialization with the command DGsetup. Here eij denotes the elementary matrix with a 1 in the i-th row and the j-th column.  The last output element gives the labels that with be used for the 1-forms on the Lie algebra.

DGsetup(L, V, Omega);

Lie algebra: gl2

(2.2)
gl2 > 

MultiplicationTable("LieTable");

 

We emphasize that the MatrixAlgebras program simply contains the general formulas for the bracket  of the elementary matrices eij and ehk and does not calculate explicitly with matrices.

 

As a simple calculation we calculate the center of the Lie algebra gl2 -- as expected it contains just the identity matrix.

gl2 > 

Center();

gl2 > 

 

e11+e22

(2.3)

Example 2.  Here is the 10 dimensional Lie algebra of 4x4 upper triangular matrices.

 

gl2 > 

L, V, Omega := MatrixAlgebras("Upper",4, T4);

L,V,Ωe1,e2=e2,e1,e3=e3,e1,e4=e4,e2,e5=e2,e2,e6=e3,e2,e7=e4,e3,e8=e3,e3,e9=e4,e4,e10=e4,e5,e6=e6,e5,e7=e7,e6,e8=e6,e6,e9=e7,e7,e10=e7,e8,e9=e9,e9,e10=e9,e11,e12,e13,e14,e22,e23,e24,e33,e34,e44,ε11,ε12,ε13,ε14,ε22,ε23,ε24,ε33,ε34,ε44

(2.4)
gl2 > 

DGsetup(L, V, Omega);

Lie algebra: T4

(2.5)

 

To display the multiplication table we need to increase the rtablesize parameter (see interface)

T4 > 

interface(rtablesize = 13);

10

(2.6)
T4 > 

MultiplicationTable("LieTable");

T4 > 

Series("Derived");

e11,e12,e13,e14,e22,e23,e24,e33,e34,e44,e12,e13,e14,e23,e24,e34,e13,e14,e24,

(2.7)

 

Note that the first term in the derived series (the derived algebra) consists of the 6 strictly upper triangular matrices. The fact that the last term in the derived series T4 is empty implies that the Lie algebra of 4x4 upper triangular matrices is solvable.

T4 > 

Query("Solvable");

true

(2.8)

 

Example 3.  Here is the 10 dimensional Lie algebra of 5x5  strictly upper triangular matrices. This is a nilpotent Lie algebra.

T4 > 

L, V, Omega := MatrixAlgebras("StrictlyUpper",5, U5);

L,V,Ωe1,e5=e2,e1,e6=e3,e1,e7=e4,e2,e8=e3,e2,e9=e4,e3,e10=e4,e5,e8=e6,e5,e9=e7,e6,e10=e7,e8,e10=e9,e12,e13,e14,e15,e23,e24,e25,e34,e35,e45,ε12,ε13,ε14,ε15,ε23,ε24,ε25,ε34,ε35,ε45

(2.9)
T4 > 

DGsetup(L, V, Omega);

Lie algebra: U5

(2.10)

 

To display the multiplication table we need to increase the rtablesize parameter (see interface)

U5 > 

MultiplicationTable("LieTable");

The Lie algebras of upper triangular matrices are all nilpotent.

U5 > 

Query("Nilpotent");

true

(2.11)

We illustrate the fact that the upper series (Series) of a nilpotent Lie algebra g always stablizes at g.

U5 > 

Series("Upper");

e15,e25,e15,e14,e15,e14,e13,e35,e25,e24,e45,e35,e34,e25,e24,e23,e15,e14,e13,e12

(2.12)

 

 

The special linear Lie algebra sl(3)

 

The special linear Lie algebra sl(n) is defined as the subalgebra of gl(n) consisting of trace-free matrices. To calculate the elements of sl(n) with the MatrixAlgebras command we shall use the following observation.

 

Define a 3 dimensional space M with coordinates [x, y, z] and on M define a general linear vector field X  . This is easily done with the a DifferentialGeometry extension of Maple's convert command.

 

U5 > 

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

frame name: M

(3.1)
M > 

A:= Matrix([[a1, b1, c1], [a2 ,b2,c3], [a3, b3, c3]]);

M > 

X := convert(A, DGvector);

Xa1x+b1y+c1zD_x+a2x+b2y+c3zD_y+a3x+b3y+c3zD_z

(3.2)

 

Now define the standard volume form on M and  calculate the Lie derivative of this volume form with respect to X.

M > 

nu := evalDG(dx &w dy &w dz);

νdx`^`dy`^`dz

(3.3)

 

M > 

LieDerivative(X, nu);

c3+b2+a1dx`^`dy`^`dz

(3.4)

 

We see that nu is invariant with respect to X precisely when the matrix A is trace-free.  In general sl(n) can be defined the subalgebra of gl(n) for which the

associated linear vector fields preserve the standard volume form. This is the approach taken by the MatrixAlgebras program. Here are the steps in detail.

 

Step 1.  Define and initialize the ambient matrix algebra gl(3)

M > 

L1 := MatrixAlgebras("Full", 3, gl3);

L1e1,e2=e2,e1,e3=e3,e1,e4=e4,e1,e7=e7,e2,e4=e1e5,e2,e5=e2,e2,e6=e3,e2,e7=e8,e3,e4=e6,e3,e7=e1e9,e3,e8=e2,e3,e9=e3,e4,e5=e4,e4,e8=e7,e5,e6=e6,e5,e8=e8,e6,e7=e4,e6,e8=e5e9,e6,e9=e6,e7,e9=e7,e8,e9=e8,e11,e12,e13,e21,e22,e23,e31,e32,e33,ε11,ε12,ε13,ε21,ε22,ε23,ε31,ε32,ε33

(3.5)
M > 

DGsetup(L1):

 

Step 2.  Calculate sl(3) as a subalgebra of gl(3) -- note that each element of sl3_subalg is a trace-free matrix.

gl3 > 

sl3_subalg := MatrixAlgebras("Subalgebra",gl3,[nu]);

sl3_subalge11e33,e12,e13,e21,e22e33,e23,e31,e32

(3.6)

 

Step 3.  Calculate the structure equations for sl(3) and initialize the result.

gl3 > 

L2 := LieAlgebraData(sl3_subalg, sl3);

L2e1,e2=e2,e1,e3=2e3,e1,e4=e4,e1,e6=e6,e1,e7=2e7,e1,e8=e8,e2,e4=e1e5,e2,e5=e2,e2,e6=e3,e2,e7=e8,e3,e4=e6,e3,e5=e3,e3,e7=e1,e3,e8=e2,e4,e5=e4,e4,e8=e7,e5,e6=2e6,e5,e7=e7,e5,e8=2e8,e6,e7=e4,e6,e8=e5

(3.7)
gl3 > 

DGsetup(L2);

Lie algebra: sl3

(3.8)
sl3 > 

MultiplicationTable("LieTable");

 

The Lie algebra sl(3) is semisimple:

sl3 > 

Query("Semisimple");

true

(3.9)

 

 

The orthogonal Lie algebras so(4,0) and so(3,1)

Let g be an inner product on the vector space R^n with signature (p,q), p + q= n. The Lie algebra so(p,q) is the subalgebra of  gl(n) consisting of nxn matrices a such that g(ax,y) + g(x,ay) =0(*) . In the case where g(x, y) = transpose(x)*y this condition implies that a is skew-symmetric, that is,

so(n) = sn(n,0) = {a in gl(n) such that transpose(a) + a =0}  (**)

It we re-interprete the inner product g as a symmetric,rank 2 covariant tensor, then (*) becomes

LieDerivative(Z,  g) =0  (***)

where, just as in the previous example, Z is the linear vector field corresponding to the matrix a.

 

We start by illustrating this last point.

 

sl3 > 

with(DifferentialGeometry): with(LieAlgebras):

sl3 > 

DGsetup([w, x, y, z], M);

frame name: M

(4.1)
M > 

g := evalDG(dw &t dw  + dx &t dx + dy &t dy + dz &t dz);

gdwdw+dxdx+dydy+dzdz

(4.2)
M > 

A := Matrix([[a1, b1, c1, d1], [a2, b2, c2, d2], [a3, b3, c3, d3], [a4, b4, c4, d4]]);

M > 

 

 

Construct the linear vector field on M defined by the matrix A.

M > 

Z := convert(A, DGvector);

Za1w+b1x+c1y+d1zD_w+a2w+b2x+c2y+d2zD_x+a3w+b3x+c3y+d3zD_y+a4w+b4x+c4y+d4zD_z

(4.3)
M > 

h := LieDerivative(Z, g);

h2a1dwdw+b1+a2dwdx+c1+a3dwdy+d1+a4dwdz+b1+a2dxdw+2b2dxdx+b3+c2dxdy+b4+d2dxdz+c1+a3dydw+b3+c2dydx+2c3dydy+c4+d3dydz+d1+a4dzdw+b4+d2dzdx+c4+d3dzdy+2d4dzdz

(4.4)

 

Set h to zero, solve the resulting equations for the parameters of the matrix A and back substitute into A

M > 

Eq := Tools:-DGinfo(h, "CoefficientSet");

Eq2d4,b1+a2,c1+a3,c4+d3,b3+c2,2b2,2c3,2a1,d1+a4,b4+d2

(4.5)
M > 

subs(solve(Eq, convert(A, set)), A);

These calculations illustrate the equivalence of conditions (**) and (***) for n = 4.

 

We are now ready to repeat the 3 steps using in the previous paragraph.

Step 1.  Define and initialize the ambient matrix algebra gl(4)

M > 

L1 := MatrixAlgebras("Full", 4, gl4):

M > 

DGsetup(L1):

 

Step 2.  Calculate so(4) as a subalgebra of gl(4) which preserves the metric g. Note that each element of so4_subalg is a skew-symmetric matrix.

gl4 > 

so4_subalg := MatrixAlgebras("Subalgebra",gl4,[g]);

so4_subalge12e21,e13e31,e14e41,e23e32,e24e42,e34e43

(4.6)

 

Step 3.  Calculate the structure equations for so4 and initialize the result.

gl4 > 

L2 := LieAlgebraData(so4_subalg, so4);

L2e1,e2=e4,e1,e3=e5,e1,e4=e2,e1,e5=e3,e2,e3=e6,e2,e4=e1,e2,e6=e3,e3,e5=e1,e3,e6=e2,e4,e5=e6,e4,e6=e5,e5,e6=e4

(4.7)
gl4 > 

DGsetup(L2);

Lie algebra: so4

(4.8)
so4 > 

MultiplicationTable("LieTable");

 

Here are the calculations for so31.

so4 > 

h := evalDG(-dw &t dw  + dx &t dx + dy &t dy + dz &t dz);

hdwdw+dxdx+dydy+dzdz

(4.9)

 

Step 2.  Calculate so(4) as a subalgebra of gl(4) which preserves the metric g. Note that each element of so4_subalg is a skew-symmetric matrix.

M > 

so31_subalg := MatrixAlgebras("Subalgebra",gl4,[h]);

so31_subalge12+e21,e13+e31,e14+e41,e23e32,e24e42,e34e43

(4.10)

 

Step 3.  Calculate the structure equations for so31 and initialize the result.

gl4 > 

L3 := LieAlgebraData(so31_subalg, so31);

L3e1,e2=e4,e1,e3=e5,e1,e4=e2,e1,e5=e3,e2,e3=e6,e2,e4=e1,e2,e6=e3,e3,e5=e1,e3,e6=e2,e4,e5=e6,e4,e6=e5,e5,e6=e4

(4.11)
gl4 > 

DGsetup(L3);

Lie algebra: so31

(4.12)
so31 > 

MultiplicationTable("LieTable");

 

Both Lie algebras so4 and so31 are semi-simple. The algebra so4 is decomposable while so31 is indecomposable.

so31 > 

ChangeFrame(so4);

so31

(4.13)
so4 > 

Query("Semisimple"), Query("Indecomposable");

true,false

(4.14)
so4 > 

ChangeFrame(so31);

so4

(4.15)
so31 > 

Query("Semisimple"), Query("Indecomposable");

true,true

(4.16)

 

 

The Euclidean Lie algebra e(3)

The Euclidean algebra consists of the 3 translations and 3 infinitesimal rotations.

 

so31 > 

with(DifferentialGeometry): with(LieAlgebras):

so31 > 

DGsetup([x, y, z, w], M);

frame name: M

(5.1)
M > 

Gamma := evalDG([D_x, D_y, D_z, x*D_y - y*D_x, x*D_z - z*D_x, y*D_z - z*D_y]);

ΓD_x,D_y,D_z,yD_x+xD_y,zD_x+xD_z,zD_y+yD_z

(5.2)

Here are the structure equations.

M > 

L := LieAlgebraData(Gamma);

Le1,e4=e2,e1,e5=e3,e2,e4=e1,e2,e6=e3,e3,e5=e1,e3,e6=e2,e4,e5=e6,e4,e6=e5,e5,e6=e4

(5.3)

 

We will now use the MatrixAlgebras program to realize this Lie algebra as a subalgebra of gl4. To this end we shall generate the usual skew-symmetric matrices for so3 as 4x4 matrices by finding the subalgebra of gl4 which fixes both the standard metric on M and the vector D_x4.

M > 

g := evalDG(dx &t dx + dy &t dy + dz &t dz + dw &t dw);

gdxdx+dydy+dzdz+dwdw

(5.4)
M > 

V := D_w;

VD_w

(5.5)

 

Calculate the structure equations for gl4 and initialize the result.

M > 

L1 := MatrixAlgebras("Full", 4, gl4):

M > 

DGsetup(L1);

Lie algebra: gl4

(5.6)

 

Find the matrix algebra so3 as the subalgebra of gl4.

gl4 > 

rotations:= MatrixAlgebras("Subalgebra",gl4, [g,V]);

rotationse12e21,e13e31,e23e32

(5.7)

 

Add in the matrices e14, e24,e34 as representatives for the translations.

gl4 > 

euc3_subalg:= [e14, e24, e34, op(rotations)];

euc3_subalge14,e24,e34,e12e21,e13e31,e23e32

(5.8)

Calculate the structure equations for the 6 dim Lie algebra defined by the matrices euc3_subalg.

gl4 > 

L3 := LieAlgebraData(euc3_subalg, euc3);

L3e1,e4=e2,e1,e5=e3,e2,e4=e1,e2,e6=e3,e3,e5=e1,e3,e6=e2,e4,e5=e6,e4,e6=e5,e5,e6=e4

(5.9)

 

The structure equations L and L3 are identical.

 

The exceptional Lie algebra g2

We follow the description of g2 as found in the text:  Spinors and Calibrations  by F. Resse Harvey,  p113-118,  namely, g2 is the subalgebra of  gl(7,R)

which fixes a certain 3-form.

 

gl4 > 

with(DifferentialGeometry): with(LieAlgebras):

Step 1.  Define and initialize the ambient matrix algebra gl(7).

gl4 > 

DGsetup(MatrixAlgebras("Full", 7, gl7));

Lie algebra: gl7

(6.1)

Step 2.  Calculate g2 as the subalgebra of gl(7) as the subalgebra which preserves a 3-form phi, define on a 7 dimensional vector space E7.

gl7 > 

DGsetup([x1, x2, x3, x4, x5, x6, x7],E7):

E7 > 

phi := evalDG(dx1 &w dx2 &w dx3 -dx1 &w dx5 &w dx6 + dx4 &w dx2 &w dx6  + dx4 &w dx5 &w dx3  + dx1 &w dx4 &w dx7 - dx2 &w dx5 &w dx7 +  dx3 &w dx6 &w dx7);

φdx1`^`dx2`^`dx3+dx1`^`dx4`^`dx7dx1`^`dx5`^`dx6dx2`^`dx4`^`dx6dx2`^`dx5`^`dx7+dx3`^`dx4`^`dx5+dx3`^`dx6`^`dx7

(6.2)
E7 > 

g2_subalg := MatrixAlgebras("Subalgebra", gl7, [phi]);

g2_subalge12e21+e67e76,e13+e31e57e75,e14+e36e41e63,e15+e37e51e73,e16+e34+e43+e61,e17+e35+e53+e71,e23+e32+e56+e65,e24+e37e42e73,e25e36e52+e63,e26e35e53+e62,e27+e34+e43+e72,e45e54+e67e76,e46e57+e64e75,e47+e56+e65+e74

(6.3)

 

Calculate the structure equations for this Lie algebra and initialize the result.

gl7 > 

L := LieAlgebraData(g2_subalg, g2);

Le1,e2=e7,e1,e3=e8,e1,e4=e9,e1,e5=e6e10,e1,e6=e5e11,e1,e7=e2,e1,e8=e3,e1,e9=e4,e1,e10=e5e11,e1,e11=e6+e10,e1,e13=e14,e1,e14=e13,e2,e3=e5,e2,e4=2e6,e2,e5=e3,e2,e6=2e4,e2,e7=e1,e2,e8=e6,e2,e9=e5+e11,e2,e10=e4,e2,e11=e3+e9,e2,e12=e14,e2,e14=e12,e3,e4=e12,e3,e5=2e22e13,e3,e6=e14,e3,e7=e10,e3,e8=e1,e3,e10=e7,e3,e11=e2e13,e3,e12=e4,e3,e13=e5,e3,e14=e6,e4,e5=e14,e4,e6=2e2,e4,e7=e5e11,e4,e9=e1,e4,e10=e2,e4,e11=e7e14,e4,e12=e3,e4,e13=e6,e4,e14=e5,e5,e6=e12,e5,e7=e4e8,e5,e8=e7+e14,e5,e9=e2e13,e5,e10=e1e12,e5,e12=e6,e5,e13=e3,e5,e14=e4,e6,e7=e9,e6,e8=e2,e6,e9=e7,e6,e11=e1e12,e6,e12=e5,e6,e13=e4,e6,e14=e3,e7,e8=e11,e7,e9=2e10,e7,e10=2e9,e7,e11=e8,e7,e12=e13,e7,e13=e12,e8,e9=e12,e8,e10=e13,e8,e11=2e72e14,e8,e12=e9,e8,e13=e10,e8,e14=e11,e9,e10=2e7,e9,e11=e13,e9,e12=e8,e9,e13=e11,e9,e14=e10,e10,e11=e12,e10,e12=e11,e10,e13=e8,e10,e14=e9,e11,e12=e10,e11,e13=e9,e11,e14=e8,e12,e13=2e14,e12,e14=2e13,e13,e14=2e12

(6.4)
gl7 > 

DGsetup(L);

Lie algebra: g2

(6.5)

 

We check that g2 is semisimple.

g2 > 

Query("Semisimple");

true

(6.6)