Lesson 4: Lie Brackets and Lie Derivatives - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : DifferentialGeometry : Lessons and Tutorials : DifferentialGeometry : Lesson 4: Lie Brackets and Lie Derivatives

DifferentialGeometry Lessons

 

Lesson 4: The Lie bracket and the Lie derivative

 

 

Overview

LieBracket

LieDerivative

Application 1 -- Integrable distributions

Application 2 -- Integrable distributions

DGmap

Application 3 -- Killing Vector Fields

Exercises

Overview

 

In this lesson, you will learn to do the following:

– 

Calculate the Lie bracket of a pair of vector fields.

– 

Calculate the Lie derivative of a function, a vector field, a differential form, and a tensor.

– 

Check that a collection of vector fields defines an integrable distribution.

– 

Find the integral manifolds for an integrable distribution.

– 

Use the utility DGmap, which has the same function as the Maple map and map2  commands.

– 

Find the Killing equations for a metric tensor.

– 

Write programs which will test various identities satisfied by the Lie bracket and the Lie derivative.

 

LieBracket

 

The Lie bracket of two vector fields is computed using the LieBracket command.

>

with(DifferentialGeometry):

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

 

Define 2 vector fields X and Y and compute their Lie bracket.

M > 

X := evalDG(x*D_x + y*D_y);

XxD_x+yD_y

(2.1)
M > 

Y := evalDG(x*y*D_z);

YxyD_z

(2.2)
M > 

LieBracket(X, Y);

2xyD_z

(2.3)

 

LieDerivative

 

The DifferentialGeometry command LieDerivative may be applied to Maple expressions, vectors, forms, tensors, and connections.

M > 

with(DifferentialGeometry):

M > 

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

 

Define a vector field X and calculate the Lie derivative of some DifferentialGeometry objects.

M > 

X := evalDG(x*D_x + y*D_y);

XxD_x+yD_y

(3.1)

 

[1]  Functions

M > 

f := x^2 - y^2;

fx2y2

(3.2)
M > 

LieDerivative(X, f);

2x22y2

(3.3)

 

[2]  Vector Fields

M > 

Y := evalDG(x*y*D_z);

YxyD_z

(3.4)
M > 

LieDerivative(X, Y);

2xyD_z

(3.5)

 

In this case, the LieDerivative agrees with the Lie bracket.

M > 

LieBracket(X, Y);

2xyD_z

(3.6)

 

[3]  Differential Forms

M > 

alpha := evalDG(z*dy - y*dz);

αzdyydz

(3.7)
M > 

LieDerivative(X, alpha);

zdyydz

(3.8)

 

[4]  Tensors

M > 

T := evalDG(dx &t dx &t dx);

Tdxdxdx

(3.9)
M > 

LieDerivative(X, T);

3dxdxdx

(3.10)

 

Application 1 -- Integrable distributions

 

A collection of vector fields {X1, X2, ..., Xp} define an integrable distribution if, for all i, j = 1 .. p, the Lie brackets [Xi, Xj] are linear combination of the vectors {X1, X2, ..., Xp}.

 

Here we check that the given vectors define an integrable distribution.  We can do this using either the GetComponents or the Annihilator commands discussed in Lesson 3.  In the exercises, you will be asked to write a program to determine if a list of vectors is integrable.

M > 

with(DifferentialGeometry): DGsetup([x, y, z, u, v], E5);

frame name: E5

(4.1)
E5 > 

X1 := evalDG(z*u*D_x - 2*x*z*D_z + 2*v*x*D_v);

X1zuD_x2xzD_z+2vxD_v

(4.2)
E5 > 

X2 := evalDG(z*D_y - 2*y*D_v);

X2zD_y2yD_v

(4.3)
E5 > 

X3 := evalDG(-z*D_z + u*D_u + v*D_v);

X3zD_z+uD_u+vD_v

(4.4)

 

Show that the vectors fields {X1, X2, X3} define a 3 dimensional integrable distribution.  First we use the DGbasis command to check that the 3 vectors X1, X2, X3 are independent.

E5 > 

Y := DGbasis([X1, X2, X3]);

YzuD_x2xzD_z+2vxD_v,zD_y2yD_v,zD_z+uD_u+vD_v

(4.5)
E5 > 

nops(Y);

3

(4.6)

 

Next, we compute all possible brackets and check that they are in the span of the vectors {X1, X2, X3}.

E5 > 

X12 := LieBracket(X1, X2):

E5 > 

X13 := LieBracket(X1, X3):

E5 > 

X23 := LieBracket(X2, X3):

E5 > 

GetComponents(X12, [X1, X2, X3]);

0,2x,0

(4.7)
E5 > 

GetComponents(X13, [X1, X2, X3]);

0,0,0

(4.8)
E5 > 

GetComponents(X23, [X1, X2, X3]);

0,1,0

(4.9)

 

We remark that that these calculations can be done with just a single call to GetComponents.

E5 > 

GetComponents([X12, X13, X23], [X1, X2, X3]);

0,2x,0,0,0,0,0,1,0

(4.10)

 

Since each bracket is a linear combination of the vectors {X1, X2, X3}, these calculations prove that the {X1, X2, X3} is an integrable distribution.  Here is an alternative method.  First, calculate the annihilator C for the vectors {X1, X2, X3}.  Then a vector Z is in the span of the vectors {X1, X2, X3} if and only if the interior product of Z with each 1-form in C is zero.

E5 > 

C := Annihilator([X1, X2, X3]);

C2xdxz+udzz+du,2ydyz+vdzz+dv

(4.11)
E5 > 

f := (i,j) -> Hook([X12, X13, X23][i], C[j]);

fi,j→DifferentialGeometry:-HookX12,X13,X23i,Cj

(4.12)
E5 > 

Matrix(3, 2, f);

 

Application 2 -- Integrable distributions

 

This is a continuation of the previous example.  We use the Maple command pdsolve to find the invariant functions for the distribution defined by the vectors {X1, X2, X3}.

 

E5 > 

f := 'f':

E5 > 

Eq := map(LieDerivative, [X1, X2, X3], f(x, y, z, u, v));

Eqzufx2xzfz+2vxfv,zfy2yfv,zfz+ufu+vfv

(5.1)

 

A very useful command for improving the output of these computations is the PDEtools command declare.

E5 > 

PDEtools[declare](f(x, y, z, u, v));

fx,y,z,u,vwill now be displayed asf

(5.2)
E5 > 

Eq;

zufx2xzfz+2vxfv,zfy2yfv,zfz+ufu+vfv

(5.3)
E5 > 

pdsolve(Eq, f(x, y, z, u, v));

f=_F1zu+x2,vz+y2

(5.4)

 

We conclude that a pair of fundamental solutions are.

E5 > 

f1 := x^2 + z*u: f2 := y^2 + z*v:

 

Check these results using the LieDerivative command.

E5 > 

check := [seq(seq(LieDerivative(X, f), X=[X1, X2, X3]), f=[f1, f2])];

check0,0,0,0,0,0

(5.5)

 

Check these results using the pdetest command.

E5 > 

pdetest(f(x, y, z, u, v) = f1, Eq);

0,0,0

(5.6)
E5 > 

pdetest(f(x, y, z, u, v) = f2, Eq);

0,0,0

(5.7)

 

Thus the integral manifolds for the 3 dimensional integrable distribution {X1, X2, X3} are the 3 dimensional level surfaces:

x^2 + z*u = c1  and  y^2 + z*v = c2.

 

DGmap

 

The DGmap command allows one to apply Maple commands to the coefficients of a DifferentialGeometry vector, form, or tensor.  We shall use this utility in the next application.  To understand the syntax for this command, it is helpful to first read the help pages for the Maple map and map2 commands.  Here are a few simply examples.

E5 > 

with(DifferentialGeometry):

E5 > 

DGsetup([x, y], E2);

 

Define a vector field X, depending upon parameter t.

E5 > 

X := evalDG( x*D_x +  t*y*D_y);

XxD_x+tyD_y

(6.1)

 

Add 2 to each coefficient of X.

E2 > 

Tools:-DGmap(1, a -> a + 2, X);

x+2D_x+ty+2D_y

(6.2)

 

Differentiate each coefficient of X with respect to t.

E2 > 

Tools:-DGmap(1, diff, X ,t);

yD_y

(6.3)

 

Integrate each coefficient of X with respect to t from 0 to 1.

E2 > 

Tools:-DGmap(1, int, X, t = 0 .. 1);

xD_x+yD_y2

(6.4)

 

Application 3 -- Killing Vector Fields

 

In this application, we shall find the infinitesimal symmetries or Killing vectors for the Poincare half-plane.  Recall that a vector field X is a Killing vector for a metric tensor g if LieDerivative(X, g) = 0.

E2 > 

with(DifferentialGeometry):

E2 > 

DGsetup([x, y], E2);

frame name: E2

(7.1)

 

Define the metric g for the Poincare half-plane.

E2 > 

g := (1/y^2) &mult evalDG(dx &t dx + dy &t dy);

gdxdxy2+dydyy2

(7.2)

 

Define a general vector on E2.

E2 > 

X := evalDG(a(x, y)*D_x + b(x, y)*D_y);

XaD_x+bD_y

(7.3)
E2 > 

PDEtools[declare](a(x, y), b(x, y));

ax,ywill now be displayed asa

bx,ywill now be displayed asb

(7.4)

 

Calculate the Lie derivative of the metric g with respect to the vector field X.

E2 > 

LD := LieDerivative(X, g);

LD2axybdxdxy3+bx+aydxdyy2+bx+aydydxy2+2byybdydyy3

(7.5)

 

Extract the coefficients of the Lie derivative LD to obtain the Killing equations for the metric.

E2 > 

KillingEq := Tools:-DGinfo(LD, "CoefficientSet");

KillingEq2byyby3,2axyby3,bx+ayy2

(7.6)

 

Solve the Killing equations with pdsolve.

E2 > 

soln := pdsolve(KillingEq, {a(x, y), b(x, y)});

solnb=_C1x+_C2y,a=y2+x2_C12+_C2x+_C3

(7.7)

 

Substitute the solution obtained by pdsolve back into the vector field X.

E2 > 

newX := eval(X, soln);

newXy2+x2_C12+_C2x+_C3D_x+_C1x+_C2yD_y

(7.8)

 

We use the DGmap utility (see previous section) to generate the 3 Killing vectors associated to the constants _C1, _C2, _C3.

E2 > 

X1 := Tools:-DGmap(1, diff, newX, _C1);

X1y22+x22D_x+yxD_y

(7.9)
E2 > 

X2 := Tools:-DGmap(1, diff, newX, _C2);

X2xD_x+yD_y

(7.10)
E2 > 

X3 := Tools:-DGmap(1, diff, newX, _C3);

X3D_x

(7.11)
E2 > 

Gamma := [X1, X2, X3]:

 

We can use the GetComponents command to check that these three vectors define a Lie algebra, that is, that their Lie brackets are constant linear combinations of Gamma.

E2 > 

GetComponents(LieBracket(X1, X2), Gamma, method = "real");

1,0,0

(7.12)
E2 > 

GetComponents(LieBracket(X1, X3), Gamma, method = "real");

0,1,0

(7.13)
E2 > 

GetComponents(LieBracket(X2, X3), Gamma, method = "real");

0,0,1

(7.14)

 

Later on, we shall see that the command LieAlgebraData, in the LieAlgebras package, will do this automatically.  See also the commands InfinitesimalSymmetriesOfGeometricObjectFields and KillingVectors which automate the computations presented in this section.

 

Exercises

Exercise 1

 

For the vector fields, differential forms, and tensors defined below, calculate

[i]  the Lie bracket of X and Y.

[ii]  the iterated Lie bracket [X, [X, [X, Y]]] and conjecture what the general formula is for the k-th iterated bracket.

[iii]  the Lie bracket of X and x^2*Y - x*y*X.

[iv]  the Lie derivative of f with respect to X.

[v]  the Lie derivative of beta with respect to X.

[vi]  the Lie derivative with respect to Y of the interior product of X and alpha.

[vii]  the Lie derivative of the tensor product of T with X with respect to X.

 

E3 > 

with(DifferentialGeometry):

E5 > 

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

M > 

X := evalDG(x* D_x - y*z*D_y);

XxD_xyzD_y

(8.1.1)
M > 

Y := evalDG(z^2*x*D_z);

Yz2xD_z

(8.1.2)
M > 

f := sin(x*y) + tan(y*z);

fsinyx+tanyz

(8.1.3)
M > 

alpha := evalDG(z*dx &w dy - dy &w dz);

αzdx`^`dydy`^`dz

(8.1.4)
M > 

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

βdx`^`dy`^`dz

(8.1.5)
M > 

T := evalDG(z*dx &t D_y &t dz);

TzdxD_ydz

(8.1.6)

 

Solution

 

[i]  the Lie bracket of X and Y.

M > 

LieBracket(X, Y);

z2xyD_y+z2xD_z

(8.1.1.1)

 

[ii]  the iterated Lie bracket [X, [X, [X, Y]]].

M > 

X3 := LieBracket(X, LieBracket(X, LieBracket(X, Y)));

X33z2xyD_y+z2xD_z

(8.1.1.2)
M > 

X4 := LieBracket(X, X3);

X44z2xyD_y+z2xD_z

(8.1.1.3)
M > 

LieBracket(X, X4);

5z2xyD_y+z2xD_z

(8.1.1.4)

 

[iii]  the Lie bracket of X and x^2*Y - x*y*X.  Note that it is not necessary to "wrap" the arguments of LieBracket in evalDG.

M > 

LieBracket(X, x^2*y*Y - x*y*X);

yx2+yzx2D_x+y2z2x+y2x3z2+xy2zD_y+3yx3z2yz3x3D_z

(8.1.1.5)

 

[iv]  the Lie derivative of f with respect to X.

M > 

LieDerivative(X, f);

xcosyxyyzcosyxx+1+tanyz2z

(8.1.1.6)

 

[v]  the Lie derivative of beta with respect to X.

M > 

LieDerivative(X, beta);

z+1dx`^`dy`^`dz

(8.1.1.7)

 

[vi]  the Lie derivative with respect to Y of the interior product of X and alpha.

M > 

LieDerivative(Y, Hook(X, alpha));

z3y+2yz3xdx+x2z2dy+3xz2ydz

(8.1.1.8)

 

[vii]  the Lie derivative of the tensor product of T with X with respect to X.

M > 

LieDerivative(X, T &t X);

xz+xz2dxD_ydzD_x+z3yz2ydxD_ydzD_y

(8.1.1.9)

Exercise 2

 

Write programs which will test the following identities satisfied by the LieBracket [X, Y] and the LieDerivative L_X(T).  Each program should return {0} if the identity is satisfied.

 

[i]  [X, Y] = -[Y, X].

[ii]  [X, f*Y] = X(f)*Y + f* [X, Y].

[iii]  [X, [Y, Z]] + [Z, [X, Y]] + [ Y, [Z, X]] = 0.

[iv]  L_X(alpha &w beta) = L_X(alpha) &w beta + alpha &w L_X(beta), where alpha and beta are differential forms.

[v]  L_X(T &t S) = L_X(T) &t S + S &t L_X(T), where T and S are tensor fields.

[vi]  L_X(Hook(Y, alpha)) = Hook([X, Y], alpha) + Hook(Y, L_X(alpha)).

[vii]  L_X L_Y(T) - L_Y L_X(T) = L_[X, Y] T, where T is a vector, differential form, or tensor field.

 

M > 

with(DifferentialGeometry):

 

Solution

 

Here are the programs:

 

[i]  [X, Y] = - [Y, X].

E2 > 

LieBracketSkewSymmetric := proc(X, Y)

E2 > 

local a;

E2 > 

a := LieBracket(X, Y) &plus LieBracket(Y, X);

E2 > 

Tools:-DGinfo(a, "CoefficientSet");

E3 > 

end:

 

[ii]  [X, f*Y] = X(f)*Y + f* [X, Y].

E2 > 

LieBracketDerivation := proc(X, Y, f)

E2 > 

local a, b, b1, b2, c;

E2 > 

a := LieBracket(X, f &mult Y);

E2 > 

b1 := LieDerivative(X, f) &mult Y;

E2 > 

b2 := f &mult LieBracket(X, Y);

E2 > 

b := b1 &plus b2;

E2 > 

c := a &minus b;

E2 > 

Tools:-DGinfo(c, "CoefficientSet");

E3 > 

end:

 

[iii]  [X, [Y, Z]] + [Z, [X, Y]] + [ Y, [Z, X]] = 0.

E2 > 

LieBracketJacobi := proc(X, Y, Z)

E2 > 

local a, a1, a2, a3;

E2 > 

a1 := LieBracket(X, LieBracket(Y, Z));

E2 > 

a2 := LieBracket(Z, LieBracket(X, Y));

E2 > 

a3 := LieBracket(Y, LieBracket(Z, X));

E2 > 

a := a1 &plus a2 &plus a3;

E2 > 

Tools:-DGinfo(a,"CoefficientSet");

E2 > 

end:

 

We use DGinfo/ObjectType to combine [iv] and [v] into one identity.

[iv]  L_X (alpha &w beta) = L_X(alpha) &w beta + alpha &w L_X(beta), where alpha and beta are differential forms.

[v]  L_X (T &t S) = L_X(T) &t S + S &t L_X(T), where T and S are tensor fields.

E2 > 

LieDerivativeDerivation := proc(X, T, S)

E2 > 

local DGobject, M, a, b, b1, b2, c;

E2 > 

DGobject := Tools:-DGinfo(T, "ObjectType");

E2 > 

if DGobject = "form" then

E2 > 

M := (x, y) -> x &wedge y;

E2 > 

else

E2 > 

M := (x, y) -> x &tensor y;

E2 > 

fi;

E2 > 

a := LieDerivative(X, M(T, S));

E2 > 

b1 := M(LieDerivative(X, T), S);

E2 > 

b2 := M(T, LieDerivative(X, S));

E2 > 

b := b1 &plus b2;

E2 > 

c := a &minus b;

E2 > 

Tools:-DGinfo(c, "CoefficientSet");

E3 > 

end:

 

[vi]  L_X(Hook(Y, alpha)) = Hook([X, Y], alpha) + Hook(Y, L_X(alpha))

M > 

LieDerivativeHook := proc(X, Y, alpha)

M > 

local a, a1, b, b1, b2, b3, b4, c;

M > 

a1 := Hook(Y, alpha);

M > 

a := LieDerivative(X, a1);

M > 

b1 := LieBracket(X, Y);

M > 

b2 := Hook(b1, alpha);

M > 

b3 := LieDerivative(X, alpha);

M > 

b4 := Hook(Y, b3);

M > 

b := b2 &plus b4;

M > 

c := a &minus b;

M > 

Tools:-DGinfo(c, "CoefficientSet");

E3 > 

end:

 

[vii]  L_X L_Y(T) - L_Y L_X(T) = L_[X, Y] T, where T is a vector, differential form, or tensor field.

E2 > 

LieDerivativeCommutator := proc(X, Y, T)

E2 > 

local a, a1, a2, b, b1, c;

E2 > 

a1 := LieDerivative(X, LieDerivative(Y, T));

E2 > 

a2 := LieDerivative(Y, LieDerivative(X, T));

E3 > 

a := a1 &minus a2;

E2 > 

b1 := LieBracket(X, Y);

E2 > 

b := LieDerivative(b1, T);

E2 > 

c := a &minus b;

E2 > 

Tools:-DGinfo(c, "CoefficientSet");

E3 > 

end:

 

Here is some test data.

E3 > 

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

frame name: E3

(8.2.1.1)
E3 > 

X1 := evalDG(y*z*D_x - (x^2 + y^2)*D_y + 3*D_z);

X1yzD_x+x2y2D_y+3D_z

(8.2.1.2)
E3 > 

X2 := evalDG(D_x + x^2*D_y - x*y*D_z);

X2D_x+x2D_yxyD_z

(8.2.1.3)
E3 > 

X3 := evalDG(z^2*D_x - x^2*D_y + D_z);

X3z2D_xx2D_y+D_z

(8.2.1.4)
E3 > 

f := x*y/z^2;

fxyz2

(8.2.1.5)
E3 > 

alpha1 := evalDG(x^2*dx &w dy - (y/z)*dy &w dz);

α1x2dx`^`dyydy`^`dzz

(8.2.1.6)
E3 > 

alpha2 := evalDG(z*dx + x*dy);

α2zdx+xdy

(8.2.1.7)
E3 > 

T1 := evalDG(z*dx &t D_y + x^2*dy &t D_z);

T1zdxD_y+x2dyD_z

(8.2.1.8)
E3 > 

T2 := evalDG(z*D_x &t D_y + x^2*D_z &t D_z);

T2zD_xD_y+x2D_zD_z

(8.2.1.9)

 

Here are some tests of the identities.

E3 > 

LieBracketSkewSymmetric(X1, X2);

0

(8.2.1.10)
E3 > 

LieBracketDerivation(X1, X2, f);

0

(8.2.1.11)
E3 > 

LieBracketJacobi(X1, X2, X3);

0

(8.2.1.12)
E3 > 

LieDerivativeDerivation(X1, alpha1, alpha2);

0

(8.2.1.13)
E3 > 

LieDerivativeDerivation(X2, T1, T2);

0

(8.2.1.14)
E3 > 

LieDerivativeHook(X1, X2, alpha1);

0

(8.2.1.15)
E3 > 

LieDerivativeCommutator(X1, X2, alpha1);

0

(8.2.1.16)
E3 > 

LieDerivativeCommutator(X2, X3, T2);

0

(8.2.1.17)

Exercise 3

 

[i]  Write a program, DerivedDistribution, whose input is a list of vector fields V and which returns a basis for V1 = V + [V, V], the space of vectors spanned by the elements of V and all possible brackets of elements of V.  The distribution of vectors spanned by V1 is called the derived distribution of V.

[ii]  Write a program, CheckIntegrable, whose input is a list of vector fields V and which returns true or false according to whether the list of vectors define an integrable distribution or not.  If false, then also return the pair of vectors whose bracket is not in V.

[iii]  Test your programs on the distributions Va, Vb, Vc, Vd.  If the distribution is not integrable, calculate the derived distribution and test it's integrability.

 

E3 > 

with(DifferentialGeometry):

DGsetup([x, y, z, u, v, w], E6):

E6 > 

Va := evalDG([z*u*D_x - 2*x*z*D_z + 2*v*x*D_v, z*D_y - 2*y*D_v, -z*D_z + u*D_u + v*D_v]);

VazuD_x2xzD_z+2vxD_v,zD_y2yD_v,zD_z+uD_u+vD_v

(8.3.1)
E6 > 

Vb := evalDG([D_x, D_y + x*D_z]);

VbD_x,D_y+xD_z

(8.3.2)
E6 > 

Vc := evalDG([x*D_u - y*D_v, y*D_u + x*D_v, -x*D_x - y*D_y + z*D_v, y*D_x - x*D_y - z*D_u]);

VcxD_uyD_v,yD_u+xD_v,xD_xyD_y+zD_v,yD_xxD_yzD_u

(8.3.3)
E6 > 

Vd := evalDG([D_u, D_x + z*D_y + u*D_z + exp(y)*D_v + exp(y)*v*D_w]);

VdD_u,D_x+zD_y+uD_z+ⅇyD_v+ⅇyvD_w

(8.3.4)

 

Solution

 

Part [i]

M > 

DerivedDistribution := proc(V)

M > 

local V1, V2, p, i, j, k;

M > 

p := nops(V);

M > 

V1 := Array(1 .. p*(p + 1)/2);

M > 

for i to p do

M > 

V1[i] := V[i]

M > 

od;

M > 

k := p;

M > 

for i to p do

M > 

for j from i + 1 to p do

M > 

k := k + 1;

M > 

V1[k] := LieBracket(V[i], V[j]);

M > 

od;

M > 

od;

M > 

V2 := convert(V1, list);

M > 

DGbasis(V2);

E6 > 

end:

 

Part [ii]

M > 

CheckIntegrable := proc(V1)

M > 

local p, i, j, ans, Z;

M > 

p := nops(V1):

M > 

for i to p do

M > 

for j from i + 1 to p do

M > 

Z := LieBracket(V1[i], V1[j]);

M > 

ans := GetComponents(Z, V1);

M > 

if ans = [] then return(false, i, j) fi;

M > 

od;

M > 

od;

M > 

true;

E6 > 

end:

 

Example 1.  The distribution of vectors Va is integrable.

E6 > 

CheckIntegrable(Va);

true

(8.3.1.1)

 

Example 2.  The distribution of vectors Vb is not integrable.  The derived distribution of Vb is integrable.

E6 > 

CheckIntegrable(Vb);

false,1,2

(8.3.1.2)
E6 > 

Vb1 := DerivedDistribution(Vb);

Vb1D_x,D_y+xD_z,D_z

(8.3.1.3)
E6 > 

CheckIntegrable(Vb1);

true

(8.3.1.4)

 

Example 3.  The distribution of vectors Vc is integrable.

E6 > 

CheckIntegrable(Vc);

true

(8.3.1.5)

 

Example 4.  The distribution of vectors Vd is not integrable.  We must calculate several derived distributions before arriving at an integrable one.

E6 > 

CheckIntegrable(Vd);

E6 > 

Vd1 := DerivedDistribution(Vd);

Vd1D_u,D_x+zD_y+uD_z+ⅇyD_v+ⅇyvD_w,D_z

(8.3.1.6)
E6 > 

CheckIntegrable(Vd1);

false,2,3

(8.3.1.7)
E6 > 

Vd2 := DerivedDistribution(Vd1);

Vd2D_u,D_x+zD_y+uD_z+ⅇyD_v+ⅇyvD_w,D_z,D_y

(8.3.1.8)
E6 > 

CheckIntegrable(Vd2);

false,2,4

(8.3.1.9)
E6 > 

Vd3 := DerivedDistribution(Vd2);

Vd3D_u,D_x+zD_y+uD_z+ⅇyD_v+ⅇyvD_w,D_z,D_y,ⅇyD_v+ⅇyvD_w

(8.3.1.10)
E6 > 

CheckIntegrable(Vd3);

true

(8.3.1.11)

Exercise 4

 

Show that the vector fields Gamma define a real 4 dimensional Lie algebra (with Lie bracket given by LieBracket).

 

E6 > 

with(DifferentialGeometry):

E6 > 

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

E6 > 

Gamma := evalDG([D_w, D_x, x*D_w + D_y, (1/2*y^2 + 2*w)*D_w + (y + x)*D_x + y*D_y + D_z]);

frame name: E4

ΓD_w,D_x,xD_w+D_y,y22+2wD_w+y+xD_x+yD_y+D_z

(8.4.1)

 

Solution

 

We have to show that the Lie bracket of Gamma[i] and Gamma[j] is a constant linear combination of the vectors in Gamma.

 

The easiest way to do this is with the following procedure.

E4 > 

F := (i,j) -> GetComponents(LieDerivative(Gamma[i], Gamma[j]), Gamma, method = "real");

Fi,j→DifferentialGeometry:-LinearComboDifferentialGeometry:-LieDerivativeΓi,Γj,Γ,method=real

(8.4.1.1)
E4 > 

Answer := Matrix(4, 4, (i, j) -> F(i, j));

Since all the components are constant, we conclude that the vector fields Gamma define a 4 dimensional Lie algebra.

Exercise 5

 

Find a set of 4 pointwise linearly independent vector fields which commute with the list of vector fields Gamma defined in Exercise 4.

This (Lie algebra) of vector fields is sometimes referred to as the reciprocal Lie algebra to the Lie algebra of vector fields Gamma.

 

E4 > 

with(DifferentialGeometry): DGsetup([w, x, y, z], E4);

frame name: E4

(8.5.1)
E4 > 

Gamma := evalDG([D_w, D_x, x*D_w + D_y, (1/2*y^2 + 2*w)*D_w + (y + x)*D_x + y*D_y + D_z]);

ΓD_w,D_x,xD_w+D_y,y22+2wD_w+y+xD_x+yD_y+D_z

(8.5.2)

 

Solution

 

E4 > 

vars:=x, y, z, w;

varsx,y,z,w

(8.5.1.1)
E4 > 

PDETools[declare](a1(vars), a2(vars), a3(vars), a4(vars));

a1x,y,z,wwill now be displayed asa1

a2x,y,z,wwill now be displayed asa2

a3x,y,z,wwill now be displayed asa3

a4x,y,z,wwill now be displayed asa4

(8.5.1.2)
E4 > 

Z := DGzip([a1(vars), a2(vars), a3(vars), a4(vars)], [D_x, D_y, D_z, D_w], "plus");

Za4D_w+a1D_x+a2D_y+a3D_z

(8.5.1.3)
E4 > 

EQ := {seq(Tools:-DGinfo(LieBracket(Z, X), "CoefficientSet"), X = Gamma)};

EQ12a4wy22a4wwa4xya4xxya4ya4z+2a4+a2y,12a1wy22a1wwa1xya1xxya1ya1z+a1+a2,12a2wy22a2wwa2xya2xxya2ya2z+a2,12a3wy22a3wwa3xya3xxya3ya3z,a4x,a2x,a1x,a3x,a3w,a2w,a1w,a4w,xa4wa4y+a1,xa3wa3y,xa2wa2y,xa1wa1y

(8.5.1.4)
E4 > 

EQ := map(op, EQ);

EQ12a4wy22a4wwa4xya4xxya4ya4z+2a4+a2y,12a1wy22a1wwa1xya1xxya1ya1z+a1+a2,12a2wy22a2wwa2xya2xxya2ya2z+a2,xa4wa4y+a1,xa3wa3y,xa2wa2y,xa1wa1y,a4x,a3w,a2w,a1w,a4w,a2x,a1x,a3x,12a3wy22a3wwa3xya3xxya3ya3z

(8.5.1.5)
E4 > 

soln := pdsolve(EQ, {a1(vars), a2(vars), a3(vars), a4(vars)});

solna1=_C2z+_C3ⅇz,a4=y_C2z+_C3ⅇz+_C4ⅇ2z,a3=_C1,a2=_C2ⅇz

(8.5.1.6)
E4 > 

newZ := eval(Z, soln);

newZy_C2z+_C3ⅇz+_C4ⅇ2zD_w+_C2z+_C3ⅇzD_x+_C2ⅇzD_y+_C1D_z

(8.5.1.7)
E4 > 

Answer := [seq(Tools:-DGmap(1, diff, newZ, cat(_C, i)), i = 1 .. 4)];

AnswerD_z,yzⅇzD_w+zⅇzD_x+ⅇzD_y,yⅇzD_w+ⅇzD_x,ⅇ2zD_w

(8.5.1.8)

 

Let's check this result.

E4 > 

Matrix(4, 4, (i, j)->LieBracket(Gamma[i], Answer[j]));

Exercise 6

 

Find the Killing vectors for the following metrics.

 

E4 > 

with(DifferentialGeometry):

 

[i]  This is the metric for a two-dimensional space of constant curvature.

E4 > 

DGsetup([u, v], M2);

frame name: M2

(8.6.1)
M2 > 

g1 := evalDG( 1/(1 + k/4*(u^2 + v^2))^2*(du &t du + dv &t dv));

g116dudu4+ku2+kv22+16dvdv4+ku2+kv22

(8.6.2)

 

[ii]  This is the Godel solution to the Einstein equations.

M2 > 

DGsetup([x ,y, z, t], M4);

frame name: M4

(8.6.3)
M4 > 

tau := evalDG(dt + exp(x)*dz);

τⅇxdz+dt

(8.6.4)
M4 > 

g2 := evalDG(dx &t dx + dy &t dy + 1/2*exp(2*x)*dz &t dz - tau &t tau);

g2dxdx+dydy12ⅇ2xdzdzⅇxdzdtⅇxdtdzdtdt

(8.6.5)

 

Solution

 

Part [i]

M4 > 

ChangeFrame(M2):

 

Define a general vector field X.

M2 > 

PDEtools[declare](a(u, v), b(u, v), quiet);

M2 > 

X := evalDG(a(u, v)*D_u + b(u, v)*D_v);

XaD_u+bD_v

(8.6.1.1)

 

Calculate the Lie derivative of the metric g1 with respect to X.

M2 > 

LD := LieDerivative(X, g1);

LD324au+auku2+aukv22aku2bkvdudu4+ku2+kv23+16bu+avdudv4+ku2+kv22+16bu+avdvdu4+ku2+kv22+324bv+bvku2+bvkv22aku2bkvdvdv4+ku2+kv23

(8.6.1.2)

 

Extract the coefficients of the Lie derivative LD.

M2 > 

KillingEq := Tools:-DGinfo(LD, "CoefficientSet");

KillingEq324bv+bvku2+bvkv22aku2bkv4+ku2+kv23,324au+auku2+aukv22aku2bkv4+ku2+kv23,16bu+av4+ku2+kv22

(8.6.1.3)

 

Solve for the unknown coefficients a(u, v), b(u, v).

M2 > 

soln := pdsolve(KillingEq, {a(u, v), b(u, v)});

solna=4k2uv_C3+u2v2_C12v_C2k+4_C12k,b=4ku2+kv2_C3+_C1v+_C2u

(8.6.1.4)
M2 > 

newX := eval(X, soln);

newX4k2uv_C3+u2v2_C12v_C2k+4_C1D_u2k+4ku2+kv2_C3+_C1v+_C2uD_v

(8.6.1.5)

 

We use the DGmap utility to generate the 3 Killing vectors associated to the constants _C1, _C2, _C3.

M2 > 

X1 := Tools:-DGmap(1, diff, newX, _C1);

X1k22+u22v22D_u+uvD_v

(8.6.1.6)
M2 > 

X2 := Tools:-DGmap(1, diff, newX, _C2);

X2vD_u+uD_v

(8.6.1.7)
M2 > 

X3 := Tools:-DGmap(1, diff, newX, _C3);

X32uvD_u+u2k2v2D_v

(8.6.1.8)

 

The Killing vectors for the metric g1 are

M2 > 

Answer1 := [X1, X2, X3];

AnswerAk22+u22v22D_u+uvD_v,vD_u+uD_v,2uvD_u+u2k2v2D_v

(8.6.1.9)

 

Part [ii]

M2 > 

ChangeFrame(M4):

M4 > 

vars := x, y ,z, t:

M4 > 

unknowns := [a1, a2, a3, a4](vars):

M4 > 

PDEtools[declare](unknowns, quiet);

M4 > 

X := DGzip(unknowns, [D_x, D_y, D_z, D_t], "plus");

Xa1D_x+a2D_y+a3D_z+a4D_t

(8.6.1.10)
M4 > 

LD := LieDerivative(X, g2);

LD2a1xdxdx+a2x+a1ydxdy+a4xⅇx12a3xⅇ2x+a1zdxdz+a4xa3xⅇx+a1tdxdt+a2x+a1ydydx+2a2ydydy+a4yⅇx+a2z12a3yⅇ2xdydz+a4y+a2ta3yⅇxdydt+a4xⅇx12a3xⅇ2x+a1zdzdx+a4yⅇx+a2z12a3yⅇ2xdzdy+2a4zⅇxa3zⅇ2xa1ⅇ2xdzdz+a4tⅇxa4z12a3tⅇ2xa3zⅇxa1ⅇxdzdt+a4xa3xⅇx+a1tdtdx+a4y+a2ta3yⅇxdtdy+a4tⅇxa4z12a3tⅇ2xa3zⅇxa1ⅇxdtdz+2a4t2a3tⅇxdtdt

(8.6.1.11)
M4 > 

KillingEq := Tools:-DGinfo(LD, "CoefficientSet");

KillingEq2a4zⅇxa3zⅇ2xa1ⅇ2x,a2x+a1y,a4yⅇx+a2z12a3yⅇ2x,a4xa3xⅇx+a1t,a4xⅇx12a3xⅇ2x+a1z,a4y+a2ta3yⅇx,2a1x,2a2y,2a4t2a3tⅇx,a4tⅇxa4z12a3tⅇ2xa3zⅇxa1ⅇx

(8.6.1.12)
M4 > 

soln := pdsolve(KillingEq, convert(unknowns, set));

solna2=_C1,a1=_C2z+_C3,a3=_C2z22_C3z+_C2ⅇ2x+_C5,a4=2_C2ⅇx+_C4

(8.6.1.13)
M4 > 

newX := eval(X, soln);

newX_C2z+_C3D_x+_C1D_y+_C2z22_C3z+_C2ⅇ2x+_C5D_z+2_C2ⅇx+_C4D_t

(8.6.1.14)

 

We use the DGmap utility to generate the 3 Killing vectors associated to the constants _C1, ..., _C5.

 

The Killing vectors for the Godel metric are

M4 > 

Answer2 := [seq(Tools:-DGmap(1, diff, newX, _C||i), i = 1 .. 5)];

Answer2D_y,zD_x+z22+ⅇ2xD_z2ⅇxD_t,D_xzD_z,D_t,D_z

(8.6.1.15)

Exercise 7

 

In this exercise, we consider the inverse problem to the problem of calculating the Killing vectors for a given metric.  Here we are given a Lie algebra of vector fields Gamma and the problem is to find the most general metric which is invariant with respect to Gamma.

 

The following three examples are taken from Petrov's book Einstein Spaces.  Note that the metrics given by Petrov are not the most general invariant metrics for the given Lie algebra of vector fields.

M4 > 

with(DifferentialGeometry): DGsetup([x1, x2, x3, x4], P):

 

[i]  Find the most general metric which is invariant under Lie differentiation with respect to the Lie algebra of vector fields Gamma1 [Einstein Spaces -- equation 32.8].

 

P > 

Gamma1:= evalDG([exp(-x3)*D_x1 - exp(-x3)*x2^2*D_x2 - 2*exp(-x3)*x2*D_x3, D_x3, exp(x3)*D_x2, D_x1]);

Γ1ⅇx3D_x1ⅇx3x22D_x22ⅇx3x2D_x3,D_x3,ⅇx3D_x2,D_x1

(8.7.1)

 

[ii]  Find the most general metric which is invariant under Lie differentiation with respect to the Lie algebra of vector fields Gamma2 [Einstein Spaces -- equation 33.14].

 

P > 

Gamma2 := evalDG([D_x2, D_x3, x3*D_x2 - exp(x1)*D_x3, D_x1 + x2*D_x2 + x3*D_x3, exp(-x1)*D_x1 + (k*x1 - 1/2*exp(-2*x4))*D_x2 + exp(-x1)*D_x4]);

Γ2D_x2,D_x3,x3D_x2ⅇx1D_x3,D_x1+x2D_x2+x3D_x3,ⅇx1D_x1+kx112ⅇ2x4D_x2+ⅇx1D_x4

(8.7.2)

 

[iii]  Find the most general metric which is invariant under Lie differentiation with respect to the Lie algebra of vector fields Gamma3 [Einstein Spaces -- equation 33.45].

 

P > 

Gamma3 := [D_x1, D_x2, (x1^2 - x2^2 - x3^2 + x4^2)*D_x1 + 2*x1*x2*D_x2 + 2*x1*x3*D_x3 + 2*x1*x4*D_x4, 2*x1*x2*D_x1 + (x2^2 - x1^2 - x3^2 + x4^2)*D_x2 + 2*x3*x2*D_x3 + 2*x4*x2*D_x4, x2*D_x1 - x1*D_x2, x1*D_x1 + x2*D_x2 + x3*D_x3 + x4*D_x4];

Γ3D_x1,D_x2,x12x22x32+x42D_x1+2x1x2D_x2+2x1x3D_x3+2x1x4D_x4,2x1x2D_x1+x22x12x32+x42D_x2+2x3x2D_x3+2x4x2D_x4,x2D_x1x1D_x2,x1D_x1+x2D_x2+x3D_x3+x4D_x4

(8.7.3)

 

Solutions

 

We remark that to solve this problem it is helpful to first calculate the Gamma invariant functions and the Gamma invariant 1-forms.

 

Part [i]  First, we calculate the invariant functions -- the invariant tensors are always a module over the ring of invariant functions.

P > 

vars := x1, x2, x3, x4;

varsx1,x2,x3,x4

(8.7.1.1)
P > 

EQ1 := {seq(LieDerivative(X, f(vars)), X = Gamma1)};

EQ1ⅇx3fx1ⅇx3x22fx22ⅇx3x2fx3,fx1,fx3,ⅇx3fx2

(8.7.1.2)
P > 

pdsolve(EQ1);

fx1,x2,x3,x4=_F1x4

(8.7.1.3)

 

Now we calculate the invariant 1-forms. We already know that because x4 is an invariant dx4 will be an invariant 1-form. Are there other invariant 1-forms?

First we create the general 1-form alpha.

P > 

unknowns := seq(a||i(vars), i = 1 .. 4):

P > 

PDEtools[declare](unknowns, quiet);

P > 

alpha := DGzip([unknowns], [dx1, dx2, dx3, dx4], "plus");

αa1dx1+a2dx2+a3dx3+a4dx4

(8.7.1.4)

 

Lie differentiate alpha with respect to each vector in Gamma1 and get the coefficients of the result.

P > 

EQ2 := {seq(Tools:-DGinfo(LieDerivative(X, alpha), "CoefficientSet"), X = Gamma1)}:

P > 

InvariantOneFormEquations := map(op, EQ2);

InvariantOneFormEquationsⅇx3a1x2,ⅇx3a2x2,ⅇx3a4x2,ⅇx32a3+2x2a2a2x1+x22a2x2+2x2a2x3,a2x3,a3x1,a3x3,a2x1,a1x1,a1x3,ⅇx3a1x1+x22a1x2+2x2a1x3,a4x1,a4x3,ⅇx3a4x1+x22a4x2+2x2a4x3,ⅇx3a2+a3x2,ⅇx32x2a3+x22a2a1+a3x1x22a3x22x2a3x3

(8.7.1.5)
P > 

pdsolve(InvariantOneFormEquations);

a1=0,a4=_F1x4,a3=x2_F2x4,a2=_F2x4

(8.7.1.6)

 

We conclude that a basis for the invariant 1-forms is Omega = [dx2 - x2dx3, dx4].  Let's check this result.

 

P > 

Omega := evalDG([dx2 - x2*dx3, dx4]);

Ωdx2x2dx3,dx4

(8.7.1.7)
P > 

Matrix(2, 4, (i, j) -> LieDerivative(Gamma1[j], Omega[i]));

 

Now we calculate the invariant symmetric, rank 2 covariant tensors.  We already have three such tensors generated from the invariant 1-forms.  These are listed in the set S0.  Are there more invariant symmetric tensors?

P > 

S0 := Tensor:-GenerateSymmetricTensors(Omega, 2);

S0dx2dx2x2dx2dx3x2dx3dx2+x22dx3dx3,dx2dx42x2dx3dx42+dx4dx22x2dx4dx32,dx4dx4

(8.7.1.8)

 

First, we create the general invariant symmetric tensor.

P > 

unknowns := seq(b||i(vars), i = 1 .. 10):

P > 

PDEtools[declare](unknowns, quiet);

P > 

S := Tensor:-GenerateSymmetricTensors([dx1, dx2, dx3, dx4], 2):

P > 

g := DGzip([unknowns], S, "plus");

gb1dx1dx1+b2dx1dx22+b3dx1dx32+b4dx1dx42+b2dx2dx12+b5dx2dx2+b6dx2dx32+b7dx2dx42+b3dx3dx12+b6dx3dx22+b8dx3dx3+b9dx3dx42+b4dx4dx12+b7dx4dx22+b9dx4dx32+b10dx4dx4

(8.7.1.9)

 

Lie differentiate g with respect to each vector in Gamma1 and get the coefficients of the result.

P > 

EQ3 := {seq(Tools:-DGinfo(LieDerivative(X, g), "CoefficientSet"), X = Gamma1)}:

P > 

InvariantSymmetricTensorEq := map(op, EQ3);

InvariantSymmetricTensorEqⅇx34x2b8+x22b6b3+b8x1x22b8x22x2b8x3,12b9x1,12b4x1,12b2x1,b8x1,ⅇx3b5x2,b8x3,12b9x3,12b6x1,12ⅇx32x2b3x22b2+2b1b3x1+x22b3x2+2x2b3x3,12ⅇx3b2x2,12b6x3,12ⅇx32b9+2x2b7b7x1+x22b7x2+2x2b7x3,12b7x1,12b3x3,b10x1,b10x3,ⅇx3b10x2,b5x1,ⅇx3b1x1+x22b1x2+2x2b1x3,12ⅇx3b2+b3x2,12ⅇx3b7x2,12ⅇx32x2b9+x22b7b4+b9x1x22b9x22x2b9x3,12b3x1,12b2x3,12b4x3,ⅇx32b6+4x2b5b5x1+x22b5x2+2x2b5x3,12b7x3,ⅇx3b6+b8x2,ⅇx3b1x2,ⅇx3b10x1+x22b10x2+2x2b10x3,12ⅇx32b3+2x2b2b2x1+x22b2x2+2x2b2x3,b1x1,b1x3,12ⅇx3b4x2,12ⅇx3b7+b9x2,12ⅇx3b4x1+x22b4x2+2x2b4x3,b5x3,12ⅇx34b82x22b5+b2b6x1+x22b6x2+2x2b6x3,12ⅇx32b5+b6x2

(8.7.1.10)
P > 

soln := pdsolve(InvariantSymmetricTensorEq);

solnb8=x22_F3x414_F4x4,b7=_F2x4,b1=0,b4=0,b10=_F1x4,b5=_F3x4,b6=2x2_F3x4,b2=_F4x4,b3=x2_F4x4,b9=x2_F2x4

(8.7.1.11)

 

Since the solution depends upon 4 functions of the invariant x4, we conclude that there is one invariant symmetric tensor which is independent of the invariant symmetric tensors generated by the invariant 1-forms.

P > 

newg := Tools:-DGsimplify(eval(g, soln));

newg12_F4x4dx1dx212x2_F4x4dx1dx3+12_F4x4dx2dx1+_F3x4dx2dx2x2_F3x4dx2dx3+12_F2x4dx2dx412x2_F4x4dx3dx1x2_F3x4dx3dx2+x22_F3x414_F4x4dx3dx312x2_F2x4dx3dx4+12_F2x4dx4dx212x2_F2x4dx4dx3+_F1x4dx4dx4

(8.7.1.12)
P > 

g1 := Tools:-DGsimplify(eval(newg, {_F1(x4) = 1, _F2(x4) = 0, _F3(x4) = 0, _F4(x4) = 0}));

g1dx4dx4

(8.7.1.13)
P > 

g2 := Tools:-DGsimplify(eval(newg, {_F1(x4) = 0, _F2(x4) = 1, _F3(x4) = 0, _F4(x4) = 0}));

g2dx2dx42x2dx3dx42+dx4dx22x2dx4dx32

(8.7.1.14)
P > 

g3 := Tools:-DGsimplify(eval(newg, {_F1(x4) = 0, _F2(x4) = 0, _F3(x4) = 1, _F4(x4) = 0}));

g3dx2dx2x2dx2dx3x2dx3dx2+x22dx3dx3

(8.7.1.15)
P > 

g4 := Tools:-DGsimplify(eval(newg, {_F1(x4) = 0, _F2(x4) = 0, _F3(x4) = 1, _F4(x4) = 1}));

g4dx1dx22x2dx1dx32+dx2dx12+dx2dx2x2dx2dx3x2dx3dx12x2dx3dx2+x2214dx3dx3

(8.7.1.16)

 

We have that g1, g2, g3 are all symmetric products of the invariant 1-forms and g4 is the new invariant tensor (which can be simplified).

P > 

Answer1 := [op(S0), g4 &minus S0[1]];

Answer1dx2dx2x2dx2dx3x2dx3dx2+x22dx3dx3,dx2dx42x2dx3dx42+dx4dx22x2dx4dx32,dx4dx4,dx1dx22x2dx1dx32+dx2dx12x2dx3dx12dx3dx34

(8.7.1.17)

 

Check that all the tensors in Answer1 are invariant.

P > 

Matrix(4, 4, (i, j) -> LieDerivative(Gamma1[i], Answer1[j]));

 

Summary:  The most general invariant metric is

P > 

g := DGzip([a1(x4), a2(x4), a3(x4), a4(x4)], Answer1, "plus");

g12a4x4dx1dx212a4x4x2dx1dx3+12a4x4dx2dx1+a1x4dx2dx2a1x4x2dx2dx3+12