Simple `^`(S, `1`) - fibration (Kerr black hole) 

Description: 

  • Kerr black hole  is a 4-dimentional Lorentz manifold M with zero Ricci curvature and group U(1) = `^`(S, `1`) as a subgroup of the manifold isometry group. In this worksheet we construct a riemannian submersion Pi: proc (M) options operator, arrow; B end proc where B = M / U(1) is the corresponding base and `^`(S, `1`) is the fiber. The submersion is `^`(S, `1`) fibration: {Pi, `*`(`^`(M, 4)), B = `/`(`*`(`^`(M, 4)), `*`(`^`(S, `1`))), F = `^`(S, `1`)} where `*`(`^`(M, 4)) is an open submanifold of M (`*`(`^`(M, 4)) is just the union of U(1) principal orbits).  
 

Kerr black hole 

First of all we load atlas package: 

> restart:
with(atlas):
 

Total space 

Declare total space of the submersion:
Domain(M); 

M(2.1.1)
 

Declare constants r[g] and a:
Constants(rg,a); 

{`+`(`-`(I)), I, Pi, _Z, a, rg, Catalan}(2.1.2)
 

Declare vectors:
Vectors(E[i],X,Y,Z); 

{X, Y, Z, E[i]}(2.1.3)
 

Declare forms:
Forms(e[j]=1); 

{e[j]}(2.1.4)
 

Declare coframe:
Coframe(e[1]=d(t),e[2]=d(r),e[3]=d(theta),e[4]=d(phi)); 

[e[1] = d(t), e[2] = d(r), e[3] = d(theta), e[4] = d(phi)](2.1.5)
 

Declare frame vectors:
Frame(E[i]); 

[E[1] = Diff(``, t), E[2] = Diff(``, r), E[3] = Diff(``, theta), E[4] = Diff(``, phi)](2.1.6)
 

For Kerr metric we use well known aliases Delta = `+`(`*`(`^`(r, 2)), `-`(`*`(rg, `*`(r))), `*`(`^`(a, 2))), rho = `+`(`*`(`^`(r, 2)), `*`(`^`(a, 2)), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2))))): 

> alias(Delta=r^2-rg*r+a^2,rho=r^2+a^2-a^2*sin(theta)^2,                            -rho=-r^2-a^2+a^2*sin(theta)^2):
 

Now we declare Kerr metric: 

> Metric(g=(Delta-a^2*sin(theta)^2)/rho*d(t)&.d(t)        +a*sin(theta)^2*(r^2+a^2-Delta)/rho*(d(t)&.d(phi)+d(phi)&.d(t))
   -rho/Delta*d(r)&.d(r)-rho*d(theta)&.d(theta)
+((a^2*sin(theta)^2*Delta)-(r^2+a^2)^2)*sin(theta)^2/rho*d(phi)&.d(phi));
 

g = `+`(`/`(`*`(`+`(`*`(`^`(r, 2)), `-`(`*`(rg, `*`(r))), `*`(`^`(a, 2)), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2))))), `*`(`&.`(e[1], e[1]))), `*`(rho)), `/`(`*`(a, `*`(`^`(sin(theta), 2), `*`(rg, `...
g = `+`(`/`(`*`(`+`(`*`(`^`(r, 2)), `-`(`*`(rg, `*`(r))), `*`(`^`(a, 2)), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2))))), `*`(`&.`(e[1], e[1]))), `*`(rho)), `/`(`*`(a, `*`(`^`(sin(theta), 2), `*`(rg, `...
g = `+`(`/`(`*`(`+`(`*`(`^`(r, 2)), `-`(`*`(rg, `*`(r))), `*`(`^`(a, 2)), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2))))), `*`(`&.`(e[1], e[1]))), `*`(rho)), `/`(`*`(a, `*`(`^`(sin(theta), 2), `*`(rg, `...
g = `+`(`/`(`*`(`+`(`*`(`^`(r, 2)), `-`(`*`(rg, `*`(r))), `*`(`^`(a, 2)), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2))))), `*`(`&.`(e[1], e[1]))), `*`(rho)), `/`(`*`(a, `*`(`^`(sin(theta), 2), `*`(rg, `...
(2.1.7)
 

Connection calculation:
Connection(omega); 

omega[i, j](2.1.8)
 

Base space 

Declare base space:
Domain(B); 

B(2.2.1)
 

Declare forms:
Forms(u[k]=1); 

{e[j], u[k]}(2.2.2)
 

Declare vectors:
Vectors(U[j]); 

{U[j]}(2.2.3)
 

Declare coframe:
Coframe(u[1]=d(zeta),u[2]=d(xi),u[3]=d(eta)); 

[u[1] = d(zeta), u[2] = d(xi), u[3] = d(eta)](2.2.4)
 

Declare frame:
Frame(U[j]); 

[U[1] = Diff(``, zeta), U[2] = Diff(``, xi), U[3] = Diff(``, eta)](2.2.5)
 

The submersion 

Declare mapping Pi: 

> Mapping(pi,M,B,
       zeta=t,
       xi=r,
       eta=theta);
 

 

pi
`.`(M, `--->`, B)(2.3.1)
 

Let us see the attributes of the mapping:
Who(pi); 

 

pi: mapping
table( [( equations ) = [zeta = t, xi = r, eta = theta], ( manifolds ) = [M, B], ( natural ) = {Diff(``, phi) = 0, Diff(``, r) = Diff(``, xi), Diff(``, t) = Diff(``, zeta), Diff(``, theta) = Diff(``, ...
table( [( equations ) = [zeta = t, xi = r, eta = theta], ( manifolds ) = [M, B], ( natural ) = {Diff(``, phi) = 0, Diff(``, r) = Diff(``, xi), Diff(``, t) = Diff(``, zeta), Diff(``, theta) = Diff(``, ...
table( [( equations ) = [zeta = t, xi = r, eta = theta], ( manifolds ) = [M, B], ( natural ) = {Diff(``, phi) = 0, Diff(``, r) = Diff(``, xi), Diff(``, t) = Diff(``, zeta), Diff(``, theta) = Diff(``, ...
(2.3.2)
 

Now we can calculate the projectors of the mapping:
P:=Projectors(pi); 

table( [( vertical ) = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta),...
table( [( vertical ) = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta),...
table( [( vertical ) = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta),...
table( [( vertical ) = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta),...
table( [( vertical ) = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta),...
(2.3.3)
 

> V:=P[vertical];
 

`+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)))))...
`+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)))))...
(2.3.4)
 

> H:=P[horizontal];
 

`+`(`&.`(e[1], E[1]), `-`(`/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)...
`+`(`&.`(e[1], E[1]), `-`(`/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)...
`+`(`&.`(e[1], E[1]), `-`(`/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)...
(2.3.5)
 

Where are we:
Domain(); 

B(2.3.6)
 

Thus we are on the base manifold: 

Jumping on the total manifold:
Domain(M); 

M(2.3.7)
 

Verify that is vertical vector:
'iota[E[4]](V)'=iota[E[4]](V);
'iota[E[4]](H)'=iota[E[4]](H);
 

 

iota[E[4]](V) = E[4]
iota[E[4]](H) = 0(2.3.8)
 

Let us calculate invariants of the submersion:
Inv:=Invariants(pi): 

The submersion is a riemannian one:
riemannianObstruction=Inv[riemannianObstruction]; 

riemannianObstruction = 0(2.3.9)
 

The integrability obstruction is not equal to zero. Thus the corresponding horizontal distribution is not an intagrable one.
iO:=eval(Inv[integrabilityObstruction]); 

table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
table( [( 1, 2 ) = `+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(th...
(2.3.10)
 

Extraction of the field of mean curvature vectors of the fibers 

> N:=Inv[meanCurvature];
 

`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(Delta, `*`(`+`(`-`(`*`(4, `*`(`^`(r, 3), `*`(`^`(a, 2), `*`(`^`(sin(theta), 2)))))), `-`(`*`(4, `*`(r, `*`(`^`(a, 4), `*`(`^`(sin(theta), 2)))))), `*`(2, `*`(`^`(a, 4), ...
(2.3.11)
 

The mean curvature vectors are horizontal:
'iota[N](V)'=iota[N](V);
'iota[N](H)-N'=simplify(iota[N](H)-N);
 

 

iota[N](V) = 0
`+`(iota[N](H), `-`(N)) = 0(2.3.12)
 

The mean curvature vectors are projectable. Realy N = `+`(`-`(`*`(`/`(1, 2), `*`(dual(d(f)))))) where f = ln(vol(F)):
vol(F):=g(E[4],E[4]); 

`+`(`-`(`/`(`*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(r, 4)))...
`+`(`-`(`/`(`*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(r, 4)))...
(2.3.13)
 

> f:=ln(vol(F));
 

ln(`+`(`-`(`/`(`*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(r, 4...
ln(`+`(`-`(`/`(`*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(r, 4...
(2.3.14)
 

> '-dual(d(f))/2-N'=simplify(-dual(d(f))/2-N);
 

`+`(`-`(`*`(`/`(1, 2), `*`(dual(d(f))))), `-`(N)) = 0(2.3.15)
 

Thus mean curvature N is basic vector field (horizontal and projectable). 

The principal group U(1) = `^`(S, `1`)  induces vector field  

Let us consider principal connection Theta of the fibration. It is easy to see that V = `+`(`-`(`&.`(Theta, E[4])))  

As soon as  

> 'V'=V;
 

V = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)...
V = `+`(`&.`(e[4], E[4]), `/`(`*`(r, `*`(rg, `*`(a, `*`(`&.`(e[1], E[4]))))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r)...
(2.3.16)
 

Then for principal connection we obtain:
Theta:=add(iota[iota[E[j]](V)](e[4])*e[j],j=1..4); 

`+`(`/`(`*`(r, `*`(rg, `*`(a, `*`(e[1])))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(t...
`+`(`/`(`*`(r, `*`(rg, `*`(a, `*`(e[1])))), `*`(`+`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(rg, `*`(r))))), `*`(`^`(a, 4), `*`(`^`(sin(t...
(2.3.17)
 

Now we can calculate the corresponding curvature of the fibration Omega = d(Theta):  

> Omega:=collect(d(Theta),`&^`,factor);
 

`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
`+`(`-`(`/`(`*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r, 2))))), `...
(2.3.18)
 

For any horizontal vector fields X and Y we have . Thus we can construct the corresponding tensor directly:
AA:=-1/2*Omega&.E[4]; 

`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
(2.3.19)
 

We can obtain the same tensor from integrability obstruction iO. To do this we redefine the table and use add procedure. 

> iO:=table(zero,antisymmetric,op(op(iO))[2]):
 

> AB:=add(add((e[i]&^e[j])&.iO[i,j],i=1..j),j=1..4);
 

`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
`+`(`/`(`*`(`/`(1, 2), `*`(a, `*`(rg, `*`(`+`(`*`(`^`(a, 4), `*`(`^`(sin(theta), 2))), `-`(`*`(`^`(a, 4))), `*`(2, `*`(`^`(r, 2), `*`(`^`(a, 2)))), `-`(`*`(`^`(a, 2), `*`(`^`(sin(theta), 2), `*`(`^`(r...
(2.3.20)
 

Verify the identity:
AA-AB; 

0(2.3.21)
 

>