Degenerate submanifolds

An embedded (resp. immersed) degenerate submanifold of a proper pseudo-Riemannian manifold \((M,g)\) is an embedded (resp. immersed) submanifold \(H\) of \(M\) as a differentiable manifold such that pull back of the metric tensor \(g\) via the embedding (resp. immersion) endows \(H\) with the structure of a degenerate manifold.

Degenerate submanifolds are study in many fields of mathematics and physics, for instance in Differential Geometry (especially in geometry of lightlike submanifold) and in General Relativity. In geometry of lightlike submanifolds, according to the dimension \(r\) of the radical distribution (see below for definition of radical distribution), degenerate submanifolds have been classify into 4 subgroups: \(r\)-lightlike submanifolds, Coisotropic submanifolds, Isotropic submanifolds and Totally lightlike submanifolds. (See the book of Krishan L. Duggal and Aurel Bejancu [DS2010].)

In the present module, you can define any of the 4 types but most of the methods are implemented only for degenerate hypersurfaces who belong to \(r\)-lightlike submanifolds. However, they might be generalized to \(1\)-lightlike submanifolds. In the literature there is a new approach (the rigging technique) for studying \(1\)-lightlike submanifolds but here we use the method of Krishan L. Duggal and Aurel Bejancu based on the screen distribution.

Let \(H\) be a lightlike hypersurface of a pseudo-Riemannian manifold \((M,g)\). Then the normal bundle \(TH^\perp\) intersect the tangent bundle \(TH\). The radical distribution is defined as \(Rad(TH)=TH\cap TH^\perp\). In case of hypersurfaces, and more generally \(1\)-lightlike submanifolds, this is a rank 1 distribution. A screen distribution \(S(TH)\) is a complementary of \(Rad(TH)\) in \(TH\).

Giving a screen distribution \(S(TH)\) and a null vector field \(\xi\) locally defined and spanning \(Rad(TH)\), there exists a unique transversal null vector field ‘N’ locally defined and such that \(g(N,\xi)=1\). From a transverse vector ‘v’, the null rigging ‘N’ is giving by the formula

\[N = \frac{1}{g(\xi, v)}\left(v-\frac{g(v,v)}{2g(\xi, v)}\xi\right)\]

Tensors on the ambient manifold \(M\) are projected on \(H\) along \(N\) to obtain induced objects. For instance, induced connection is the linear connection defined on H through the Levi-Civitta connection of \(g\) along \(N\).

To work on a degenerate submanifold, after defining \(H\) as an instance of DifferentiableManifold, with the keyword structure='degenerate_metric', you have to set a transvervector \(v\) and screen distribution together with the radical distribution.

An example of degenerate submanifold from General Relativity is the horizon of the Schwarzschild black hole. Allow us to recall that Schwarzschild black hole is the first non-trivial solution of Einstein’s equations. It describes the metric inside a star of radius \(R = 2m\), being \(m\) the inertial mass of the star. It can be seen as an open ball in a Lorentzian manifold structure on \(\RR^4\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X_M.<t, r, th, ph> = \
....: M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi")
sage: var('m'); assume(m>0)
m
sage: g = M.metric()
sage: g[0,0], g[0,1], g[1,1], g[2,2], g[3,3] = \
....: -1+2*m/r, 2*m/r, 1+2*m/r, r^2, r^2*sin(th)^2

Let us define the horizon as a degenerate hypersurface:

sage: H = Manifold(3, 'H', ambient=M, structure='degenerate_metric')
sage: H
degenerate hypersurface H embedded in 4-dimensional differentiable
manifold M

A \(2\)-dimensional degenerate submanifold of a Lorentzian manifold:

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(2, 'S', ambient=M, structure='degenerate_metric')
sage: S
2-dimensional degenerate submanifold S embedded in 4-dimensional
differentiable manifold M
sage: X_S.<u,v> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, u, v]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=[x,y])
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', V, xi)

sage: S.default_screen()
screen distribution Sc along the 2-dimensional degenerate submanifold
S embedded in 4-dimensional differentiable manifold M mapped into
the 4-dimensional Lorentzian manifold M

sage: S.ambient_metric()
Lorentzian metric g on the 4-dimensional Lorentzian manifold M

sage: S.induced_metric()
degenerate metric gamma on the 2-dimensional degenerate submanifold S
embedded in 4-dimensional differentiable manifold M

sage: S.first_fundamental_form()
Field of symmetric bilinear forms g|S along the 2-dimensional
degenerate submanifold S embedded in 4-dimensional differentiable manifold M
with values on the 4-dimensional Lorentzian manifold M

sage: S.adapted_frame()
Vector frame (S, (vv_0,vv_1,vv_2,vv_3)) with values on the 4-dimensional Lorentzian manifold M

sage: S.projection(V)
Tensor field of type (1,0) along the 2-dimensional degenerate submanifold S
embedded in 4-dimensional differentiable manifold M
with values on the 4-dimensional Lorentzian manifold M

sage: S.weingarten_map()  # long time
Tensor field nabla_g(xi)|X(S) of type (1,1) along the 2-dimensional
degenerate submanifold S embedded in 4-dimensional differentiable manifold M
with values on the 4-dimensional Lorentzian manifold M

sage: SO = S.shape_operator()  # long time
sage: SO.display()             # long time
A^* = 0

sage: S.is_tangent(xi.along(Phi))
True
sage: v = M.vector_field(); v[1] = 1
sage: S.is_tangent(v.along(Phi))
False

AUTHORS:

  • Hans Fotsing Tetsing (2019) : initial version

REFERENCES:

class sage.manifolds.differentiable.degenerate_submanifold.DegenerateSubmanifold(n, name, ambient=None, metric_name='g', signature=None, base_manifold=None, diff_degree=+Infinity, latex_name=None, metric_latex_name=None, start_index=0, category=None, unique_tag=None)

Bases: sage.manifolds.differentiable.degenerate.DegenerateManifold, sage.manifolds.differentiable.differentiable_submanifold.DifferentiableSubmanifold

Degenerate submanifolds

An embedded (resp. immersed) degenerate submanifold of a proper pseudo-Riemannian manifold \((M,g)\) is an embedded (resp. immersed) submanifold \(H\) of \(M\) as a differentiable manifold such that pull back of the metric tensor \(g\) via the embedding (resp. immersion) endows \(H\) with the structure of a degenerate manifold.

INPUT:

  • n – positive integer; dimension of the manifold
  • name – string; name (symbol) given to the manifold
  • field – field \(K\) on which the manifold is defined; allowed values are
    • 'real' or an object of type RealField (e.g., RR) for a manifold over \(\RR\)
    • 'complex' or an object of type ComplexField (e.g., CC) for a manifold over \(\CC\)
    • an object in the category of topological fields (see Fields and TopologicalSpaces) for other types of manifolds
  • signature – (default: None) signature \(S\) of the metric as a tuple: \(S = (n_+, n_-, n_0)\), where \(n_+\) (resp. \(n_-\), resp. \(n_0\)) is the number of positive terms (resp. negative terms, resp. zero tems) in any diagonal writing of the metric components; if signature is not provided, \(S\) is set to \((ndim-1, 0, 1)\), being \(ndim\) the manifold’s dimension
  • ambient – (default: None) manifold of destination of the immersion. If None, set to self
  • base_manifold – (default: None) if not None, must be a topological manifold; the created object is then an open subset of base_manifold
  • latex_name – (default: None) string; LaTeX symbol to denote the manifold; if none are provided, it is set to name
  • start_index – (default: 0) integer; lower value of the range of indices used for “indexed objects” on the manifold, e.g., coordinates in a chart - category – (default: None) to specify the category; if None, Manifolds(field) is assumed (see the category Manifolds)
  • unique_tag – (default: None) tag used to force the construction of a new object when all the other arguments have been used previously (without unique_tag, the UniqueRepresentation behavior inherited from ManifoldSubset would return the previously constructed object corresponding to these arguments)
adapted_frame(screen=None)

Return a frame \((e_1,\ldots,e_p, \xi_1,\ldots, \xi_r, v_1,\ldots, v_q, N_1, \ldots, N_n)\) of the ambient manifold along the submanifold, being \(e_i\) vector fields spanning the giving screen distribution, \(\xi_i\) vector fields spanning radical distribution, \(v_i\) normal transversal vector fields, \(N_i\) rigging vector fields corresponding to the giving screen.

INPUT:

  • screen – (default: None) an instance of Screen. if None default screen is used.

OUTPUT:

  • a frame on the ambient manifold along the submanifold

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: T = S.adapted_frame(); T         # long time
Vector frame (S, (vv_0,vv_1,vv_2,vv_3)) with values on the 4-dimensional
Lorentzian manifold M
ambient_metric()

Return the metric of the ambient manifold. The submanifold has to be embedded

OUTPUT:

  • the metric of the ambient manifold

EXAMPLES:

The lightcone of the 3D Minkowski space:

sage: M = Manifold(3, 'M', structure="Lorentzian")
sage: X.<t,x,y> = M.chart()
sage: S = Manifold(2, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v]},
....:           name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv',
....:               latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: S.ambient_metric()
Lorentzian metric g on the 3-dimensional Lorentzian manifold M
default_screen()

Return the default screen distribution

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi)  # long time
sage: S.default_screen()              # long time
screen distribution Sc along the degenerate hypersurface S embedded
in 4-dimensional differentiable manifold M mapped into the 4-dimensional
Lorentzian manifold M
extrinsic_curvature(screen=None)

This method is implemented only for null hypersurfaces. The method returns a tensor \(B\) of type \((0,2)\) instance of TangentTensor such that for two vector fields \(U, V\) on the ambient manifold along the null hypersurface, one has:

\[\nabla_UV=D(U,V)+B(U,V)N\]

being \(\nabla\) the ambient connection, \(D\) the induced connection and \(N\) the chosen rigging.

INPUT:

  • screen – (default: None) an instance of Screen. If None, the default screen is used

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);   # long time
sage: B = S.second_fundamental_form();  # long time
sage: B.display()                       # long time
B = 0
first_fundamental_form()

Return the restriction of the ambient metric on vector field along the submanifold and tangent to it. It is difference from induced metric who gives the pullback of the ambient metric on the submanifold.

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: h = S.first_fundamental_form()   # long time
gauss_curvature(screen=None)

Gauss curvature is the product of all eigenfunctions of the shape operator.

INPUT:

  • screen – (default: None) an instance of Screen. If None the default screen is used.

OUTPUT:

  • a scalar function on self

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: K = S.gauss_curvature();         # long time
sage: K.display()                      # long time
S --> R
(u, v, w) |--> 0
induced_metric()

Return the pullback of the ambient metric.

OUTPUT:

EXAMPLES:

Section of the lightcone of the Minkowski space with a hyperplane passing through the origin:

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(2, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v, 0]},
....:             name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: h = S.induced_metric(); h  # long time
degenerate metric gamma on the 2-dimensional degenerate
submanifold S embedded in 4-dimensional differentiable manifold M
is_tangent(v)

Determine whether a vector field on the ambient manifold along self is tangent to self or not.

INPUT:

  • v – field on the ambient manifold along self

OUTPUT:

  • True if v is everywhere tangent to self or False if not

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: v = M.vector_field(); v[1] = 1
sage: S.set_transverse(rigging=v)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: S.is_tangent(xi.along(Phi))      # long time
True
sage: S.is_tangent(v.along(Phi))       # long time
False
list_of_screens()

Return the default screen distribution.

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:                  name='Phi', latex_name=r'\Phi')
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:                      latex_name=r'\Phi^{-1}')
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi)  # long time
sage: S.list_of_screens()             # long time
{'Sc': screen distribution Sc along the degenerate hypersurface S
embedded in 4-dimensional differentiable manifold M mapped into the
4-dimensional Lorentzian manifold M}
mean_curvature(screen=None)

Mean curvature is the sum of principal curvatures. This method is implemented only for hypersurfaces.

INPUT:

  • screen – (default: None) an instance of Screen. If None the default screen is used.

OUTPUT:

  • the mean curvature, as a scalar field on the submanifold

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: m = S.mean_curvature(); m        # long time
Scalar field on the degenerate hypersurface S embedded in 4-dimensional
differentiable manifold M
sage: m.display()                      # long time
S --> R
(u, v, w) |--> 0
principal_directions(screen=None)

Principal directions are eigenvectors of the shape operator. This method is implemented only for hypersurfaces.

INPUT:

  • screen – (default: None) an instance of Screen. If None default screen is used.

OUTPUT:

  • list of pairs (vector field, scalar field) representing the principal directions and the associated principal curvatures

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi); T = S.adapted_frame()  # long time
sage: PD = S.principal_directions()                          # long time
sage: PD[2][0].display(T)                                    # long time
e_2 = xi
projection(tensor, screen=None)

For a given tensor \(T\) of type \((r, 1)\) on the ambient manifold, this method returns the tensor \(T'\) of type \((r,1)\) such that for \(r\) vector fields \(v_1,\ldots,v_r\), \(T'(v_1,\ldots,v_r)\) is the projection of \(T(v_1,\ldots,v_r)\) on self along the bundle spanned by the transversal vector fields provided by set_transverse().

INPUT:

  • tensor – a tensor of type \((r,1)\) on the ambient manifold

OUTPUT:

  • a tensor of type \((r,1)\) on the ambient manifold along self

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: U1 = S.projection(U)             # long time
screen(name, screen, rad, latex_name=None)

For setting a screen distribution and vector fields of the radical distribution that will be used for computations

INPUT:

  • name – string (default: None); name given to the screen
  • latex_name – string (default: None); LaTeX symbol to denote the screen; if None, the LaTeX symbol is set to name
  • screen – list or tuple of vector fields of the ambient manifold or chart function; of the ambient manifold in the latter case, the corresponding gradient vector field with respect to the ambient metric is calculated; the vectors must be linearly independent, tangent to the submanifold but not normal
  • rad – – list or tuple of vector fields of the ambient manifold or chart function; of the ambient manifold in the latter case, the corresponding gradient vector field with respect to the ambient metric is calculated; the vectors must be linearly independent, tangent and normal to the submanifold

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi); Sc  # long time
screen distribution Sc along the degenerate hypersurface S embedded
in 4-dimensional differentiable manifold M mapped into the 4-dimensional
Lorentzian manifold M
screen_projection(tensor, screen=None)

For a given tensor \(T\) of type \((r, 1)\) on the ambient manifold, this method returns the tensor \(T'\) of type \((r,1)\) such that for \(r\) vector fields \(v_1,\ldots,v_r\), \(T'(v_1,\ldots,v_r)\) is the projection of \(T(v_1,\ldots,v_r)\) on the bundle spanned by screen along the bundle spanned by the transversal plus the radical vector fields provided.

INPUT:

  • tensor – a tensor of type \((r,1)\) on the ambient manifold

OUTPUT:

  • a tensor of type \((r,1)\) on the ambient manifold

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: U1 = S.screen_projection(U);     # long time
second_fundamental_form(screen=None)

This method is implemented only for null hypersurfaces. The method returns a tensor \(B\) of type \((0,2)\) instance of TangentTensor such that for two vector fields \(U, V\) on the ambient manifold along the null hypersurface, one has:

\[\nabla_UV=D(U,V)+B(U,V)N\]

being \(\nabla\) the ambient connection, \(D\) the induced connection and \(N\) the chosen rigging.

INPUT:

  • screen – (default: None) an instance of Screen. If None, the default screen is used

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: S.set_transverse(rigging=x)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);   # long time
sage: B = S.second_fundamental_form();  # long time
sage: B.display()                       # long time
B = 0
set_transverse(rigging=None, normal=None)

For setting a transversal disttribution of the degenerate submanifold. according to the type of the submanifold amoung the 4 possible types, one must enter a list of normal transversal vector fields and/or a list of transversal and not normal vector fields spanning a transverse distribution.

INPUT:

  • rigging – list or tuple (default: None); list of vector fields of the ambient manifold or chart function; of the ambient manifold in the latter case, the corresponding gradient vector field with respect to the ambient metric is calculated; the vectors must be linearly independent, transversal to the submanifold but not normal
  • normal – list or tuple (default: None); list of vector fields of the ambient manifold or chart function; of the ambient manifold in the latter case, the corresponding gradient vector field with respect to the ambient metric is calculated; the vectors must be linearly independent, transversal and normal to the submanifold

EXAMPLES:

The lightcone of the 3-dimensional Minkowski space \(\RR^3_1\):

sage: M = Manifold(3, 'M', structure="Lorentzian")
sage: X.<t,x,y> = M.chart()
sage: S = Manifold(2, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v]},
....:                   name='Phi', latex_name=r'\Phi')
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv',
....:                           latex_name=r'\Phi^{-1}')
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2] = -1,1,1
sage: S.set_transverse(rigging=t)
shape_operator(screen=None)

This method is implemented only for hypersurfaces. shape operator is the projection of the Weingarten map on the screen distribution along the radical distribution.

INPUT:

  • screen – (default: None) an instance of Screen. If None the default screen is used.

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: v = M.vector_field(); v[1] = 1
sage: S.set_transverse(rigging=v)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: SO = S.shape_operator();         # long time
sage: SO.display()                     # long time
A^* = 0
weingarten_map(screen=None)

This method is implemented only for hypersurfaces. Weigarten map is the \(1\)-form \(W\) defined for a vector field \(U\) tangent to self by

\[W(U)=\nabla_U\xi\]

being \(\nabla\) the Levi-Civita connection of the ambient manifold and \(\xi\) the chosen vector field spanning the radical distribution.

INPUT:

  • screen – (default: None) an instance of Screen. If None the default screen is used.

OUTPUT:

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: v = M.vector_field(); v[1] = 1
sage: S.set_transverse(rigging=v)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);  # long time
sage: W = S.weingarten_map();          # long time
sage: W.display()                      # long time
nabla_g(xi)|X(S) = 0
class sage.manifolds.differentiable.degenerate_submanifold.Screen(submanifold, name, screen, rad, latex_name=None)

Bases: sage.manifolds.differentiable.vectorfield_module.VectorFieldModule

Let \(H\) be a lightlike submanifold embedded in a pseudo-Riemannian manifold \((M,g)\) with \(\Phi\) the embedding map. A screen distribution is a complementary \(S(TH)\) of the radical distribution \(Rad(TM)=TH\cap TH^\perp\) in \(TH\). One then has

\[TH=S(TH)\oplus_{orth}Rad(TH)\]

INPUT:

  • submanifold – a lightlike submanifold, as an instance of DegenerateSubmanifold
  • name – name given to the screen distribution
  • screen – vector fields of the ambient manifold which span the screen distribution
  • rad – vector fields of the ambient manifold which span the radical distribution
  • latex_name – (default: None) LaTeX symbol to denote the screen distribution; if None, it is formed from name

EXAMPLES:

The horizon of the Schwarzschild black hole:

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X_M.<t, r, th, ph> = \
....: M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi")
sage: var('m'); assume(m>0)
m
sage: g = M.metric()
sage: g[0,0], g[0,1], g[1,1], g[2,2], g[3,3] = \
....: -1+2*m/r, 2*m/r, 1+2*m/r, r^2, r^2*sin(th)^2
sage: H = Manifold(3, 'H', ambient=M, structure='degenerate_metric')
sage: X_H.<ht,hth,hph> = \
....: H.chart(r"ht:(-oo,oo):t hth:(0,pi):\theta hph:(0,2*pi):\phi")
sage: Phi = H.diff_map(M, {(X_H, X_M): [ht, 2*m,hth, hph]}, \
....: name='Phi', latex_name=r'\Phi')
sage: Phi_inv = M.diff_map(H, {(X_M, X_H): [t,th, ph]}, \
....: name='Phi_inv', latex_name=r'\Phi^{-1}')
sage: H.set_immersion(Phi, inverse=Phi_inv); H.declare_embedding()
sage: xi = M.vector_field(-1, 0, 0, 0)
sage: v = M.vector_field(r, -r, 0, 0)
sage: e1 = M.vector_field(0, 0, 1, 0)
sage: e2 = M.vector_field(0, 0, 0, 1)

A screen distribution for the Schwarzschild black hole horizon:

sage: H.set_transverse(rigging=v)
sage: S = H.screen('S', [e1, e2], (xi)); S  # long time
screen distribution S along the degenerate hypersurface H embedded
in 4-dimensional differentiable manifold M mapped into the
4-dimensional Lorentzian manifold M

The corresponding normal tangent null vector field and null transversal vector field:

sage: xi = S.normal_tangent_vector(); xi.display()  # long time
xi = -d/dt
sage: N = S.rigging(); N.display()  # long time
N = d/dt - d/dr

Those vector fields are normalized by \(g(\xi,N)=1\):

sage: g.along(Phi)(xi, N).display()  # long time
g(xi,N): H --> R
(ht, hth, hph) |--> 1
normal_tangent_vector()

Return either a list Rad of vector fields spanning the radical distribution or (in case of a hypersurface) a normal tangent null vector field spanning the radical distribution.

OUTPUT:

  • either a list of vector fields or a single vector field in case of a hypersurface

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:                  name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:                      latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: v = M.vector_field(); v[1] = 1
sage: S.set_transverse(rigging=v)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);                  # long time
sage: Rad = Sc.normal_tangent_vector(); Rad.display()  # long time
xi = d/dt + d/dx
rigging()

Return either a list Rad of vector fields spanning the complementary of the normal distribution \(TH^\perp\) in the transverse bundle or (when \(H\) is a null hypersurface) the null transversal vector field defined in [DB1996].

OUTPUT:

  • either a list made by vector fields or a vector field in case of hypersurface

EXAMPLES:

A degenerate hyperplane the 4-dimensional Minkowski space \(\RR^4_1\):

sage: M = Manifold(4, 'M', structure="Lorentzian")
sage: X.<t,x,y,z> = M.chart()
sage: S = Manifold(3, 'S', ambient=M, structure='degenerate_metric')
sage: X_S.<u,v,w> = S.chart()
sage: Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]},
....:         name='Phi', latex_name=r'\Phi');
sage: Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv',
....:           latex_name=r'\Phi^{-1}');
sage: S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
sage: g = M.metric()
sage: g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1
sage: v = M.vector_field(); v[1] = 1
sage: S.set_transverse(rigging=v)
sage: xi = M.vector_field(); xi[0] = 1; xi[1] = 1
sage: U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1
sage: Sc = S.screen('Sc', (U,V), xi);    # long time
sage: rig = Sc.rigging(); rig.display()  # long time
N = -1/2 d/dt + 1/2 d/dx