passagemath-symbolics 10.6.43__cp314-cp314t-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-symbolics might be problematic. Click here for more details.
- passagemath_symbolics/__init__.py +3 -0
- passagemath_symbolics-10.6.43.dist-info/METADATA +187 -0
- passagemath_symbolics-10.6.43.dist-info/RECORD +171 -0
- passagemath_symbolics-10.6.43.dist-info/WHEEL +5 -0
- passagemath_symbolics-10.6.43.dist-info/top_level.txt +3 -0
- sage/all__sagemath_symbolics.py +17 -0
- sage/calculus/all.py +14 -0
- sage/calculus/calculus.py +2826 -0
- sage/calculus/desolvers.py +1866 -0
- sage/calculus/predefined.py +51 -0
- sage/calculus/tests.py +225 -0
- sage/calculus/var.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/calculus/var.pyx +401 -0
- sage/dynamics/all__sagemath_symbolics.py +6 -0
- sage/dynamics/complex_dynamics/all.py +5 -0
- sage/dynamics/complex_dynamics/mandel_julia.py +765 -0
- sage/dynamics/complex_dynamics/mandel_julia_helper.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/dynamics/complex_dynamics/mandel_julia_helper.pyx +1035 -0
- sage/ext/all__sagemath_symbolics.py +1 -0
- sage/ext_data/kenzo/CP2.txt +45 -0
- sage/ext_data/kenzo/CP3.txt +349 -0
- sage/ext_data/kenzo/CP4.txt +4774 -0
- sage/ext_data/kenzo/README.txt +49 -0
- sage/ext_data/kenzo/S4.txt +20 -0
- sage/ext_data/magma/latex/latex.m +1021 -0
- sage/ext_data/magma/latex/latex.spec +1 -0
- sage/ext_data/magma/sage/basic.m +356 -0
- sage/ext_data/magma/sage/sage.spec +1 -0
- sage/ext_data/magma/spec +9 -0
- sage/geometry/all__sagemath_symbolics.py +8 -0
- sage/geometry/hyperbolic_space/all.py +5 -0
- sage/geometry/hyperbolic_space/hyperbolic_coercion.py +743 -0
- sage/geometry/hyperbolic_space/hyperbolic_constants.py +5 -0
- sage/geometry/hyperbolic_space/hyperbolic_geodesic.py +2409 -0
- sage/geometry/hyperbolic_space/hyperbolic_interface.py +206 -0
- sage/geometry/hyperbolic_space/hyperbolic_isometry.py +1082 -0
- sage/geometry/hyperbolic_space/hyperbolic_model.py +1502 -0
- sage/geometry/hyperbolic_space/hyperbolic_point.py +621 -0
- sage/geometry/riemannian_manifolds/all.py +7 -0
- sage/geometry/riemannian_manifolds/parametrized_surface3d.py +1632 -0
- sage/geometry/riemannian_manifolds/surface3d_generators.py +461 -0
- sage/interfaces/all__sagemath_symbolics.py +1 -0
- sage/interfaces/magma.py +3017 -0
- sage/interfaces/magma_free.py +92 -0
- sage/interfaces/maple.py +1397 -0
- sage/interfaces/mathematica.py +1345 -0
- sage/interfaces/mathics.py +1312 -0
- sage/interfaces/sympy.py +1398 -0
- sage/interfaces/sympy_wrapper.py +197 -0
- sage/interfaces/tides.py +938 -0
- sage/libs/all__sagemath_symbolics.py +6 -0
- sage/manifolds/all.py +7 -0
- sage/manifolds/calculus_method.py +555 -0
- sage/manifolds/catalog.py +437 -0
- sage/manifolds/chart.py +4019 -0
- sage/manifolds/chart_func.py +3419 -0
- sage/manifolds/continuous_map.py +2183 -0
- sage/manifolds/continuous_map_image.py +155 -0
- sage/manifolds/differentiable/affine_connection.py +2475 -0
- sage/manifolds/differentiable/all.py +1 -0
- sage/manifolds/differentiable/automorphismfield.py +1383 -0
- sage/manifolds/differentiable/automorphismfield_group.py +604 -0
- sage/manifolds/differentiable/bundle_connection.py +1445 -0
- sage/manifolds/differentiable/characteristic_cohomology_class.py +1840 -0
- sage/manifolds/differentiable/chart.py +1241 -0
- sage/manifolds/differentiable/curve.py +1028 -0
- sage/manifolds/differentiable/de_rham_cohomology.py +541 -0
- sage/manifolds/differentiable/degenerate.py +559 -0
- sage/manifolds/differentiable/degenerate_submanifold.py +1671 -0
- sage/manifolds/differentiable/diff_form.py +1658 -0
- sage/manifolds/differentiable/diff_form_module.py +1062 -0
- sage/manifolds/differentiable/diff_map.py +1315 -0
- sage/manifolds/differentiable/differentiable_submanifold.py +291 -0
- sage/manifolds/differentiable/examples/all.py +1 -0
- sage/manifolds/differentiable/examples/euclidean.py +2517 -0
- sage/manifolds/differentiable/examples/real_line.py +897 -0
- sage/manifolds/differentiable/examples/sphere.py +1186 -0
- sage/manifolds/differentiable/examples/symplectic_space.py +187 -0
- sage/manifolds/differentiable/examples/symplectic_space_test.py +40 -0
- sage/manifolds/differentiable/integrated_curve.py +4035 -0
- sage/manifolds/differentiable/levi_civita_connection.py +841 -0
- sage/manifolds/differentiable/manifold.py +4254 -0
- sage/manifolds/differentiable/manifold_homset.py +1826 -0
- sage/manifolds/differentiable/metric.py +3032 -0
- sage/manifolds/differentiable/mixed_form.py +1507 -0
- sage/manifolds/differentiable/mixed_form_algebra.py +559 -0
- sage/manifolds/differentiable/multivector_module.py +800 -0
- sage/manifolds/differentiable/multivectorfield.py +1520 -0
- sage/manifolds/differentiable/poisson_tensor.py +268 -0
- sage/manifolds/differentiable/pseudo_riemannian.py +755 -0
- sage/manifolds/differentiable/pseudo_riemannian_submanifold.py +1839 -0
- sage/manifolds/differentiable/scalarfield.py +1343 -0
- sage/manifolds/differentiable/scalarfield_algebra.py +472 -0
- sage/manifolds/differentiable/symplectic_form.py +910 -0
- sage/manifolds/differentiable/symplectic_form_test.py +220 -0
- sage/manifolds/differentiable/tangent_space.py +412 -0
- sage/manifolds/differentiable/tangent_vector.py +616 -0
- sage/manifolds/differentiable/tensorfield.py +4665 -0
- sage/manifolds/differentiable/tensorfield_module.py +963 -0
- sage/manifolds/differentiable/tensorfield_paral.py +2450 -0
- sage/manifolds/differentiable/tensorfield_paral_test.py +16 -0
- sage/manifolds/differentiable/vector_bundle.py +1728 -0
- sage/manifolds/differentiable/vectorfield.py +1717 -0
- sage/manifolds/differentiable/vectorfield_module.py +2445 -0
- sage/manifolds/differentiable/vectorframe.py +1832 -0
- sage/manifolds/family.py +270 -0
- sage/manifolds/local_frame.py +1490 -0
- sage/manifolds/manifold.py +3090 -0
- sage/manifolds/manifold_homset.py +452 -0
- sage/manifolds/operators.py +359 -0
- sage/manifolds/point.py +994 -0
- sage/manifolds/scalarfield.py +3718 -0
- sage/manifolds/scalarfield_algebra.py +629 -0
- sage/manifolds/section.py +3111 -0
- sage/manifolds/section_module.py +831 -0
- sage/manifolds/structure.py +229 -0
- sage/manifolds/subset.py +2764 -0
- sage/manifolds/subsets/all.py +1 -0
- sage/manifolds/subsets/closure.py +131 -0
- sage/manifolds/subsets/pullback.py +885 -0
- sage/manifolds/topological_submanifold.py +891 -0
- sage/manifolds/trivialization.py +733 -0
- sage/manifolds/utilities.py +1348 -0
- sage/manifolds/vector_bundle.py +1342 -0
- sage/manifolds/vector_bundle_fiber.py +332 -0
- sage/manifolds/vector_bundle_fiber_element.py +111 -0
- sage/matrix/all__sagemath_symbolics.py +1 -0
- sage/matrix/matrix_symbolic_dense.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_symbolic_dense.pxd +6 -0
- sage/matrix/matrix_symbolic_dense.pyx +1022 -0
- sage/matrix/matrix_symbolic_sparse.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_symbolic_sparse.pxd +6 -0
- sage/matrix/matrix_symbolic_sparse.pyx +1029 -0
- sage/modules/all__sagemath_symbolics.py +1 -0
- sage/modules/vector_callable_symbolic_dense.py +105 -0
- sage/modules/vector_symbolic_dense.py +116 -0
- sage/modules/vector_symbolic_sparse.py +118 -0
- sage/rings/all__sagemath_symbolics.py +4 -0
- sage/rings/asymptotic/all.py +6 -0
- sage/rings/asymptotic/asymptotic_expansion_generators.py +1485 -0
- sage/rings/asymptotic/asymptotic_ring.py +4858 -0
- sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py +4153 -0
- sage/rings/asymptotic/growth_group.py +5373 -0
- sage/rings/asymptotic/growth_group_cartesian.py +1400 -0
- sage/rings/asymptotic/term_monoid.py +5237 -0
- sage/rings/function_field/all__sagemath_symbolics.py +2 -0
- sage/rings/polynomial/all__sagemath_symbolics.py +1 -0
- sage/symbolic/all.py +15 -0
- sage/symbolic/assumptions.py +985 -0
- sage/symbolic/benchmark.py +93 -0
- sage/symbolic/callable.py +459 -0
- sage/symbolic/complexity_measures.py +35 -0
- sage/symbolic/constants.py +1287 -0
- sage/symbolic/expression_conversion_algebraic.py +310 -0
- sage/symbolic/expression_conversion_sympy.py +317 -0
- sage/symbolic/expression_conversions.py +1713 -0
- sage/symbolic/function_factory.py +355 -0
- sage/symbolic/integration/all.py +1 -0
- sage/symbolic/integration/external.py +270 -0
- sage/symbolic/integration/integral.py +1115 -0
- sage/symbolic/maxima_wrapper.py +162 -0
- sage/symbolic/operators.py +267 -0
- sage/symbolic/random_tests.py +462 -0
- sage/symbolic/relation.py +1907 -0
- sage/symbolic/ring.cpython-314t-x86_64-linux-musl.so +0 -0
- sage/symbolic/ring.pxd +5 -0
- sage/symbolic/ring.pyx +1396 -0
- sage/symbolic/subring.py +1025 -0
- sage/symbolic/symengine.py +19 -0
- sage/symbolic/tests.py +40 -0
- sage/symbolic/units.py +1470 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|
|
2
|
+
r"""
|
|
3
|
+
Submanifolds of differentiable manifolds
|
|
4
|
+
|
|
5
|
+
Given two differentiable manifolds `N` and `M`, an *immersion* `\phi` is a
|
|
6
|
+
differentiable map `N\to M` whose differential is everywhere
|
|
7
|
+
injective. One then says that `N` is an *immersed submanifold* of `M`, via
|
|
8
|
+
`\phi`.
|
|
9
|
+
|
|
10
|
+
If in addition, `\phi` is a differentiable embedding (i.e. `\phi` is an
|
|
11
|
+
immersion that is a homeomorphism onto its image), then `N` is called an
|
|
12
|
+
*embedded submanifold* of `M` (or simply a *submanifold*).
|
|
13
|
+
|
|
14
|
+
`\phi` can also depend on one or multiple parameters. As long as the
|
|
15
|
+
differential of `\phi` remains injective in these parameters, it represents a
|
|
16
|
+
*foliation*. The *dimension* of the foliation is defined as the number of
|
|
17
|
+
parameters.
|
|
18
|
+
|
|
19
|
+
AUTHORS:
|
|
20
|
+
|
|
21
|
+
- Florentin Jaffredo (2018): initial version
|
|
22
|
+
- Eric Gourgoulhon (2018-2019): add documentation
|
|
23
|
+
- Matthias Koeppe (2021): open subsets of submanifolds
|
|
24
|
+
|
|
25
|
+
REFERENCES:
|
|
26
|
+
|
|
27
|
+
- \J. M. Lee: *Introduction to Smooth Manifolds* [Lee2013]_
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
# *****************************************************************************
|
|
31
|
+
# Copyright (C) 2018 Florentin Jaffredo <florentin.jaffredo@polytechnique.edu>
|
|
32
|
+
# Copyright (C) 2018-2019 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
|
|
33
|
+
# Copyright (C) 2021 Matthias Koeppe <mkoeppe@math.ucdavis.edu>
|
|
34
|
+
#
|
|
35
|
+
# This program is free software: you can redistribute it and/or modify
|
|
36
|
+
# it under the terms of the GNU General Public License as published by
|
|
37
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
38
|
+
# (at your option) any later version.
|
|
39
|
+
# http://www.gnu.org/licenses/
|
|
40
|
+
# *****************************************************************************
|
|
41
|
+
|
|
42
|
+
from sage.manifolds.differentiable.manifold import DifferentiableManifold
|
|
43
|
+
from sage.manifolds.topological_submanifold import TopologicalSubmanifold
|
|
44
|
+
from sage.rings.infinity import infinity
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class DifferentiableSubmanifold(DifferentiableManifold, TopologicalSubmanifold):
|
|
48
|
+
r"""
|
|
49
|
+
Submanifold of a differentiable manifold.
|
|
50
|
+
|
|
51
|
+
Given two differentiable manifolds `N` and `M`, an *immersion* `\phi` is a
|
|
52
|
+
differentiable map `N\to M` whose differential is everywhere
|
|
53
|
+
injective. One then says that `N` is an *immersed submanifold* of `M`, via
|
|
54
|
+
`\phi`.
|
|
55
|
+
|
|
56
|
+
If in addition, `\phi` is a differentiable embedding (i.e. `\phi` is an
|
|
57
|
+
immersion that is a homeomorphism onto its image), then `N` is called an
|
|
58
|
+
*embedded submanifold* of `M` (or simply a *submanifold*).
|
|
59
|
+
|
|
60
|
+
`\phi` can also depend on one or multiple parameters. As long as the
|
|
61
|
+
differential of `\phi` remains injective in these parameters, it represents
|
|
62
|
+
a *foliation*. The *dimension* of the foliation is defined as the number of
|
|
63
|
+
parameters.
|
|
64
|
+
|
|
65
|
+
INPUT:
|
|
66
|
+
|
|
67
|
+
- ``n`` -- positive integer; dimension of the submanifold
|
|
68
|
+
- ``name`` -- string; name (symbol) given to the submanifold
|
|
69
|
+
- ``field`` -- field `K` on which the sub manifold is defined; allowed
|
|
70
|
+
values are
|
|
71
|
+
|
|
72
|
+
- ``'real'`` or an object of type ``RealField`` (e.g., ``RR``) for
|
|
73
|
+
a manifold over `\RR`
|
|
74
|
+
- ``'complex'`` or an object of type ``ComplexField`` (e.g., ``CC``)
|
|
75
|
+
for a manifold over `\CC`
|
|
76
|
+
- an object in the category of topological fields (see
|
|
77
|
+
:class:`~sage.categories.fields.Fields` and
|
|
78
|
+
:class:`~sage.categories.topological_spaces.TopologicalSpaces`)
|
|
79
|
+
for other types of manifolds
|
|
80
|
+
|
|
81
|
+
- ``structure`` -- manifold structure (see
|
|
82
|
+
:class:`~sage.manifolds.structure.TopologicalStructure` or
|
|
83
|
+
:class:`~sage.manifolds.structure.RealTopologicalStructure`)
|
|
84
|
+
- ``ambient`` -- (default: ``None``) codomain `M` of the immersion `\phi`;
|
|
85
|
+
must be a differentiable manifold. If ``None``, it is set to ``self``
|
|
86
|
+
- ``base_manifold`` -- (default: ``None``) if not ``None``, must be a
|
|
87
|
+
differentiable manifold; the created object is then an open subset of
|
|
88
|
+
``base_manifold``
|
|
89
|
+
- ``diff_degree`` -- (default: ``infinity``) degree of differentiability
|
|
90
|
+
- ``latex_name`` -- (default: ``None``) string; LaTeX symbol to
|
|
91
|
+
denote the submanifold; if none are provided, it is set to ``name``
|
|
92
|
+
- ``start_index`` -- (default: 0) integer; lower value of the range of
|
|
93
|
+
indices used for "indexed objects" on the submanifold, e.g., coordinates
|
|
94
|
+
in a chart
|
|
95
|
+
- ``category`` -- (default: ``None``) to specify the category; if ``None``,
|
|
96
|
+
``Manifolds(field).Differentiable()`` (or ``Manifolds(field).Smooth()``
|
|
97
|
+
if ``diff_degree`` = ``infinity``) is assumed (see the category
|
|
98
|
+
:class:`~sage.categories.manifolds.Manifolds`)
|
|
99
|
+
- ``unique_tag`` -- (default: ``None``) tag used to force the construction
|
|
100
|
+
of a new object when all the other arguments have been used previously
|
|
101
|
+
(without ``unique_tag``, the
|
|
102
|
+
:class:`~sage.structure.unique_representation.UniqueRepresentation`
|
|
103
|
+
behavior inherited from
|
|
104
|
+
:class:`~sage.manifolds.subset.ManifoldSubset` via
|
|
105
|
+
:class:`~sage.manifolds.differentiable.manifold.DifferentiableManifold`
|
|
106
|
+
would return the previously constructed object corresponding to these
|
|
107
|
+
arguments)
|
|
108
|
+
|
|
109
|
+
EXAMPLES:
|
|
110
|
+
|
|
111
|
+
Let `N` be a 2-dimensional submanifold of a 3-dimensional manifold `M`::
|
|
112
|
+
|
|
113
|
+
sage: M = Manifold(3, 'M')
|
|
114
|
+
sage: N = Manifold(2, 'N', ambient=M)
|
|
115
|
+
sage: N
|
|
116
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
117
|
+
3-dimensional differentiable manifold M
|
|
118
|
+
sage: CM.<x,y,z> = M.chart()
|
|
119
|
+
sage: CN.<u,v> = N.chart()
|
|
120
|
+
|
|
121
|
+
Let us define a 1-dimensional foliation indexed by `t`::
|
|
122
|
+
|
|
123
|
+
sage: t = var('t')
|
|
124
|
+
sage: phi = N.continuous_map(M, {(CN,CM): [u, v, t+u^2+v^2]})
|
|
125
|
+
sage: phi.display()
|
|
126
|
+
N → M
|
|
127
|
+
(u, v) ↦ (x, y, z) = (u, v, u^2 + v^2 + t)
|
|
128
|
+
|
|
129
|
+
The foliation inverse maps are needed for computing the adapted chart on
|
|
130
|
+
the ambient manifold::
|
|
131
|
+
|
|
132
|
+
sage: phi_inv = M.continuous_map(N, {(CM, CN): [x, y]})
|
|
133
|
+
sage: phi_inv.display()
|
|
134
|
+
M → N
|
|
135
|
+
(x, y, z) ↦ (u, v) = (x, y)
|
|
136
|
+
sage: phi_inv_t = M.scalar_field({CM: z-x^2-y^2})
|
|
137
|
+
sage: phi_inv_t.display()
|
|
138
|
+
M → ℝ
|
|
139
|
+
(x, y, z) ↦ -x^2 - y^2 + z
|
|
140
|
+
|
|
141
|
+
`\phi` can then be declared as an embedding `N\to M`::
|
|
142
|
+
|
|
143
|
+
sage: N.set_embedding(phi, inverse=phi_inv, var=t,
|
|
144
|
+
....: t_inverse={t: phi_inv_t})
|
|
145
|
+
|
|
146
|
+
The foliation can also be used to find new charts on the ambient manifold
|
|
147
|
+
that are adapted to the foliation, ie in which the expression of the
|
|
148
|
+
immersion is trivial. At the same time, the appropriate coordinate changes
|
|
149
|
+
are computed::
|
|
150
|
+
|
|
151
|
+
sage: N.adapted_chart()
|
|
152
|
+
[Chart (M, (u_M, v_M, t_M))]
|
|
153
|
+
sage: M.atlas()
|
|
154
|
+
[Chart (M, (x, y, z)), Chart (M, (u_M, v_M, t_M))]
|
|
155
|
+
sage: len(M.coord_changes())
|
|
156
|
+
2
|
|
157
|
+
|
|
158
|
+
.. SEEALSO::
|
|
159
|
+
|
|
160
|
+
:mod:`~sage.manifolds.manifold` and
|
|
161
|
+
:mod:`~sage.manifolds.topological_submanifold`
|
|
162
|
+
"""
|
|
163
|
+
def __init__(self, n, name, field, structure, ambient=None,
|
|
164
|
+
base_manifold=None, diff_degree=infinity,
|
|
165
|
+
latex_name=None, start_index=0, category=None,
|
|
166
|
+
unique_tag=None):
|
|
167
|
+
r"""
|
|
168
|
+
Construct a submanifold of a differentiable manifold.
|
|
169
|
+
|
|
170
|
+
TESTS::
|
|
171
|
+
|
|
172
|
+
sage: M = Manifold(3, 'M')
|
|
173
|
+
sage: N = Manifold(2, 'N', ambient=M)
|
|
174
|
+
sage: N
|
|
175
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
176
|
+
3-dimensional differentiable manifold M
|
|
177
|
+
sage: S = Manifold(2, 'S', latex_name=r'\Sigma', ambient=M,
|
|
178
|
+
....: start_index=1)
|
|
179
|
+
sage: latex(S)
|
|
180
|
+
\Sigma
|
|
181
|
+
sage: S.start_index()
|
|
182
|
+
1
|
|
183
|
+
"""
|
|
184
|
+
DifferentiableManifold.__init__(self, n, name, field, structure,
|
|
185
|
+
base_manifold=base_manifold,
|
|
186
|
+
diff_degree=diff_degree,
|
|
187
|
+
latex_name=latex_name,
|
|
188
|
+
start_index=start_index,
|
|
189
|
+
category=category)
|
|
190
|
+
if not (ambient is None
|
|
191
|
+
or isinstance(ambient, DifferentiableManifold)):
|
|
192
|
+
raise TypeError("ambient must be a differentiable manifold")
|
|
193
|
+
self._init_immersion(ambient=ambient)
|
|
194
|
+
|
|
195
|
+
def _repr_(self):
|
|
196
|
+
r"""
|
|
197
|
+
Return a string representation of the submanifold.
|
|
198
|
+
|
|
199
|
+
If no ambient manifold is specified, the submanifold is considered as
|
|
200
|
+
a manifold.
|
|
201
|
+
|
|
202
|
+
TESTS::
|
|
203
|
+
|
|
204
|
+
sage: M = Manifold(3, 'M')
|
|
205
|
+
sage: N = Manifold(2, 'N', ambient=M)
|
|
206
|
+
sage: N
|
|
207
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
208
|
+
3-dimensional differentiable manifold M
|
|
209
|
+
sage: phi = N.diff_map(M)
|
|
210
|
+
sage: N.set_embedding(phi)
|
|
211
|
+
sage: N
|
|
212
|
+
2-dimensional differentiable submanifold N embedded in the
|
|
213
|
+
3-dimensional differentiable manifold M
|
|
214
|
+
"""
|
|
215
|
+
if self is not self._manifold:
|
|
216
|
+
return "Open subset {} of the {}".format(self._name, self._manifold)
|
|
217
|
+
if self._ambient is None:
|
|
218
|
+
return super(DifferentiableManifold, self).__repr__()
|
|
219
|
+
if self._embedded:
|
|
220
|
+
return "{}-dimensional {} submanifold {} embedded in the {}".format(
|
|
221
|
+
self._dim, self._structure.name, self._name, self._ambient)
|
|
222
|
+
return "{}-dimensional {} submanifold {} immersed in the {}".format(
|
|
223
|
+
self._dim, self._structure.name, self._name, self._ambient)
|
|
224
|
+
|
|
225
|
+
def open_subset(self, name, latex_name=None, coord_def={}, supersets=None):
|
|
226
|
+
r"""
|
|
227
|
+
Create an open subset of the manifold.
|
|
228
|
+
|
|
229
|
+
An open subset is a set that is (i) included in the manifold and (ii)
|
|
230
|
+
open with respect to the manifold's topology. It is a differentiable
|
|
231
|
+
manifold by itself.
|
|
232
|
+
|
|
233
|
+
As ``self`` is a submanifold of its ambient manifold,
|
|
234
|
+
the new open subset is also considered a submanifold of that.
|
|
235
|
+
Hence the returned object is an instance of
|
|
236
|
+
:class:`DifferentiableSubmanifold`.
|
|
237
|
+
|
|
238
|
+
INPUT:
|
|
239
|
+
|
|
240
|
+
- ``name`` -- name given to the open subset
|
|
241
|
+
- ``latex_name`` -- (default: ``None``) LaTeX symbol to denote the
|
|
242
|
+
subset; if none is provided, it is set to ``name``
|
|
243
|
+
- ``coord_def`` -- (default: {}) definition of the subset in
|
|
244
|
+
terms of coordinates; ``coord_def`` must a be dictionary with keys
|
|
245
|
+
charts in the manifold's atlas and values the symbolic expressions
|
|
246
|
+
formed by the coordinates to define the subset.
|
|
247
|
+
- ``supersets`` -- (default: only ``self``) list of sets that the
|
|
248
|
+
new open subset is a subset of
|
|
249
|
+
|
|
250
|
+
OUTPUT: the open subset, as an instance of :class:`DifferentiableSubmanifold`
|
|
251
|
+
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: M = Manifold(3, 'M', structure='differentiable')
|
|
255
|
+
sage: N = Manifold(2, 'N', ambient=M, structure='differentiable'); N
|
|
256
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
257
|
+
3-dimensional differentiable manifold M
|
|
258
|
+
sage: S = N.subset('S'); S
|
|
259
|
+
Subset S of the
|
|
260
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
261
|
+
3-dimensional differentiable manifold M
|
|
262
|
+
sage: O = N.subset('O', is_open=True); O # indirect doctest
|
|
263
|
+
Open subset O of the
|
|
264
|
+
2-dimensional differentiable submanifold N immersed in the
|
|
265
|
+
3-dimensional differentiable manifold M
|
|
266
|
+
|
|
267
|
+
sage: phi = N.diff_map(M)
|
|
268
|
+
sage: N.set_embedding(phi)
|
|
269
|
+
sage: N
|
|
270
|
+
2-dimensional differentiable submanifold N embedded in the
|
|
271
|
+
3-dimensional differentiable manifold M
|
|
272
|
+
sage: S = N.subset('S'); S
|
|
273
|
+
Subset S of the
|
|
274
|
+
2-dimensional differentiable submanifold N embedded in the
|
|
275
|
+
3-dimensional differentiable manifold M
|
|
276
|
+
sage: O = N.subset('O', is_open=True); O # indirect doctest
|
|
277
|
+
Open subset O of the
|
|
278
|
+
2-dimensional differentiable submanifold N embedded in the
|
|
279
|
+
3-dimensional differentiable manifold M
|
|
280
|
+
"""
|
|
281
|
+
resu = DifferentiableSubmanifold(self._dim, name, self._field,
|
|
282
|
+
self._structure, ambient=self._ambient,
|
|
283
|
+
base_manifold=self._manifold,
|
|
284
|
+
diff_degree=self._diff_degree,
|
|
285
|
+
latex_name=latex_name,
|
|
286
|
+
start_index=self._sindex)
|
|
287
|
+
if supersets is None:
|
|
288
|
+
supersets = [self]
|
|
289
|
+
for superset in supersets:
|
|
290
|
+
superset._init_open_subset(resu, coord_def=coord_def)
|
|
291
|
+
return resu
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|