# VERIFICATION OF THE KERR SOLUTION OF EINSTEIN'S EQUATIONS
#       AND EVALUATION OF ITS CURVATURE QUANTITIES.
# ---------------------------------------------------------------
# This program was developed in 1986 for the Grad Student Rational
# Calculator program of F. J. Ernst.  Here we rewrite the program
# for Maple.  Reference:  R. Kerr,  Phys. Rev. Lett. 11, 237 (1963).
# ---------------------------------------------------------------
# We shall use a generic procedure for determining the connection
# 1-forms, _U, _V, _W, and all the curvature quantities, given the
# differentials of the basic 2-forms B[1], B[0], B[-1].
#read `dBsolve.m`;
with(share); readshare(dBsolve,fjeforms);
# Employ the FJE ENTERPRISES revision of difforms package:
#read `fjeforms.m`; with(fjeforms):
readshare(fjeforms,fjeforms): with(fjeforms);
# Because of its frequent occurrence in denominators, it is
# convenient to express things in terms of the complex field
# rho := r + I*a*cos(theta).  The shear turns out to be equal
# to the reciprocal of rho.
defcomplex(rho):
# a and M are the rotation and mass parameters, respectively,
# while u,r,theta and phi are the coordinates used by Kerr.
defform(a=const,M=const,
         d(rho)=d(r)-I*a*sin(theta)*d(theta),
         d(cc(rho))=d(r)+I*a*sin(theta)*d(theta)):
# Introduce the null tetrad employed by Kerr.
k := expand(d(s) - a * sin(theta)^2 * d(phi));
m := expand(d(r) - a * sin(theta)^2 * d(phi) 
     	- (1 - 2*M*re(rho)/( rho * cc(rho)))*k/2);
t := expand((1/sqrt(2))*rho*(d(theta)+I*sin(theta)*d(phi)));
# Evaluate the basic two-forms:  See Eqs. (8) in J. Math.
# Phys. 15, 1409 (1974) or Eqs. (2) in Appendix B of
# J. Math. Phys. 19, 489 (1978).
B[1] := expand(k &^ t);
B[0] := expand(k &^ m + t &^ cc(t));
B[-1] := expand(m &^ cc(t));
# Evaluate the differentials of the basic two-forms:
dB[1] := expand(d(B[1]));
dB[0] := expand(d(B[0]));
dB[-1] := expand(d(B[-1]));
# Express everything in terms of the null tetrad.
# Of course, the computer can be used to solve
# for the coordinate differentials, if desired.
# Here we just worked them out by hand.
k := 'k':
m := 'm':
t := 't':
defcomplex(t):
cos(theta):=im(rho)/a:
defform(k=1,m=1,t=1):
# We need the coordinate differentials in terms of
# the null tetrad, k, m, t, cc(t).
d(theta) := sqrt(2)*re(t/rho):
d(phi) := sqrt(2)*im(t/rho)/sin(theta):
d(s) := k + a * sin(theta)^2 * d(phi):
d(r) := m + a * sin(theta)^2 * d(phi)
    + (1 - 2*M*re(rho)/(rho*cc(rho)))*k/2:
# to express dB in terms of the null tetrad.
# The differentials of B[1], B[0], B[-1] are given by
dB[1] := simpform(simpform(expand(dB[1])));
dB[0] := simpform(simpform(expand(dB[0])));
dB[-1] := simpform(simpform(expand(dB[-1])));
# Generic code used from here on is in the file 'dBsolve.m'
# The procedure 'dBsolve' returns the complex connection
# forms v,u,w and all the curvature quantities, which
# are computed from the three 3-forms dB[1],dB[0],dB[-1]
# expressed in terms of a null tetrad { k,m,t,cc(t) }.
dBsolve(dB);
# The scalar curvature R and all components of the tracefree
# Ricci tensor S[i,j] vanish, while (in Kerr's tetrad)
# only C[2] and C[1] vanish.  By means of a null rotation
# about B[1], C[-1] and C[-2] can be made to vanish as well,
# showing that the Kerr metric is of Petrov type D.
quit
