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 classified 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
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
>>> from sage.all import *
>>> M = Manifold(Integer(4), 'M', structure='Lorentzian')
>>> X_M = M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi", names=('t', 'r', 'th', 'ph',)); (t, r, th, ph,) = X_M._first_ngens(4)
>>> var('m'); assume(m>Integer(0))
m
>>> g = M.metric()
>>> g[Integer(0),Integer(0)], g[Integer(0),Integer(1)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1)+Integer(2)*m/r, Integer(2)*m/r, Integer(1)+Integer(2)*m/r, r**Integer(2), r**Integer(2)*sin(th)**Integer(2)
M = Manifold(4, 'M', structure='Lorentzian') X_M.<t, r, th, ph> = \ M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi") var('m'); assume(m>0) g = M.metric() 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
>>> from sage.all import *
>>> H = Manifold(Integer(3), 'H', ambient=M, structure='degenerate_metric')
>>> H
degenerate hypersurface H embedded in 4-dimensional differentiable
manifold M
H = Manifold(3, 'H', ambient=M, structure='degenerate_metric') H
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
>>> from sage.all import *
>>> M = Manifold(Integer(4), 'M', structure='Lorentzian')
>>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4)
>>> S = Manifold(Integer(2), 'S', ambient=M, structure='degenerate_metric')
>>> S
2-dimensional degenerate submanifold S embedded in 4-dimensional
differentiable manifold M
>>> X_S = S.chart(names=('u', 'v',)); (u, v,) = X_S._first_ngens(2)
>>> Phi = S.diff_map(M, {(X_S, X): [u, u, u, v]},
... name='Phi', latex_name=r'\Phi');
>>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y]}, name='Phi_inv',
... latex_name=r'\Phi^{-1}');
>>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding()
>>> g = M.metric()
>>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1)
>>> S.set_transverse(rigging=[x,y])
>>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1)
>>> V = M.vector_field(); V[Integer(3)] = Integer(1)
>>> Sc = S.screen('Sc', V, xi)
>>> 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
>>> S.ambient_metric()
Lorentzian metric g on the 4-dimensional Lorentzian manifold M
>>> S.induced_metric()
degenerate metric gamma on the 2-dimensional degenerate submanifold S
embedded in 4-dimensional differentiable manifold M
>>> 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
>>> S.adapted_frame()
Vector frame (S, (vv_0,vv_1,vv_2,vv_3)) with values on the 4-dimensional Lorentzian manifold M
>>> 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
>>> 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
>>> SO = S.shape_operator() # long time
>>> SO.display() # long time
A^* = 0
>>> S.is_tangent(xi.along(Phi))
True
>>> v = M.vector_field(); v[Integer(1)] = Integer(1)
>>> S.is_tangent(v.along(Phi))
False
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(2, 'S', ambient=M, structure='degenerate_metric') S X_S.<u,v> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, u, v]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=[x,y]) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', V, xi) S.default_screen() S.ambient_metric() S.induced_metric() S.first_fundamental_form() S.adapted_frame() S.projection(V) S.weingarten_map() # long time SO = S.shape_operator() # long time SO.display() # long time S.is_tangent(xi.along(Phi)) v = M.vector_field(); v[1] = 1 S.is_tangent(v.along(Phi))
AUTHORS:
Hans Fotsing Tetsing (2019) : initial version
REFERENCES:
- class sage.manifolds.differentiable.degenerate_submanifold.DegenerateSubmanifold(n, name, ambient=None, metric_name=None, signature=None, base_manifold=None, diff_degree=+Infinity, latex_name=None, metric_latex_name=None, start_index=0, category=None, unique_tag=None)[source]¶
Bases:
DegenerateManifold
,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 manifoldname
– string; name (symbol) given to the manifoldambient
– (default:None
) pseudo-Riemannian manifold \(M\) in which the submanifold is embedded (or immersed). IfNone
, it is set toself
metric_name
– (default:None
) string; name (symbol) given to the metric; ifNone
,'g'
is usedsignature
– (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; ifsignature
is not provided, \(S\) is set to \((ndim-1, 0, 1)\), being \(ndim\) the manifold’s dimensionbase_manifold
– (default:None
) if notNone
, must be a topological manifold; the created object is then an open subset ofbase_manifold
diff_degree
– (default:infinity
) degree of differentiabilitylatex_name
– (default:None
) string; LaTeX symbol to denote the manifold; if none are provided, it is set toname
metric_latex_name
– (default:None
) string; LaTeX symbol to denote the metric; if none is provided, it is set tometric_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; ifNone
,Manifolds(field)
is assumed (see the categoryManifolds
)unique_tag
– (default:None
) tag used to force the construction of a new object when all the other arguments have been used previously (withoutunique_tag
, theUniqueRepresentation
behavior inherited fromManifoldSubset
would return the previously constructed object corresponding to these arguments)
See also
- adapted_frame(screen=None)[source]¶
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 ofScreen
. ifNone
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> 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
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time T = S.adapted_frame(); T # long time
- ambient_metric()[source]¶
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
>>> from sage.all import * >>> M = Manifold(Integer(3), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y',)); (t, x, y,) = X._first_ngens(3) >>> S = Manifold(Integer(2), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v',)); (u, v,) = X_S._first_ngens(2) >>> Phi = S.diff_map(M, {(X_S, X): [sqrt(u**Integer(2)+v**Integer(2)), u, v]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> S.ambient_metric() Lorentzian metric g on the 3-dimensional Lorentzian manifold M
M = Manifold(3, 'M', structure='Lorentzian') X.<t,x,y> = M.chart() S = Manifold(2, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v> = S.chart() Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() S.ambient_metric()
- default_screen()[source]¶
Return the default screen distribution.
OUTPUT:
an instance of
Screen
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi) # long time >>> 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
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi) # long time S.default_screen() # long time
- extrinsic_curvature(screen=None)[source]¶
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 ofScreen
. IfNone
, the default screen is used
OUTPUT:
an instance of
TangentTensor
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> B = S.second_fundamental_form(); # long time >>> B.display() # long time B = 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time B = S.second_fundamental_form(); # long time B.display() # long time
- first_fundamental_form()[source]¶
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:
the first fundamental form, as an instance of
TangentTensor
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> h = S.first_fundamental_form() # long time
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time h = S.first_fundamental_form() # long time
- gauss_curvature(screen=None)[source]¶
Gauss curvature is the product of all eigenfunctions of the shape operator.
INPUT:
screen
– (default:None
) an instance ofScreen
. IfNone
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 → ℝ (u, v, w) ↦ 0
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> K = S.gauss_curvature(); # long time >>> K.display() # long time S → ℝ (u, v, w) ↦ 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time K = S.gauss_curvature(); # long time K.display() # long time
- induced_metric()[source]¶
Return the pullback of the ambient metric.
OUTPUT:
induced metric, as an instance of
DegenerateMetric
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(2), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v',)); (u, v,) = X_S._first_ngens(2) >>> Phi = S.diff_map(M, {(X_S, X): [sqrt(u**Integer(2)+v**Integer(2)), u, v, Integer(0)]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> h = S.induced_metric(); h # long time degenerate metric gamma on the 2-dimensional degenerate submanifold S embedded in 4-dimensional differentiable manifold M
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(2, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v> = S.chart() Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v, 0]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 h = S.induced_metric(); h # long time
- is_tangent(v)[source]¶
Determine whether a vector field on the ambient manifold along
self
is tangent toself
or not.INPUT:
v
– field on the ambient manifold alongself
OUTPUT:
True
ifv
is everywhere tangent toself
orFalse
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> v = M.vector_field(); v[Integer(1)] = Integer(1) >>> S.set_transverse(rigging=v) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> S.is_tangent(xi.along(Phi)) # long time True >>> S.is_tangent(v.along(Phi)) # long time False
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 v = M.vector_field(); v[1] = 1 S.set_transverse(rigging=v) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time S.is_tangent(xi.along(Phi)) # long time S.is_tangent(v.along(Phi)) # long time
- list_of_screens()[source]¶
Return the default screen distribution.
OUTPUT:
an instance of
Screen
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}
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi') >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}') >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi) # long time >>> 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}
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi') Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}') S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi) # long time S.list_of_screens() # long time
- mean_curvature(screen=None)[source]¶
Mean curvature is the sum of principal curvatures. This method is implemented only for hypersurfaces.
INPUT:
screen
– (default:None
) an instance ofScreen
. IfNone
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 → ℝ (u, v, w) ↦ 0
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> m = S.mean_curvature(); m # long time Scalar field on the degenerate hypersurface S embedded in 4-dimensional differentiable manifold M >>> m.display() # long time S → ℝ (u, v, w) ↦ 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time m = S.mean_curvature(); m # long time m.display() # long time
- principal_directions(screen=None)[source]¶
Principal directions are eigenvectors of the shape operator. This method is implemented only for hypersurfaces.
INPUT:
screen
– (default:None
) an instance ofScreen
. IfNone
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); T = S.adapted_frame() # long time >>> PD = S.principal_directions() # long time >>> PD[Integer(2)][Integer(0)].display(T) # long time e_2 = xi
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); T = S.adapted_frame() # long time PD = S.principal_directions() # long time PD[2][0].display(T) # long time
- projection(tensor, screen=None)[source]¶
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 byset_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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> U1 = S.projection(U) # long time
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time U1 = S.projection(U) # long time
- screen(name, screen, rad, latex_name=None)[source]¶
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 screenlatex_name
– string (default:None
); LaTeX symbol to denote the screen; ifNone
, the LaTeX symbol is set toname
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 normalrad
– – 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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> 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
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); Sc # long time
- screen_projection(tensor, screen=None)[source]¶
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> U1 = S.screen_projection(U); # long time
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time U1 = S.screen_projection(U); # long time
- second_fundamental_form(screen=None)[source]¶
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 ofScreen
. IfNone
, the default screen is used
OUTPUT:
an instance of
TangentTensor
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=x) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> B = S.second_fundamental_form(); # long time >>> B.display() # long time B = 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 S.set_transverse(rigging=x) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time B = S.second_fundamental_form(); # long time B.display() # long time
- set_transverse(rigging=None, normal=None)[source]¶
For setting a transversal distribution of the degenerate submanifold.
According to the type of the submanifold among 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 normalnormal
– 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)
>>> from sage.all import * >>> M = Manifold(Integer(3), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y',)); (t, x, y,) = X._first_ngens(3) >>> S = Manifold(Integer(2), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v',)); (u, v,) = X_S._first_ngens(2) >>> Phi = S.diff_map(M, {(X_S, X): [sqrt(u**Integer(2)+v**Integer(2)), u, v]}, ... name='Phi', latex_name=r'\Phi') >>> Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}') >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)] = -Integer(1),Integer(1),Integer(1) >>> S.set_transverse(rigging=t)
M = Manifold(3, 'M', structure='Lorentzian') X.<t,x,y> = M.chart() S = Manifold(2, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v> = S.chart() Phi = S.diff_map(M, {(X_S, X): [sqrt(u^2+v^2), u, v]}, name='Phi', latex_name=r'\Phi') Phi_inv = M.diff_map(S, {(X, X_S): [x, y]}, name='Phi_inv', latex_name=r'\Phi^{-1}') S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2] = -1,1,1 S.set_transverse(rigging=t)
- shape_operator(screen=None)[source]¶
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 ofScreen
. IfNone
the default screen is used.
OUTPUT:
tensor of type \((1,1)\) instance of
TangentTensor
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> v = M.vector_field(); v[Integer(1)] = Integer(1) >>> S.set_transverse(rigging=v) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> SO = S.shape_operator(); # long time >>> SO.display() # long time A^* = 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 v = M.vector_field(); v[1] = 1 S.set_transverse(rigging=v) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time SO = S.shape_operator(); # long time SO.display() # long time
- weingarten_map(screen=None)[source]¶
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 ofScreen
. IfNone
the default screen is used.
OUTPUT:
tensor of type \((1,1)\) instance of
TangentTensor
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
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> v = M.vector_field(); v[Integer(1)] = Integer(1) >>> S.set_transverse(rigging=v) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> W = S.weingarten_map(); # long time >>> W.display() # long time nabla_g(xi)|X(S) = 0
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 v = M.vector_field(); v[1] = 1 S.set_transverse(rigging=v) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time W = S.weingarten_map(); # long time W.display() # long time
- class sage.manifolds.differentiable.degenerate_submanifold.Screen(submanifold, name, screen, rad, latex_name=None)[source]¶
Bases:
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 ofDegenerateSubmanifold
name
– name given to the screen distributionscreen
– vector fields of the ambient manifold which span the screen distributionrad
– vector fields of the ambient manifold which span the radical distributionlatex_name
– (default:None
) LaTeX symbol to denote the screen distribution; ifNone
, it is formed fromname
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)
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X_M = M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi", names=('t', 'r', 'th', 'ph',)); (t, r, th, ph,) = X_M._first_ngens(4) >>> var('m'); assume(m>Integer(0)) m >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(0),Integer(1)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1)+Integer(2)*m/r, Integer(2)*m/r, Integer(1)+Integer(2)*m/r, r**Integer(2), r**Integer(2)*sin(th)**Integer(2) >>> H = Manifold(Integer(3), 'H', ambient=M, structure='degenerate_metric') >>> X_H = H.chart(r"ht:(-oo,oo):t hth:(0,pi):\theta hph:(0,2*pi):\phi", names=('ht', 'hth', 'hph',)); (ht, hth, hph,) = X_H._first_ngens(3) >>> Phi = H.diff_map(M, {(X_H, X_M): [ht, Integer(2)*m,hth, hph]}, name='Phi', latex_name=r'\Phi') >>> Phi_inv = M.diff_map(H, {(X_M, X_H): [t,th, ph]}, name='Phi_inv', latex_name=r'\Phi^{-1}') >>> H.set_immersion(Phi, inverse=Phi_inv); H.declare_embedding() >>> xi = M.vector_field(-Integer(1), Integer(0), Integer(0), Integer(0)) >>> v = M.vector_field(r, -r, Integer(0), Integer(0)) >>> e1 = M.vector_field(Integer(0), Integer(0), Integer(1), Integer(0)) >>> e2 = M.vector_field(Integer(0), Integer(0), Integer(0), Integer(1))
M = Manifold(4, 'M', structure='Lorentzian') X_M.<t, r, th, ph> = \ M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi") var('m'); assume(m>0) g = M.metric() 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 H = Manifold(3, 'H', ambient=M, structure='degenerate_metric') X_H.<ht,hth,hph> = \ H.chart(r"ht:(-oo,oo):t hth:(0,pi):\theta hph:(0,2*pi):\phi") Phi = H.diff_map(M, {(X_H, X_M): [ht, 2*m,hth, hph]}, \ name='Phi', latex_name=r'\Phi') Phi_inv = M.diff_map(H, {(X_M, X_H): [t,th, ph]}, \ name='Phi_inv', latex_name=r'\Phi^{-1}') H.set_immersion(Phi, inverse=Phi_inv); H.declare_embedding() xi = M.vector_field(-1, 0, 0, 0) v = M.vector_field(r, -r, 0, 0) e1 = M.vector_field(0, 0, 1, 0) 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
>>> from sage.all import * >>> H.set_transverse(rigging=v) >>> 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
H.set_transverse(rigging=v) S = H.screen('S', [e1, e2], (xi)); S # long time
The corresponding normal tangent null vector field and null transversal vector field:
sage: xi = S.normal_tangent_vector(); xi.display() # long time xi = -∂/∂t sage: N = S.rigging(); N.display() # long time N = ∂/∂t - ∂/∂r
>>> from sage.all import * >>> xi = S.normal_tangent_vector(); xi.display() # long time xi = -∂/∂t >>> N = S.rigging(); N.display() # long time N = ∂/∂t - ∂/∂r
xi = S.normal_tangent_vector(); xi.display() # long time N = S.rigging(); N.display() # long time
Those vector fields are normalized by \(g(\xi,N)=1\):
sage: g.along(Phi)(xi, N).display() # long time g(xi,N): H → ℝ (ht, hth, hph) ↦ 1
>>> from sage.all import * >>> g.along(Phi)(xi, N).display() # long time g(xi,N): H → ℝ (ht, hth, hph) ↦ 1
g.along(Phi)(xi, N).display() # long time
- normal_tangent_vector()[source]¶
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 = ∂/∂t + ∂/∂x
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> v = M.vector_field(); v[Integer(1)] = Integer(1) >>> S.set_transverse(rigging=v) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> Rad = Sc.normal_tangent_vector(); Rad.display() # long time xi = ∂/∂t + ∂/∂x
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 v = M.vector_field(); v[1] = 1 S.set_transverse(rigging=v) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time Rad = Sc.normal_tangent_vector(); Rad.display() # long time
- rigging()[source]¶
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 ∂/∂t + 1/2 ∂/∂x
>>> from sage.all import * >>> M = Manifold(Integer(4), 'M', structure='Lorentzian') >>> X = M.chart(names=('t', 'x', 'y', 'z',)); (t, x, y, z,) = X._first_ngens(4) >>> S = Manifold(Integer(3), 'S', ambient=M, structure='degenerate_metric') >>> X_S = S.chart(names=('u', 'v', 'w',)); (u, v, w,) = X_S._first_ngens(3) >>> Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, ... name='Phi', latex_name=r'\Phi'); >>> Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', ... latex_name=r'\Phi^{-1}'); >>> S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() >>> g = M.metric() >>> g[Integer(0),Integer(0)], g[Integer(1),Integer(1)], g[Integer(2),Integer(2)], g[Integer(3),Integer(3)] = -Integer(1),Integer(1),Integer(1),Integer(1) >>> v = M.vector_field(); v[Integer(1)] = Integer(1) >>> S.set_transverse(rigging=v) >>> xi = M.vector_field(); xi[Integer(0)] = Integer(1); xi[Integer(1)] = Integer(1) >>> U = M.vector_field(); U[Integer(2)] = Integer(1); V = M.vector_field(); V[Integer(3)] = Integer(1) >>> Sc = S.screen('Sc', (U,V), xi); # long time >>> rig = Sc.rigging(); rig.display() # long time N = -1/2 ∂/∂t + 1/2 ∂/∂x
M = Manifold(4, 'M', structure='Lorentzian') X.<t,x,y,z> = M.chart() S = Manifold(3, 'S', ambient=M, structure='degenerate_metric') X_S.<u,v,w> = S.chart() Phi = S.diff_map(M, {(X_S, X): [u, u, v, w]}, name='Phi', latex_name=r'\Phi'); Phi_inv = M.diff_map(S, {(X, X_S): [x,y, z]}, name='Phi_inv', latex_name=r'\Phi^{-1}'); S.set_immersion(Phi, inverse=Phi_inv); S.declare_embedding() g = M.metric() g[0,0], g[1,1], g[2,2], g[3,3] = -1,1,1,1 v = M.vector_field(); v[1] = 1 S.set_transverse(rigging=v) xi = M.vector_field(); xi[0] = 1; xi[1] = 1 U = M.vector_field(); U[2] = 1; V = M.vector_field(); V[3] = 1 Sc = S.screen('Sc', (U,V), xi); # long time rig = Sc.rigging(); rig.display() # long time