Pablo Angulo-Ardoy, Daniel Faraco, Luis Guijarro http://arxiv.org/abs/1603.04201
This notebook only covers the example in section 6
M = Manifold(4, 'M', r'\mathcal{M}', start_index=1)
print M
X.<t,x,y,z> = M.chart()
print X
g = M.riemannian_metric('g')
print g
#You can use two generic functions
#F(s) = function('F', s)
#H(s) = function('H', s)
#g[1,1], g[2,2], g[3,3], g[4,4] = 1, 1, F(x), H(x)
#g.display()
assume(x>0)
g[1,1], g[2,2], g[3,3], g[4,4] = 1, 1, x, x^2
g.display()
show(g[:])
%time W = g.weyl()
W4 = W.down(g,0)
Frame = X.frame()
def g_norm(v):
return sqrt(g(v,v))
vs = [Frame[i] for i in [1..4]]
ovs = [v/g_norm(v) for v in vs]
v1,v2,v3,v4 = ovs
N = 4
INDEX_PAIRS = [tuple(c) for c in Combinations([1..N], 2)]
#Bivectors
BASIS = [(vi*vj).antisymmetrize(0,1) for vi,vj in Combinations(ovs, 2)]
for elem in BASIS:
print elem.display()
d = 6
v12 = BASIS[0]
v13 = BASIS[1]
def WO(bv1, bv2):
r = 0
for i,j in INDEX_PAIRS:
c1 = bv1[i,j]
for k,l in INDEX_PAIRS:
c2 = bv2[k,l]
r += c1*c2*W4[i,j,k,l]
return r
MM = matrix(SR, d)
for i, bvi in enumerate(BASIS):
for j,bvj in enumerate(BASIS):
MM[i,j] = WO(bvi, bvj).expr()
show(MM)
This is not a product of surfaces, since its Weyl tensor has type B
The vector fields , and are obviously LCWs. We consider
n = g.connection()
show(n.display())
# An orthonormal basis
v1,v2,v3,v4 = ovs
#A sanity check: second fundamental form of partial_t^\perp
II = matrix(SR, 3)
for j,v_j in enumerate((v2,v3,v4)):
for k,v_k in enumerate((v2,v3,v4)):
II[j,k] = g(n(v_j)(v_k),v1).expr()
print II
However, the second fundamental form of is not a multiple of the identity.
#Ahora la segunda forma fundamental de partial_x^\perp
II = matrix(SR, 3)
for j,v_j in enumerate((v1,v3,v4)):
for k,v_k in enumerate((v1,v3,v4)):
II[j,k] = g(n(v_j)(v_k),v2).expr()
show(II)
The analysis of the Weyl tensor shows that any possible conformal factor must be contained in either or .
We first seek conformal factors in :
print g(n(v3)(v3),v1).display()
print g(n(v3)(v4),v1).display()
print g(n(v4)(v4),v1).display()
print g(n(v3)(v3),v2).display()
print g(n(v3)(v4),v2).display()
print g(n(v4)(v4),v2).display()
The function is identically zero, but is not a multiple of the identity.
Thus the only possible LCW is , which obviously is.
We define and for a generic function . We want to find equations for so that is umbilic:
alpha = function('alpha', t, x, y, z)
O = cos(alpha)*v3+sin(alpha)*v4
P = -sin(alpha)*v3+cos(alpha)*v4
#Segunda forma fundamental de O^\perp
II = matrix(SR, 3)
for j,v_j in enumerate((v1,v2,P)):
for k,v_k in enumerate((v1,v2,P)):
II[j,k] = g(n(v_j)(v_k),O).expr()
Remark: This is not symmetric! This is because for some choices of the distribution is not integrable. The distribution is umbilic if and only if is a multiple of the identity, so an umbilic distribution is integrable.
for j,v_j in enumerate((v1,v2,P)):
for k,v_k in enumerate((v1,v2,P)):
if II[j,k]:
print 'II_{%d,%d}=%s'%(j, k, II[j,k].simplify_full())
The entry is very explicit: must be a multiple of at every point. Since is a continuous function, P must be either v1 or v2.