passagemath-symbolics 10.8.1a1__cp314-cp314t-musllinux_1_2_aarch64.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.
Files changed (181) hide show
  1. passagemath_symbolics/__init__.py +3 -0
  2. passagemath_symbolics-10.8.1a1.dist-info/METADATA +186 -0
  3. passagemath_symbolics-10.8.1a1.dist-info/RECORD +181 -0
  4. passagemath_symbolics-10.8.1a1.dist-info/WHEEL +5 -0
  5. passagemath_symbolics-10.8.1a1.dist-info/top_level.txt +3 -0
  6. sage/all__sagemath_symbolics.py +17 -0
  7. sage/calculus/all.py +14 -0
  8. sage/calculus/calculus.py +2838 -0
  9. sage/calculus/desolvers.py +1864 -0
  10. sage/calculus/predefined.py +51 -0
  11. sage/calculus/tests.py +225 -0
  12. sage/calculus/var.cpython-314t-aarch64-linux-musl.so +0 -0
  13. sage/calculus/var.pyx +401 -0
  14. sage/dynamics/all__sagemath_symbolics.py +6 -0
  15. sage/dynamics/complex_dynamics/all.py +5 -0
  16. sage/dynamics/complex_dynamics/mandel_julia.py +765 -0
  17. sage/dynamics/complex_dynamics/mandel_julia_helper.cpython-314t-aarch64-linux-musl.so +0 -0
  18. sage/dynamics/complex_dynamics/mandel_julia_helper.pyx +1034 -0
  19. sage/ext/all__sagemath_symbolics.py +1 -0
  20. sage/ext_data/kenzo/CP2.txt +45 -0
  21. sage/ext_data/kenzo/CP3.txt +349 -0
  22. sage/ext_data/kenzo/CP4.txt +4774 -0
  23. sage/ext_data/kenzo/README.txt +49 -0
  24. sage/ext_data/kenzo/S4.txt +20 -0
  25. sage/ext_data/magma/latex/latex.m +1021 -0
  26. sage/ext_data/magma/latex/latex.spec +1 -0
  27. sage/ext_data/magma/sage/basic.m +356 -0
  28. sage/ext_data/magma/sage/sage.spec +1 -0
  29. sage/ext_data/magma/spec +9 -0
  30. sage/geometry/all__sagemath_symbolics.py +8 -0
  31. sage/geometry/hyperbolic_space/all.py +5 -0
  32. sage/geometry/hyperbolic_space/hyperbolic_coercion.py +755 -0
  33. sage/geometry/hyperbolic_space/hyperbolic_constants.py +5 -0
  34. sage/geometry/hyperbolic_space/hyperbolic_geodesic.py +2419 -0
  35. sage/geometry/hyperbolic_space/hyperbolic_interface.py +206 -0
  36. sage/geometry/hyperbolic_space/hyperbolic_isometry.py +1083 -0
  37. sage/geometry/hyperbolic_space/hyperbolic_model.py +1502 -0
  38. sage/geometry/hyperbolic_space/hyperbolic_point.py +621 -0
  39. sage/geometry/riemannian_manifolds/all.py +7 -0
  40. sage/geometry/riemannian_manifolds/parametrized_surface3d.py +1632 -0
  41. sage/geometry/riemannian_manifolds/surface3d_generators.py +461 -0
  42. sage/interfaces/all__sagemath_symbolics.py +1 -0
  43. sage/interfaces/magma.py +2991 -0
  44. sage/interfaces/magma_free.py +90 -0
  45. sage/interfaces/maple.py +1402 -0
  46. sage/interfaces/mathematica.py +1345 -0
  47. sage/interfaces/mathics.py +1312 -0
  48. sage/interfaces/sympy.py +1398 -0
  49. sage/interfaces/sympy_wrapper.py +197 -0
  50. sage/interfaces/tides.py +938 -0
  51. sage/libs/all__sagemath_symbolics.py +6 -0
  52. sage/manifolds/all.py +7 -0
  53. sage/manifolds/calculus_method.py +553 -0
  54. sage/manifolds/catalog.py +437 -0
  55. sage/manifolds/chart.py +4010 -0
  56. sage/manifolds/chart_func.py +3416 -0
  57. sage/manifolds/continuous_map.py +2183 -0
  58. sage/manifolds/continuous_map_image.py +155 -0
  59. sage/manifolds/differentiable/affine_connection.py +2475 -0
  60. sage/manifolds/differentiable/all.py +1 -0
  61. sage/manifolds/differentiable/automorphismfield.py +1383 -0
  62. sage/manifolds/differentiable/automorphismfield_group.py +604 -0
  63. sage/manifolds/differentiable/bundle_connection.py +1445 -0
  64. sage/manifolds/differentiable/characteristic_cohomology_class.py +1840 -0
  65. sage/manifolds/differentiable/chart.py +1241 -0
  66. sage/manifolds/differentiable/curve.py +1028 -0
  67. sage/manifolds/differentiable/de_rham_cohomology.py +541 -0
  68. sage/manifolds/differentiable/degenerate.py +559 -0
  69. sage/manifolds/differentiable/degenerate_submanifold.py +1668 -0
  70. sage/manifolds/differentiable/diff_form.py +1660 -0
  71. sage/manifolds/differentiable/diff_form_module.py +1062 -0
  72. sage/manifolds/differentiable/diff_map.py +1315 -0
  73. sage/manifolds/differentiable/differentiable_submanifold.py +291 -0
  74. sage/manifolds/differentiable/examples/all.py +1 -0
  75. sage/manifolds/differentiable/examples/euclidean.py +2517 -0
  76. sage/manifolds/differentiable/examples/real_line.py +897 -0
  77. sage/manifolds/differentiable/examples/sphere.py +1186 -0
  78. sage/manifolds/differentiable/examples/symplectic_space.py +187 -0
  79. sage/manifolds/differentiable/examples/symplectic_space_test.py +40 -0
  80. sage/manifolds/differentiable/integrated_curve.py +4035 -0
  81. sage/manifolds/differentiable/levi_civita_connection.py +841 -0
  82. sage/manifolds/differentiable/manifold.py +4254 -0
  83. sage/manifolds/differentiable/manifold_homset.py +1826 -0
  84. sage/manifolds/differentiable/metric.py +3032 -0
  85. sage/manifolds/differentiable/mixed_form.py +1507 -0
  86. sage/manifolds/differentiable/mixed_form_algebra.py +559 -0
  87. sage/manifolds/differentiable/multivector_module.py +800 -0
  88. sage/manifolds/differentiable/multivectorfield.py +1522 -0
  89. sage/manifolds/differentiable/poisson_tensor.py +268 -0
  90. sage/manifolds/differentiable/pseudo_riemannian.py +755 -0
  91. sage/manifolds/differentiable/pseudo_riemannian_submanifold.py +1839 -0
  92. sage/manifolds/differentiable/scalarfield.py +1343 -0
  93. sage/manifolds/differentiable/scalarfield_algebra.py +472 -0
  94. sage/manifolds/differentiable/symplectic_form.py +912 -0
  95. sage/manifolds/differentiable/symplectic_form_test.py +220 -0
  96. sage/manifolds/differentiable/tangent_space.py +412 -0
  97. sage/manifolds/differentiable/tangent_vector.py +616 -0
  98. sage/manifolds/differentiable/tensorfield.py +4665 -0
  99. sage/manifolds/differentiable/tensorfield_module.py +963 -0
  100. sage/manifolds/differentiable/tensorfield_paral.py +2450 -0
  101. sage/manifolds/differentiable/tensorfield_paral_test.py +16 -0
  102. sage/manifolds/differentiable/vector_bundle.py +1725 -0
  103. sage/manifolds/differentiable/vectorfield.py +1717 -0
  104. sage/manifolds/differentiable/vectorfield_module.py +2445 -0
  105. sage/manifolds/differentiable/vectorframe.py +1832 -0
  106. sage/manifolds/family.py +270 -0
  107. sage/manifolds/local_frame.py +1490 -0
  108. sage/manifolds/manifold.py +3090 -0
  109. sage/manifolds/manifold_homset.py +452 -0
  110. sage/manifolds/operators.py +359 -0
  111. sage/manifolds/point.py +994 -0
  112. sage/manifolds/scalarfield.py +3718 -0
  113. sage/manifolds/scalarfield_algebra.py +629 -0
  114. sage/manifolds/section.py +3111 -0
  115. sage/manifolds/section_module.py +831 -0
  116. sage/manifolds/structure.py +229 -0
  117. sage/manifolds/subset.py +2721 -0
  118. sage/manifolds/subsets/all.py +1 -0
  119. sage/manifolds/subsets/closure.py +131 -0
  120. sage/manifolds/subsets/pullback.py +883 -0
  121. sage/manifolds/topological_submanifold.py +891 -0
  122. sage/manifolds/trivialization.py +733 -0
  123. sage/manifolds/utilities.py +1348 -0
  124. sage/manifolds/vector_bundle.py +1347 -0
  125. sage/manifolds/vector_bundle_fiber.py +332 -0
  126. sage/manifolds/vector_bundle_fiber_element.py +111 -0
  127. sage/matrix/all__sagemath_symbolics.py +1 -0
  128. sage/matrix/matrix_symbolic_dense.cpython-314t-aarch64-linux-musl.so +0 -0
  129. sage/matrix/matrix_symbolic_dense.pxd +6 -0
  130. sage/matrix/matrix_symbolic_dense.pyx +1030 -0
  131. sage/matrix/matrix_symbolic_sparse.cpython-314t-aarch64-linux-musl.so +0 -0
  132. sage/matrix/matrix_symbolic_sparse.pxd +6 -0
  133. sage/matrix/matrix_symbolic_sparse.pyx +1038 -0
  134. sage/modules/all__sagemath_symbolics.py +1 -0
  135. sage/modules/vector_callable_symbolic_dense.py +105 -0
  136. sage/modules/vector_symbolic_dense.py +116 -0
  137. sage/modules/vector_symbolic_sparse.py +118 -0
  138. sage/rings/all__sagemath_symbolics.py +4 -0
  139. sage/rings/asymptotic/all.py +6 -0
  140. sage/rings/asymptotic/asymptotic_expansion_generators.py +1485 -0
  141. sage/rings/asymptotic/asymptotic_ring.py +4858 -0
  142. sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py +4106 -0
  143. sage/rings/asymptotic/growth_group.py +5373 -0
  144. sage/rings/asymptotic/growth_group_cartesian.py +1400 -0
  145. sage/rings/asymptotic/term_monoid.py +5205 -0
  146. sage/rings/function_field/all__sagemath_symbolics.py +2 -0
  147. sage/rings/polynomial/all__sagemath_symbolics.py +1 -0
  148. sage/symbolic/all.py +15 -0
  149. sage/symbolic/assumptions.py +987 -0
  150. sage/symbolic/benchmark.py +93 -0
  151. sage/symbolic/callable.py +456 -0
  152. sage/symbolic/callable.pyi +66 -0
  153. sage/symbolic/comparison_impl.pyi +38 -0
  154. sage/symbolic/complexity_measures.py +35 -0
  155. sage/symbolic/constants.py +1286 -0
  156. sage/symbolic/constants_c_impl.pyi +10 -0
  157. sage/symbolic/expression_conversion_algebraic.py +310 -0
  158. sage/symbolic/expression_conversion_sympy.py +317 -0
  159. sage/symbolic/expression_conversions.py +1727 -0
  160. sage/symbolic/function_factory.py +355 -0
  161. sage/symbolic/function_factory.pyi +41 -0
  162. sage/symbolic/getitem_impl.pyi +24 -0
  163. sage/symbolic/integration/all.py +1 -0
  164. sage/symbolic/integration/external.py +271 -0
  165. sage/symbolic/integration/integral.py +1075 -0
  166. sage/symbolic/maxima_wrapper.py +162 -0
  167. sage/symbolic/operators.py +267 -0
  168. sage/symbolic/operators.pyi +61 -0
  169. sage/symbolic/pynac_constant_impl.pyi +13 -0
  170. sage/symbolic/pynac_function_impl.pyi +8 -0
  171. sage/symbolic/random_tests.py +461 -0
  172. sage/symbolic/relation.py +2062 -0
  173. sage/symbolic/ring.cpython-314t-aarch64-linux-musl.so +0 -0
  174. sage/symbolic/ring.pxd +5 -0
  175. sage/symbolic/ring.pyi +110 -0
  176. sage/symbolic/ring.pyx +1393 -0
  177. sage/symbolic/series_impl.pyi +10 -0
  178. sage/symbolic/subring.py +1025 -0
  179. sage/symbolic/symengine.py +19 -0
  180. sage/symbolic/tests.py +40 -0
  181. sage/symbolic/units.py +1468 -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)