passagemath-modules 10.6.31__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.31.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31.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,923 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.libs.singular
3
+ r"""
4
+ Free resolutions
5
+
6
+ Let `R` be a commutative ring. A finite free resolution of an `R`-module `M`
7
+ is a chain complex of free `R`-modules
8
+
9
+ .. MATH::
10
+
11
+ 0 \rightarrow R^{n_k} \xrightarrow{d_k}
12
+ \cdots \xrightarrow{d_2} R^{n_1} \xrightarrow{d_1} R^{n_0}
13
+
14
+ terminating with a zero module at the end that is exact (all homology groups
15
+ are zero) such that the image of `d_1` is `M`.
16
+
17
+ EXAMPLES::
18
+
19
+ sage: from sage.homology.free_resolution import FreeResolution
20
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
21
+ sage: m = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z]).transpose()
22
+ sage: r = FreeResolution(m, name='S'); r
23
+ S^1 <-- S^3 <-- S^2 <-- 0
24
+
25
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
26
+ sage: r = I.free_resolution(); r
27
+ S^1 <-- S^3 <-- S^2 <-- 0
28
+
29
+ ::
30
+
31
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
32
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
33
+ sage: r = I.graded_free_resolution(); r
34
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
35
+
36
+ An example of a minimal free resolution from [CLO2005]_::
37
+
38
+ sage: R.<x,y,z,w> = QQ[]
39
+ sage: I = R.ideal([y*z - x*w, y^3 - x^2*z, x*z^2 - y^2*w, z^3 - y*w^2])
40
+ sage: r = I.free_resolution(); r
41
+ S^1 <-- S^4 <-- S^4 <-- S^1 <-- 0
42
+ sage: len(r)
43
+ 3
44
+ sage: r.matrix(2)
45
+ [-z^2 -x*z y*w -y^2]
46
+ [ y 0 -x 0]
47
+ [ -w y z x]
48
+ [ 0 w 0 z]
49
+
50
+ AUTHORS:
51
+
52
+ - Kwankyu Lee (2022-05-13): initial version
53
+ - Travis Scrimshaw (2022-08-23): refactored for free module inputs
54
+ """
55
+
56
+ # ****************************************************************************
57
+ # Copyright (C) 2022 Kwankyu Lee <ekwankyu@gmail.com>
58
+ # (C) 2022 Travis Scrimshaw <tcscrims at gmail.com>
59
+ #
60
+ # This program is free software: you can redistribute it and/or modify
61
+ # it under the terms of the GNU General Public License as published by
62
+ # the Free Software Foundation, either version 2 of the License, or
63
+ # (at your option) any later version.
64
+ # https://www.gnu.org/licenses/
65
+ # ****************************************************************************
66
+
67
+ from sage.misc.lazy_attribute import lazy_attribute
68
+ from sage.misc.abstract_method import abstract_method
69
+ from sage.misc.classcall_metaclass import ClasscallMetaclass
70
+ from sage.structure.sage_object import SageObject
71
+ from sage.structure.element import Matrix
72
+ from sage.categories.principal_ideal_domains import PrincipalIdealDomains
73
+ from sage.categories.integral_domains import IntegralDomains
74
+ from sage.modules.free_module_element import vector
75
+ from sage.modules.free_module import FreeModule
76
+ from sage.modules.free_module import Module_free_ambient, FreeModule_generic
77
+ from sage.rings.ideal import Ideal_generic
78
+
79
+ from copy import copy
80
+
81
+
82
+ class FreeResolution(SageObject, metaclass=ClasscallMetaclass):
83
+ r"""
84
+ A free resolution.
85
+
86
+ Let `R` be a commutative ring. A *free resolution* of an `R`-module `M`
87
+ is a (possibly infinite) chain complex of free `R`-modules
88
+
89
+ .. MATH::
90
+
91
+ \cdots \rightarrow R^{n_k} \xrightarrow{d_k}
92
+ \cdots \xrightarrow{d_2} R^{n_1} \xrightarrow{d_1} R^{n_0}
93
+
94
+ that is exact (all homology groups are zero) such that the image
95
+ of `d_1` is `M`.
96
+ """
97
+ @staticmethod
98
+ def __classcall_private__(cls, module, *args, graded=False, degrees=None, shifts=None, **kwds):
99
+ """
100
+ Dispatch to the correct constructor.
101
+
102
+ TESTS::
103
+
104
+ sage: from sage.homology.free_resolution import FreeResolution
105
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
106
+ sage: m = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z]).transpose()
107
+ sage: r = FreeResolution(m, name='S')
108
+ sage: type(r)
109
+ <class 'sage.homology.free_resolution.FiniteFreeResolution_singular'>
110
+
111
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
112
+ sage: r = FreeResolution(I)
113
+ sage: type(r)
114
+ <class 'sage.homology.free_resolution.FiniteFreeResolution_singular'>
115
+
116
+ sage: R.<x> = QQ[]
117
+ sage: M = R^3
118
+ sage: v = M([x^2, 2*x^2, 3*x^2])
119
+ sage: w = M([0, x, 2*x])
120
+ sage: S = M.submodule([v, w])
121
+ sage: r = FreeResolution(S)
122
+ sage: type(r)
123
+ <class 'sage.homology.free_resolution.FiniteFreeResolution_free_module'>
124
+
125
+ sage: I = R.ideal([x^4 + 3*x^2 + 2])
126
+ sage: r = FreeResolution(I)
127
+ sage: type(r)
128
+ <class 'sage.homology.free_resolution.FiniteFreeResolution_free_module'>
129
+
130
+ sage: R.<x,y> = QQ[]
131
+ sage: I = R.ideal([x^2, y^3])
132
+ sage: Q = R.quo(I)
133
+ sage: Q.is_integral_domain()
134
+ False
135
+ sage: xb, yb = Q.gens() # needs sage.rings.function_field
136
+ sage: FreeResolution(Q.ideal([xb])) # has torsion # needs sage.rings.function_field
137
+ Traceback (most recent call last):
138
+ ...
139
+ NotImplementedError: the ring must be a polynomial ring using Singular
140
+ """
141
+ if degrees is not None or shifts is not None:
142
+ graded = True
143
+
144
+ if isinstance(module, Matrix):
145
+ is_free_module = False
146
+ S = module.base_ring()
147
+ if S in PrincipalIdealDomains():
148
+ module = module.echelon_form()
149
+ if module.nrows() > module.rank():
150
+ module = module.submatrix(nrows=module.rank())
151
+ module.set_immutable()
152
+ is_free_module = True
153
+ if not module.is_immutable():
154
+ # We need to make an immutable copy of the matrix
155
+ module = copy(module)
156
+ module.set_immutable()
157
+ if is_free_module:
158
+ if graded:
159
+ from sage.homology.graded_resolution import GradedFiniteFreeResolution_free_module
160
+ return GradedFiniteFreeResolution_free_module(module,
161
+ *args,
162
+ degrees=degrees,
163
+ shifts=shifts,
164
+ **kwds)
165
+ return FiniteFreeResolution_free_module(module, *args, **kwds)
166
+
167
+ from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomialRing_libsingular
168
+ if not isinstance(S, MPolynomialRing_libsingular):
169
+ raise NotImplementedError("the matrix must be over a PID or a "
170
+ " polynomial ring that is using Singular")
171
+
172
+ if graded:
173
+ # We are computing a graded resolution
174
+ from sage.homology.graded_resolution import GradedFiniteFreeResolution_singular
175
+ return GradedFiniteFreeResolution_singular(module, *args, degrees=degrees,
176
+ shifts=shifts, **kwds)
177
+
178
+ return FiniteFreeResolution_singular(module, **kwds)
179
+
180
+ if graded:
181
+ return module.graded_free_resolution(*args, **kwds)
182
+ return module.free_resolution(*args, **kwds)
183
+
184
+ def __init__(self, module, name='S', **kwds):
185
+ """
186
+ Initialize ``self``.
187
+
188
+ INPUT:
189
+
190
+ - ``base_ring`` -- a ring
191
+ - ``name`` -- (default: ``'S'``) the name of the ring for printing
192
+
193
+ TESTS::
194
+
195
+ sage: from sage.homology.free_resolution import FreeResolution
196
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
197
+ sage: m1 = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z])
198
+ sage: r = FreeResolution(m1, name='S')
199
+ sage: TestSuite(r).run(skip=['_test_pickling'])
200
+ """
201
+ if isinstance(module, Ideal_generic):
202
+ S = module.ring()
203
+ else: # module or matrix
204
+ S = module.base_ring()
205
+
206
+ self._base_ring = S
207
+ self._name = name
208
+ self._module = module
209
+
210
+ def _repr_(self):
211
+ r"""
212
+ Return a string representation of ``self``.
213
+
214
+ TESTS::
215
+
216
+ sage: from sage.homology.free_resolution import FreeResolution
217
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
218
+ sage: m1 = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z])
219
+ sage: r = FreeResolution(m1, name='S')
220
+ sage: print(FreeResolution._repr_(r))
221
+ Free resolution of the row space of the matrix:
222
+ [z^2 - y*w y*z - x*w y^2 - x*z]
223
+ """
224
+ if isinstance(self._module, Matrix):
225
+ return f"Free resolution of the row space of the matrix:\n{self._module}"
226
+ return f"Free resolution of {self._module}"
227
+
228
+ def _repr_module(self, i):
229
+ r"""
230
+ Return the string form of the `i`-th free module.
231
+
232
+ INPUT:
233
+
234
+ - ``i`` -- positive integer
235
+
236
+ EXAMPLES::
237
+
238
+ sage: from sage.homology.free_resolution import FreeResolution
239
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
240
+ sage: m = matrix(S, 1, [y*w - z^2, -x*w + y*z, x*z - y^2])
241
+ sage: r = FreeResolution(m.transpose(), name='S')
242
+ sage: r._repr_module(2)
243
+ 'S^2'
244
+ sage: r # indirect doctest
245
+ S^1 <-- S^3 <-- S^2 <-- 0
246
+
247
+ TESTS::
248
+
249
+ sage: S.<x,y,z> = PolynomialRing(QQ)
250
+ sage: I = S.ideal(0)
251
+ sage: C = I.free_resolution()
252
+ sage: C
253
+ S^1 <-- 0
254
+ """
255
+ if i == 0:
256
+ if self._length > 0:
257
+ r = self._maps[0].nrows()
258
+ else:
259
+ r = self._initial_differential.domain().dimension()
260
+ s = f'{self._name}^{r}'
261
+ return s
262
+ elif i > self._length:
263
+ s = '0'
264
+ else:
265
+ r = self._maps[i - 1].ncols()
266
+ if r > 0:
267
+ s = f'{self._name}^{r}'
268
+ else:
269
+ s = '0'
270
+ return s
271
+
272
+ @abstract_method
273
+ def differential(self, i):
274
+ r"""
275
+ Return the `i`-th differential map.
276
+
277
+ INPUT:
278
+
279
+ - ``i`` -- positive integer
280
+
281
+ TESTS::
282
+
283
+ sage: from sage.homology.free_resolution import FreeResolution
284
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
285
+ sage: m1 = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z])
286
+ sage: r = FreeResolution(m1, name='S')
287
+ sage: FreeResolution.differiental(r, 1)
288
+ Traceback (most recent call last):
289
+ ...
290
+ AttributeError: type object 'FreeResolution' has no attribute 'differiental'...
291
+ """
292
+
293
+ def target(self):
294
+ r"""
295
+ Return the codomain of the `0`-th differential map.
296
+
297
+ The codomain of the `0`-th differential map is the cokernel of
298
+ the first differential map.
299
+
300
+ EXAMPLES::
301
+
302
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
303
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
304
+ sage: r = I.graded_free_resolution()
305
+ sage: r
306
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
307
+ sage: r.target()
308
+ Quotient module by
309
+ Submodule of Ambient free module of rank 1 over the integral domain
310
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
311
+ Generated by the rows of the matrix:
312
+ [-z^2 + y*w]
313
+ [ y*z - x*w]
314
+ [-y^2 + x*z]
315
+ """
316
+ return self.differential(0).codomain()
317
+
318
+
319
+ class FiniteFreeResolution(FreeResolution):
320
+ r"""
321
+ Finite free resolutions.
322
+
323
+ The matrix at index `i` in the list defines the differential map from
324
+ `(i + 1)`-th free module to the `i`-th free module over the base ring by
325
+ multiplication on the left. The number of matrices in the list is the
326
+ length of the resolution. The number of rows and columns of the matrices
327
+ define the ranks of the free modules in the resolution.
328
+
329
+ Note that the first matrix in the list defines the differential map at
330
+ homological index `1`.
331
+
332
+ A subclass must provide a ``_maps`` attribute that contains a list of the
333
+ maps defining the resolution.
334
+
335
+ A subclass can define ``_initial_differential`` attribute that
336
+ contains the `0`-th differential map whose codomain is the target
337
+ of the free resolution.
338
+
339
+ EXAMPLES::
340
+
341
+ sage: from sage.homology.free_resolution import FreeResolution
342
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
343
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
344
+ sage: r = FreeResolution(I)
345
+ sage: r.differential(0)
346
+ Coercion map:
347
+ From: Ambient free module of rank 1 over the integral domain
348
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
349
+ To: Quotient module by
350
+ Submodule of Ambient free module of rank 1 over the integral domain
351
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
352
+ Generated by the rows of the matrix:
353
+ [-z^2 + y*w]
354
+ [ y*z - x*w]
355
+ [-y^2 + x*z]
356
+ """
357
+ @lazy_attribute
358
+ def _length(self):
359
+ """
360
+ The length of ``self``.
361
+
362
+ TESTS::
363
+
364
+ sage: from sage.homology.free_resolution import FreeResolution
365
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
366
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
367
+ sage: r = FreeResolution(I)
368
+ sage: r._length
369
+ 2
370
+ """
371
+ return len(self._maps)
372
+
373
+ def _repr_(self):
374
+ """
375
+ Return the string form of this resolution.
376
+
377
+ INPUT:
378
+
379
+ - ``i`` -- positive integer
380
+
381
+ EXAMPLES::
382
+
383
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
384
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
385
+ sage: r = I.graded_free_resolution(); r
386
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
387
+ """
388
+ s = self._repr_module(0)
389
+ for i in range(1, self._length + 1):
390
+ s += ' <-- ' + self._repr_module(i)
391
+ s += ' <-- 0'
392
+ return s
393
+
394
+ def __len__(self):
395
+ r"""
396
+ Return the length of this resolution.
397
+
398
+ The length of a free resolution is the index of the last nonzero free module.
399
+
400
+ EXAMPLES::
401
+
402
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
403
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
404
+ sage: r = I.graded_free_resolution(); r
405
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
406
+ sage: len(r)
407
+ 2
408
+ """
409
+ return len(self._maps)
410
+
411
+ def __getitem__(self, i):
412
+ r"""
413
+ Return the `i`-th free module of this resolution.
414
+
415
+ INPUT:
416
+
417
+ - ``i`` -- positive integer
418
+
419
+ EXAMPLES::
420
+
421
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
422
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
423
+ sage: r = I.graded_free_resolution(); r
424
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
425
+ sage: r.target()
426
+ Quotient module by Submodule of Ambient free module of rank 1 over the integral domain
427
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
428
+ Generated by the rows of the matrix:
429
+ [-z^2 + y*w]
430
+ [ y*z - x*w]
431
+ [-y^2 + x*z]
432
+ """
433
+ if i < 0:
434
+ raise IndexError('invalid index')
435
+ elif i > self._length:
436
+ F = FreeModule(self._base_ring, 0)
437
+ elif i == 0:
438
+ F = self.differential(0).domain()
439
+ elif i == self._length:
440
+ F = FreeModule(self._base_ring, self._maps[i - 1].ncols())
441
+ else:
442
+ F = FreeModule(self._base_ring, self._maps[i].nrows())
443
+ return F
444
+
445
+ def differential(self, i):
446
+ r"""
447
+ Return the `i`-th differential map.
448
+
449
+ INPUT:
450
+
451
+ - ``i`` -- positive integer
452
+
453
+ EXAMPLES::
454
+
455
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
456
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
457
+ sage: r = I.graded_free_resolution()
458
+ sage: r
459
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
460
+ sage: r.differential(3)
461
+ Free module morphism defined as left-multiplication by the matrix
462
+ []
463
+ Domain: Ambient free module of rank 0 over the integral domain
464
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
465
+ Codomain: Ambient free module of rank 2 over the integral domain
466
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
467
+ sage: r.differential(2)
468
+ Free module morphism defined as left-multiplication by the matrix
469
+ [-y x]
470
+ [ z -y]
471
+ [-w z]
472
+ Domain: Ambient free module of rank 2 over the integral domain
473
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
474
+ Codomain: Ambient free module of rank 3 over the integral domain
475
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
476
+ sage: r.differential(1)
477
+ Free module morphism defined as left-multiplication by the matrix
478
+ [z^2 - y*w y*z - x*w y^2 - x*z]
479
+ Domain: Ambient free module of rank 3 over the integral domain
480
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
481
+ Codomain: Ambient free module of rank 1 over the integral domain
482
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
483
+ sage: r.differential(0)
484
+ Coercion map:
485
+ From: Ambient free module of rank 1 over the integral domain
486
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
487
+ To: Quotient module by
488
+ Submodule of Ambient free module of rank 1 over the integral domain
489
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
490
+ Generated by the rows of the matrix:
491
+ [-z^2 + y*w]
492
+ [ y*z - x*w]
493
+ [-y^2 + x*z]
494
+
495
+ TESTS::
496
+
497
+ sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
498
+ sage: S = P2.coordinate_ring()
499
+ sage: I = S.ideal(0)
500
+ sage: C = I.graded_free_resolution(); C
501
+ S(0) <-- 0
502
+ sage: C[1]
503
+ Ambient free module of rank 0 over the integral domain
504
+ Multivariate Polynomial Ring in x, y, z over Rational Field
505
+ sage: C[0]
506
+ Ambient free module of rank 1 over the integral domain
507
+ Multivariate Polynomial Ring in x, y, z over Rational Field
508
+ sage: C.differential(1)
509
+ Free module morphism defined as left-multiplication by the matrix
510
+ []
511
+ Domain: Ambient free module of rank 0 over the integral domain
512
+ Multivariate Polynomial Ring in x, y, z over Rational Field
513
+ Codomain: Ambient free module of rank 1 over the integral domain
514
+ Multivariate Polynomial Ring in x, y, z over Rational Field
515
+ sage: C.differential(1).matrix()
516
+ []
517
+ sage: C.differential(1).matrix().dimensions()
518
+ (1, 0)
519
+ """
520
+ if i < 0:
521
+ raise IndexError('invalid index')
522
+ elif i == 0:
523
+ try:
524
+ return self._initial_differential
525
+ except AttributeError:
526
+ raise ValueError('0th differential map undefined')
527
+ elif i > self._length + 1:
528
+ s = FreeModule(self._base_ring, 0)
529
+ t = FreeModule(self._base_ring, 0)
530
+ m = s.hom(0, t, side='right')
531
+ elif i == self._length + 1:
532
+ s = FreeModule(self._base_ring, 0)
533
+ if self._length > 0:
534
+ t = FreeModule(self._base_ring, self._maps[i - 2].ncols())
535
+ else:
536
+ t = self._initial_differential.domain()
537
+ m = s.hom(0, t, side='right')
538
+ else:
539
+ s = FreeModule(self._base_ring, self._maps[i - 1].ncols())
540
+ t = FreeModule(self._base_ring, self._maps[i - 1].nrows())
541
+ m = s.hom(self._maps[i - 1], t, side='right')
542
+ return m
543
+
544
+ def matrix(self, i):
545
+ r"""
546
+ Return the matrix representing the `i`-th differential map.
547
+
548
+ INPUT:
549
+
550
+ - ``i`` -- positive integer
551
+
552
+ EXAMPLES::
553
+
554
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
555
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
556
+ sage: r = I.graded_free_resolution(); r
557
+ S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
558
+ sage: r.matrix(3)
559
+ []
560
+ sage: r.matrix(2)
561
+ [-y x]
562
+ [ z -y]
563
+ [-w z]
564
+ sage: r.matrix(1)
565
+ [z^2 - y*w y*z - x*w y^2 - x*z]
566
+ """
567
+ if i <= 0:
568
+ raise IndexError('invalid index')
569
+ elif i <= self._length:
570
+ return self._maps[i - 1]
571
+ else:
572
+ return self.differential(i).matrix()
573
+
574
+ def chain_complex(self):
575
+ r"""
576
+ Return this resolution as a chain complex.
577
+
578
+ A chain complex in Sage has its own useful methods.
579
+
580
+ EXAMPLES::
581
+
582
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
583
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
584
+ sage: r = I.graded_free_resolution()
585
+ sage: unicode_art(r.chain_complex())
586
+ ⎛-y x⎞
587
+ ⎜ z -y⎟
588
+ (z^2 - y*w y*z - x*w y^2 - x*z) ⎝-w z⎠
589
+ 0 <── C_0 <────────────────────────────── C_1 <────── C_2 <── 0
590
+ """
591
+ from sage.homology.chain_complex import ChainComplex
592
+ mats = {}
593
+ for i in range(self._length, 0, -1):
594
+ mats[i] = self.matrix(i)
595
+ return ChainComplex(mats, degree_of_differential=-1)
596
+
597
+ @lazy_attribute
598
+ def _initial_differential(self):
599
+ r"""
600
+ Define the `0`-th differential map of this resolution.
601
+
602
+ EXAMPLES::
603
+
604
+ sage: from sage.homology.free_resolution import FreeResolution
605
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
606
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
607
+ sage: r = FreeResolution(I)
608
+ sage: r._initial_differential
609
+ Coercion map:
610
+ From: Ambient free module of rank 1 over the integral domain
611
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
612
+ To: Quotient module by
613
+ Submodule of Ambient free module of rank 1 over the integral domain
614
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
615
+ Generated by the rows of the matrix:
616
+ [-z^2 + y*w]
617
+ [ y*z - x*w]
618
+ [-y^2 + x*z]
619
+ """
620
+ module = self._module
621
+ if isinstance(module, Ideal_generic):
622
+ S = module.ring()
623
+ M = FreeModule(S, 1)
624
+ N = M.submodule([vector([g]) for g in module.gens()])
625
+ elif isinstance(module, Module_free_ambient):
626
+ S = module.base_ring()
627
+ M = module.ambient_module()
628
+ N = module
629
+ elif isinstance(module, Matrix):
630
+ S = module.base_ring()
631
+ N = module.row_space()
632
+ M = N.ambient_module()
633
+ Q = M.quotient(N)
634
+ return Q.coerce_map_from(M)
635
+
636
+ def _m(self):
637
+ r"""
638
+ Return the matrix whose column space is ``self._module``.
639
+
640
+ If ``self._module`` is an ideal, then just the ideal is returned.
641
+
642
+ TESTS::
643
+
644
+ sage: from sage.homology.free_resolution import FreeResolution
645
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
646
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
647
+ sage: r = FreeResolution(I)
648
+ sage: r._m()
649
+ Ideal (-z^2 + y*w, y*z - x*w, -y^2 + x*z) of
650
+ Multivariate Polynomial Ring in x, y, z, w over Rational Field
651
+
652
+ sage: m = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z]).transpose()
653
+ sage: r = FreeResolution(m, name='S')
654
+ sage: r._m()
655
+ [z^2 - y*w y*z - x*w y^2 - x*z]
656
+
657
+ sage: M = m.image()
658
+ sage: r = FreeResolution(M, name='S')
659
+ sage: r._m()
660
+ [z^2 - y*w y*z - x*w y^2 - x*z]
661
+ """
662
+ if isinstance(self._module, Ideal_generic):
663
+ return self._module
664
+ if isinstance(self._module, Module_free_ambient):
665
+ return self._module.matrix().transpose()
666
+ if isinstance(self._module, Matrix):
667
+ return self._module.transpose()
668
+ raise ValueError("unable to create a matrix/ideal to build the resolution")
669
+
670
+
671
+ class FiniteFreeResolution_free_module(FiniteFreeResolution):
672
+ r"""
673
+ Free resolutions of a free module.
674
+
675
+ INPUT:
676
+
677
+ - ``module`` -- a free module or ideal over a PID
678
+ - ``name`` -- the name of the base ring
679
+
680
+ EXAMPLES::
681
+
682
+ sage: R.<x> = QQ[]
683
+ sage: M = R^3
684
+ sage: v = M([x^2, 2*x^2, 3*x^2])
685
+ sage: w = M([0, x, 2*x])
686
+ sage: S = M.submodule([v, w]); S
687
+ Free module of degree 3 and rank 2 over
688
+ Univariate Polynomial Ring in x over Rational Field
689
+ Echelon basis matrix:
690
+ [ x^2 2*x^2 3*x^2]
691
+ [ 0 x 2*x]
692
+ sage: res = S.free_resolution(); res
693
+ S^3 <-- S^2 <-- 0
694
+ sage: ascii_art(res.chain_complex())
695
+ [ x^2 0]
696
+ [2*x^2 x]
697
+ [3*x^2 2*x]
698
+ 0 <-- C_0 <-------------- C_1 <-- 0
699
+
700
+ sage: R.<x> = PolynomialRing(QQ)
701
+ sage: I = R.ideal([x^4 + 3*x^2 + 2])
702
+ sage: res = I.free_resolution(); res
703
+ S^1 <-- S^1 <-- 0
704
+ """
705
+ @lazy_attribute
706
+ def _maps(self):
707
+ r"""
708
+ Return the maps that define ``self``.
709
+
710
+ EXAMPLES::
711
+
712
+ sage: R.<x> = QQ[]
713
+ sage: M = R^3
714
+ sage: v = M([x^2, 2*x^2, 3*x^2])
715
+ sage: w = M([0, x, 2*x])
716
+ sage: S = M.submodule([v, w])
717
+ sage: res = S.free_resolution(); res
718
+ S^3 <-- S^2 <-- 0
719
+ sage: ascii_art(res.chain_complex())
720
+ [ x^2 0]
721
+ [2*x^2 x]
722
+ [3*x^2 2*x]
723
+ 0 <-- C_0 <-------------- C_1 <-- 0
724
+ sage: res._maps
725
+ [
726
+ [ x^2 0]
727
+ [2*x^2 x]
728
+ [3*x^2 2*x]
729
+ ]
730
+
731
+ sage: R.<x> = PolynomialRing(QQ)
732
+ sage: I = R.ideal([x^4 + 3*x^2 + 2])
733
+ sage: res = I.free_resolution()
734
+ sage: res._maps
735
+ [[x^4 + 3*x^2 + 2]]
736
+
737
+ sage: from sage.homology.free_resolution import FreeResolution
738
+ sage: M = matrix([[x^2, 2],
739
+ ....: [3*x^2, 5],
740
+ ....: [5*x^2, 4]])
741
+ sage: res = FreeResolution(M.transpose()); res
742
+ S^3 <-- S^2 <-- 0
743
+ sage: res._m()
744
+ [ 1 0]
745
+ [ 5/2 -x^2]
746
+ [ 2 -6*x^2]
747
+ sage: res._maps
748
+ [
749
+ [ 1 0]
750
+ [ 5/2 -x^2]
751
+ [ 2 -6*x^2]
752
+ ]
753
+
754
+ An overdetermined system over a PID::
755
+
756
+ sage: res = FreeResolution(M); res
757
+ S^2 <-- S^2 <-- 0
758
+ sage: res._m()
759
+ [x^2 0]
760
+ [ 2 -1]
761
+ sage: res._maps
762
+ [
763
+ [x^2 0]
764
+ [ 2 -1]
765
+ ]
766
+ """
767
+ if isinstance(self._module, Ideal_generic):
768
+ from sage.matrix.constructor import matrix
769
+ return [matrix([[self._module.gen()]])]
770
+ return [self._m()]
771
+
772
+
773
+ class FiniteFreeResolution_singular(FiniteFreeResolution):
774
+ r"""
775
+ Minimal free resolutions of ideals or submodules of free modules
776
+ of multivariate polynomial rings implemented in Singular.
777
+
778
+ INPUT:
779
+
780
+ - ``module`` -- a submodule of a free module `M` of rank `n` over `S` or
781
+ an ideal of a multi-variate polynomial ring
782
+
783
+ - ``name`` -- string (optional); name of the base ring
784
+
785
+ - ``algorithm`` -- (default: ``'heuristic'``) Singular algorithm
786
+ to compute a resolution of ``ideal``
787
+
788
+ OUTPUT: a minimal free resolution of the ideal
789
+
790
+ If ``module`` is an ideal of `S`, it is considered as a submodule of a
791
+ free module of rank `1` over `S`.
792
+
793
+ The available algorithms and the corresponding Singular commands
794
+ are shown below:
795
+
796
+ ============= ============================
797
+ algorithm Singular commands
798
+ ============= ============================
799
+ ``minimal`` ``mres(ideal)``
800
+ ``shreyer`` ``minres(sres(std(ideal)))``
801
+ ``standard`` ``minres(nres(std(ideal)))``
802
+ ``heuristic`` ``minres(res(std(ideal)))``
803
+ ============= ============================
804
+
805
+ EXAMPLES::
806
+
807
+ sage: from sage.homology.free_resolution import FreeResolution
808
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
809
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
810
+ sage: r = FreeResolution(I); r
811
+ S^1 <-- S^3 <-- S^2 <-- 0
812
+ sage: len(r)
813
+ 2
814
+
815
+ ::
816
+
817
+ sage: FreeResolution(I, algorithm='minimal')
818
+ S^1 <-- S^3 <-- S^2 <-- 0
819
+ sage: FreeResolution(I, algorithm='shreyer')
820
+ S^1 <-- S^3 <-- S^2 <-- 0
821
+ sage: FreeResolution(I, algorithm='standard')
822
+ S^1 <-- S^3 <-- S^2 <-- 0
823
+ sage: FreeResolution(I, algorithm='heuristic')
824
+ S^1 <-- S^3 <-- S^2 <-- 0
825
+
826
+ We can also construct a resolution by passing in a matrix defining
827
+ the initial differential::
828
+
829
+ sage: m = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z]).transpose()
830
+ sage: r = FreeResolution(m, name='S'); r
831
+ S^1 <-- S^3 <-- S^2 <-- 0
832
+ sage: r.matrix(1)
833
+ [z^2 - y*w y*z - x*w y^2 - x*z]
834
+
835
+ An additional construction is using a submodule of a free module::
836
+
837
+ sage: M = m.image()
838
+ sage: r = FreeResolution(M, name='S'); r
839
+ S^1 <-- S^3 <-- S^2 <-- 0
840
+
841
+ A nonhomogeneous ideal::
842
+
843
+ sage: I = S.ideal([z^2 - y*w, y*z - x*w, y^2 - x])
844
+ sage: R = FreeResolution(I); R
845
+ S^1 <-- S^3 <-- S^3 <-- S^1 <-- 0
846
+ sage: R.matrix(2)
847
+ [ y*z - x*w y^2 - x 0]
848
+ [-z^2 + y*w 0 y^2 - x]
849
+ [ 0 -z^2 + y*w -y*z + x*w]
850
+ sage: R.matrix(3)
851
+ [ y^2 - x]
852
+ [-y*z + x*w]
853
+ [ z^2 - y*w]
854
+ """
855
+ def __init__(self, module, name='S', algorithm='heuristic', **kwds):
856
+ r"""
857
+ Initialize ``self``.
858
+
859
+ TESTS::
860
+
861
+ sage: from sage.homology.free_resolution import FreeResolution
862
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
863
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
864
+ sage: r = FreeResolution(I)
865
+ sage: TestSuite(r).run(skip=['_test_pickling'])
866
+
867
+ sage: m = matrix(S, 1, [z^2 - y*w, y*z - x*w, y^2 - x*z]).transpose()
868
+ sage: r = FreeResolution(m, name='S')
869
+ sage: TestSuite(r).run(skip=['_test_pickling'])
870
+
871
+ sage: M = m.image()
872
+ sage: r = FreeResolution(M, name='S')
873
+ sage: TestSuite(r).run(skip=['_test_pickling'])
874
+ """
875
+ self._algorithm = algorithm
876
+ super().__init__(module, name=name, **kwds)
877
+
878
+ @lazy_attribute
879
+ def _maps(self):
880
+ r"""
881
+ Return the maps that define ``self``.
882
+
883
+ TESTS::
884
+
885
+ sage: from sage.homology.free_resolution import FreeResolution
886
+ sage: S.<x,y,z,w> = PolynomialRing(QQ)
887
+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
888
+ sage: r = FreeResolution(I)
889
+ sage: r._maps
890
+ [
891
+ [-y x]
892
+ [ z -y]
893
+ [z^2 - y*w y*z - x*w y^2 - x*z], [-w z]
894
+ ]
895
+ """
896
+ from sage.libs.singular.singular import si2sa_resolution
897
+ from sage.libs.singular.function import singular_function
898
+
899
+ # This ensures the first component of the Singular resolution to be a
900
+ # module, like the later components. This is important when the
901
+ # components are converted to Sage modules.
902
+ module = singular_function("module")
903
+ mod = module(self._m())
904
+
905
+ if self._algorithm == 'minimal':
906
+ mres = singular_function('mres') # syzygy method
907
+ r = mres(mod, 0)
908
+ elif self._algorithm == 'shreyer':
909
+ std = singular_function('std')
910
+ sres = singular_function('sres') # Shreyer method
911
+ minres = singular_function('minres')
912
+ r = minres(sres(std(mod), 0))
913
+ elif self._algorithm == 'standard':
914
+ nres = singular_function('nres') # standard basis method
915
+ minres = singular_function('minres')
916
+ r = minres(nres(mod, 0))
917
+ elif self._algorithm == 'heuristic':
918
+ std = singular_function('std')
919
+ res = singular_function('res') # heuristic method
920
+ minres = singular_function('minres')
921
+ r = minres(res(std(mod), 0))
922
+
923
+ return si2sa_resolution(r)