Calculating the Dirac equation on a Schwarzschild metric with torsion
See gr-qc/0209096 and gr-qc/0010085
> restart;
> grtw();
> define(sigma,sigma(0)=1);
> define(pr,pr(1,1)=1,pr(1,sigma(1))=sigma(1),pr(1,sigma(2))=sigma(2),pr(1,sigma(3))=sigma(3),pr(sigma(1),1)=sigma(1),pr(sigma(2),1)=sigma(2),pr(sigma(3),1)=sigma(3),pr(sigma(2),sigma(1))=-pr(sigma(1),sigma(2)),pr(sigma(1),sigma(2))=I*sigma(3),pr(sigma(3),sigma(1))=-pr(sigma(1),sigma(3)),pr(sigma(1),sigma(3))=-I*sigma(2),pr(sigma(3),sigma(2))=-pr(sigma(2),sigma(3)),pr(sigma(2),sigma(3))=I*sigma(1),pr(sigma(1),sigma(1))=1,pr(sigma(2),sigma(2))=1,pr(sigma(3),sigma(3))=1,pr((a::integer)*sigma(b::algebraic),(d::integer)*sigma(c::integer))=a*d*pr(sigma(b),sigma(c)));
> define(pd,pd(0,a::algebraic)=0,pd(a::algebraic,0)=0,pd(1,1)=1,pd(I*a::algebraic,b::algebraic)=I*pd(a,b),pd(-I*a::algebraic,b::algebraic)=-I*pd(a,b),pd(a::algebraic,I*b::algebraic)=I*pd(a,b),pd(a::algebraic,-I*b::algebraic)=-I*pd(a,b),pd(-a::algebraic,b::algebraic)=-pd(a,b),pd(a::algebraic,-b::algebraic)=-pd(a,b));
> define(`&p`,`&p`(-a::algebraic,-b::algebraic)=`&p`(a,b),(-pd(sigma(a::algebraic),sigma(b::algebraic))) &p (-pd(sigma(c::algebraic),sigma(d::algebraic)))=pd(sigma(a),sigma(b)) &p pd(sigma(c),sigma(d)),(-pd(a::algebraic,b::algebraic)) &p (-m::function*pd(c::algebraic,d::algebraic))=m*(pd(a,b) &p pd(c,d)),pd(a::algebraic,b::algebraic) &p (-m::function*pd(c::algebraic,d::algebraic))=-m*(pd(a,b) &p pd(c,d)),(-pd(a::algebraic,b::algebraic)) &p pd(c::algebraic,d::algebraic)=-(pd(a,b) &p pd(c,d)),pd(sigma(a::algebraic),sigma(b::algebraic)) &p pd(sigma(c::algebraic),sigma(d::algebraic))=pd(pr(sigma(a),sigma(c)),pr(sigma(b),sigma(d))),pd(1,sigma(a::algebraic)) &p pd(sigma(b::algebraic),sigma(c::algebraic))=pd(pr(1,sigma(b)),pr(sigma(a),sigma(c))),pd(sigma(a::algebraic),sigma(b::algebraic)) &p pd(1,sigma(c::algebraic))=pd(pr(sigma(a),1),pr(sigma(b),sigma(c))),pd(sigma(a::algebraic),1) &p pd(sigma(b::algebraic),sigma(c::algebraic))=pd(pr(sigma(a),sigma(b)),pr(1,sigma(c))),pd(sigma(a::algebraic),sigma(b::algebraic)) &p pd(sigma(c::algebraic),1)=pd(pr(sigma(a),sigma(c)),pr(sigma(b),1)),pd(1,sigma(a::algebraic)) &p pd(1,sigma(b::algebraic))=pd(pr(1,1),pr(sigma(a),sigma(b))),pd(sigma(a::algebraic),1) &p pd(sigma(b::algebraic),1)=pd(pr(sigma(a),sigma(b)),pr(1,1)),I*(a::algebraic) &p (I*b::algebraic)=-(a &p b),(I*a::algebraic) &p (b::algebraic)=I*(a &p b),(a::algebraic) &p (I*b::algebraic)=I*(a &p b));
>
> definemore(`&p`,`&p`(c::algebraic*pd(sigma(a::algebraic),sigma(b::algebraic)),d::algebraic*pd(sigma(e::algebraic),sigma(f::algebraic)))=c*d*`&p`(pd(sigma(a),sigma(b)),pd(sigma(e),sigma(f))),`&p`(c::algebraic*pd(a::algebraic,sigma(b::algebraic)),d::algebraic*pd(sigma(e::algebraic),sigma(f::algebraic)))=c*d*`&p`(pd(a,sigma(b)),pd(sigma(e),sigma(f))),`&p`(c::algebraic*pd(sigma(a::algebraic),b::algebraic),d::algebraic*pd(sigma(e::algebraic),sigma(f::algebraic)))=c*d*`&p`(pd(sigma(a),b),pd(sigma(e),sigma(f))),`&p`(c::algebraic*pd(sigma(a::algebraic),sigma(b::algebraic)),d::algebraic*pd(e::algebraic,sigma(f::algebraic)))=c*d*`&p`(pd(sigma(a),sigma(b)),pd(e,sigma(f))),`&p`(c::algebraic*pd(sigma(a::algebraic),sigma(b::algebraic)),d::algebraic*pd(sigma(e::algebraic),f::algebraic))=c*d*`&p`(pd(sigma(a),sigma(b)),pd(sigma(e),f)),`&p`(pd(sigma(a::algebraic),1),pd(1,sigma(b::algebraic)))=pd(pr(sigma(a),1),pr(1,sigma(b))),`&p`(c::algebraic*pd(sigma(a::algebraic),e::algebraic),d::algebraic*pd(f::algebraic,sigma(b::algebraic)))=c*d*`&p`(pd(sigma(a),e),pd(f,sigma(b))),`&p`(a::algebraic,0)=0 );
> (-3*x*pd(sigma(1),sigma(2))) &p (-r*pd(sigma(0),sigma(3)));
> define(gam,gam(1)=I*pd(sigma(2),sigma(1)),gam(2)=I*pd(sigma(2),sigma(2)),gam(3)=I*pd(sigma(2),sigma(3)),gam(0)=pd(sigma(1),1),gam(5)=-pd(sigma(3),1));
> define(comu,comu(a::algebraic,b::algebraic)=a &p b - b &p a);
> comu(gam(1),gam(2));
> I*comu(gam(2),gam(1))/4;
> qload(sscw_2);
> grcalc(metric);
Calculated e(bup,dn) for sscw_2 (.005000 sec.)
Calculated g(dn,dn) for sscw_2 (.011000 sec.)
> gralter(metric,simplify);
Component simplification of a GRTensorII object:
Applying routine simplify to object g(dn,dn)
> grdisplay(metric);
> grcalc(ds);
Calculated ds for sscw_2 (.002000 sec.)
> grdisplay(ds);
> gralter(ds,trigsin);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ds
> grdisplay(ds);
> grcalc(w1(dn,pdn));grcalc(w2(dn,pdn));grcalc(w3(dn,pdn));grcalc(w4(dn,pdn));
Created a definition for w1(dn,pdn)
Calculated w1(dn,pdn) for sscw_2 (.004000 sec.)
Created a definition for w2(dn,pdn)
Calculated w2(dn,pdn) for sscw_2 (.004000 sec.)
Created a definition for w3(dn,pdn)
Calculated w3(dn,pdn) for sscw_2 (.003000 sec.)
Created a definition for w4(dn,pdn)
Calculated w4(dn,pdn) for sscw_2 (.003000 sec.)
> grdisplay(w1(dn,pdn));
> grdisplay(w2(dn,pdn));
> grdisplay(w3(dn,pdn));
> grdisplay(w4(dn,pdn));
Now the definition of the torsion components. Observe how we used the previous results !
> grdef(`tor{ ^a b c }:=w1{ b ,c }*kdelta{ ^a $r } + w2{ b ,c }*kdelta{ ^a $theta } + w3{ b ,c }*kdelta{ ^a $phi } + w4{ b ,c }*kdelta{ ^a $t }`);
Created definition for tor(up,dn,dn)
> grcalc(tor(up,dn,dn));
Calculated kdelta(up,dn) for sscw_2 (0.000000 sec.)
Calculated tor(up,dn,dn) for sscw_2 (.022000 sec.)
> grdisplay(tor(up,dn,dn));
> grmap(tor(up,dn,dn),subs,lambda(r)=f1(r),nu(r)=f2(r),`x`);
Applying routine subs to tor(up,dn,dn)
> grdisplay(tor(up,dn,dn));
> grcalc(tor(bup,bdn,bdn));
Created definition for tor(bup,bdn,bdn)
Calculated detg for sscw_2 (0.000000 sec.)
Calculated g(up,up) for sscw_2 (.002000 sec.)
Calculated e(bdn,up) for sscw_2 (.004000 sec.)
Calculated tor(bup,bdn,bdn) for sscw_2 (.263000 sec.)
> gralter(tor(bup,bdn,bdn),trigsin,power,simplify);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object tor(bup,bdn,bdn)
Applying routine `simplify[power]` to object tor(bup,bdn,bdn)
Applying routine simplify to object tor(bup,bdn,bdn)
> grdisplay(tor(bup,bdn,bdn));
> grdef(`SS{ ^a ^b }`);
Created definition for SS(up,up)
> grcalc(SS(up,up)):
Enter components for object SS(up,up)
If you wish to quit at any point and leave this object
uninitialized, enter the string exit.
REMEMBER to complete each entry with a semicolon.
grcalc> (I/4)*comu(gam(1),gam(1));
grcalc> (I/4)*comu(gam(2),gam(1));
grcalc> (I/4)*comu(gam(3),gam(1));
grcalc> (I/4)*comu(gam(0),gam(1));
grcalc> (I/4)*comu(gam(1),gam(2));
grcalc> (I/4)*comu(gam(2),gam(2));
grcalc> (I/4)*comu(gam(3),gam(2));
grcalc> (I/4)*comu(gam(0),gam(2));
grcalc> (I/4)*comu(gam(1),gam(3));
grcalc> (I/4)*comu(gam(2),gam(3));
grcalc> (I/4)*comu(gam(3),gam(3));
grcalc> (I/4)*comu(gam(0),gam(3));
grcalc> (I/4)*comu(gam(1),gam(0));
grcalc> (I/4)*comu(gam(2),gam(0));
grcalc> (I/4)*comu(gam(3),gam(0));
grcalc> (I/4)*comu(gam(0),gam(0));
Calculated SS(up,up) for sscw_2 (.652000 sec.)
> grdisplay(SS(up,up));
> grcalc(Chr(dn,dn,dn));
Calculated g(dn,dn,pdn) for sscw_2 (.009000 sec.)
Calculated Chr(dn,dn,dn) for sscw_2 (.008000 sec.)
> gralter(Chr(dn,dn,dn),simplify);
Component simplification of a GRTensorII object:
Applying routine simplify to object Chr(dn,dn,dn)
> grdisplay(Chr(dn,dn,dn));
> grcalc(Chr(bdn,bdn,bdn));
Created definition for Chr(bdn,bdn,bdn)
Calculated Chr(bdn,bdn,bdn) for sscw_2 (.211000 sec.)
> gralter(Chr(bdn,bdn,bdn),trigsin,expand,simplify);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object Chr(bdn,bdn,bdn)
Applying routine expand to object Chr(bdn,bdn,bdn)
Applying routine simplify to object Chr(bdn,bdn,bdn)
> grdisplay(Chr(bdn,bdn,bdn));
> grdef(`de{ i }:=(I/2)*SS{ ^a ^b }*Chr{ (a) (i) (b) }`);
Created definition for de(dn)
Here we have a new special term with torsion contribution !
> grdef(`det{ i }:=(I/2)*SS{ ^a ^b }*(Chr{ (a) (i) (b) }+(tor{ (a) (i) (b) }-tor{ (i) (b) (a) } + tor{ (b) (a) (i) }))`);
Created definition for tor(bdn,bdn,bdn)
Created definition for det(dn)
> grcalc(de(dn));grcalc(det(dn));
Calculated de(dn) for sscw_2 (.016000 sec.)
Calculated tor(bdn,bdn,bdn) for sscw_2 (.018000 sec.)
Calculated det(dn) for sscw_2 (.049000 sec.)
> gralter(de(dn),trigsin,factor,expand);gralter(det(dn),trigsin,factor,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object de(dn)
Applying routine factor to object de(dn)
Applying routine expand to object de(dn)
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object det(dn)
Applying routine factor to object det(dn)
Applying routine expand to object det(dn)
> grdisplay(de(dn));
> grdisplay(det(dn));
> grdef(`ga{ ^a }:=[gam(1),gam(2),gam(3),gam(0)]`);
Components assigned for metric: sscw_2
Created definition for ga(up)
> grdisplay(ga(up));
> grdef(`ver{ ^a ^b }`);
Created definition for ver(up,up)
> grcalc(ver(up,up));
Enter components for object ver(up,up)
If you wish to quit at any point and leave this object
uninitialized, enter the string exit.
REMEMBER to complete each entry with a semicolon.
grcalc>
grcomponent(ga(up),[r]) &p grcomponent(ga(up),[r]) +grcomponent(ga(up),[r]) &p grcomponent(ga(up),[r])+2*grcomponent(eta(bup,bup),[r,r]);
grcalc>
grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[r]) +grcomponent(ga(up),[r]) &p grcomponent(ga(up),[theta])+2*grcomponent(eta(bup,bup),[theta,r]);
grcalc>
grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[r]) +grcomponent(ga(up),[r]) &p grcomponent(ga(up),[phi])+2*grcomponent(eta(bup,bup),[phi,r]);
grcalc>
grcomponent(ga(up),[t]) &p grcomponent(ga(up),[r]) +grcomponent(ga(up),[r]) &p grcomponent(ga(up),[t])+2*grcomponent(eta(bup,bup),[t,r]);
grcalc>
grcomponent(ga(up),[r]) &p grcomponent(ga(up),[theta]) +grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[r])+2*grcomponent(eta(bup,bup),[r,theta]);
grcalc>
grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[theta]) +grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[theta])+2*grcomponent(eta(bup,bup),[theta,theta]);
grcalc>
grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[theta]) +grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[phi])+2*grcomponent(eta(bup,bup),[phi,theta]);
grcalc>
grcomponent(ga(up),[t]) &p grcomponent(ga(up),[theta]) +grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[t])+2*grcomponent(eta(bup,bup),[t,theta]);
grcalc>
grcomponent(ga(up),[r]) &p grcomponent(ga(up),[phi]) +grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[r])+2*grcomponent(eta(bup,bup),[r,phi]);
grcalc>
grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[phi]) +grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[theta])+2*grcomponent(eta(bup,bup),[theta,phi]);
grcalc>
grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[phi]) +grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[phi])+2*grcomponent(eta(bup,bup),[phi,phi]);
grcalc>
grcomponent(ga(up),[t]) &p grcomponent(ga(up),[phi]) +grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[t])+2*grcomponent(eta(bup,bup),[t,phi]);
grcalc>
grcomponent(ga(up),[r]) &p grcomponent(ga(up),[t]) +grcomponent(ga(up),[t]) &p grcomponent(ga(up),[r])+2*grcomponent(eta(bup,bup),[r,t]);
grcalc>
grcomponent(ga(up),[theta]) &p grcomponent(ga(up),[t]) +grcomponent(ga(up),[t]) &p grcomponent(ga(up),[theta])+2*grcomponent(eta(bup,bup),[theta,t]);
grcalc>
grcomponent(ga(up),[phi]) &p grcomponent(ga(up),[t]) +grcomponent(ga(up),[t]) &p grcomponent(ga(up),[phi])+2*grcomponent(eta(bup,bup),[phi,t]);
grcalc>
grcomponent(ga(up),[t]) &p grcomponent(ga(up),[t]) +grcomponent(ga(up),[t]) &p grcomponent(ga(up),[t])+2*grcomponent(eta(bup,bup),[t,t]);
Calculated ver(up,up) for sscw_2 (.539000 sec.)
> grdisplay(ver(up,up));
> grdef(`Psid{ a }:=[diff(psi(r),r),diff(psi(r),theta),diff(psi(r),phi),diff(psi(r),t)]`);
Components assigned for metric: sscw_2
Created definition for Psid(dn)
> grcalc(Psid(dn));
> grdisplay(Psid(dn));
> grcalc(Psid(bdn));
Created definition for Psid(bdn)
Calculated Psid(bdn) for sscw_2 (.002000 sec.)
> gralter(Psid(bdn),simplify);
Component simplification of a GRTensorII object:
Applying routine simplify to object Psid(bdn)
> grdisplay(Psid(bdn));
> a0:=expand(grcomponent(de(dn),[t]));a00:=0;
> u0:=whattype(a0);u0;
> nops(a0);
> if u0=`+` then for i from 1 to nops(a0) do a00:=a00+I*h*grcomponent(ga(up),[t]) &p op(i,a0) od else a00:=I*h*grcomponent(ga(up),[t]) &p a0 fi;
> a00;
> a1:=expand(grcomponent(de(dn),[r]));a11:=0;
> u1:=whattype(a1);u1;
> nops(a1);
> if u1=`+` then for i from 1 to nops(a1) do a11:=a11+I*h*grcomponent(ga(up),[r]) &p op(i,a1) od else a11:=I*h*grcomponent(ga(up),[r]) &p a1 fi;
> a11;
> a2:=expand(grcomponent(de(dn),[theta]));a22:=0;
> u2:=whattype(a2);u2;
> nops(a2);
> if u2=`+` then for i from 1 to nops(a2) do a22:=a22+I*h*grcomponent(ga(up),[theta]) &p op(i,a2) od else a22:=I*h*grcomponent(ga(up),[theta]) &p a2 fi;
> a22;
> a3:=expand(grcomponent(de(dn),[phi]));a33:=0;
>
u3:=whattype(a3);u3;
> nops(a3);
> if u3=`+` then for i from 1 to nops(a3) do a33:=a33+I*h*grcomponent(ga(up),[phi]) &p op(i,a3) od else a33:=I*h*grcomponent(ga(up),[phi]) &p a3 fi;
> a33;
> grdef(`dd`);
Created definition for dd
> grcalc(dd);
Enter components for object dd
If you wish to quit at any point and leave this object
uninitialized, enter the string exit.
REMEMBER to complete each entry with a semicolon.
grcalc> a00+a11+a22+a33;
Calculated dd for sscw_2 (.007000 sec.)
> grdisplay(dd);
> gralter(dd,factor,expand);
Component simplification of a GRTensorII object:
Applying routine factor to object dd
Applying routine expand to object dd
> grdisplay(dd);
> a0t:=expand(grcomponent(det(dn),[t]));a00t:=0;
> u0t:=whattype(a0t);u0t;
> nops(a0t);
> if u0t=`+` then for i from 1 to nops(a0t) do a00t:=a00t+I*h*grcomponent(ga(up),[t]) &p op(i,a0t) od else a00t:=I*h*grcomponent(ga(up),[t]) &p a0t fi;
> a00t;
> a1t:=expand(grcomponent(det(dn),[r]));a11t:=0;
> u1t:=whattype(a1t);u1t;
> nops(a1t);
> if u1t=`+` then for i from 1 to nops(a1t) do a11t:=a11t+I*h*grcomponent(ga(up),[r]) &p op(i,a1t) od else a11t:=I*h*grcomponent(ga(up),[r]) &p a1t fi;
> a11t;
> a2t:=expand(grcomponent(det(dn),[theta]));a22t:=0;
> u2t:=whattype(a2t);u2t;
> nops(a2t);
> if u2t=`+` then for i from 1 to nops(a2t) do a22t:=a22t+I*h*grcomponent(ga(up),[theta]) &p op(i,a2t) od else a22t:=I*h*grcomponent(ga(up),[theta]) &p a2t fi;
> a22t;
> a3t:=expand(grcomponent(det(dn),[phi]));a33t:=0;
>
u3t:=whattype(a3t);u3t;
> nops(a3t);
> if u3t=`+` then for i from 1 to nops(a3t) do a33t:=a33t+I*h*grcomponent(ga(up),[phi]) &p op(i,a3t) od else a33t:=I*h*grcomponent(ga(up),[phi]) &p a3t fi;
> a33t;
> grdef(`ddt`);
Created definition for ddt
> grcalc(ddt);
Enter components for object ddt
If you wish to quit at any point and leave this object
uninitialized, enter the string exit.
REMEMBER to complete each entry with a semicolon.
grcalc> a00t+a11t+a22t+a33t;
Calculated ddt for sscw_2 (.010000 sec.)
> grdisplay(ddt);
> gralter(ddt,trigsin,factor,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ddt
Applying routine factor to object ddt
Applying routine expand to object ddt
> grdisplay(ddt);
> grdef(`dirac:=I*h*ga{ ^l }*Psid{ (l) } + dd*psi(r) - m*c*psi(r)`);
Created definition for dirac
> grdef(`diract:=I*h*ga{ ^l }*Psid{ (l) } + ddt*psi(r) - m*c*psi(r)`);
Created definition for diract
> grcalc(diract);grcalc(dirac);
Calculated diract for sscw_2 (.009000 sec.)
Calculated dirac for sscw_2 (.007000 sec.)
> gralter(dirac,factor,power,normal,expand);gralter(diract,factor,power,normal,expand);
Component simplification of a GRTensorII object:
Applying routine factor to object dirac
Applying routine `simplify[power]` to object dirac
Applying routine normal to object dirac
Applying routine expand to object dirac
Component simplification of a GRTensorII object:
Applying routine factor to object diract
Applying routine `simplify[power]` to object diract
Applying routine normal to object diract
Applying routine expand to object diract
> grdisplay(dirac);
> grdisplay(diract);
> define(`gen`);
> define(`gama`);
> grmap(dirac,subs,pd(sigma(1),1)=gama(0),pd(sigma(2),1)=-I*gama(0)*gama(5),pd(sigma(3),1)=-gama(5),pd(1,sigma(1))=2*gen(2,3),pd(1,sigma(2))=2*gen(3,1),pd(1,sigma(3))=2*gen(1,2),pd(sigma(2),sigma(1))=-I*gama(1),pd(sigma(2),sigma(2))=-I*gama(2),pd(sigma(2),sigma(3))=-I*gama(3),pd(sigma(1),sigma(1))=gama(1)*gama(5),pd(sigma(1),sigma(2))=gama(2)*gama(5),pd(sigma(1),sigma(3))=gama(3)*gama(5),pd(sigma(3),sigma(1))=2*I*gen(0,1),pd(sigma(3),sigma(2))=2*I*gen(0,2),pd(sigma(3),sigma(3))=2*I*gen(0,3),`x`);
Applying routine subs to dirac
> grmap(diract,subs,pd(sigma(1),1)=gama(0),pd(sigma(2),1)=-I*gama(0)*gama(5),pd(sigma(3),1)=-gama(5),pd(1,sigma(1))=2*gen(2,3),pd(1,sigma(2))=2*gen(3,1),pd(1,sigma(3))=2*gen(1,2),pd(sigma(2),sigma(1))=-I*gama(1),pd(sigma(2),sigma(2))=-I*gama(2),pd(sigma(2),sigma(3))=-I*gama(3),pd(sigma(1),sigma(1))=gama(1)*gama(5),pd(sigma(1),sigma(2))=gama(2)*gama(5),pd(sigma(1),sigma(3))=gama(3)*gama(5),pd(sigma(3),sigma(1))=2*I*gen(0,1),pd(sigma(3),sigma(2))=2*I*gen(0,2),pd(sigma(3),sigma(3))=2*I*gen(0,3),`x`);
Applying routine subs to diract
> grdisplay(dirac);
> grdisplay(diract);
> nops(grcomponent(dirac));
> nops(grcomponent(diract));
> grcomponent(diract)-grcomponent(dirac);
> grdisplay(tor(up,dn,dn));
> grdisplay(diract);
> grdisplay(metric);
> lambda(r):=1/(1-2*m/r);
> nu(r):=1-2*m/r;
> grdisplay(metric);
> gralter(diract,factor,simplify,normal);
Component simplification of a GRTensorII object:
Applying routine factor to object diract
Applying routine simplify to object diract
Applying routine normal to object diract
> grdisplay(diract);
>
>