passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_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-modules might be problematic. Click here for more details.

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  11. passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-gnu.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-gnu.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-x86_64-linux-gnu.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-gnu.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-x86_64-linux-gnu.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-x86_64-linux-gnu.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-x86_64-linux-gnu.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-gnu.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-x86_64-linux-gnu.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-x86_64-linux-gnu.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-gnu.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-gnu.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-gnu.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-gnu.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-gnu.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-gnu.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-gnu.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-gnu.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-x86_64-linux-gnu.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-x86_64-linux-gnu.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-x86_64-linux-gnu.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-x86_64-linux-gnu.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-x86_64-linux-gnu.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-x86_64-linux-gnu.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-x86_64-linux-gnu.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-x86_64-linux-gnu.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-x86_64-linux-gnu.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-x86_64-linux-gnu.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-x86_64-linux-gnu.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-x86_64-linux-gnu.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-gnu.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-x86_64-linux-gnu.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-gnu.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-gnu.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-x86_64-linux-gnu.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-gnu.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-gnu.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-gnu.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-x86_64-linux-gnu.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-x86_64-linux-gnu.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-gnu.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-gnu.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-gnu.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-gnu.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-x86_64-linux-gnu.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-x86_64-linux-gnu.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-gnu.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-gnu.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-x86_64-linux-gnu.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-x86_64-linux-gnu.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-x86_64-linux-gnu.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-x86_64-linux-gnu.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-x86_64-linux-gnu.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,780 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Tensor products of free modules
4
+
5
+ The class :class:`TensorFreeModule` implements tensor products of the type
6
+
7
+ .. MATH::
8
+
9
+ T^{(k,l)}(M) = \underbrace{M\otimes\cdots\otimes M}_{k\ \; \mbox{times}}
10
+ \otimes \underbrace{M^*\otimes\cdots\otimes M^*}_{l\ \; \mbox{times}},
11
+
12
+ where `M` is a free module of finite rank over a commutative ring `R` and
13
+ `M^*=\mathrm{Hom}_R(M,R)` is the dual of `M`.
14
+ Note that `T^{(1,0)}(M) = M` and `T^{(0,1)}(M) = M^*`.
15
+
16
+ Thanks to the canonical isomorphism `M^{**} \simeq M` (which holds since `M`
17
+ is a free module of finite rank), `T^{(k,l)}(M)` can be identified with the
18
+ set of tensors of type `(k,l)` defined as multilinear maps
19
+
20
+ .. MATH::
21
+
22
+ \underbrace{M^*\times\cdots\times M^*}_{k\ \; \mbox{times}}
23
+ \times \underbrace{M\times\cdots\times M}_{l\ \; \mbox{times}}
24
+ \longrightarrow R
25
+
26
+ Accordingly, :class:`TensorFreeModule` is a Sage *parent* class, whose
27
+ *element* class is
28
+ :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`.
29
+
30
+ `T^{(k,l)}(M)` is itself a free module over `R`, of rank `n^{k+l}`, `n`
31
+ being the rank of `M`. Accordingly the class :class:`TensorFreeModule`
32
+ inherits from the class
33
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule_abstract`.
34
+
35
+ .. TODO::
36
+
37
+ implement more general tensor products, i.e. tensor product of the type
38
+ `M_1\otimes\cdots\otimes M_n`, where the `M_i`'s are `n` free modules of
39
+ finite rank over the same ring `R`.
40
+
41
+ AUTHORS:
42
+
43
+ - Eric Gourgoulhon, Michal Bejger (2014-2015): initial version
44
+
45
+ REFERENCES:
46
+
47
+ - \K. Conrad: *Tensor products* [Con2015]_
48
+ - Chap. 21 (Exer. 4) of R. Godement: *Algebra* [God1968]_
49
+ - Chap. 16 of S. Lang: *Algebra* [Lan2002]_
50
+ """
51
+ # ****************************************************************************
52
+ # Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
53
+ # Copyright (C) 2015 Michal Bejger <bejger@camk.edu.pl>
54
+ #
55
+ # Distributed under the terms of the GNU General Public License (GPL)
56
+ # as published by the Free Software Foundation; either version 2 of
57
+ # the License, or (at your option) any later version.
58
+ # https://www.gnu.org/licenses/
59
+ # ****************************************************************************
60
+
61
+ from sage.categories.modules import Modules
62
+ from sage.misc.cachefunc import cached_method
63
+ from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule_abstract
64
+ from sage.tensor.modules.free_module_tensor import FreeModuleTensor
65
+ from sage.tensor.modules.alternating_contr_tensor import AlternatingContrTensor
66
+ from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm
67
+ from sage.tensor.modules.free_module_morphism import \
68
+ FiniteRankFreeModuleMorphism
69
+ from sage.tensor.modules.free_module_automorphism import FreeModuleAutomorphism
70
+ from sage.tensor.modules.reflexive_module import ReflexiveModule_tensor
71
+
72
+ from .tensor_free_submodule_basis import TensorFreeSubmoduleBasis_sym
73
+
74
+
75
+ class TensorFreeModule(ReflexiveModule_tensor, FiniteRankFreeModule_abstract):
76
+ r"""
77
+ Class for the free modules over a commutative ring `R` that are
78
+ tensor products of a given free module `M` over `R` with itself and its
79
+ dual `M^*`:
80
+
81
+ .. MATH::
82
+
83
+ T^{(k,l)}(M) = \underbrace{M\otimes\cdots\otimes M}_{k\ \; \mbox{times}}
84
+ \otimes \underbrace{M^*\otimes\cdots\otimes M^*}_{l\ \; \mbox{times}}
85
+
86
+ As recalled above, `T^{(k,l)}(M)` can be canonically identified with the
87
+ set of tensors of type `(k,l)` on `M`.
88
+
89
+ This is a Sage *parent* class, whose *element* class is
90
+ :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`.
91
+
92
+ INPUT:
93
+
94
+ - ``fmodule`` -- free module `M` of finite rank over a commutative ring
95
+ `R`, as an instance of
96
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
97
+ - ``tensor_type`` -- pair ``(k, l)`` with ``k`` being the contravariant
98
+ rank and ``l`` the covariant rank
99
+ - ``name`` -- (default: ``None``) string; name given to the tensor module
100
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
101
+ tensor module; if none is provided, it is set to ``name``
102
+
103
+ EXAMPLES:
104
+
105
+ Set of tensors of type `(1,2)` on a free `\ZZ`-module of rank 3::
106
+
107
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
108
+ sage: e = M.basis('e')
109
+ sage: from sage.tensor.modules.tensor_free_module import TensorFreeModule
110
+ sage: T = TensorFreeModule(M, (1,2)) ; T
111
+ Free module of type-(1,2) tensors on the
112
+ Rank-3 free module M over the Integer Ring
113
+
114
+ Instead of importing TensorFreeModule in the global name space, it is
115
+ recommended to use the module's method
116
+ :meth:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule.tensor_module`::
117
+
118
+ sage: T = M.tensor_module(1,2) ; T
119
+ Free module of type-(1,2) tensors on the
120
+ Rank-3 free module M over the Integer Ring
121
+ sage: latex(T)
122
+ T^{(1, 2)}\left(M\right)
123
+
124
+ The module ``M`` itself is considered as the set of tensors of
125
+ type `(1,0)`::
126
+
127
+ sage: M is M.tensor_module(1,0)
128
+ True
129
+
130
+ ``T`` is a module (actually a free module) over `\ZZ`::
131
+
132
+ sage: T.category()
133
+ Category of tensor products of finite dimensional modules over Integer Ring
134
+ sage: T in Modules(ZZ)
135
+ True
136
+ sage: T.rank()
137
+ 27
138
+ sage: T.base_ring()
139
+ Integer Ring
140
+ sage: T.base_module()
141
+ Rank-3 free module M over the Integer Ring
142
+
143
+ ``T`` is a *parent* object, whose elements are instances of
144
+ :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`::
145
+
146
+ sage: t = T.an_element() ; t
147
+ Type-(1,2) tensor on the Rank-3 free module M over the Integer Ring
148
+ sage: from sage.tensor.modules.free_module_tensor import FreeModuleTensor
149
+ sage: isinstance(t, FreeModuleTensor)
150
+ True
151
+ sage: t in T
152
+ True
153
+ sage: T.is_parent_of(t)
154
+ True
155
+
156
+ Elements can be constructed from ``T``. In particular, 0 yields
157
+ the zero element of ``T``::
158
+
159
+ sage: T(0)
160
+ Type-(1,2) tensor zero on the Rank-3 free module M over the Integer Ring
161
+ sage: T(0) is T.zero()
162
+ True
163
+
164
+ while nonzero elements are constructed by providing their components in
165
+ a given basis::
166
+
167
+ sage: e
168
+ Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
169
+ sage: comp = [[[i-j+k for k in range(3)] for j in range(3)] for i in range(3)]
170
+ sage: t = T(comp, basis=e, name='t') ; t
171
+ Type-(1,2) tensor t on the Rank-3 free module M over the Integer Ring
172
+ sage: t.comp(e)[:]
173
+ [[[0, 1, 2], [-1, 0, 1], [-2, -1, 0]],
174
+ [[1, 2, 3], [0, 1, 2], [-1, 0, 1]],
175
+ [[2, 3, 4], [1, 2, 3], [0, 1, 2]]]
176
+ sage: t.display(e)
177
+ t = e_0⊗e^0⊗e^1 + 2 e_0⊗e^0⊗e^2 - e_0⊗e^1⊗e^0 + e_0⊗e^1⊗e^2
178
+ - 2 e_0⊗e^2⊗e^0 - e_0⊗e^2⊗e^1 + e_1⊗e^0⊗e^0 + 2 e_1⊗e^0⊗e^1
179
+ + 3 e_1⊗e^0⊗e^2 + e_1⊗e^1⊗e^1 + 2 e_1⊗e^1⊗e^2 - e_1⊗e^2⊗e^0
180
+ + e_1⊗e^2⊗e^2 + 2 e_2⊗e^0⊗e^0 + 3 e_2⊗e^0⊗e^1 + 4 e_2⊗e^0⊗e^2
181
+ + e_2⊗e^1⊗e^0 + 2 e_2⊗e^1⊗e^1 + 3 e_2⊗e^1⊗e^2 + e_2⊗e^2⊗e^1
182
+ + 2 e_2⊗e^2⊗e^2
183
+
184
+ An alternative is to construct the tensor from an empty list of components
185
+ and to set the nonzero components afterwards::
186
+
187
+ sage: t = T([], name='t')
188
+ sage: t.set_comp(e)[0,1,1] = -3
189
+ sage: t.set_comp(e)[2,0,1] = 4
190
+ sage: t.display(e)
191
+ t = -3 e_0⊗e^1⊗e^1 + 4 e_2⊗e^0⊗e^1
192
+
193
+ See the documentation of
194
+ :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`
195
+ for the full list of arguments that can be provided to the __call__
196
+ operator. For instance, to construct a tensor symmetric with respect to the
197
+ last two indices::
198
+
199
+ sage: t = T([], name='t', sym=(1,2))
200
+ sage: t.set_comp(e)[0,1,1] = -3
201
+ sage: t.set_comp(e)[2,0,1] = 4
202
+ sage: t.display(e) # notice that t^2_{10} has be set equal to t^2_{01} by symmetry
203
+ t = -3 e_0⊗e^1⊗e^1 + 4 e_2⊗e^0⊗e^1 + 4 e_2⊗e^1⊗e^0
204
+
205
+ The tensor modules over a given module `M` are unique::
206
+
207
+ sage: T is M.tensor_module(1,2)
208
+ True
209
+
210
+ There is a coercion map from `\Lambda^p(M^*)`, the set of alternating
211
+ forms of degree `p`, to `T^{(0,p)}(M)`::
212
+
213
+ sage: L2 = M.dual_exterior_power(2) ; L2
214
+ 2nd exterior power of the dual of the Rank-3 free module M over the
215
+ Integer Ring
216
+ sage: T02 = M.tensor_module(0,2) ; T02
217
+ Free module of type-(0,2) tensors on the Rank-3 free module M over the
218
+ Integer Ring
219
+ sage: T02.has_coerce_map_from(L2)
220
+ True
221
+
222
+ Of course, for `p\geq 2`, there is no coercion in the reverse direction,
223
+ since not every tensor of type `(0,p)` is alternating::
224
+
225
+ sage: L2.has_coerce_map_from(T02)
226
+ False
227
+
228
+ The coercion map `\Lambda^2(M^*)\rightarrow T^{(0,2)}(M)` in action::
229
+
230
+ sage: a = M.alternating_form(2, name='a') ; a
231
+ Alternating form a of degree 2 on the Rank-3 free module M over the
232
+ Integer Ring
233
+ sage: a[0,1], a[1,2] = 4, -3
234
+ sage: a.display(e)
235
+ a = 4 e^0∧e^1 - 3 e^1∧e^2
236
+ sage: a.parent() is L2
237
+ True
238
+ sage: ta = T02(a) ; ta
239
+ Type-(0,2) tensor a on the Rank-3 free module M over the Integer Ring
240
+ sage: ta.display(e)
241
+ a = 4 e^0⊗e^1 - 4 e^1⊗e^0 - 3 e^1⊗e^2 + 3 e^2⊗e^1
242
+ sage: ta.symmetries() # the antisymmetry is of course preserved
243
+ no symmetry; antisymmetry: (0, 1)
244
+
245
+ For the degree `p=1`, we have the identity `\Lambda^1(M^*) = T^{(0,1)}(M) = M^*`::
246
+
247
+ sage: M.dual_exterior_power(1) is M.tensor_module(0,1)
248
+ True
249
+ sage: M.tensor_module(0,1) is M.dual()
250
+ True
251
+
252
+ There is a canonical identification between tensors of type `(1,1)` and
253
+ endomorphisms of module `M`. Accordingly, coercion maps have been
254
+ implemented between `T^{(1,1)}(M)` and `\mathrm{End}(M)` (the module of
255
+ all endomorphisms of `M`, see
256
+ :class:`~sage.tensor.modules.free_module_homset.FreeModuleHomset`)::
257
+
258
+ sage: T11 = M.tensor_module(1,1) ; T11
259
+ Free module of type-(1,1) tensors on the Rank-3 free module M over the
260
+ Integer Ring
261
+ sage: End(M)
262
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
263
+ to Rank-3 free module M over the Integer Ring
264
+ in Category of finite dimensional modules over Integer Ring
265
+ sage: T11.has_coerce_map_from(End(M))
266
+ True
267
+ sage: End(M).has_coerce_map_from(T11)
268
+ True
269
+
270
+ The coercion map `\mathrm{End}(M)\rightarrow T^{(1,1)}(M)` in action::
271
+
272
+ sage: phi = End(M).an_element() ; phi
273
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
274
+ sage: phi.matrix(e)
275
+ [1 1 1]
276
+ [1 1 1]
277
+ [1 1 1]
278
+ sage: tphi = T11(phi) ; tphi # image of phi by the coercion map
279
+ Type-(1,1) tensor on the Rank-3 free module M over the Integer Ring
280
+ sage: tphi[:]
281
+ [1 1 1]
282
+ [1 1 1]
283
+ [1 1 1]
284
+ sage: t = M.tensor((1,1))
285
+ sage: t[0,0], t[1,1], t[2,2] = -1,-2,-3
286
+ sage: t[:]
287
+ [-1 0 0]
288
+ [ 0 -2 0]
289
+ [ 0 0 -3]
290
+ sage: s = t + phi ; s # phi is coerced to a type-(1,1) tensor prior to the addition
291
+ Type-(1,1) tensor on the Rank-3 free module M over the Integer Ring
292
+ sage: s[:]
293
+ [ 0 1 1]
294
+ [ 1 -1 1]
295
+ [ 1 1 -2]
296
+
297
+ The coercion map `T^{(1,1)}(M) \rightarrow \mathrm{End}(M)` in action::
298
+
299
+ sage: phi1 = End(M)(tphi) ; phi1
300
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
301
+ sage: phi1 == phi
302
+ True
303
+ sage: s = phi + t ; s # t is coerced to an endomorphism prior to the addition
304
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
305
+ sage: s.matrix(e)
306
+ [ 0 1 1]
307
+ [ 1 -1 1]
308
+ [ 1 1 -2]
309
+
310
+ There is a coercion `\mathrm{GL}(M)\rightarrow T^{(1,1)}(M)`, i.e. from
311
+ automorphisms of `M` to type-`(1,1)` tensors on `M`::
312
+
313
+ sage: GL = M.general_linear_group() ; GL
314
+ General linear group of the Rank-3 free module M over the Integer Ring
315
+ sage: T11.has_coerce_map_from(GL)
316
+ True
317
+
318
+ The coercion map `\mathrm{GL}(M)\rightarrow T^{(1,1)}(M)` in action::
319
+
320
+ sage: a = GL.an_element() ; a
321
+ Automorphism of the Rank-3 free module M over the Integer Ring
322
+ sage: a.matrix(e)
323
+ [ 1 0 0]
324
+ [ 0 -1 0]
325
+ [ 0 0 1]
326
+ sage: ta = T11(a) ; ta
327
+ Type-(1,1) tensor on the Rank-3 free module M over the Integer Ring
328
+ sage: ta.display(e)
329
+ e_0⊗e^0 - e_1⊗e^1 + e_2⊗e^2
330
+ sage: a.display(e)
331
+ e_0⊗e^0 - e_1⊗e^1 + e_2⊗e^2
332
+
333
+ Of course, there is no coercion in the reverse direction, since not
334
+ every type-`(1,1)` tensor is invertible::
335
+
336
+ sage: GL.has_coerce_map_from(T11)
337
+ False
338
+ """
339
+
340
+ Element = FreeModuleTensor
341
+
342
+ def __init__(self, fmodule, tensor_type, name=None, latex_name=None, category=None):
343
+ r"""
344
+ TESTS::
345
+
346
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
347
+ sage: T = M.tensor_module(2, 3)
348
+ sage: TestSuite(T).run()
349
+ """
350
+ self._fmodule = fmodule
351
+ self._tensor_type = tuple(tensor_type)
352
+ ring = fmodule._ring
353
+ rank = pow(fmodule._rank, tensor_type[0] + tensor_type[1])
354
+ if self._tensor_type == (0,1): # case of the dual
355
+ category = Modules(ring).FiniteDimensional().or_subcategory(category)
356
+ if name is None and fmodule._name is not None:
357
+ name = fmodule._name + '*'
358
+ if latex_name is None and fmodule._latex_name is not None:
359
+ latex_name = fmodule._latex_name + r'^*'
360
+ else:
361
+ category = Modules(ring).FiniteDimensional().TensorProducts().or_subcategory(category)
362
+ if name is None and fmodule._name is not None:
363
+ name = 'T^' + str(self._tensor_type) + '(' + fmodule._name + \
364
+ ')'
365
+ if latex_name is None and fmodule._latex_name is not None:
366
+ latex_name = r'T^{' + str(self._tensor_type) + r'}\left(' + \
367
+ fmodule._latex_name + r'\right)'
368
+ super().__init__(fmodule._ring, rank, name=name, latex_name=latex_name, category=category)
369
+ fmodule._all_modules.add(self)
370
+
371
+ #### Parent Methods
372
+
373
+ def _element_constructor_(self, comp=[], basis=None, name=None,
374
+ latex_name=None, sym=None, antisym=None):
375
+ r"""
376
+ Construct a tensor.
377
+
378
+ EXAMPLES::
379
+
380
+ sage: M = FiniteRankFreeModule(QQ, 2, name='M')
381
+ sage: T = M.tensor_module(1,1)
382
+ sage: T._element_constructor_(0) is T.zero()
383
+ True
384
+ sage: e = M.basis('e')
385
+ sage: t = T._element_constructor_(comp=[[2,0],[1/2,-3]], basis=e,
386
+ ....: name='t') ; t
387
+ Type-(1,1) tensor t on the 2-dimensional vector space M over the
388
+ Rational Field
389
+ sage: t.display()
390
+ t = 2 e_0⊗e^0 + 1/2 e_1⊗e^0 - 3 e_1⊗e^1
391
+ sage: t.parent()
392
+ Free module of type-(1,1) tensors on the 2-dimensional vector
393
+ space M over the Rational Field
394
+ sage: t.parent() is T
395
+ True
396
+ """
397
+ from sage.rings.integer import Integer
398
+ if isinstance(comp, (int, Integer)) and comp == 0:
399
+ return self.zero()
400
+ if isinstance(comp, FiniteRankFreeModuleMorphism):
401
+ # coercion of an endomorphism to a type-(1,1) tensor:
402
+ endo = comp # for readability
403
+ if self._tensor_type == (1,1) and endo.is_endomorphism() and \
404
+ self._fmodule is endo.domain():
405
+ resu = self.element_class(self._fmodule, (1,1),
406
+ name=endo._name,
407
+ latex_name=endo._latex_name,
408
+ parent=self)
409
+ for basis, mat in endo._matrices.items():
410
+ resu.add_comp(basis[0])[:] = mat
411
+ else:
412
+ raise TypeError("cannot coerce the {}".format(endo) +
413
+ " to an element of {}".format(self))
414
+ elif isinstance(comp, AlternatingContrTensor):
415
+ # coercion of an alternating contravariant tensor of degree
416
+ # p to a type-(p,0) tensor:
417
+ tensor = comp # for readability
418
+ p = tensor.degree()
419
+ if self._tensor_type != (p,0) or \
420
+ self._fmodule != tensor.base_module():
421
+ raise TypeError("cannot coerce the {}".format(tensor) +
422
+ " to an element of {}".format(self))
423
+ if p == 1:
424
+ asym = None
425
+ else:
426
+ asym = range(p)
427
+ resu = self.element_class(self._fmodule, (p,0),
428
+ name=tensor._name,
429
+ latex_name=tensor._latex_name,
430
+ antisym=asym,
431
+ parent=self)
432
+ for basis, comp in tensor._components.items():
433
+ resu._components[basis] = comp.copy()
434
+ elif isinstance(comp, FreeModuleAltForm):
435
+ # coercion of an alternating form to a type-(0,p) tensor:
436
+ form = comp # for readability
437
+ p = form.degree()
438
+ if self._tensor_type != (0,p) or \
439
+ self._fmodule != form.base_module():
440
+ raise TypeError("cannot coerce the {}".format(form) +
441
+ " to an element of {}".format(self))
442
+ if p == 1:
443
+ asym = None
444
+ else:
445
+ asym = range(p)
446
+ resu = self.element_class(self._fmodule, (0,p), name=form._name,
447
+ latex_name=form._latex_name,
448
+ antisym=asym,
449
+ parent=self)
450
+ for basis, comp in form._components.items():
451
+ resu._components[basis] = comp.copy()
452
+ elif isinstance(comp, FreeModuleAutomorphism):
453
+ # coercion of an automorphism to a type-(1,1) tensor:
454
+ autom = comp # for readability
455
+ if self._tensor_type != (1,1) or \
456
+ self._fmodule != autom.base_module():
457
+ raise TypeError("cannot coerce the {}".format(autom) +
458
+ " to an element of {}".format(self))
459
+ resu = self.element_class(self._fmodule, (1,1), name=autom._name,
460
+ latex_name=autom._latex_name,
461
+ parent=self)
462
+ for basis, comp in autom._components.items():
463
+ resu._components[basis] = comp.copy()
464
+ elif isinstance(comp, FreeModuleTensor):
465
+ tensor = comp
466
+ if self._tensor_type != tensor._tensor_type or \
467
+ self._fmodule != tensor.base_module():
468
+ raise TypeError("cannot coerce the {}".format(tensor) +
469
+ " to an element of {}".format(self))
470
+ resu = self.element_class(self._fmodule, self._tensor_type,
471
+ name=name, latex_name=latex_name,
472
+ sym=sym, antisym=antisym,
473
+ parent=self)
474
+ for basis, comp in tensor._components.items():
475
+ resu._components[basis] = comp.copy()
476
+ else:
477
+ # Standard construction:
478
+ resu = self.element_class(self._fmodule, self._tensor_type,
479
+ name=name, latex_name=latex_name,
480
+ sym=sym, antisym=antisym, parent=self)
481
+ if comp:
482
+ resu.set_comp(basis)[:] = comp
483
+ return resu
484
+
485
+ @cached_method
486
+ def zero(self):
487
+ r"""
488
+ Return the zero of ``self``.
489
+
490
+ EXAMPLES::
491
+
492
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
493
+ sage: e = M.basis('e')
494
+ sage: T11 = M.tensor_module(1,1)
495
+ sage: T11.zero()
496
+ Type-(1,1) tensor zero on the Rank-3 free module M over the Integer
497
+ Ring
498
+
499
+ The zero element is cached::
500
+
501
+ sage: T11.zero() is T11(0)
502
+ True
503
+ """
504
+ resu = self._element_constructor_(name='zero', latex_name='0')
505
+ for basis in self._fmodule._known_bases:
506
+ resu._add_comp_unsafe(basis)
507
+ # (since new components are initialized to zero)
508
+ resu._is_zero = True # This element is certainly zero
509
+ resu.set_immutable()
510
+ return resu
511
+
512
+ def _an_element_(self):
513
+ r"""
514
+ Construct some (unnamed) element of ``self``.
515
+
516
+ EXAMPLES::
517
+
518
+ sage: M = FiniteRankFreeModule(QQ, 2, name='M')
519
+ sage: T = M.tensor_module(1,1)
520
+ sage: t = T._an_element_() ; t
521
+ Type-(1,1) tensor on the 2-dimensional vector space M over the
522
+ Rational Field
523
+ sage: t.display()
524
+ 1/2 e_0⊗e^0
525
+ sage: t.parent() is T
526
+ True
527
+ sage: M.tensor_module(2,3)._an_element_().display()
528
+ 1/2 e_0⊗e_0⊗e^0⊗e^0⊗e^0
529
+
530
+ TESTS::
531
+
532
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
533
+ sage: e = M.basis('e')
534
+ sage: T60M = M.tensor_module(6, 0)
535
+ sage: Sym0123x45M = M.tensor_module(6, 0, sym=((0, 1, 2, 3), (4, 5)))
536
+ sage: t = Sym0123x45M._an_element_()
537
+ sage: t.parent() is Sym0123x45M
538
+ True
539
+ """
540
+ resu = self([])
541
+ # Make sure that the base module has a default basis
542
+ self._fmodule.an_element()
543
+ sindex = self._fmodule._sindex
544
+ ind = [sindex for i in range(resu._tensor_rank)]
545
+ resu.set_comp()[ind] = self._fmodule._ring.an_element()
546
+ return resu
547
+
548
+ def _coerce_map_from_(self, other):
549
+ r"""
550
+ Determine whether coercion to ``self`` exists from other parent.
551
+
552
+ EXAMPLES:
553
+
554
+ Sets of module endomorphisms coerce to type-`(1,1)` tensor modules::
555
+
556
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
557
+ sage: e = M.basis('e')
558
+ sage: M.tensor_module(1,1)._coerce_map_from_(End(M))
559
+ True
560
+
561
+ but not to tensor modules of other types::
562
+
563
+ sage: M.tensor_module(0,2)._coerce_map_from_(End(M))
564
+ False
565
+
566
+ and not to type-`(1,1)` tensor modules defined on another free module::
567
+
568
+ sage: N = FiniteRankFreeModule(ZZ, 3, name='N')
569
+ sage: f = N.basis('f')
570
+ sage: M.tensor_module(1,1)._coerce_map_from_(End(N))
571
+ False
572
+
573
+ There is no coercion if the module morphisms are not endomorphisms::
574
+
575
+ sage: M.tensor_module(1,1)._coerce_map_from_(Hom(M,N))
576
+ False
577
+
578
+ Coercion from alternating contravariant tensors::
579
+
580
+ sage: M.tensor_module(2,0)._coerce_map_from_(M.exterior_power(2))
581
+ True
582
+ sage: M.tensor_module(2,0)._coerce_map_from_(M.exterior_power(3))
583
+ False
584
+ sage: M.tensor_module(2,0)._coerce_map_from_(N.exterior_power(2))
585
+ False
586
+
587
+ Coercion from alternating forms::
588
+
589
+ sage: M.tensor_module(0,2)._coerce_map_from_(M.dual_exterior_power(2))
590
+ True
591
+ sage: M.tensor_module(0,2)._coerce_map_from_(M.dual_exterior_power(3))
592
+ False
593
+ sage: M.tensor_module(0,2)._coerce_map_from_(N.dual_exterior_power(2))
594
+ False
595
+
596
+ Coercion from submodules::
597
+
598
+ sage: Sym01M = M.tensor_module(2, 0, sym=((0, 1)))
599
+ sage: M.tensor_module(2,0)._coerce_map_from_(Sym01M)
600
+ True
601
+ """
602
+ from .free_module_homset import FreeModuleHomset
603
+ from .ext_pow_free_module import (ExtPowerFreeModule,
604
+ ExtPowerDualFreeModule)
605
+ from .free_module_linear_group import FreeModuleLinearGroup
606
+ if isinstance(other, FreeModuleHomset):
607
+ # Coercion of an endomorphism to a type-(1,1) tensor:
608
+ if self._tensor_type == (1,1):
609
+ return other.is_endomorphism_set() and \
610
+ self._fmodule is other.domain()
611
+ else:
612
+ return False
613
+ if isinstance(other, ExtPowerFreeModule):
614
+ # Coercion of an alternating contravariant tensor to a
615
+ # type-(p,0) tensor:
616
+ return self._tensor_type == (other.degree(), 0) and \
617
+ self._fmodule is other.base_module()
618
+ if isinstance(other, ExtPowerDualFreeModule):
619
+ # Coercion of an alternating form to a type-(0,p) tensor:
620
+ return self._tensor_type == (0, other.degree()) and \
621
+ self._fmodule is other.base_module()
622
+ if isinstance(other, FreeModuleLinearGroup):
623
+ # Coercion of an automorphism to a type-(1,1) tensor:
624
+ return self._tensor_type == (1,1) and \
625
+ self._fmodule is other.base_module()
626
+ try:
627
+ if other.is_submodule(self):
628
+ return True
629
+ except AttributeError:
630
+ pass
631
+ return False
632
+
633
+ #### End of parent methods
634
+
635
+ def _repr_(self):
636
+ r"""
637
+ Return a string representation of ``self``.
638
+
639
+ EXAMPLES::
640
+
641
+ sage: M = FiniteRankFreeModule(QQ, 2, name='M')
642
+ sage: M.tensor_module(1,1)
643
+ Free module of type-(1,1) tensors on the 2-dimensional vector space
644
+ M over the Rational Field
645
+ """
646
+ description = "Free module of type-({},{}) tensors on the {}".format(
647
+ self._tensor_type[0], self._tensor_type[1], self._fmodule)
648
+ return description
649
+
650
+ def base_module(self):
651
+ r"""
652
+ Return the free module on which ``self`` is constructed.
653
+
654
+ OUTPUT:
655
+
656
+ - instance of :class:`FiniteRankFreeModule` representing the free
657
+ module on which the tensor module is defined.
658
+
659
+ EXAMPLES:
660
+
661
+ Base module of a type-`(1,2)` tensor module::
662
+
663
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
664
+ sage: T = M.tensor_module(1,2)
665
+ sage: T.base_module()
666
+ Rank-3 free module M over the Integer Ring
667
+ sage: T.base_module() is M
668
+ True
669
+ """
670
+ return self._fmodule
671
+
672
+ def tensor_type(self):
673
+ r"""
674
+ Return the tensor type of ``self``.
675
+
676
+ OUTPUT:
677
+
678
+ - pair `(k,l)` such that ``self`` is the module tensor product
679
+ `T^{(k,l)}(M)`
680
+
681
+ EXAMPLES::
682
+
683
+ sage: M = FiniteRankFreeModule(ZZ, 3)
684
+ sage: T = M.tensor_module(1,2)
685
+ sage: T.tensor_type()
686
+ (1, 2)
687
+ """
688
+ return self._tensor_type
689
+
690
+ @cached_method
691
+ def basis(self, symbol, latex_symbol=None, from_family=None,
692
+ indices=None, latex_indices=None, symbol_dual=None,
693
+ latex_symbol_dual=None):
694
+ r"""
695
+ Return the standard basis of ``self`` corresponding to a basis of the base module.
696
+
697
+ INPUT:
698
+
699
+ - ``symbol``, ``indices`` -- passed to the base module's method
700
+ :meth:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule.basis`
701
+ to select a basis of the :meth:`base_module` of ``self``,
702
+ or to create it.
703
+
704
+ - other parameters -- passed to
705
+ :meth:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule.basis`; when
706
+ the basis does not exist yet, it will be created using these parameters.
707
+
708
+ EXAMPLES::
709
+
710
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
711
+ sage: T = M.tensor_module(1,1)
712
+ sage: e_T = T.basis('e'); e_T
713
+ Standard basis on the
714
+ Free module of type-(1,1) tensors on the Rank-3 free module M over the Integer Ring
715
+ induced by Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
716
+ sage: for a in e_T: a.display()
717
+ e_0⊗e^0
718
+ e_0⊗e^1
719
+ e_0⊗e^2
720
+ e_1⊗e^0
721
+ e_1⊗e^1
722
+ e_1⊗e^2
723
+ e_2⊗e^0
724
+ e_2⊗e^1
725
+ e_2⊗e^2
726
+
727
+ sage: Sym2M = M.tensor_module(2, 0, sym=range(2))
728
+ sage: e_Sym2M = Sym2M.basis('e'); e_Sym2M
729
+ Standard basis on the
730
+ Free module of fully symmetric type-(2,0) tensors on the Rank-3 free module M over the Integer Ring
731
+ induced by Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
732
+ sage: for a in e_Sym2M: a.display()
733
+ e_0⊗e_0
734
+ e_0⊗e_1 + e_1⊗e_0
735
+ e_0⊗e_2 + e_2⊗e_0
736
+ e_1⊗e_1
737
+ e_1⊗e_2 + e_2⊗e_1
738
+ e_2⊗e_2
739
+
740
+ sage: M = FiniteRankFreeModule(ZZ, 2)
741
+ sage: e = M.basis('e')
742
+ sage: f = M.basis('f', from_family=(-e[1], e[0]))
743
+ sage: for b in f: b.display()
744
+ f_0 = -e_1
745
+ f_1 = e_0
746
+ sage: S = M.tensor_module(2, 0, sym=(0,1))
747
+ sage: fS = S.basis('f')
748
+ sage: for b in fS: b.display()
749
+ e_1⊗e_1
750
+ -e_0⊗e_1 - e_1⊗e_0
751
+ e_0⊗e_0
752
+ sage: for b in fS: b.display(f)
753
+ f_0⊗f_0
754
+ f_0⊗f_1 + f_1⊗f_0
755
+ f_1⊗f_1
756
+ """
757
+ return TensorFreeSubmoduleBasis_sym(self, symbol=symbol, latex_symbol=latex_symbol,
758
+ indices=indices, latex_indices=latex_indices,
759
+ symbol_dual=symbol_dual, latex_symbol_dual=latex_symbol_dual)
760
+
761
+ @cached_method
762
+ def _basis_sym(self):
763
+ r"""
764
+ Return an instance of :class:`~sage.tensor.modules.comp.Components`.
765
+
766
+ This implementation returns an instance without symmetry.
767
+
768
+ The subclass :class:`~sage.tensor.modules.tensor_free_submodule.TensorFreeSubmodule_sym`
769
+ overrides this method to encode the prescribed symmetry of the submodule.
770
+
771
+ EXAMPLES::
772
+
773
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
774
+ sage: T = M.tensor_module(1,1)
775
+ sage: c = T._basis_sym(); c
776
+ 2-indices components w.r.t. (0, 1, 2)
777
+ """
778
+ frame = tuple(self.base_module().irange())
779
+ tensor = self.ambient()()
780
+ return tensor._new_comp(frame)