passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.whl

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

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 +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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,1028 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Fraction fields of Ore polynomial rings
4
+
5
+ Sage provides support for building the fraction field of any Ore
6
+ polynomial ring and performing basic operations in it.
7
+ The fraction field is constructed by the method
8
+ :meth:`sage.rings.polynomial.ore_polynomial_ring.OrePolynomialRing.fraction_field`
9
+ as demonstrated below::
10
+
11
+ sage: R.<t> = QQ[]
12
+ sage: der = R.derivation()
13
+ sage: A.<d> = R['d', der]
14
+ sage: K = A.fraction_field()
15
+ sage: K
16
+ Ore Function Field in d over Fraction Field of Univariate Polynomial Ring in t
17
+ over Rational Field twisted by d/dt
18
+
19
+ The simplest way to build elements in `K` is to use the division
20
+ operator over Ore polynomial rings::
21
+
22
+ sage: f = 1/d
23
+ sage: f
24
+ d^(-1)
25
+ sage: f.parent() is K
26
+ True
27
+
28
+ REPRESENTATION OF ELEMENTS:
29
+
30
+ Elements in `K` are internally represented by fractions of the form `s^{-1} t`
31
+ with the denominator on the left. Notice that, because of noncommutativity,
32
+ this is not the same that fractions with denominator on the right.
33
+ For example, a fraction created by the division operator is usually displayed
34
+ with a different numerator and/or a different denominator::
35
+
36
+ sage: g = t / d
37
+ sage: g
38
+ (d - 1/t)^(-1) * t
39
+
40
+ The left numerator and right denominator are accessible as follows::
41
+
42
+ sage: g.left_numerator()
43
+ t
44
+ sage: g.right_denominator()
45
+ d
46
+
47
+ Similarly the methods :meth:`OrePolynomial.left_denominator` and
48
+ :meth:`OrePolynomial.right_numerator` give access to the Ore polynomials
49
+ `s` and `t` in the representation `s^{-1} t`::
50
+
51
+ sage: g.left_denominator()
52
+ d - 1/t
53
+ sage: g.right_numerator()
54
+ t
55
+
56
+ We favored the writing `s^{-1} t` because it always exists.
57
+ On the contrary, the writing `s t^{-1}` is only guaranteed when the twisting
58
+ morphism defining the Ore polynomial ring is bijective. As a consequence, when
59
+ the latter assumption is not fulfilled (or actually if Sage cannot invert the
60
+ twisting morphism), computing the left numerator and the right denominator fails::
61
+
62
+ sage: # needs sage.rings.function_field
63
+ sage: sigma = R.hom([t^2])
64
+ sage: S.<x> = R['x', sigma]
65
+ sage: F = S.fraction_field()
66
+ sage: f = F.random_element()
67
+ sage: while not f:
68
+ ....: f = F.random_element()
69
+ sage: f.left_numerator()
70
+ Traceback (most recent call last):
71
+ ...
72
+ NotImplementedError: inversion of the twisting morphism
73
+ Ring endomorphism of Fraction Field of Univariate Polynomial Ring in t over Rational Field
74
+ Defn: t |--> t^2
75
+
76
+ On a related note, fractions are systematically simplified when the twisting
77
+ morphism is bijective but they are not otherwise. As an example, compare the
78
+ two following computations::
79
+
80
+ sage: # needs sage.rings.function_field
81
+ sage: P = d^2 + t*d + 1
82
+ sage: Q = d + t^2
83
+ sage: D = d^3 + t^2 + 1
84
+ sage: f = P^(-1) * Q
85
+ sage: f
86
+ (d^2 + t*d + 1)^(-1) * (d + t^2)
87
+ sage: g = (D*P)^(-1) * (D*Q)
88
+ sage: g
89
+ (d^2 + t*d + 1)^(-1) * (d + t^2)
90
+
91
+ sage: # needs sage.rings.function_field
92
+ sage: P = x^2 + t*x + 1
93
+ sage: Q = x + t^2
94
+ sage: D = x^3 + t^2 + 1
95
+ sage: f = P^(-1) * Q
96
+ sage: f
97
+ (x^2 + t*x + 1)^(-1) * (x + t^2)
98
+ sage: g = (D*P)^(-1) * (D*Q)
99
+ sage: g
100
+ (x^5 + t^8*x^4 + x^3 + (t^2 + 1)*x^2 + (t^3 + t)*x + t^2 + 1)^(-1)
101
+ * (x^4 + t^16*x^3 + (t^2 + 1)*x + t^4 + t^2)
102
+ sage: f == g
103
+ True
104
+
105
+ OPERATIONS:
106
+
107
+ Basic arithmetical operations are available::
108
+
109
+ sage: # needs sage.rings.function_field
110
+ sage: f = 1 / d
111
+ sage: g = 1 / (d + t)
112
+ sage: u = f + g; u
113
+ (d^2 + ((t^2 - 1)/t)*d)^(-1) * (2*d + (t^2 - 2)/t)
114
+ sage: v = f - g; v
115
+ (d^2 + ((t^2 - 1)/t)*d)^(-1) * t
116
+ sage: u + v
117
+ d^(-1) * 2
118
+
119
+ sage: f * g
120
+ (d^2 + t*d)^(-1)
121
+ sage: f / g
122
+ d^(-1) * (d + t)
123
+
124
+ Of course, multiplication remains noncommutative::
125
+
126
+ sage: # needs sage.rings.function_field
127
+ sage: g * f
128
+ (d^2 + t*d + 1)^(-1)
129
+ sage: g^(-1) * f
130
+ (d - 1/t)^(-1) * (d + (t^2 - 1)/t)
131
+
132
+ TESTS:
133
+
134
+ The Ore function field is commutative if the twisting morphism is the
135
+ identity and the twisting derivation vanishes. ::
136
+
137
+ sage: # needs sage.rings.finite_rings
138
+ sage: k.<a> = GF(5^3)
139
+ sage: Frob = k.frobenius_endomorphism()
140
+ sage: S.<x> = k['x', Frob]
141
+ sage: K = S.fraction_field()
142
+ sage: K.is_commutative()
143
+ False
144
+ sage: T.<y> = k['y', Frob^3]
145
+ sage: L = T.fraction_field()
146
+ sage: L.is_commutative()
147
+ True
148
+
149
+ AUTHOR:
150
+
151
+ - Xavier Caruso (2020-05)
152
+ """
153
+
154
+
155
+ # ***************************************************************************
156
+ # Copyright (C) 2020 Xavier Caruso <xavier.caruso@normalesup.org>
157
+ #
158
+ # This program is free software: you can redistribute it and/or modify
159
+ # it under the terms of the GNU General Public License as published by
160
+ # the Free Software Foundation, either version 2 of the License, or
161
+ # (at your option) any later version.
162
+ # https://www.gnu.org/licenses/
163
+ # ***************************************************************************
164
+
165
+ from sage.categories.algebras import Algebras
166
+ from sage.categories.commutative_rings import CommutativeRings
167
+ from sage.categories.fields import Fields
168
+ from sage.categories.homset import Hom
169
+ from sage.categories.map import Section
170
+ from sage.rings.morphism import RingHomomorphism
171
+ from sage.rings.polynomial.ore_function_element import (
172
+ OreFunction_with_large_center,
173
+ OreFunctionBaseringInjection,
174
+ )
175
+ from sage.rings.polynomial.ore_polynomial_ring import OrePolynomialRing
176
+ from sage.structure.category_object import normalize_names
177
+ from sage.structure.parent import Parent
178
+ from sage.structure.richcmp import op_EQ
179
+ from sage.structure.unique_representation import UniqueRepresentation
180
+
181
+ WORKING_CENTER_MAX_TRIES = 1000
182
+
183
+
184
+ # Generic implementation of Ore function fields
185
+ ###############################################
186
+
187
+ class OreFunctionField(Parent, UniqueRepresentation):
188
+ r"""
189
+ A class for fraction fields of Ore polynomial rings.
190
+ """
191
+ Element = None
192
+
193
+ def __init__(self, ring, category=None):
194
+ r"""
195
+ Initialize this Ore function field.
196
+
197
+ TESTS::
198
+
199
+ sage: # needs sage.rings.finite_rings
200
+ sage: k.<a> = GF(11^3)
201
+ sage: Frob = k.frobenius_endomorphism()
202
+ sage: der = k.derivation(a, twist=Frob)
203
+ sage: S.<x> = k['x', der]
204
+ sage: K = S.fraction_field()
205
+ sage: TestSuite(K).run()
206
+ """
207
+ if self.Element is None:
208
+ import sage.rings.polynomial.ore_function_element
209
+ self.Element = sage.rings.polynomial.ore_function_element.OreFunction
210
+ if not isinstance(ring, OrePolynomialRing):
211
+ raise TypeError("not a Ore Polynomial Ring")
212
+ if ring.base_ring() not in Fields():
213
+ raise TypeError("the base ring must be a field")
214
+ try:
215
+ _ = ring.twisting_morphism(-1)
216
+ self._simplification = True
217
+ except (TypeError, ZeroDivisionError, NotImplementedError):
218
+ self._simplification = False
219
+ self._ring = ring
220
+ base = ring.base_ring()
221
+ if ring in CommutativeRings():
222
+ category = Algebras(base).Commutative().or_subcategory(category)
223
+ else:
224
+ category = Algebras(base).or_subcategory(category)
225
+ Parent.__init__(self, base=base, names=ring.variable_name(),
226
+ normalize=True, category=category)
227
+
228
+ def _element_constructor_(self, *args, **kwds):
229
+ r"""
230
+ Construct an element in this Ore function field.
231
+
232
+ TESTS::
233
+
234
+ sage: # needs sage.rings.finite_rings
235
+ sage: k.<a> = GF(5^3)
236
+ sage: Frob = k.frobenius_endomorphism()
237
+ sage: S.<x> = k['x', Frob]
238
+ sage: K = S.fraction_field()
239
+ sage: f = K(x^2 + a, x + a^2) # indirect doctest
240
+ sage: f
241
+ (x + a^2)^(-1) * (x^2 + a)
242
+ """
243
+ return self.element_class(self, *args, **kwds)
244
+
245
+ def _coerce_map_from_base_ring(self):
246
+ r"""
247
+ Return a coercion map from the base ring of this Ore function field.
248
+
249
+ EXAMPLES::
250
+
251
+ sage: # needs sage.rings.finite_rings
252
+ sage: k.<t> = GF(11^2)
253
+ sage: Frob = k.frobenius_endomorphism()
254
+ sage: S.<x> = k['x', Frob]
255
+ sage: K = S.fraction_field()
256
+ sage: K.coerce_map_from(k) # indirect doctest
257
+ Ore Function base injection morphism:
258
+ From: Finite Field in t of size 11^2
259
+ To: Ore Function Field in x over Finite Field in t of size 11^2
260
+ twisted by t |--> t^11
261
+ """
262
+ return OreFunctionBaseringInjection(self.base_ring(), self)
263
+
264
+ def _coerce_map_from_(self, P):
265
+ r"""
266
+ Return ``True`` if `P` coerces to this Ore function field.
267
+
268
+ EXAMPLES::
269
+
270
+ sage: R.<t> = QQ[]
271
+ sage: der = R.derivation()
272
+ sage: A.<d> = R['d', der]
273
+ sage: K = A.fraction_field()
274
+
275
+ sage: K.has_coerce_map_from(A)
276
+ True
277
+ sage: K.has_coerce_map_from(R)
278
+ True
279
+ sage: K.has_coerce_map_from(R.fraction_field())
280
+ True
281
+ """
282
+ if isinstance(P, OreFunctionField):
283
+ return P._ring.has_coerce_map_from(self._ring)
284
+ if isinstance(P, Parent):
285
+ return P.has_coerce_map_from(self._ring)
286
+
287
+ def _repr_(self) -> str:
288
+ r"""
289
+ Return a string representation of this Ore function field.
290
+
291
+ EXAMPLES::
292
+
293
+ sage: R.<t> = QQ[]
294
+ sage: sigma = R.hom([t+1])
295
+ sage: S.<x> = OrePolynomialRing(R, sigma)
296
+ sage: S.fraction_field() # needs sage.rings.function_field
297
+ Ore Function Field in x over Fraction Field of Univariate Polynomial Ring in t over Rational Field twisted by t |--> t + 1
298
+
299
+ sage: der = R.derivation()
300
+ sage: T.<d> = OrePolynomialRing(R, der)
301
+ sage: T.fraction_field() # needs sage.rings.function_field
302
+ Ore Function Field in d over Fraction Field of Univariate Polynomial Ring in t over Rational Field twisted by d/dt
303
+ """
304
+ s = "Ore Function Field in %s over %s twisted by " % (self.variable_name(), self.base_ring())
305
+ morphism = self.twisting_morphism()
306
+ derivation = self.twisting_derivation()
307
+ if derivation is None:
308
+ s += morphism._repr_short()
309
+ else:
310
+ if morphism is not None:
311
+ s += "%s and " % morphism._repr_short()
312
+ s += derivation._repr_()
313
+ return s
314
+
315
+ def _latex_(self):
316
+ r"""
317
+ Return a LaTeX representation of this Ore function field.
318
+
319
+ EXAMPLES::
320
+
321
+ sage: # needs sage.rings.finite_rings
322
+ sage: k.<a> = GF(5^3)
323
+ sage: Frob = k.frobenius_endomorphism()
324
+ sage: S.<x> = k['x', Frob]
325
+ sage: K = S.fraction_field()
326
+ sage: latex(K) # indirect doctest
327
+ \Bold{F}_{5^{3}}\left(x ; a \mapsto a^{5} \right)
328
+
329
+ sage: R.<t> = QQ[]
330
+ sage: der = R.derivation()
331
+ sage: T.<delta> = R['delta', der]
332
+ sage: L = T.fraction_field()
333
+ sage: latex(L) # indirect doctest
334
+ \mathrm{Frac}(\Bold{Q}[t])\left(\delta ; \frac{d}{dt} \right)
335
+ """
336
+ from sage.misc.latex import latex
337
+ s = "%s\\left(%s" % (latex(self.base_ring()), self.latex_variable_names()[0])
338
+ sep = ";"
339
+ if self.twisting_morphism() is not None:
340
+ s += sep + latex(self.twisting_morphism())
341
+ sep = ","
342
+ if self.twisting_derivation() is not None:
343
+ s += sep + latex(self.twisting_derivation())
344
+ return s + "\\right)"
345
+
346
+ def change_var(self, var):
347
+ r"""
348
+ Return the Ore function field in variable ``var`` with the same base
349
+ ring, twisting morphism and twisting derivation as ``self``.
350
+
351
+ INPUT:
352
+
353
+ - ``var`` -- string representing the name of the new variable
354
+
355
+ EXAMPLES::
356
+
357
+ sage: # needs sage.rings.finite_rings
358
+ sage: k.<t> = GF(5^3)
359
+ sage: Frob = k.frobenius_endomorphism()
360
+ sage: R.<x> = OrePolynomialRing(k,Frob)
361
+ sage: K = R.fraction_field()
362
+ sage: K
363
+ Ore Function Field in x over Finite Field in t of size 5^3 twisted by t |--> t^5
364
+ sage: Ky = K.change_var('y'); Ky
365
+ Ore Function Field in y over Finite Field in t of size 5^3 twisted by t |--> t^5
366
+ sage: Ky is K.change_var('y')
367
+ True
368
+ """
369
+ return OreFunctionField(self._ring.change_var(var))
370
+
371
+ def characteristic(self):
372
+ r"""
373
+ Return the characteristic of this Ore function field.
374
+
375
+ EXAMPLES::
376
+
377
+ sage: R.<t> = QQ[]
378
+ sage: sigma = R.hom([t+1])
379
+ sage: S = R['x',sigma]
380
+ sage: S.fraction_field().characteristic() # needs sage.rings.function_field
381
+ 0
382
+
383
+ sage: # needs sage.rings.finite_rings
384
+ sage: k.<u> = GF(5^3)
385
+ sage: Frob = k.frobenius_endomorphism()
386
+ sage: S = k['y',Frob]
387
+ sage: S.fraction_field().characteristic() # needs sage.rings.function_field
388
+ 5
389
+ """
390
+ return self.base_ring().characteristic()
391
+
392
+ def twisting_morphism(self, n=1):
393
+ r"""
394
+ Return the twisting endomorphism defining this Ore function field iterated ``n`` times
395
+ or ``None`` if this Ore function field is not twisted by an endomorphism.
396
+
397
+ INPUT:
398
+
399
+ - ``n`` -- integer (default: 1)
400
+
401
+ EXAMPLES::
402
+
403
+ sage: R.<t> = QQ[]
404
+ sage: sigma = R.hom([t+1])
405
+ sage: S.<x> = R['x', sigma]
406
+ sage: K = S.fraction_field() # needs sage.rings.function_field
407
+ sage: K.twisting_morphism() # needs sage.rings.function_field
408
+ Ring endomorphism of
409
+ Fraction Field of Univariate Polynomial Ring in t over Rational Field
410
+ Defn: t |--> t + 1
411
+
412
+ When the Ore polynomial ring is only twisted by a derivation, this
413
+ method returns nothing::
414
+
415
+ sage: der = R.derivation()
416
+ sage: A.<d> = R['x', der]
417
+ sage: F = A.fraction_field() # needs sage.rings.function_field
418
+ sage: F.twisting_morphism() # needs sage.rings.function_field
419
+
420
+ .. SEEALSO::
421
+
422
+ :meth:`sage.rings.polynomial.ore_polynomial_element.OrePolynomial.twisting_morphism`,
423
+ :meth:`twisting_derivation`
424
+ """
425
+ return self._ring.twisting_morphism(n)
426
+
427
+ def twisting_derivation(self):
428
+ r"""
429
+ Return the twisting derivation defining this Ore function field
430
+ or ``None`` if this Ore function field is not twisted by a derivation.
431
+
432
+ EXAMPLES::
433
+
434
+ sage: R.<t> = QQ[]
435
+ sage: der = R.derivation(); der
436
+ d/dt
437
+ sage: A.<d> = R['d', der]
438
+ sage: F = A.fraction_field()
439
+ sage: F.twisting_derivation()
440
+ d/dt
441
+
442
+ sage: # needs sage.rings.finite_rings
443
+ sage: k.<a> = GF(5^3)
444
+ sage: Frob = k.frobenius_endomorphism()
445
+ sage: S.<x> = k['x', Frob]
446
+ sage: K = S.fraction_field()
447
+ sage: K.twisting_derivation()
448
+
449
+ .. SEEALSO::
450
+
451
+ :meth:`sage.rings.polynomial.ore_polynomial_element.OrePolynomial.twisting_derivation`,
452
+ :meth:`twisting_morphism`
453
+ """
454
+ return self._ring.twisting_derivation()
455
+
456
+ def gen(self, n=0):
457
+ r"""
458
+ Return the indeterminate generator of this Ore function field.
459
+
460
+ INPUT:
461
+
462
+ - ``n`` -- index of generator to return (default: 0); exists for
463
+ compatibility with other polynomial rings
464
+
465
+ EXAMPLES::
466
+
467
+ sage: # needs sage.rings.finite_rings
468
+ sage: k.<a> = GF(5^4)
469
+ sage: Frob = k.frobenius_endomorphism()
470
+ sage: S.<x> = k['x', Frob]
471
+ sage: K = S.fraction_field()
472
+ sage: K.gen()
473
+ x
474
+ """
475
+ return self(self._ring.gen(n))
476
+
477
+ def gens(self) -> tuple:
478
+ """
479
+ Return the tuple of generators of ``self``.
480
+
481
+ EXAMPLES::
482
+
483
+ sage: # needs sage.rings.finite_rings
484
+ sage: k.<a> = GF(5^4)
485
+ sage: Frob = k.frobenius_endomorphism()
486
+ sage: S.<x> = k['x', Frob]
487
+ sage: K = S.fraction_field()
488
+ sage: K.gens()
489
+ (x,)
490
+ """
491
+ return (self(self._ring.gen(0)),)
492
+
493
+ parameter = gen
494
+
495
+ def gens_dict(self) -> dict:
496
+ r"""
497
+ Return a {name: variable} dictionary of the generators of
498
+ this Ore function field.
499
+
500
+ EXAMPLES::
501
+
502
+ sage: # needs sage.libs.singular sage.rings.finite_rings
503
+ sage: R.<t> = ZZ[]
504
+ sage: sigma = R.hom([t+1])
505
+ sage: S.<x> = OrePolynomialRing(R, sigma)
506
+ sage: K = S.fraction_field()
507
+ sage: K.gens_dict()
508
+ {'x': x}
509
+ """
510
+ return dict(zip(self.variable_names(), self.gens()))
511
+
512
+ def is_finite(self) -> bool:
513
+ r"""
514
+ Return ``False`` since Ore function field are not finite.
515
+
516
+ EXAMPLES::
517
+
518
+ sage: # needs sage.rings.finite_rings
519
+ sage: k.<t> = GF(5^3)
520
+ sage: k.is_finite()
521
+ True
522
+ sage: Frob = k.frobenius_endomorphism()
523
+ sage: S.<x> = k['x',Frob]
524
+ sage: K = S.fraction_field()
525
+ sage: K.is_finite()
526
+ False
527
+ """
528
+ return False
529
+
530
+ def is_exact(self) -> bool:
531
+ r"""
532
+ Return ``True`` if elements of this Ore function field are exact.
533
+ This happens if and only if elements of the base ring are exact.
534
+
535
+ EXAMPLES::
536
+
537
+ sage: # needs sage.rings.finite_rings
538
+ sage: k.<t> = GF(5^3)
539
+ sage: Frob = k.frobenius_endomorphism()
540
+ sage: S.<x> = k['x', Frob]
541
+ sage: K = S.fraction_field()
542
+ sage: K.is_exact()
543
+ True
544
+
545
+ sage: # needs sage.rings.padics
546
+ sage: k.<u> = Qq(5^3)
547
+ sage: Frob = k.frobenius_endomorphism()
548
+ sage: S.<x> = k['x', Frob]
549
+ sage: K = S.fraction_field()
550
+ sage: K.is_exact()
551
+ False
552
+ """
553
+ return self.base_ring().is_exact()
554
+
555
+ def is_sparse(self) -> bool:
556
+ r"""
557
+ Return ``True`` if the elements of this Ore function field are sparsely
558
+ represented.
559
+
560
+ .. WARNING::
561
+
562
+ Since sparse Ore polynomials are not yet implemented, this
563
+ function always returns ``False``.
564
+
565
+ EXAMPLES::
566
+
567
+ sage: # needs sage.rings.function_field sage.rings.real_mpfr
568
+ sage: R.<t> = RR[]
569
+ sage: sigma = R.hom([t+1])
570
+ sage: S.<x> = R['x', sigma]
571
+ sage: K = S.fraction_field()
572
+ sage: K.is_sparse()
573
+ False
574
+ """
575
+ return self._ring.is_sparse()
576
+
577
+ def ngens(self) -> int:
578
+ r"""
579
+ Return the number of generators of this Ore function field,
580
+ which is `1`.
581
+
582
+ EXAMPLES::
583
+
584
+ sage: # needs sage.rings.function_field sage.rings.real_mpfr
585
+ sage: R.<t> = RR[]
586
+ sage: sigma = R.hom([t+1])
587
+ sage: S.<x> = R['x',sigma]
588
+ sage: K = S.fraction_field()
589
+ sage: K.ngens()
590
+ 1
591
+ """
592
+ return 1
593
+
594
+ def random_element(self, degree=2, monic=False, *args, **kwds):
595
+ r"""
596
+ Return a random Ore function in this field.
597
+
598
+ INPUT:
599
+
600
+ - ``degree`` -- (default: 2) an integer or a list of
601
+ two integers; the degrees of the denominator and numerator
602
+
603
+ - ``monic`` -- boolean (default: ``False``); if ``True``, return a monic
604
+ Ore function with monic numerator and denominator
605
+
606
+ - ``*args``, ``**kwds`` -- passed in to the :meth:`random_element`
607
+ method for the base ring
608
+
609
+ EXAMPLES::
610
+
611
+ sage: # needs sage.rings.finite_rings
612
+ sage: k.<t> = GF(5^3)
613
+ sage: Frob = k.frobenius_endomorphism()
614
+ sage: S.<x> = k['x', Frob]
615
+ sage: K = S.fraction_field()
616
+ sage: K.random_element() # random
617
+ (x^2 + (2*t^2 + t + 1)*x + 2*t^2 + 2*t + 3)^(-1)
618
+ * ((2*t^2 + 3)*x^2 + (4*t^2 + t + 4)*x + 2*t^2 + 2)
619
+ sage: K.random_element(monic=True) # random
620
+ (x^2 + (4*t^2 + 3*t + 4)*x + 4*t^2 + t)^(-1)
621
+ * (x^2 + (2*t^2 + t + 3)*x + 3*t^2 + t + 2)
622
+ sage: K.random_element(degree=3) # random
623
+ (x^3 + (2*t^2 + 3)*x^2 + (2*t^2 + 4)*x + t + 3)^(-1)
624
+ * ((t + 4)*x^3 + (4*t^2 + 2*t + 2)*x^2 + (2*t^2 + 3*t + 3)*x + 3*t^2 + 3*t + 1)
625
+ sage: K.random_element(degree=[2,5]) # random
626
+ (x^2 + (4*t^2 + 2*t + 2)*x + 4*t^2 + t + 2)^(-1)
627
+ * ((3*t^2 + t + 1)*x^5 + (2*t^2 + 2*t)*x^4 + (t^2 + 2*t + 4)*x^3
628
+ + (3*t^2 + 2*t)*x^2 + (t^2 + t + 4)*x)
629
+ """
630
+ if isinstance(degree, list):
631
+ degdenom, degnum = degree
632
+ else:
633
+ degdenom = degnum = degree
634
+ numerator = self._ring.random_element(degnum, monic, *args, **kwds)
635
+ denominator = self._ring.random_element(degdenom, True, *args, **kwds)
636
+ return self(numerator, denominator)
637
+
638
+ def is_field(self, proof=False) -> bool:
639
+ r"""
640
+ Return always ``True`` since Ore function field are (skew) fields.
641
+
642
+ EXAMPLES::
643
+
644
+ sage: # needs sage.rings.finite_rings
645
+ sage: k.<a> = GF(5^3)
646
+ sage: Frob = k.frobenius_endomorphism()
647
+ sage: S.<x> = k['x', Frob]
648
+ sage: K = S.fraction_field()
649
+ sage: S.is_field()
650
+ False
651
+ sage: K.is_field()
652
+ True
653
+
654
+ TESTS:
655
+
656
+ We check that :issue:`31470` is fixed::
657
+
658
+ sage: # needs sage.rings.finite_rings
659
+ sage: k.<a> = GF(5^3)
660
+ sage: S.<x> = k['x', k.frobenius_endomorphism()]
661
+ sage: K = S.fraction_field()
662
+ sage: zero_matrix(K, 2).row(0)
663
+ ...
664
+ (0, 0)
665
+ """
666
+ return True
667
+
668
+ def fraction_field(self):
669
+ r"""
670
+ Return the fraction field of this Ore function field,
671
+ i.e. this Ore function field itself.
672
+
673
+ EXAMPLES::
674
+
675
+ sage: R.<t> = QQ[]
676
+ sage: der = R.derivation()
677
+ sage: A.<d> = R['d', der]
678
+ sage: K = A.fraction_field(); K
679
+ Ore Function Field in d
680
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
681
+ twisted by d/dt
682
+ sage: K.fraction_field()
683
+ Ore Function Field in d
684
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
685
+ twisted by d/dt
686
+ sage: K.fraction_field() is K
687
+ True
688
+ """
689
+ return self
690
+
691
+
692
+ # Special classes for twisting morphisms with finite order
693
+ ##########################################################
694
+
695
+ class SectionOreFunctionCenterInjection(Section):
696
+ r"""
697
+ Section of the canonical injection of the center of a Ore
698
+ function field into this field
699
+ """
700
+ def __init__(self, embed):
701
+ r"""
702
+ Initialize this map.
703
+
704
+ TESTS::
705
+
706
+ sage: # needs sage.rings.finite_rings
707
+ sage: k.<a> = GF(5^3)
708
+ sage: S.<x> = OrePolynomialRing(k, k.frobenius_endomorphism())
709
+ sage: K = S.fraction_field()
710
+ sage: Z = K.center()
711
+ sage: iota = K.coerce_map_from(Z)
712
+ sage: sigma = iota.section()
713
+ sage: TestSuite(sigma).run(skip=['_test_category'])
714
+ """
715
+ Section.__init__(self, embed)
716
+ self._ringsection = embed._ringembed.section()
717
+ self._simplify = not embed._codomain._simplification
718
+
719
+ def _call_(self, x):
720
+ r"""
721
+ Return `x` viewed as an element of the center.
722
+
723
+ EXAMPLES::
724
+
725
+ sage: # needs sage.rings.finite_rings
726
+ sage: k.<a> = GF(5^3)
727
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
728
+ sage: K = S.fraction_field()
729
+ sage: Z = K.center()
730
+ sage: iota = K.coerce_map_from(Z)
731
+ sage: sigma = iota.section()
732
+ sage: sigma(1/x^3)
733
+ 1/z
734
+ sage: sigma(1/x^2)
735
+ Traceback (most recent call last):
736
+ ...
737
+ ValueError: x^(-2) is not in the center
738
+ """
739
+ numerator = x._numerator
740
+ denominator = x._denominator
741
+ if self._simplify:
742
+ D = numerator.right_gcd(denominator)
743
+ numerator, _ = numerator.right_quo_rem(D)
744
+ denominator, _ = denominator.right_quo_rem(D)
745
+ try:
746
+ return self._ringsection(numerator) / self._ringsection(denominator)
747
+ except ValueError:
748
+ raise ValueError("%s is not in the center" % x)
749
+
750
+ def _richcmp_(self, right, op):
751
+ r"""
752
+ Compare this morphism with ``right``.
753
+
754
+ TESTS::
755
+
756
+ sage: # needs sage.rings.finite_rings
757
+ sage: k.<a> = GF(5^3)
758
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
759
+ sage: K = S.fraction_field()
760
+ sage: Z = K.center()
761
+ sage: iota = K.coerce_map_from(Z)
762
+ sage: sigma = iota.section()
763
+ sage: s = loads(dumps(sigma))
764
+ sage: s == sigma
765
+ True
766
+ sage: s is sigma
767
+ False
768
+ """
769
+ if op == op_EQ:
770
+ return (self.domain() is right.domain()) and (self.codomain() is right.codomain())
771
+ return NotImplemented
772
+
773
+
774
+ class OreFunctionCenterInjection(RingHomomorphism):
775
+ r"""
776
+ Canonical injection of the center of a Ore function field
777
+ into this field.
778
+ """
779
+ def __init__(self, domain, codomain, ringembed):
780
+ r"""
781
+ Initialize this morphism.
782
+
783
+ TESTS::
784
+
785
+ sage: # needs sage.rings.finite_rings
786
+ sage: k.<a> = GF(5^3)
787
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
788
+ sage: K = S.fraction_field()
789
+ sage: Z = K.center()
790
+ sage: iota = K.coerce_map_from(Z)
791
+ sage: TestSuite(iota).run(skip=['_test_category'])
792
+ """
793
+ RingHomomorphism.__init__(self, Hom(domain, codomain))
794
+ self._codomain = codomain
795
+ self._ringembed = ringembed
796
+ self._section = SectionOreFunctionCenterInjection(self)
797
+
798
+ def _repr_(self):
799
+ r"""
800
+ Return a string representation of this morphism.
801
+
802
+ EXAMPLES::
803
+
804
+ sage: # needs sage.rings.finite_rings
805
+ sage: k.<a> = GF(5^3)
806
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
807
+ sage: K = S.fraction_field()
808
+ sage: Z = K.center()
809
+ sage: iota = K.coerce_map_from(Z)
810
+ sage: iota
811
+ Embedding of the center of Ore Function Field in x over Finite Field in a of size 5^3 twisted by a |--> a^5 into this field
812
+ sage: iota._repr_()
813
+ 'Embedding of the center of Ore Function Field in x over Finite Field in a of size 5^3 twisted by a |--> a^5 into this field'
814
+ """
815
+ return "Embedding of the center of %s into this field" % self._codomain
816
+
817
+ def _call_(self, x):
818
+ r"""
819
+ Return the image of `x` by this morphism.
820
+
821
+ TESTS::
822
+
823
+ sage: # needs sage.rings.finite_rings
824
+ sage: k.<a> = GF(5^3)
825
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
826
+ sage: K = S.fraction_field()
827
+ sage: Z.<z> = K.center()
828
+ sage: iota = K.coerce_map_from(Z)
829
+ sage: iota(1/(z+1))
830
+ (x^3 + 1)^(-1)
831
+ """
832
+ numerator = self._ringembed(x.numerator())
833
+ denominator = self._ringembed(x.denominator())
834
+ return self._codomain(numerator, denominator, simplify=False)
835
+
836
+ def _richcmp_(self, right, op):
837
+ r"""
838
+ Compare this morphism with ``right``.
839
+
840
+ TESTS::
841
+
842
+ sage: # needs sage.rings.finite_rings
843
+ sage: k.<a> = GF(5^3)
844
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
845
+ sage: K = S.fraction_field()
846
+ sage: Z = K.center()
847
+ sage: iota = K.coerce_map_from(Z)
848
+ sage: i = loads(dumps(iota))
849
+ sage: i == iota
850
+ True
851
+ sage: i is iota
852
+ False
853
+ """
854
+ if op == op_EQ:
855
+ return (self.domain() is right.domain()) and (self.codomain() is right.codomain())
856
+ return NotImplemented
857
+
858
+ def section(self):
859
+ r"""
860
+ Return a section of this morphism.
861
+
862
+ EXAMPLES::
863
+
864
+ sage: # needs sage.rings.finite_rings
865
+ sage: k.<a> = GF(5^3)
866
+ sage: S.<x> = SkewPolynomialRing(k, k.frobenius_endomorphism())
867
+ sage: K = S.fraction_field()
868
+ sage: Z = K.center()
869
+ sage: iota = K.coerce_map_from(Z)
870
+ sage: sigma = iota.section()
871
+ sage: sigma(x^3 / (x^6 + 1))
872
+ z/(z^2 + 1)
873
+ """
874
+ return self._section
875
+
876
+
877
+ class OreFunctionField_with_large_center(OreFunctionField):
878
+ """
879
+ A specialized class for Ore polynomial fields whose center has finite index.
880
+ """
881
+ def __init__(self, ring, category=None):
882
+ r"""
883
+ Initialize this Ore function field.
884
+
885
+ TESTS::
886
+
887
+ sage: # needs sage.rings.finite_rings
888
+ sage: k.<t> = GF(5^3)
889
+ sage: Frob = k.frobenius_endomorphism()
890
+ sage: S.<x> = k['x', Frob]
891
+ sage: K = S.fraction_field()
892
+ sage: TestSuite(K).run()
893
+ """
894
+ if self.Element is None:
895
+ self.Element = OreFunction_with_large_center
896
+ OreFunctionField.__init__(self, ring, category)
897
+ self._center = {}
898
+ self._center_variable_name = 'z'
899
+ for i in range(WORKING_CENTER_MAX_TRIES):
900
+ try:
901
+ self._working_center = self.center()
902
+ self._center_variable_name = None
903
+ break
904
+ except ValueError:
905
+ self._center_variable_name = "z%s_" % i
906
+ if self._center_variable_name is not None:
907
+ raise NotImplementedError("unable to create the center")
908
+
909
+ def center(self, name=None, names=None, default=False):
910
+ r"""
911
+ Return the center of this Ore function field.
912
+
913
+ .. NOTE::
914
+
915
+ One can prove that the center is a field of rational functions
916
+ over a subfield of the base ring of this Ore function field.
917
+
918
+ INPUT:
919
+
920
+ - ``name`` -- string or ``None`` (default: ``None``);
921
+ the name for the central variable
922
+
923
+ - ``default`` -- boolean (default: ``False``); if ``True``,
924
+ set the default variable name for the center to ``name``
925
+
926
+ EXAMPLES::
927
+
928
+ sage: # needs sage.rings.finite_rings
929
+ sage: k.<t> = GF(5^3)
930
+ sage: Frob = k.frobenius_endomorphism()
931
+ sage: S.<x> = k['x',Frob]
932
+ sage: K = S.fraction_field()
933
+ sage: Z = K.center(); Z
934
+ Fraction Field of Univariate Polynomial Ring in z over Finite Field of size 5
935
+
936
+ We can pass in another variable name::
937
+
938
+ sage: K.center(name='y') # needs sage.rings.finite_rings
939
+ Fraction Field of Univariate Polynomial Ring in y over Finite Field of size 5
940
+
941
+ or use the bracket notation::
942
+
943
+ sage: Zy.<y> = K.center(); Zy # needs sage.rings.finite_rings
944
+ Fraction Field of Univariate Polynomial Ring in y over Finite Field of size 5
945
+
946
+ A coercion map from the center to the Ore function field is set::
947
+
948
+ sage: K.has_coerce_map_from(Zy) # needs sage.rings.finite_rings
949
+ True
950
+
951
+ and pushout works::
952
+
953
+ sage: # needs sage.rings.finite_rings
954
+ sage: x.parent()
955
+ Ore Polynomial Ring in x over Finite Field in t of size 5^3 twisted by t |--> t^5
956
+ sage: y.parent()
957
+ Fraction Field of Univariate Polynomial Ring in y over Finite Field of size 5
958
+ sage: P = x + y; P
959
+ x^3 + x
960
+ sage: P.parent()
961
+ Ore Function Field in x over Finite Field in t of size 5^3 twisted by t |--> t^5
962
+
963
+ A conversion map in the reverse direction is also set::
964
+
965
+ sage: # needs sage.rings.finite_rings
966
+ sage: Zy(x^(-6) + 2)
967
+ (2*y^2 + 1)/y^2
968
+ sage: Zy(1/x^2)
969
+ Traceback (most recent call last):
970
+ ...
971
+ ValueError: x^(-2) is not in the center
972
+
973
+ ABOUT THE DEFAULT NAME OF THE CENTRAL VARIABLE:
974
+
975
+ A priori, the default is ``z``.
976
+
977
+ However, a variable name is given the first time this method is
978
+ called, the given name become the default for the next calls::
979
+
980
+ sage: # needs sage.rings.finite_rings
981
+ sage: k.<t> = GF(11^3)
982
+ sage: phi = k.frobenius_endomorphism()
983
+ sage: S.<X> = k['X', phi]
984
+ sage: K = S.fraction_field()
985
+ sage: C.<u> = K.center() # first call
986
+ sage: C
987
+ Fraction Field of Univariate Polynomial Ring in u over Finite Field of size 11
988
+ sage: K.center() # second call: the variable name is still u
989
+ Fraction Field of Univariate Polynomial Ring in u over Finite Field of size 11
990
+
991
+ We can update the default variable name by passing in the argument
992
+ ``default=True``::
993
+
994
+ sage: # needs sage.rings.finite_rings
995
+ sage: D.<v> = K.center(default=True)
996
+ sage: D
997
+ Fraction Field of Univariate Polynomial Ring in v over Finite Field of size 11
998
+ sage: K.center()
999
+ Fraction Field of Univariate Polynomial Ring in v over Finite Field of size 11
1000
+ """
1001
+ if name is not None and names is not None:
1002
+ raise ValueError("you must specify the name of the variable")
1003
+ if names is None:
1004
+ if name is None:
1005
+ name = self._center_variable_name
1006
+ if name is None:
1007
+ name = 'z'
1008
+ names = (name,)
1009
+ names = normalize_names(1, names)
1010
+ name = names[0]
1011
+ if name in self._center:
1012
+ center = self._center[name]
1013
+ else:
1014
+ ring = self._ring
1015
+ ringcenter = ring.center(name, default=False)
1016
+ ringembed = ring.coerce_map_from(ringcenter)
1017
+ center = ringcenter.fraction_field()
1018
+ embed = OreFunctionCenterInjection(center, self, ringembed)
1019
+ try:
1020
+ assert not self.has_coerce_map_from(center)
1021
+ self.register_coercion(embed)
1022
+ center.register_conversion(embed.section())
1023
+ except AssertionError:
1024
+ raise ValueError("creation of coercion map fails; consider using another variable name")
1025
+ self._center[name] = center
1026
+ if default or (self._center_variable_name is None):
1027
+ self._center_variable_name = name
1028
+ return center