Affine.m

Andrew D. Lewis

15 August 1998

1 Product outline

Ha! Product! I like that… Anyway, this Mathematica package is used for manipulating affine connections, and things associated with affine connections. In this documentation, optional arguments are denoted in italics.

Conventions for affine connections are those of Kobayashi and Nomizu [1]. If you need to learn about affine differential geometry, you will not be able to do it from this manual.

2 The functions defined by Affine.m

Here’s what you get, in alphabetical order. I will only give indexing conventions once. Thus, if you feel there is possible ambiguity regarding the order of indices, look the other functions: the answer may be there.

AlongCurve[A,Conn,c,Type,Deriv] A is a tensor field of type Type (thus

Type is a list of 2 nonnegative integers whose sum is strictly positive). c is a list of functions of t (e.g., x1[t],...,xn[t]) specifying a curve, Conn are the Christoffel symbols of an affine connection. What is returned is the components of a tensor field along c which is the covariant derivative of A. The formula looks like

\frac{∂A_{i_{r+1}···i_{r+s}}^{i_{1}···i_{r}}}{∂x^{i_{r+s+1}}} ċ^{i_{r+s+1}}+∑_{k=1}^{r} Γ_{i_{r+s+1}m}^{i_{k}}A_{i_{r+1}···i_{r+s}}^{i_{1}···m···i_{r}} ċ^{i_{r+s+1}}−∑_{l=1}^{s} Γ_{i_{r+s+1}i_{l}}^{m}A_{i_{r+1}···m···i_{r+s}}^{i_{1}···i_{r}} ċ^{i_{r+s+1}}.

CovariantDerivative[X,Y,Conn,x,Deriv] The covariant derivative of

the vector field Y with respect to Y. Thus the result is a vector. Conn contains the connection coefficients. Thus it should be a triply indexed array whose coefficient Conn[[i]][[j]][[k]] is defined by

∇_{\frac{∂}{∂x^{j}}} \frac{∂}{∂x^{k}} = Γ_{jk}^{i} \frac{∂}{∂x^{i}} .

The coordinate vector is x.

CovariantDifferential[A,Conn,x,Type,Deriv] The covariant differen-

tial of a tensor field Y of type Type. The coordinates are x and the connection coefficients are Conn. The coefficients of A are so that

A[[i1]][[i2]]...[[i(r+s)]] is the component

A_{i_{r+1}···i_{r+s}}^{i_{1}···i_{r}}

of A. What is returned in a tensor of type (r, s + 1) whose

[[i1]][[i2]]...[[i(r+s)]][[i(r+s+1)]] entry is

\frac{∂A_{i_{r+1}···i_{r+s}}^{i_{1}···i_{r}}}{∂x^{i_{r+s+1}}} + ∑_{k=1}^{r} Γ_{i_{r+s+1}m}^{i_{k}}A_{i_{r+1}···i_{r+s}}^{i_{1}···m···i_{r}} − ∑_{l=1}^{s} Γ_{i_{r+s+1}i_{l}}^{m}A_{i_{r+1}···m···i_{r+s}}^{i_{1}···i_{r}}.

CurvatureTensor[Conn,x,Deriv] This returns the curvature tensor of the connection with Christoffel symbols Conn in coordinates x. Thus the result is an array with four indices. The [[i]][[j]][[k]][[l]]th entry is

R_{jkl}^{i} = \frac{∂Γ_{lj}^{i}}{∂x^{k}} − \frac{∂Γ_{kj}^{i}}{∂x^{l}} + Γ_{km}^{i}Γ_{lj}^{m} − Γ_{lm}^{i}Γ_{kj}^{m}

Deriv->{Explicit,Implicit} This is an option for certain function calls which differentiate. If you select Explicit, differentiation will be explicit (the default), and if you select Implicit, differentiation will be implicit.

Grad[f,g,x,Deriv] This gives the gradient of the function f with respect to the Riemannian metric g in coordinates x.

LeviCivita[g,x,Deriv] Computes the Levi-Civita affine connection for the Riemannian metric g in coordinates x. The result is an array with three indices. Thus Conn=LeviCivita[g,x] will give

Conn[[i]][[j]][[k]] as

\frac{1}{2}g^{il} (\frac{∂g_{jl}}{∂x^{k}} + \frac{∂g_{kl}}{∂x^{j}} − \frac{∂g_{jk}}{∂x^{l}} ) .

RicciCurvature[Conn,x,Deriv] This gets you the Ricci tensor for the affine connection with Christoffel symbols Conn in coordinates x. Thus the result is a matrix whose [[i]][[j]]th entry is ∑_{k} R_{ikj}^{k} where R_{jkl}^{i} is the [[i]][[j]][[k]][[l]]th entry in the curvature tensor for

Conn.

RiemannFlat[X,g] This is a vector which is the coordinate representation for X^{♭} where X is a vector field and ♭ is the musical isomorphism associated with the Riemannian metric g.

RiemannSharp[w,g] Ummm… see the previous function…

ScalarCurvature[g,x,Deriv] Here’s the scalar curvature for the Riemannian metric g in coordinates x.

SectionalCurvature[X,Y,g,x,Deriv] This returns a scalar. You feed it

two orthonormal vector fields X and Y, a Riemannian metric g, and a coordinate vector x.

Spray[Conn,x,xdot] This returns a vector, of twice the length of the coordinate vector x, which contains the components of the geodesic spray associated with the affine connection with Christoffel symbols Conn. The velocities are xdot—thus (x,xdot) are natural tangent bundle coordinates.

SymmetricProduct[X,Y,Conn,x,Deriv] This returns the symmetric prod-

uct of vector fields X and Y (er… order does not matter) with respect to the affine connection with Christoffel symbols Conn and in coordinates x. For those not in the know, the symmetric product is defined by (X, Y) ↦ ∇_{X}Y + ∇_{Y} X.

TorsionTensor[Conn,x,] Conn are the Christoffel symbols and the result is the torsion tensor.

TransformChristoffel[Conn,x,xp,xofxp,xpofx,Deriv] Conn are the

Christoffel symbols for an affine connection in coordinates x. The result will be the Christoffel symbols in the coordinates xp. Thus x and xp should be vectors with the names of the two sets of coordinates. xofxp contains the components of x as functions of xp, and conversely for xp. Thus, of course, you need to know the coordinate change and it inverse explicitly.

References

[1] Shoshichi Kobayashi and Katsumi Nomizu. Foundations of Differential Geometry, volume I of Interscience Tracts in Pure and Applied Mathematics. Interscience Publishers, New York, 1963.