/**********************************************************************/ /* Maxima program for "Absolute quantum gravity (AQG)" to verify the linearity of the Ricci tensor with respect to the subset of 10 partial derivatives diff(g00,x0,1), diff(g10,x0,1), diff(g20,x0,1), diff(g30,x0,1), diff(g11,x0,2), diff(g22,x0,2), diff(g33,x0,2), diff(g21,x0,2), diff(g31,x0,2), diff(g32,x0,2). Public domain, by David Parker, daveparker@pgu.org Version 1, 2026-02-25. Command line used to run this file under Windows (the command lines for Macintosh and Linux should be similar): maxima -b absolutequantumgravity_v1.mac File takes about 7 seconds to run on a laptop from 2020. Homepage for Maxima at: https://maxima.sourceforge.io/index.html */ display2d: false$ /**********************************************************************/ /* Basic matrices and tensors. */ x: matrix( [ x0 ], [ x1 ], [ x2 ], [ x3 ] )$ x(alpha) := x[alpha+1,1]$ G: matrix( [ g00, g10, g20, g30 ] , [ g10, g11, g21, g31 ] , [ g20, g21, g22, g32 ] , [ g30, g31, g32, g33 ] )$ g(alpha,beta) := G[alpha+1,beta+1]$ gI: matrix( [ gI00, gI10, gI20, gI30 ] /* Inverse G. */ , [ gI10, gI11, gI21, gI31 ] , [ gI20, gI21, gI22, gI32 ] , [ gI30, gI31, gI32, gI33 ] )$ gI(alpha,beta) := gI[alpha+1,beta+1]$ depends( [ g00, g10, g20, g30, g11, g21, g31, g22, g32, g33 ] , [ x0, x1, x2, x3 ] )$ depends( [ gI00, gI10, gI20, gI30, gI11, gI21, gI31, gI22, gI32, gI33 ] , [ x0, x1, x2, x3 ] )$ DMatrix: matrix[ [diff(g00,x0,1)] , [diff(g10,x0,1)] , [diff(g20,x0,1)] , [diff(g30,x0,1)] , [diff(g11,x0,2)] , [diff(g22,x0,2)] , [diff(g33,x0,2)] , [diff(g21,x0,2)] , [diff(g31,x0,2)] , [diff(g32,x0,2)] ]$ D(alpha) := DMatrix[alpha+1,1]$ /**********************************************************************/ /* Christoffel symbol of the second kind: Gamma. ***** gamma * * * * * alpha beta */ Gamma(alpha,beta,gamma) := sum( gI(gamma,delta)*FirstKind(alpha,beta,delta), delta,0,3); /**********************************************************************/ /* Christoffel symbol of the first kind: [alpha beta, gamma]. */ FirstKind(alpha,beta,gamma) := (1/2)*( diff(g(alpha,gamma),x(beta)) + diff(g(beta,gamma),x(alpha)) - diff(g(alpha,beta),x(gamma)) )$ /**********************************************************************/ /* Ricci tensor. */ RElement(alpha,beta) := ratsimp ( sum( diff(Gamma(alpha,beta,gamma),x(gamma)), gamma, 0, 3 ) - sum( diff(Gamma(alpha,gamma,gamma),x(beta)), gamma, 0, 3 ) + sum( sum( Gamma(alpha,beta,delta)*Gamma(gamma,delta,gamma), gamma, 0, 3), delta, 0, 3 ) - sum( sum( Gamma(alpha,gamma,delta)*Gamma(beta,delta,gamma), gamma, 0, 3), delta, 0, 3 ) )$ RicciMatrix: genmatrix( lambda( [i,j], RElement(i-1,j-1) ), 4, 4 )$ R(alpha,beta) := RicciMatrix[alpha+1,beta+1]$ /**********************************************************************/ /* Partial derivative of the inverse metric pd(g^{alpha beta})/pd(x^gamma) in terms of partial derivatives of the metric. */ PDgIabPDg( alpha, beta, gamma ) := - sum(sum( ( gI(alpha,delta)*gI(beta,mu)*diff(g(delta,mu),x(gamma)) ),delta,0,3),mu,0,3)$ /**********************************************************************/ /* Replace derivatives of the inverse metric with derivatives of the metric. */ for alpha: 0 thru 3 do for beta: 0 thru 3 do for gamma: 0 thru 3 do RicciMatrix: subst( PDgIabPDg(alpha,beta,gamma), diff(gI(alpha,beta),x(gamma)), RicciMatrix )$ /* These should all return a matrix of 0's, verifying that there are no second derivatives of g00, g10, g20, and g30. */ ratcoef( RicciMatrix, diff(g00,x0,2) ); ratcoef( RicciMatrix, diff(g10,x0,2) ); ratcoef( RicciMatrix, diff(g20,x0,2) ); ratcoef( RicciMatrix, diff(g30,x0,2) ); /* These should all return a matrix of 0's, verifying that no two elements of D are multiplied together. */ for alpha: 0 thru 9 do for beta: 0 thru 9 do grind( ratcoef( RicciMatrix, D(alpha)*D(beta) ) );