input_case nil$ % Calculation of the curvature tensor % ----------------------------------- % The program written by D.Barton and J.Fitch % from the standard REDUCE test with minor modifications on gcd,nero; operator x; % coordinates n:=3$ array g1(n,n); % metric tensor % The metric tensor is given here g1(0,0):=1-1/x(1)$ g1(1,1):=-1/(1-1/x(1))$ g1(2,2):=-x(1)^2$ g1(3,3):=-x(1)^2*sin(x(2))^2$ % Calculation of the metric tensor with upper indices g2 array g2(n,n); matrix m1(n+1,n+1),m2(n+1,n+1); for i:=0:n do for j:=0:n do m1(i+1,j+1):=g1(i,j); m2:=1/m1$ for i:=0:n do for j:=0:n do if i<=j then write g2(i,j):=m2(i+1,j+1) else g2(i,j):=m2(i+1,j+1); clear m1,m2; % Calculation of the Cristoffel symbols c1 and c2 array c1(n,n,n),c2(n,n,n); for i:=0:n do for j:=i:n do << for k:=0:n do << write c1(k,i,j):= (df(g1(i,k),x(j))+df(g1(j,k),x(i))-df(g1(i,j),x(k)))/2; if i neq j then c1(k,j,i):=c1(k,i,j) >>; for k:=0:n do << write c2(k,i,j):= for l:=0:n sum g2(k,l)*c1(l,i,j); if i neq j then c2(k,j,i):=c2(k,i,j) >> >>; % Calculation of the Riemann tensor array R(n,n,n,n); for i:=0:n do for j:=i+1:n do for k:=i:n do for l:=k+1:if k=i then j else n do << write R(i,j,k,l):= for m:=0:n sum if g1(i,m)=0 then 0 else g1(i,m)*(df(c2(m,j,l),x(k))-df(c2(m,j,k),x(l))) +for m:=0:n sum (c1(i,m,k)*c2(m,j,l)-c1(i,m,l)*c2(m,j,k)); R(j,i,l,k):=R(i,j,k,l); R(i,j,l,k):=R(j,i,k,l):=-R(i,j,k,l); if i neq k or j>l then << R(k,l,i,j):=R(l,k,j,i):=R(i,j,k,l); R(l,k,i,j):=R(k,l,j,i):=-R(i,j,k,l) >> >>; % Calculation of the Ricci tensor array Ricci(n,n); for i:=0:n do for j:=i:n do << write Ricci(i,j):= for k:=0:n sum for l:=0:n sum g2(k,l)*R(k,i,l,j); if i neq j then Ricci(j,i):=Ricci(i,j) >>; % Calculation of the scalar curvature Rs:=for i:=0:n sum for j:=i:n sum (if j=i then 1 else 2)*g2(i,j)*Ricci(i,j); % Calculation of the Einstein tensor array Einstein(n,n); for i:=0:n do for j:=i:n do << write Einstein(i,j):= Ricci(i,j)-Rs*g1(i,j)/2; if i neq j then Einstein(j,i):=Einstein(i,j) >>; clear g1,g2,c1,c2,R,Ricci,Rs,Einstein; showtime; end;