passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-modules might be problematic. Click here for more details.

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