Computations for the paper: Sufficient conditions for the existence of limiting Carleman weights (section 6)

Pablo Angulo-Ardoy, Daniel Faraco, Luis Guijarro http://arxiv.org/abs/1603.04201

This notebook only covers the example in section 6

In [1]:
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
4-dimensional differentiable manifold M
Chart (M, (t, x, y, z))
Riemannian metric g on the 4-dimensional differentiable manifold M
In [9]:
#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()
In [2]:
assume(x>0)
g[1,1], g[2,2], g[3,3], g[4,4] = 1, 1, x, x^2
g.display()
Out[2]:
g = dt*dt + dx*dx + x dy*dy + x^2 dz*dz
In [3]:
show(g[:])
(1000010000x0000x2)

The Weyl tensor has type B

In [4]:
%time W = g.weyl()
CPU times: user 11.9 s, sys: 224 ms, total: 12.1 s
Wall time: 12.8 s
In [5]:
W4 = W.down(g,0)
In [6]:
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
1/2 d/dt*d/dx - 1/2 d/dx*d/dt
1/2/sqrt(x) d/dt*d/dy - 1/2/sqrt(x) d/dy*d/dt
1/2/x d/dt*d/dz - 1/2/x d/dz*d/dt
1/2/sqrt(x) d/dx*d/dy - 1/2/sqrt(x) d/dy*d/dx
1/2/x d/dx*d/dz - 1/2/x d/dz*d/dx
1/2/x^(3/2) d/dy*d/dz - 1/2/x^(3/2) d/dz*d/dy
In [7]:
MM = matrix(SR, d)
for i, bvi in enumerate(BASIS):
    for j,bvj in enumerate(BASIS):
        MM[i,j] = WO(bvi, bvj).expr()
In [8]:
show(MM)
(596x2000000196x2000000124x2000000124x2000000196x2000000596x2)

This is not a product of surfaces, since its Weyl tensor has type B

We check if the coordinate vector fields are LCW

The vector fields t, y and z are obviously LCWs. We consider x

In [10]:
n = g.connection()
In [11]:
show(n.display())
Γxyyxyy=12Γxzzxzz=xΓyxyyxy=12xΓyyxyyx=12xΓzxzzxz=1xΓzzxzzx=1x
In [12]:
# An orthonormal basis
v1,v2,v3,v4 = ovs
In [13]:
#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
[0 0 0]
[0 0 0]
[0 0 0]

However, the second fundamental form of x is not a multiple of the identity.

In [14]:
#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)
(000012x0001x)

We find all LCWs

The analysis of the Weyl tensor shows that any possible conformal factor must be contained in either <t,x> or <y,z>.

We first seek conformal factors in <t,x>:

In [15]:
print g(n(v3)(v3),v1).display()
print g(n(v3)(v4),v1).display()
print g(n(v4)(v4),v1).display()
M --> R
(t, x, y, z) |--> 0
M --> R
(t, x, y, z) |--> 0
M --> R
(t, x, y, z) |--> 0
In [16]:
print g(n(v3)(v3),v2).display()
print g(n(v3)(v4),v2).display()
print g(n(v4)(v4),v2).display()
M --> R
(t, x, y, z) |--> -1/2/x
M --> R
(t, x, y, z) |--> 0
M --> R
(t, x, y, z) |--> -1/x

The function Zg(ZZ,v1) is identically zero, but Zg(ZZ,v2) is not a multiple of the identity.

Thus the only possible LCW is (x,y,z,t)t, which obviously is.

We compute the second fundamental form of O

We define O=cos(α)v3+sin(α)v4 and P=sin(α)v3+cos(α)v4 for a generic function α(x,y,z,t). We want to find equations for α so that O is umbilic:

In [18]:
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 Z is not integrable. The distribution is umbilic if and only if II is a multiple of the identity, so an umbilic distribution is integrable.

In [20]:
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())
II_{1,2}=1/2*cos(alpha(t, x, y, z))*sin(alpha(t, x, y, z))/x
II_{2,0}=-D[0](alpha)(t, x, y, z)
II_{2,1}=-D[1](alpha)(t, x, y, z)
II_{2,2}=(sqrt(x)*sin(alpha(t, x, y, z))*D[2](alpha)(t, x, y, z) - cos(alpha(t, x, y, z))*D[3](alpha)(t, x, y, z))/x

The entry II1,2=12xcos(α(t,x,y,z))sin(α(t,x,y,z)) is very explicit: α must be a multiple of π/2 at every point. Since α is a continuous function, P must be either v1 or v2.