Degenerate submanifolds¶
An embedded (resp. immersed) degenerate submanifold of a proper
pseudo-Riemannian 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
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
Let
Giving a screen distribution
Tensors on the ambient manifold
To work on a degenerate submanifold, after defining DifferentiableManifold
,
with the keyword structure='degenerate_metric'
, you have to set a
transvervector
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
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
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
is an embedded (resp. immersed) submanifold of as a differentiable manifold such that pull back of the metric tensor via the embedding (resp. immersion) endows 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 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 of the metric as a tuple: , where (resp. , resp. ) is the number of positive terms (resp. negative terms, resp. zero tems) in any diagonal writing of the metric components; ifsignature
is not provided, is set to , being 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
of the ambient manifold along the submanifold, being vector fields spanning the giving screen distribution, vector fields spanning radical distribution, normal transversal vector fields, 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
: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
: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
of type instance ofTangentTensor
such that for two vector fields on the ambient manifold along the null hypersurface, one has:being
the ambient connection, the induced connection and 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
: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
: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
: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
: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
: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
: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
: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
of type on the ambient manifold, this method returns the tensor of type such that for vector fields , is the projection of onself
along the bundle spanned by the transversal vector fields provided byset_transverse()
.INPUT:
tensor
– a tensor of type on the ambient manifold
OUTPUT:
a tensor of type
on the ambient manifold alongself
EXAMPLES:
A degenerate hyperplane the 4-dimensional Minkowski space
: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
: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
of type on the ambient manifold, this method returns the tensor of type such that for vector fields , is the projection of on the bundle spanned byscreen
along the bundle spanned by the transversal plus the radical vector fields provided.INPUT:
tensor
– a tensor of type on the ambient manifold
OUTPUT:
a tensor of type
on the ambient manifold
EXAMPLES:
A degenerate hyperplane the 4-dimensional Minkowski space
: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
of type instance ofTangentTensor
such that for two vector fields on the ambient manifold along the null hypersurface, one has:being
the ambient connection, the induced connection and 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
: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
: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
instance ofTangentTensor
EXAMPLES:
A degenerate hyperplane the 4-dimensional Minkowski space
: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
-form defined for a vector field tangent toself
bybeing
the Levi-Civita connection of the ambient manifold and 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
instance ofTangentTensor
EXAMPLES:
A degenerate hyperplane the 4-dimensional Minkowski space
: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
be a lightlike submanifold embedded in a pseudo-Riemannian manifold with the embedding map. A screen distribution is a complementary of the radical distribution in . One then hasINPUT:
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
: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
: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 in the transverse bundle or (when 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
: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