passagemath-symbolics 10.6.37__cp310-cp310-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.
- passagemath_symbolics/__init__.py +3 -0
- passagemath_symbolics-10.6.37.dist-info/METADATA +187 -0
- passagemath_symbolics-10.6.37.dist-info/RECORD +171 -0
- passagemath_symbolics-10.6.37.dist-info/WHEEL +5 -0
- passagemath_symbolics-10.6.37.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-310-x86_64-linux-gnu.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-310-x86_64-linux-gnu.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-310-x86_64-linux-gnu.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-310-x86_64-linux-gnu.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-310-x86_64-linux-gnu.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,604 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-symbolics
|
|
2
|
+
r"""
|
|
3
|
+
Group of Tangent-Space Automorphism Fields
|
|
4
|
+
|
|
5
|
+
Given a differentiable manifold `U` and a differentiable map
|
|
6
|
+
`\Phi: U \rightarrow M` to a differentiable manifold `M` (possibly `U = M`
|
|
7
|
+
and `\Phi=\mathrm{Id}_M`), the *group of tangent-space automorphism fields*
|
|
8
|
+
associated with `U` and `\Phi` is the general linear group
|
|
9
|
+
`\mathrm{GL}(\mathfrak{X}(U,\Phi))` of the module `\mathfrak{X}(U,\Phi)` of
|
|
10
|
+
vector fields along `U` with values on `M\supset \Phi(U)` (see
|
|
11
|
+
:class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldModule`).
|
|
12
|
+
Note that `\mathfrak{X}(U, \Phi)` is a module over
|
|
13
|
+
`C^k(U)`, the algebra of differentiable scalar fields on `U`.
|
|
14
|
+
Elements of `\mathrm{GL}(\mathfrak{X}(U, \Phi))` are fields along `U`
|
|
15
|
+
of automorphisms of tangent spaces to `M`.
|
|
16
|
+
|
|
17
|
+
Two classes implement `\mathrm{GL}(\mathfrak{X}(U, \Phi))` depending
|
|
18
|
+
whether `M` is parallelizable or not:
|
|
19
|
+
:class:`AutomorphismFieldParalGroup` and :class:`AutomorphismFieldGroup`.
|
|
20
|
+
|
|
21
|
+
AUTHORS:
|
|
22
|
+
|
|
23
|
+
- Eric Gourgoulhon (2015): initial version
|
|
24
|
+
- Travis Scrimshaw (2016): review tweaks
|
|
25
|
+
- Michael Jung (2019): improve treatment of the identity element
|
|
26
|
+
|
|
27
|
+
REFERENCES:
|
|
28
|
+
|
|
29
|
+
- Chap. 15 of [God1968]_
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
#******************************************************************************
|
|
33
|
+
# Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
|
|
34
|
+
# Copyright (C) 2016 Travis Scrimshaw <tscrimsh@umn.edu>
|
|
35
|
+
#
|
|
36
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
37
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
38
|
+
# the License, or (at your option) any later version.
|
|
39
|
+
# http://www.gnu.org/licenses/
|
|
40
|
+
#******************************************************************************
|
|
41
|
+
|
|
42
|
+
from sage.categories.groups import Groups
|
|
43
|
+
from sage.manifolds.differentiable.automorphismfield import (
|
|
44
|
+
AutomorphismField,
|
|
45
|
+
AutomorphismFieldParal,
|
|
46
|
+
)
|
|
47
|
+
from sage.manifolds.differentiable.vectorfield_module import (
|
|
48
|
+
VectorFieldFreeModule,
|
|
49
|
+
VectorFieldModule,
|
|
50
|
+
)
|
|
51
|
+
from sage.misc.cachefunc import cached_method
|
|
52
|
+
from sage.structure.parent import Parent
|
|
53
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
54
|
+
from sage.tensor.modules.free_module_linear_group import FreeModuleLinearGroup
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class AutomorphismFieldGroup(UniqueRepresentation, Parent):
|
|
58
|
+
r"""
|
|
59
|
+
General linear group of the module of vector fields along a differentiable
|
|
60
|
+
manifold `U` with values on a differentiable manifold `M`.
|
|
61
|
+
|
|
62
|
+
Given a differentiable manifold `U` and a differentiable map
|
|
63
|
+
`\Phi: U \rightarrow M` to a differentiable manifold `M` (possibly `U = M`
|
|
64
|
+
and `\Phi = \mathrm{Id}_M`), the *group of tangent-space automorphism
|
|
65
|
+
fields* associated with `U` and `\Phi` is the general linear group
|
|
66
|
+
`\mathrm{GL}(\mathfrak{X}(U,\Phi))` of the module `\mathfrak{X}(U,\Phi)` of
|
|
67
|
+
vector fields along `U` with values on `M \supset \Phi(U)` (see
|
|
68
|
+
:class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldModule`).
|
|
69
|
+
Note that `\mathfrak{X}(U,\Phi)` is a module over
|
|
70
|
+
`C^k(U)`, the algebra of differentiable scalar fields on `U`.
|
|
71
|
+
Elements of `\mathrm{GL}(\mathfrak{X}(U,\Phi))` are fields along `U` of
|
|
72
|
+
automorphisms of tangent spaces to `M`.
|
|
73
|
+
|
|
74
|
+
.. NOTE::
|
|
75
|
+
|
|
76
|
+
If `M` is parallelizable, then :class:`AutomorphismFieldParalGroup`
|
|
77
|
+
*must* be used instead.
|
|
78
|
+
|
|
79
|
+
INPUT:
|
|
80
|
+
|
|
81
|
+
- ``vector_field_module`` --
|
|
82
|
+
:class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldModule`;
|
|
83
|
+
module `\mathfrak{X}(U,\Phi)` of vector fields along `U` with values on `M`
|
|
84
|
+
|
|
85
|
+
EXAMPLES:
|
|
86
|
+
|
|
87
|
+
Group of tangent-space automorphism fields of the 2-sphere::
|
|
88
|
+
|
|
89
|
+
sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2
|
|
90
|
+
sage: U = M.open_subset('U') # complement of the North pole
|
|
91
|
+
sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole
|
|
92
|
+
sage: V = M.open_subset('V') # complement of the South pole
|
|
93
|
+
sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole
|
|
94
|
+
sage: M.declare_union(U,V) # S^2 is the union of U and V
|
|
95
|
+
sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)),
|
|
96
|
+
....: intersection_name='W',
|
|
97
|
+
....: restrictions1= x^2+y^2!=0, restrictions2= u^2+v^2!=0)
|
|
98
|
+
sage: uv_to_xy = xy_to_uv.inverse()
|
|
99
|
+
sage: G = M.automorphism_field_group() ; G
|
|
100
|
+
General linear group of the Module X(M) of vector fields on the
|
|
101
|
+
2-dimensional differentiable manifold M
|
|
102
|
+
|
|
103
|
+
``G`` is the general linear group of the vector field module
|
|
104
|
+
`\mathfrak{X}(M)`::
|
|
105
|
+
|
|
106
|
+
sage: XM = M.vector_field_module() ; XM
|
|
107
|
+
Module X(M) of vector fields on the 2-dimensional differentiable
|
|
108
|
+
manifold M
|
|
109
|
+
sage: G is XM.general_linear_group()
|
|
110
|
+
True
|
|
111
|
+
|
|
112
|
+
``G`` is a non-abelian group::
|
|
113
|
+
|
|
114
|
+
sage: G.category()
|
|
115
|
+
Category of groups
|
|
116
|
+
sage: G in Groups()
|
|
117
|
+
True
|
|
118
|
+
sage: G in CommutativeAdditiveGroups()
|
|
119
|
+
False
|
|
120
|
+
|
|
121
|
+
The elements of ``G`` are tangent-space automorphisms::
|
|
122
|
+
|
|
123
|
+
sage: a = G.an_element(); a
|
|
124
|
+
Field of tangent-space automorphisms on the 2-dimensional
|
|
125
|
+
differentiable manifold M
|
|
126
|
+
sage: a.parent() is G
|
|
127
|
+
True
|
|
128
|
+
sage: a.restrict(U).display()
|
|
129
|
+
2 ∂/∂x⊗dx + 2 ∂/∂y⊗dy
|
|
130
|
+
sage: a.restrict(V).display()
|
|
131
|
+
2 ∂/∂u⊗du + 2 ∂/∂v⊗dv
|
|
132
|
+
|
|
133
|
+
The identity element of the group ``G``::
|
|
134
|
+
|
|
135
|
+
sage: e = G.one() ; e
|
|
136
|
+
Field of tangent-space identity maps on the 2-dimensional
|
|
137
|
+
differentiable manifold M
|
|
138
|
+
sage: eU = U.default_frame() ; eU
|
|
139
|
+
Coordinate frame (U, (∂/∂x,∂/∂y))
|
|
140
|
+
sage: eV = V.default_frame() ; eV
|
|
141
|
+
Coordinate frame (V, (∂/∂u,∂/∂v))
|
|
142
|
+
sage: e.display(eU)
|
|
143
|
+
Id = ∂/∂x⊗dx + ∂/∂y⊗dy
|
|
144
|
+
sage: e.display(eV)
|
|
145
|
+
Id = ∂/∂u⊗du + ∂/∂v⊗dv
|
|
146
|
+
"""
|
|
147
|
+
|
|
148
|
+
Element = AutomorphismField
|
|
149
|
+
|
|
150
|
+
def __init__(self, vector_field_module):
|
|
151
|
+
r"""
|
|
152
|
+
See :class:`AutomorphismfieldGroup` for documentation and examples.
|
|
153
|
+
|
|
154
|
+
TESTS::
|
|
155
|
+
|
|
156
|
+
sage: M = Manifold(2, 'M')
|
|
157
|
+
sage: U = M.open_subset('U') ; V = M.open_subset('V')
|
|
158
|
+
sage: M.declare_union(U,V) # M is the union of U and V
|
|
159
|
+
sage: c_xy.<x,y> = U.chart() ; c_uv.<u,v> = V.chart()
|
|
160
|
+
sage: transf = c_xy.transition_map(c_uv, (x+y, x-y),
|
|
161
|
+
....: intersection_name='W', restrictions1= x>0,
|
|
162
|
+
....: restrictions2= u+v>0)
|
|
163
|
+
sage: inv = transf.inverse()
|
|
164
|
+
sage: from sage.manifolds.differentiable.automorphismfield_group \
|
|
165
|
+
....: import AutomorphismFieldGroup
|
|
166
|
+
sage: G = AutomorphismFieldGroup(M.vector_field_module()) ; G
|
|
167
|
+
General linear group of the Module X(M) of vector fields on the
|
|
168
|
+
2-dimensional differentiable manifold M
|
|
169
|
+
sage: TestSuite(G).run(skip='_test_elements')
|
|
170
|
+
|
|
171
|
+
``_test_elements`` does not pass due to the failure
|
|
172
|
+
of ``_test_pickling`` in
|
|
173
|
+
:class:`sage.manifolds.differentiable.tensorfield.TensorField`.
|
|
174
|
+
"""
|
|
175
|
+
if not isinstance(vector_field_module, VectorFieldModule):
|
|
176
|
+
raise TypeError("{} is not a module of vector fields".format(
|
|
177
|
+
vector_field_module))
|
|
178
|
+
Parent.__init__(self, category=Groups())
|
|
179
|
+
self._vmodule = vector_field_module
|
|
180
|
+
|
|
181
|
+
#### Parent methods ####
|
|
182
|
+
|
|
183
|
+
def _element_constructor_(self, comp=[], frame=None, name=None,
|
|
184
|
+
latex_name=None):
|
|
185
|
+
r"""
|
|
186
|
+
Construct a field of tangent-space automorphisms.
|
|
187
|
+
|
|
188
|
+
OUTPUT: :class:`~sage.manifolds.differentiable.automorphismfield.AutomorphismField`
|
|
189
|
+
|
|
190
|
+
TESTS::
|
|
191
|
+
|
|
192
|
+
sage: M = Manifold(2, 'M')
|
|
193
|
+
sage: U = M.open_subset('U'); V = M.open_subset('V')
|
|
194
|
+
sage: M.declare_union(U,V) # M is the union of U and V
|
|
195
|
+
sage: c_xy.<x,y> = U.chart(); c_uv.<u,v> = V.chart()
|
|
196
|
+
sage: transf = c_xy.transition_map(c_uv, (x+y, x-y),
|
|
197
|
+
....: intersection_name='W', restrictions1= x>0,
|
|
198
|
+
....: restrictions2= u+v>0)
|
|
199
|
+
sage: inv = transf.inverse()
|
|
200
|
+
sage: G = M.automorphism_field_group()
|
|
201
|
+
sage: a = G(1); a
|
|
202
|
+
Field of tangent-space identity maps on the 2-dimensional
|
|
203
|
+
differentiable manifold M
|
|
204
|
+
sage: a = G([[1+x^2, 0], [0, 1+y^2]], frame=c_xy.frame(), name='a'); a
|
|
205
|
+
Field of tangent-space automorphisms a on the 2-dimensional
|
|
206
|
+
differentiable manifold M
|
|
207
|
+
sage: a.display(c_xy.frame())
|
|
208
|
+
a = (x^2 + 1) ∂/∂x⊗dx + (y^2 + 1) ∂/∂y⊗dy
|
|
209
|
+
"""
|
|
210
|
+
if hasattr(comp, 'is_trivial_zero'):
|
|
211
|
+
if (comp - 1).is_trivial_zero():
|
|
212
|
+
return self.one()
|
|
213
|
+
elif comp == 1:
|
|
214
|
+
return self.one()
|
|
215
|
+
if not isinstance(comp, (list, tuple)):
|
|
216
|
+
raise TypeError("cannot convert the {} ".format(comp) +
|
|
217
|
+
"to an element of {}".format(self))
|
|
218
|
+
# standard construction
|
|
219
|
+
resu = self.element_class(self._vmodule, name=name,
|
|
220
|
+
latex_name=latex_name)
|
|
221
|
+
if comp:
|
|
222
|
+
resu.set_comp(frame)[:] = comp
|
|
223
|
+
return resu
|
|
224
|
+
|
|
225
|
+
def _an_element_(self):
|
|
226
|
+
r"""
|
|
227
|
+
Construct some specific field of tangent-space automorphisms.
|
|
228
|
+
|
|
229
|
+
OUTPUT: :class:`~sage.manifolds.differentiable.automorphismfield.AutomorphismField`
|
|
230
|
+
|
|
231
|
+
TESTS::
|
|
232
|
+
|
|
233
|
+
sage: M = Manifold(2, 'M')
|
|
234
|
+
sage: U = M.open_subset('U') ; V = M.open_subset('V')
|
|
235
|
+
sage: M.declare_union(U,V) # M is the union of U and V
|
|
236
|
+
sage: c_xy.<x,y> = U.chart() ; c_uv.<u,v> = V.chart()
|
|
237
|
+
sage: transf = c_xy.transition_map(c_uv, (x+y, x-y),
|
|
238
|
+
....: intersection_name='W', restrictions1= x>0,
|
|
239
|
+
....: restrictions2= u+v>0)
|
|
240
|
+
sage: inv = transf.inverse()
|
|
241
|
+
sage: G = M.automorphism_field_group()
|
|
242
|
+
sage: a = G.an_element() ; a
|
|
243
|
+
Field of tangent-space automorphisms on the 2-dimensional
|
|
244
|
+
differentiable manifold M
|
|
245
|
+
sage: a.restrict(U).display()
|
|
246
|
+
2 ∂/∂x⊗dx + 2 ∂/∂y⊗dy
|
|
247
|
+
sage: a.restrict(V).display()
|
|
248
|
+
2 ∂/∂u⊗du + 2 ∂/∂v⊗dv
|
|
249
|
+
sage: a == G.an_element() # indirect doctest
|
|
250
|
+
True
|
|
251
|
+
"""
|
|
252
|
+
resu = self.element_class(self._vmodule)
|
|
253
|
+
for dom in resu.domain().subsets():
|
|
254
|
+
if dom.is_manifestly_parallelizable():
|
|
255
|
+
fmodule = dom.vector_field_module()
|
|
256
|
+
idm = fmodule.identity_map()
|
|
257
|
+
rst = fmodule.automorphism()
|
|
258
|
+
for frame, comp in idm._components.items():
|
|
259
|
+
rst._components[frame] = 2 * comp
|
|
260
|
+
resu._restrictions[dom] = rst
|
|
261
|
+
return resu
|
|
262
|
+
|
|
263
|
+
#### End of parent methods ####
|
|
264
|
+
|
|
265
|
+
#### Monoid methods ####
|
|
266
|
+
|
|
267
|
+
@cached_method
|
|
268
|
+
def one(self):
|
|
269
|
+
r"""
|
|
270
|
+
Return identity element of ``self``.
|
|
271
|
+
|
|
272
|
+
The group identity element is the field of tangent-space identity maps.
|
|
273
|
+
|
|
274
|
+
OUTPUT:
|
|
275
|
+
|
|
276
|
+
- :class:`~sage.manifolds.differentiable.automorphismfield.AutomorphismField`
|
|
277
|
+
representing the identity element
|
|
278
|
+
|
|
279
|
+
EXAMPLES:
|
|
280
|
+
|
|
281
|
+
Identity element of the group of tangent-space automorphism fields of
|
|
282
|
+
the 2-sphere::
|
|
283
|
+
|
|
284
|
+
sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2
|
|
285
|
+
sage: U = M.open_subset('U') # complement of the North pole
|
|
286
|
+
sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole
|
|
287
|
+
sage: V = M.open_subset('V') # complement of the South pole
|
|
288
|
+
sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole
|
|
289
|
+
sage: M.declare_union(U,V) # S^2 is the union of U and V
|
|
290
|
+
sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)),
|
|
291
|
+
....: intersection_name='W', restrictions1= x^2+y^2!=0,
|
|
292
|
+
....: restrictions2= u^2+v^2!=0)
|
|
293
|
+
sage: uv_to_xy = xy_to_uv.inverse()
|
|
294
|
+
sage: G = M.automorphism_field_group()
|
|
295
|
+
sage: G.one()
|
|
296
|
+
Field of tangent-space identity maps on the 2-dimensional differentiable manifold M
|
|
297
|
+
sage: G.one().restrict(U)[:]
|
|
298
|
+
[1 0]
|
|
299
|
+
[0 1]
|
|
300
|
+
sage: G.one().restrict(V)[:]
|
|
301
|
+
[1 0]
|
|
302
|
+
[0 1]
|
|
303
|
+
"""
|
|
304
|
+
# Specific initializations for the field of identity maps:
|
|
305
|
+
resu = self._element_constructor_(name='Id', latex_name=r'\mathrm{Id}')
|
|
306
|
+
resu._inverse = resu
|
|
307
|
+
for dom in resu._domain._subsets:
|
|
308
|
+
if dom.is_manifestly_parallelizable():
|
|
309
|
+
fmodule = dom.vector_field_module()
|
|
310
|
+
resu._restrictions[dom] = fmodule.identity_map(name='Id',
|
|
311
|
+
latex_name=r'\mathrm{Id}')
|
|
312
|
+
resu._is_identity = True
|
|
313
|
+
resu.set_immutable()
|
|
314
|
+
return resu
|
|
315
|
+
|
|
316
|
+
#### End of monoid methods ####
|
|
317
|
+
|
|
318
|
+
def _repr_(self):
|
|
319
|
+
r"""
|
|
320
|
+
Return a string representation of ``self``.
|
|
321
|
+
|
|
322
|
+
TESTS::
|
|
323
|
+
|
|
324
|
+
sage: M = Manifold(2, 'M')
|
|
325
|
+
sage: G = M.automorphism_field_group()
|
|
326
|
+
sage: G._repr_()
|
|
327
|
+
'General linear group of the Module X(M) of vector fields on the
|
|
328
|
+
2-dimensional differentiable manifold M'
|
|
329
|
+
sage: repr(G) # indirect doctest
|
|
330
|
+
'General linear group of the Module X(M) of vector fields on the
|
|
331
|
+
2-dimensional differentiable manifold M'
|
|
332
|
+
sage: G # indirect doctest
|
|
333
|
+
General linear group of the Module X(M) of vector fields on the
|
|
334
|
+
2-dimensional differentiable manifold M
|
|
335
|
+
"""
|
|
336
|
+
return "General linear group of the {}".format(self._vmodule)
|
|
337
|
+
|
|
338
|
+
def _latex_(self):
|
|
339
|
+
r"""
|
|
340
|
+
Return a LaTeX representation of ``self``.
|
|
341
|
+
|
|
342
|
+
TESTS::
|
|
343
|
+
|
|
344
|
+
sage: M = Manifold(2, 'M')
|
|
345
|
+
sage: G = M.automorphism_field_group()
|
|
346
|
+
sage: G._latex_()
|
|
347
|
+
\mathrm{GL}\left( \mathfrak{X}\left(M\right) \right)
|
|
348
|
+
sage: latex(G) # indirect doctest
|
|
349
|
+
\mathrm{GL}\left( \mathfrak{X}\left(M\right) \right)
|
|
350
|
+
"""
|
|
351
|
+
from sage.misc.latex import latex
|
|
352
|
+
return r"\mathrm{GL}\left(" + latex(self._vmodule) + r"\right)"
|
|
353
|
+
|
|
354
|
+
def base_module(self):
|
|
355
|
+
r"""
|
|
356
|
+
Return the vector-field module of which ``self`` is the general
|
|
357
|
+
linear group.
|
|
358
|
+
|
|
359
|
+
OUTPUT: :class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldModule`
|
|
360
|
+
|
|
361
|
+
EXAMPLES:
|
|
362
|
+
|
|
363
|
+
Base module of the group of tangent-space automorphism fields of
|
|
364
|
+
the 2-sphere::
|
|
365
|
+
|
|
366
|
+
sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2
|
|
367
|
+
sage: U = M.open_subset('U') # complement of the North pole
|
|
368
|
+
sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole
|
|
369
|
+
sage: V = M.open_subset('V') # complement of the South pole
|
|
370
|
+
sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole
|
|
371
|
+
sage: M.declare_union(U,V) # S^2 is the union of U and V
|
|
372
|
+
sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)),
|
|
373
|
+
....: intersection_name='W', restrictions1= x^2+y^2!=0,
|
|
374
|
+
....: restrictions2= u^2+v^2!=0)
|
|
375
|
+
sage: uv_to_xy = xy_to_uv.inverse()
|
|
376
|
+
sage: G = M.automorphism_field_group()
|
|
377
|
+
sage: G.base_module()
|
|
378
|
+
Module X(M) of vector fields on the 2-dimensional differentiable
|
|
379
|
+
manifold M
|
|
380
|
+
sage: G.base_module() is M.vector_field_module()
|
|
381
|
+
True
|
|
382
|
+
"""
|
|
383
|
+
return self._vmodule
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
#******************************************************************************
|
|
387
|
+
|
|
388
|
+
class AutomorphismFieldParalGroup(FreeModuleLinearGroup):
|
|
389
|
+
r"""
|
|
390
|
+
General linear group of the module of vector fields along a differentiable
|
|
391
|
+
manifold `U` with values on a parallelizable manifold `M`.
|
|
392
|
+
|
|
393
|
+
Given a differentiable manifold `U` and a differentiable map
|
|
394
|
+
`\Phi: U \rightarrow M` to a parallelizable manifold `M` (possibly `U = M`
|
|
395
|
+
and `\Phi = \mathrm{Id}_M`), the *group of tangent-space automorphism
|
|
396
|
+
fields* associated with `U` and `\Phi` is the general linear group
|
|
397
|
+
`\mathrm{GL}(\mathfrak{X}(U, \Phi))` of the module `\mathfrak{X}(U, \Phi)`
|
|
398
|
+
of vector fields along `U` with values on `M \supset \Phi(U)` (see
|
|
399
|
+
:class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldFreeModule`).
|
|
400
|
+
Note that `\mathfrak{X}(U, \Phi)` is a free module over `C^k(U)`,
|
|
401
|
+
the algebra of differentiable scalar fields on `U`.
|
|
402
|
+
Elements of `\mathrm{GL}(\mathfrak{X}(U, \Phi))` are fields along `U` of
|
|
403
|
+
automorphisms of tangent spaces to `M`.
|
|
404
|
+
|
|
405
|
+
.. NOTE::
|
|
406
|
+
|
|
407
|
+
If `M` is not parallelizable, the class
|
|
408
|
+
:class:`AutomorphismFieldGroup` must be used instead.
|
|
409
|
+
|
|
410
|
+
INPUT:
|
|
411
|
+
|
|
412
|
+
- ``vector_field_module`` --
|
|
413
|
+
:class:`~sage.manifolds.differentiable.vectorfield_module.VectorFieldFreeModule`;
|
|
414
|
+
free module `\mathfrak{X}(U,\Phi)` of vector fields along `U`
|
|
415
|
+
with values on `M`
|
|
416
|
+
|
|
417
|
+
EXAMPLES:
|
|
418
|
+
|
|
419
|
+
Group of tangent-space automorphism fields of a 2-dimensional
|
|
420
|
+
parallelizable manifold::
|
|
421
|
+
|
|
422
|
+
sage: M = Manifold(2, 'M')
|
|
423
|
+
sage: X.<x,y> = M.chart()
|
|
424
|
+
sage: XM = M.vector_field_module() ; XM
|
|
425
|
+
Free module X(M) of vector fields on the 2-dimensional differentiable
|
|
426
|
+
manifold M
|
|
427
|
+
sage: G = M.automorphism_field_group(); G
|
|
428
|
+
General linear group of the Free module X(M) of vector fields on the
|
|
429
|
+
2-dimensional differentiable manifold M
|
|
430
|
+
sage: latex(G)
|
|
431
|
+
\mathrm{GL}\left( \mathfrak{X}\left(M\right) \right)
|
|
432
|
+
|
|
433
|
+
``G`` is nothing but the general linear group of the module
|
|
434
|
+
`\mathfrak{X}(M)`::
|
|
435
|
+
|
|
436
|
+
sage: G is XM.general_linear_group()
|
|
437
|
+
True
|
|
438
|
+
|
|
439
|
+
``G`` is a group::
|
|
440
|
+
|
|
441
|
+
sage: G.category()
|
|
442
|
+
Category of groups
|
|
443
|
+
sage: G in Groups()
|
|
444
|
+
True
|
|
445
|
+
|
|
446
|
+
It is not an abelian group::
|
|
447
|
+
|
|
448
|
+
sage: G in CommutativeAdditiveGroups()
|
|
449
|
+
False
|
|
450
|
+
|
|
451
|
+
The elements of ``G`` are tangent-space automorphisms::
|
|
452
|
+
|
|
453
|
+
sage: G.Element
|
|
454
|
+
<class 'sage.manifolds.differentiable.automorphismfield.AutomorphismFieldParal'>
|
|
455
|
+
sage: a = G.an_element() ; a
|
|
456
|
+
Field of tangent-space automorphisms on the 2-dimensional
|
|
457
|
+
differentiable manifold M
|
|
458
|
+
sage: a.parent() is G
|
|
459
|
+
True
|
|
460
|
+
|
|
461
|
+
As automorphisms of `\mathfrak{X}(M)`, the elements of ``G`` map a vector
|
|
462
|
+
field to a vector field::
|
|
463
|
+
|
|
464
|
+
sage: v = XM.an_element() ; v
|
|
465
|
+
Vector field on the 2-dimensional differentiable manifold M
|
|
466
|
+
sage: v.display()
|
|
467
|
+
2 ∂/∂x + 2 ∂/∂y
|
|
468
|
+
sage: a(v)
|
|
469
|
+
Vector field on the 2-dimensional differentiable manifold M
|
|
470
|
+
sage: a(v).display()
|
|
471
|
+
2 ∂/∂x - 2 ∂/∂y
|
|
472
|
+
|
|
473
|
+
Indeed the matrix of ``a`` with respect to the frame
|
|
474
|
+
`(\partial_x, \partial_y)` is::
|
|
475
|
+
|
|
476
|
+
sage: a[X.frame(),:]
|
|
477
|
+
[ 1 0]
|
|
478
|
+
[ 0 -1]
|
|
479
|
+
|
|
480
|
+
The elements of ``G`` can also be considered as tensor fields of
|
|
481
|
+
type `(1,1)`::
|
|
482
|
+
|
|
483
|
+
sage: a.tensor_type()
|
|
484
|
+
(1, 1)
|
|
485
|
+
sage: a.tensor_rank()
|
|
486
|
+
2
|
|
487
|
+
sage: a.domain()
|
|
488
|
+
2-dimensional differentiable manifold M
|
|
489
|
+
sage: a.display()
|
|
490
|
+
∂/∂x⊗dx - ∂/∂y⊗dy
|
|
491
|
+
|
|
492
|
+
The identity element of the group ``G`` is::
|
|
493
|
+
|
|
494
|
+
sage: id = G.one() ; id
|
|
495
|
+
Field of tangent-space identity maps on the 2-dimensional
|
|
496
|
+
differentiable manifold M
|
|
497
|
+
sage: id*a == a
|
|
498
|
+
True
|
|
499
|
+
sage: a*id == a
|
|
500
|
+
True
|
|
501
|
+
sage: a*a^(-1) == id
|
|
502
|
+
True
|
|
503
|
+
sage: a^(-1)*a == id
|
|
504
|
+
True
|
|
505
|
+
|
|
506
|
+
Construction of an element by providing its components with
|
|
507
|
+
respect to the manifold's default frame (frame associated to
|
|
508
|
+
the coordinates `(x,y)`)::
|
|
509
|
+
|
|
510
|
+
sage: b = G([[1+x^2,0], [0,1+y^2]]) ; b
|
|
511
|
+
Field of tangent-space automorphisms on the 2-dimensional
|
|
512
|
+
differentiable manifold M
|
|
513
|
+
sage: b.display()
|
|
514
|
+
(x^2 + 1) ∂/∂x⊗dx + (y^2 + 1) ∂/∂y⊗dy
|
|
515
|
+
sage: (~b).display() # the inverse automorphism
|
|
516
|
+
1/(x^2 + 1) ∂/∂x⊗dx + 1/(y^2 + 1) ∂/∂y⊗dy
|
|
517
|
+
|
|
518
|
+
We check the group law on these elements::
|
|
519
|
+
|
|
520
|
+
sage: (a*b)^(-1) == b^(-1) * a^(-1)
|
|
521
|
+
True
|
|
522
|
+
|
|
523
|
+
Invertible tensor fields of type `(1,1)` can be converted to
|
|
524
|
+
elements of ``G``::
|
|
525
|
+
|
|
526
|
+
sage: t = M.tensor_field(1, 1, name='t')
|
|
527
|
+
sage: t[:] = [[1+exp(y), x*y], [0, 1+x^2]]
|
|
528
|
+
sage: t1 = G(t) ; t1
|
|
529
|
+
Field of tangent-space automorphisms t on the 2-dimensional
|
|
530
|
+
differentiable manifold M
|
|
531
|
+
sage: t1 in G
|
|
532
|
+
True
|
|
533
|
+
sage: t1.display()
|
|
534
|
+
t = (e^y + 1) ∂/∂x⊗dx + x*y ∂/∂x⊗dy + (x^2 + 1) ∂/∂y⊗dy
|
|
535
|
+
sage: t1^(-1)
|
|
536
|
+
Field of tangent-space automorphisms t^(-1) on the 2-dimensional
|
|
537
|
+
differentiable manifold M
|
|
538
|
+
sage: (t1^(-1)).display()
|
|
539
|
+
t^(-1) = 1/(e^y + 1) ∂/∂x⊗dx - x*y/(x^2 + (x^2 + 1)*e^y + 1) ∂/∂x⊗dy
|
|
540
|
+
+ 1/(x^2 + 1) ∂/∂y⊗dy
|
|
541
|
+
|
|
542
|
+
Since any automorphism field can be considered as a tensor field of
|
|
543
|
+
type-`(1,1)` on ``M``, there is a coercion map from ``G`` to the
|
|
544
|
+
module `T^{(1,1)}(M)` of type-`(1,1)` tensor fields::
|
|
545
|
+
|
|
546
|
+
sage: T11 = M.tensor_field_module((1,1)) ; T11
|
|
547
|
+
Free module T^(1,1)(M) of type-(1,1) tensors fields on the
|
|
548
|
+
2-dimensional differentiable manifold M
|
|
549
|
+
sage: T11.has_coerce_map_from(G)
|
|
550
|
+
True
|
|
551
|
+
|
|
552
|
+
An explicit call of this coercion map is::
|
|
553
|
+
|
|
554
|
+
sage: tt = T11(t1) ; tt
|
|
555
|
+
Tensor field t of type (1,1) on the 2-dimensional differentiable
|
|
556
|
+
manifold M
|
|
557
|
+
sage: tt == t
|
|
558
|
+
True
|
|
559
|
+
|
|
560
|
+
An implicit call of the coercion map is performed to subtract an
|
|
561
|
+
element of ``G`` from an element of `T^{(1,1)}(M)`::
|
|
562
|
+
|
|
563
|
+
sage: s = t - t1 ; s
|
|
564
|
+
Tensor field t-t of type (1,1) on
|
|
565
|
+
the 2-dimensional differentiable manifold M
|
|
566
|
+
sage: s.parent() is T11
|
|
567
|
+
True
|
|
568
|
+
sage: s.display()
|
|
569
|
+
t-t = 0
|
|
570
|
+
|
|
571
|
+
as well as for the reverse operation::
|
|
572
|
+
|
|
573
|
+
sage: s = t1 - t ; s
|
|
574
|
+
Tensor field t-t of type (1,1) on the 2-dimensional differentiable
|
|
575
|
+
manifold M
|
|
576
|
+
sage: s.display()
|
|
577
|
+
t-t = 0
|
|
578
|
+
|
|
579
|
+
TESTS::
|
|
580
|
+
|
|
581
|
+
sage: TestSuite(G).run()
|
|
582
|
+
"""
|
|
583
|
+
|
|
584
|
+
Element = AutomorphismFieldParal
|
|
585
|
+
|
|
586
|
+
def __init__(self, vector_field_module):
|
|
587
|
+
r"""
|
|
588
|
+
See :class:`AutomorphismfieldParalGroup` for documentation and
|
|
589
|
+
examples.
|
|
590
|
+
|
|
591
|
+
TESTS::
|
|
592
|
+
|
|
593
|
+
sage: M = Manifold(2, 'M') ; M
|
|
594
|
+
2-dimensional differentiable manifold M
|
|
595
|
+
sage: X.<x,y> = M.chart() # makes M parallelizable
|
|
596
|
+
sage: G = M.automorphism_field_group(); G
|
|
597
|
+
General linear group of the Free module X(M) of vector fields on
|
|
598
|
+
the 2-dimensional differentiable manifold M
|
|
599
|
+
sage: TestSuite(G).run()
|
|
600
|
+
"""
|
|
601
|
+
if not isinstance(vector_field_module, VectorFieldFreeModule):
|
|
602
|
+
raise TypeError("{} is not a free module of vector fields".format(
|
|
603
|
+
vector_field_module))
|
|
604
|
+
FreeModuleLinearGroup.__init__(self, vector_field_module)
|