passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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

Potentially problematic release.


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

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  11. passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-gnu.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-gnu.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-x86_64-linux-gnu.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-gnu.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-x86_64-linux-gnu.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-x86_64-linux-gnu.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-x86_64-linux-gnu.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-gnu.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-x86_64-linux-gnu.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-x86_64-linux-gnu.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-gnu.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-gnu.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-gnu.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-gnu.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-gnu.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-gnu.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-gnu.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-gnu.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-x86_64-linux-gnu.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-x86_64-linux-gnu.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-x86_64-linux-gnu.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-x86_64-linux-gnu.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-x86_64-linux-gnu.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-x86_64-linux-gnu.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-x86_64-linux-gnu.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-x86_64-linux-gnu.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-x86_64-linux-gnu.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-x86_64-linux-gnu.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-x86_64-linux-gnu.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-x86_64-linux-gnu.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-gnu.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-x86_64-linux-gnu.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-gnu.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-gnu.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-x86_64-linux-gnu.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-gnu.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-gnu.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-gnu.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-x86_64-linux-gnu.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-x86_64-linux-gnu.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-gnu.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-gnu.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-gnu.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-gnu.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-x86_64-linux-gnu.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-x86_64-linux-gnu.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-gnu.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-gnu.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-x86_64-linux-gnu.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-x86_64-linux-gnu.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-x86_64-linux-gnu.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-x86_64-linux-gnu.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-x86_64-linux-gnu.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,346 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat
3
+ r"""
4
+ Elements of finitely presented graded modules
5
+
6
+ AUTHORS:
7
+
8
+ - Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
9
+ - Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
10
+ original software to Sage version 8.9.
11
+ - Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
12
+ new documentation and tests.
13
+ """
14
+
15
+ # *****************************************************************************
16
+ # Copyright (C) 2011 Robert R. Bruner <rrb@math.wayne.edu> and
17
+ # Michael J. Catanzaro <mike@math.wayne.edu>
18
+ #
19
+ # This program is free software: you can redistribute it and/or modify
20
+ # it under the terms of the GNU General Public License as published by
21
+ # the Free Software Foundation, either version 2 of the License, or
22
+ # (at your option) any later version.
23
+ # https://www.gnu.org/licenses/
24
+ # ****************************************************************************
25
+
26
+ from sage.misc.cachefunc import cached_method
27
+ from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement
28
+
29
+
30
+ class FPElement(IndexedFreeModuleElement):
31
+ r"""
32
+ A module element of a finitely presented graded module over
33
+ a connected graded algebra.
34
+
35
+ TESTS::
36
+
37
+ sage: from sage.modules.fp_graded.module import FPModule
38
+ sage: FPModule(SteenrodAlgebra(2), [0])([Sq(2)])
39
+ Sq(2)*g[0]
40
+ """
41
+
42
+ def lift_to_free(self):
43
+ r"""
44
+ Return the lift of ``self`` to the free module ``F``,
45
+ where ``self`` is in a quotient of ``F``.
46
+
47
+ EXAMPLES::
48
+
49
+ sage: from sage.modules.fp_graded.module import FPModule
50
+ sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
51
+ sage: x = M([Sq(1), 1])
52
+ sage: x
53
+ Sq(1)*g[0] + g[1]
54
+ sage: x.parent()
55
+ Finitely presented left module on 2 generators and 1 relation over mod 2 Steenrod algebra, milnor basis
56
+ sage: x.lift_to_free()
57
+ Sq(1)*g[0] + g[1]
58
+ sage: x.lift_to_free().parent()
59
+ Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
60
+ """
61
+ C = self.parent()._j.codomain()
62
+ return C(self.dense_coefficient_list())
63
+
64
+ @cached_method
65
+ def degree(self):
66
+ r"""
67
+ The degree of ``self``.
68
+
69
+ OUTPUT: the integer degree of ``self`` or raise an error if the zero element
70
+
71
+ EXAMPLES::
72
+
73
+ sage: from sage.modules.fp_graded.module import FPModule
74
+ sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
75
+ sage: x = M.an_element(7)
76
+
77
+ sage: x
78
+ Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
79
+ sage: x.degree()
80
+ 7
81
+
82
+ The zero element has no degree::
83
+
84
+ sage: (x-x).degree()
85
+ Traceback (most recent call last):
86
+ ...
87
+ ValueError: the zero element does not have a well-defined degree
88
+
89
+ TESTS::
90
+
91
+ sage: N = FPModule(SteenrodAlgebra(2), [0], [[Sq(2)]])
92
+ sage: y = Sq(2)*N.generator(0)
93
+ sage: y == 0
94
+ True
95
+ sage: y.degree()
96
+ Traceback (most recent call last):
97
+ ...
98
+ ValueError: the zero element does not have a well-defined degree
99
+
100
+ Testing that the order of the coefficients agrees with the
101
+ order of the generators::
102
+
103
+ sage: F.<x,y> = FPModule(SteenrodAlgebra(), (2, 0))
104
+ sage: x.degree()
105
+ 2
106
+ sage: y.degree()
107
+ 0
108
+ """
109
+ if self.is_zero():
110
+ raise ValueError("the zero element does not have a well-defined degree")
111
+ return self.lift_to_free().degree()
112
+
113
+ def dense_coefficient_list(self, order=None):
114
+ """
115
+ Return a list of all coefficients of ``self``.
116
+
117
+ INPUT:
118
+
119
+ - ``order`` -- (optional) an ordering of the basis indexing set
120
+
121
+ Note that this includes *all* of the coefficients, not just
122
+ the nonzero ones. By default they appear in the same order as
123
+ the module generators.
124
+
125
+ EXAMPLES::
126
+
127
+ sage: from sage.modules.fp_graded.module import FPModule
128
+ sage: A = SteenrodAlgebra()
129
+ sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
130
+ sage: x = M([Sq(1), 1])
131
+ sage: x.dense_coefficient_list()
132
+ [Sq(1), 1]
133
+ sage: y = Sq(2) * M.generator(1)
134
+ sage: y.dense_coefficient_list()
135
+ [0, Sq(2)]
136
+ """
137
+ if order is None:
138
+ order = self.parent()._indices
139
+ return [self[i] for i in order]
140
+
141
+ def _lmul_(self, a):
142
+ r"""
143
+ Act by left multiplication on this element by ``a``.
144
+
145
+ INPUT:
146
+
147
+ - ``a`` -- an element of the algebra the parent module is defined over
148
+
149
+ OUTPUT: the module element `a \cdot x` where `x` is ``self``
150
+
151
+ EXAMPLES::
152
+
153
+ sage: from sage.modules.fp_graded.module import FPModule
154
+ sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
155
+ sage: M = FPModule(A2, [0,3], [[Sq(2)*Sq(4), Sq(3)]])
156
+ sage: A2.Sq(2)*M.generator(1)
157
+ Sq(2)*g[3]
158
+ sage: A2.Sq(2)*(A2.Sq(1)*A2.Sq(2)*M.generator(0) + M.generator(1))
159
+ Sq(2,1)*g[0] + Sq(2)*g[3]
160
+
161
+ TESTS::
162
+
163
+ sage: elements = [M.an_element(n) for n in range(1,10)]
164
+ sage: a = A2.Sq(3)
165
+ sage: [a*x for x in elements]
166
+ [Sq(1,1)*g[0],
167
+ 0,
168
+ Sq(3,1)*g[0] + Sq(3)*g[3],
169
+ Sq(1,1)*g[3],
170
+ 0,
171
+ Sq(3,2)*g[0] + Sq(3,1)*g[3],
172
+ Sq(3,0,1)*g[0] + Sq(7)*g[3],
173
+ Sq(1,1,1)*g[0] + Sq(5,1)*g[3],
174
+ Sq(3,2)*g[3]]
175
+ """
176
+ return self.parent()(a * self.lift_to_free())
177
+
178
+ def vector_presentation(self):
179
+ r"""
180
+ A coordinate vector representing ``self`` when it is nonzero.
181
+
182
+ These are coordinates with respect to the basis chosen by
183
+ :meth:`~sage.modules.fp_graded.module.FPModule.basis_elements`.
184
+ When the element is zero, it has no well defined degree, and this
185
+ function returns ``None``.
186
+
187
+ OUTPUT:
188
+
189
+ A vector of elements in the ground ring of the algebra for
190
+ this module when this element is nonzero. Otherwise, the
191
+ value ``None``.
192
+
193
+ .. SEEALSO::
194
+
195
+ * :meth:`sage.modules.fp_graded.module.FPModule.vector_presentation`
196
+ * :meth:`sage.modules.fp_graded.module.FPModule.basis_elements`
197
+ * :meth:`sage.modules.fp_graded.module.FPModule.element_from_coordinates`
198
+
199
+ EXAMPLES::
200
+
201
+ sage: from sage.modules.fp_graded.module import FPModule
202
+ sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
203
+ sage: M.<m0,m1> = FPModule(A2, (0,1))
204
+
205
+ sage: x = M.an_element(7)
206
+ sage: v = x.vector_presentation(); v
207
+ (1, 0, 0, 0, 0, 1, 0)
208
+ sage: type(v) # needs sage.libs.m4ri
209
+ <class 'sage.modules.vector_mod2_dense.Vector_mod2_dense'>
210
+
211
+ sage: V = M.vector_presentation(7)
212
+ sage: v in V
213
+ True
214
+
215
+ sage: M.element_from_coordinates(v, 7) == x
216
+ True
217
+
218
+ We can use the basis for the module elements in the degree of `x`,
219
+ together with the coefficients `v` to recreate the element `x`::
220
+
221
+ sage: basis = M.basis_elements(7)
222
+ sage: x_ = sum( [c*b for (c,b) in zip(v, basis)] ); x_
223
+ Sq(0,0,1)*m0 + Sq(3,1)*m1
224
+ sage: x__ = M.linear_combination(zip(basis, v)); x__
225
+ Sq(0,0,1)*m0 + Sq(3,1)*m1
226
+ sage: x == x_ == x__
227
+ True
228
+
229
+ TESTS::
230
+
231
+ sage: M.zero().vector_presentation() is None
232
+ True
233
+ """
234
+ # We cannot represent the zero element since it does not have a degree,
235
+ # and we therefore do not know which free module it belongs to.
236
+ #
237
+ # In this case, we could return the integer value 0 since coercion would
238
+ # place it inside any free module. However, this will not work for
239
+ # homomorphisms, so we return None to be consistent.
240
+ try:
241
+ degree = self.lift_to_free().degree()
242
+ except ValueError:
243
+ return None
244
+
245
+ F_n = self.parent().vector_presentation(degree)
246
+ return F_n.quotient_map()(self.lift_to_free().vector_presentation())
247
+
248
+ def __bool__(self):
249
+ r"""
250
+ Determine if this element is nonzero.
251
+
252
+ OUTPUT:
253
+
254
+ The boolean value ``True`` if this element is nonzero
255
+ and ``False`` otherwise.
256
+
257
+ EXAMPLES::
258
+
259
+ sage: from sage.modules.fp_graded.module import FPModule
260
+ sage: M = FPModule(SteenrodAlgebra(2), [0,2,4], [[Sq(4),Sq(2),0]])
261
+ sage: M(0) != 0
262
+ False
263
+ sage: M((Sq(6), 0, Sq(2))) == 0
264
+ False
265
+ sage: a = M((Sq(1)*Sq(2)*Sq(1)*Sq(4), 0, 0))
266
+ sage: b = M((0, Sq(2)*Sq(2)*Sq(2), 0))
267
+ sage: a != 0
268
+ True
269
+ sage: bool(b)
270
+ True
271
+ sage: bool(a + b)
272
+ False
273
+ """
274
+ pres = self.vector_presentation()
275
+ if pres is None:
276
+ return False
277
+ return bool(pres)
278
+
279
+ def __eq__(self, other):
280
+ r"""
281
+ ``True`` iff ``self`` and ``other`` are equal.
282
+
283
+ EXAMPLES::
284
+
285
+ sage: from sage.modules.fp_graded.module import FPModule
286
+ sage: M = FPModule(SteenrodAlgebra(2), [0,1], [[Sq(4), Sq(3)]])
287
+ sage: x = M([Sq(1), 1])
288
+ sage: x
289
+ Sq(1)*g[0] + g[1]
290
+ sage: x == x
291
+ True
292
+ sage: x == M.zero()
293
+ False
294
+ sage: x-x == M.zero()
295
+ True
296
+ sage: x != x
297
+ False
298
+
299
+ Comparing elements in different modules::
300
+
301
+ sage: x = Sq(2) * M.generator(0)
302
+ sage: N = FPModule(SteenrodAlgebra(2), [0], [[Sq(2)]])
303
+ sage: y = Sq(2) * N.generator(0)
304
+ sage: x == y
305
+ False
306
+ sage: x != y
307
+ True
308
+ """
309
+ try:
310
+ return (self - other).is_zero()
311
+ except TypeError:
312
+ return False
313
+
314
+ def normalize(self):
315
+ r"""
316
+ A normalized form of ``self``.
317
+
318
+ OUTPUT:
319
+
320
+ An instance representing the same module element as ``self`` in
321
+ normalized form.
322
+
323
+ EXAMPLES::
324
+
325
+ sage: from sage.modules.fp_graded.module import FPModule
326
+ sage: M.<a0,b2,c4> = FPModule(SteenrodAlgebra(2), [0,2,4], [[Sq(4),Sq(2),0]])
327
+
328
+ sage: m = M((Sq(6), 0, Sq(2))); m
329
+ Sq(6)*a0 + Sq(2)*c4
330
+ sage: m.normalize()
331
+ Sq(6)*a0 + Sq(2)*c4
332
+ sage: m == m.normalize()
333
+ True
334
+
335
+ sage: n = M((Sq(4), Sq(2), 0)); n
336
+ Sq(4)*a0 + Sq(2)*b2
337
+ sage: n.normalize()
338
+ 0
339
+ sage: n == n.normalize()
340
+ True
341
+ """
342
+ if self.is_zero():
343
+ return self.parent().zero()
344
+
345
+ v = self.vector_presentation()
346
+ return self.parent().element_from_coordinates(v, self.degree())
@@ -0,0 +1,298 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Elements of finitely generated free graded left modules
4
+
5
+ For an overview, see the :mod:`free graded modules documentation
6
+ <sage.modules.fp_graded.free_module>`.
7
+
8
+ AUTHORS:
9
+
10
+ - Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
11
+ - Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
12
+ original software to Sage version 8.9.
13
+ - Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
14
+ new documentation and tests.
15
+ """
16
+
17
+ # *****************************************************************************
18
+ # Copyright (C) 2019 Robert R. Bruner <rrb@math.wayne.edu>
19
+ # and Michael J. Catanzaro <mike@math.wayne.edu>
20
+ #
21
+ # This program is free software: you can redistribute it and/or modify
22
+ # it under the terms of the GNU General Public License as published by
23
+ # the Free Software Foundation, either version 2 of the License, or
24
+ # (at your option) any later version.
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+
28
+ from sage.misc.cachefunc import cached_method
29
+ from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement
30
+
31
+
32
+ class FreeGradedModuleElement(IndexedFreeModuleElement):
33
+ r"""
34
+ Create a module element of a finitely generated free graded left module
35
+ over a connected graded algebra.
36
+
37
+ EXAMPLES::
38
+
39
+ sage: from sage.modules.fp_graded.free_module import FreeGradedModule
40
+ sage: M = FreeGradedModule(SteenrodAlgebra(2), (0, 1))
41
+
42
+ sage: M([0, 0])
43
+ 0
44
+
45
+ sage: M([1, 0])
46
+ g[0]
47
+
48
+ sage: M([0, 1])
49
+ g[1]
50
+
51
+ sage: M([Sq(1), 1])
52
+ Sq(1)*g[0] + g[1]
53
+ """
54
+
55
+ def dense_coefficient_list(self, order=None):
56
+ """
57
+ Return a list of all coefficients of ``self``.
58
+
59
+ INPUT:
60
+
61
+ - ``order`` -- (optional) an ordering of the basis indexing set
62
+
63
+ Note that this includes *all* of the coefficients, not just
64
+ the nonzero ones. By default they appear in the same order as
65
+ the module generators.
66
+
67
+ EXAMPLES::
68
+
69
+ sage: from sage.modules.fp_graded.free_module import FreeGradedModule
70
+
71
+ sage: # needs sage.combinat
72
+ sage: A = SteenrodAlgebra()
73
+ sage: M.<Y,Z> = FreeGradedModule(SteenrodAlgebra(2), (0, 1))
74
+ sage: x = M.an_element(7); x
75
+ Sq(0,0,1)*Y + Sq(3,1)*Z
76
+ sage: x.dense_coefficient_list()
77
+ [Sq(0,0,1), Sq(3,1)]
78
+
79
+ TESTS:
80
+
81
+ A module with generators in the "wrong" order::
82
+
83
+ sage: M.<Y,Z> = FreeGradedModule(SteenrodAlgebra(2), (1, 0))
84
+ sage: a = Sq(0,0,1)*Y + Sq(3,1)*Z
85
+ sage: a.dense_coefficient_list()
86
+ [Sq(0,0,1), Sq(3,1)]
87
+ """
88
+ if order is None:
89
+ order = self.parent()._indices
90
+ return [self[i] for i in order]
91
+
92
+ def degree(self):
93
+ r"""
94
+ The degree of ``self``.
95
+
96
+ OUTPUT:
97
+
98
+ The integer degree of this element, or raise an error
99
+ if this is the zero element.
100
+
101
+ EXAMPLES::
102
+
103
+ sage: # needs sage.combinat
104
+ sage: from sage.modules.fp_graded.free_module import *
105
+ sage: A = SteenrodAlgebra(2)
106
+ sage: M = FreeGradedModule(A, (0,1))
107
+ sage: x = M.an_element(7); x
108
+ Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
109
+ sage: x.degree()
110
+ 7
111
+
112
+ The zero element has no degree::
113
+
114
+ sage: (x-x).degree() # needs sage.combinat
115
+ Traceback (most recent call last):
116
+ ...
117
+ ValueError: the zero element does not have a well-defined degree
118
+
119
+ Neither do non-homogeneous elements::
120
+
121
+ sage: y = M.an_element(4) # needs sage.combinat
122
+ sage: (x+y).degree() # needs sage.combinat
123
+ Traceback (most recent call last):
124
+ ...
125
+ ValueError: this is a nonhomogeneous element, no well-defined degree
126
+ """
127
+ if self.is_zero():
128
+ raise ValueError("the zero element does not have a well-defined degree")
129
+ degrees = []
130
+ try:
131
+ for g, c in zip(self.parent().generator_degrees(),
132
+ self.dense_coefficient_list()):
133
+ if c:
134
+ degrees.append(g + c.degree())
135
+ except ValueError:
136
+ raise ValueError("this is a nonhomogeneous element, no well-defined degree")
137
+ m = min(degrees)
138
+ M = max(degrees)
139
+ if m == M:
140
+ return m
141
+ raise ValueError("this is a nonhomogeneous element, no well-defined degree")
142
+
143
+ def lift_to_free(self):
144
+ r"""
145
+ Return ``self``.
146
+
147
+ It is provided for compatibility with the method of the same
148
+ name for :class:`sage.modules.fp_graded.module.FPModule`.
149
+
150
+ EXAMPLES::
151
+
152
+ sage: # needs sage.combinat
153
+ sage: from sage.modules.fp_graded.free_module import FreeGradedModule
154
+ sage: A = SteenrodAlgebra(2)
155
+ sage: M = FreeGradedModule(A, (0,1))
156
+ sage: x = M.an_element()
157
+ sage: x.lift_to_free() == x
158
+ True
159
+ sage: x.lift_to_free() is x
160
+ True
161
+ """
162
+ return self
163
+
164
+ def _lmul_(self, a):
165
+ r"""
166
+ Act by left multiplication on this element by ``a``.
167
+
168
+ INPUT:
169
+
170
+ - ``a`` -- an element of the algebra the parent module is defined over
171
+
172
+ OUTPUT: the module element `a \cdot x` where `x` is this module element
173
+
174
+ EXAMPLES::
175
+
176
+ sage: # needs sage.combinat
177
+ sage: from sage.modules.fp_graded.free_module import *
178
+ sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
179
+ sage: M.<x0,y0,z3> = FreeGradedModule(A2, (0,0,3))
180
+ sage: A2.Sq(2)*M.generator(1)
181
+ Sq(2)*y0
182
+ sage: A2.Sq(2)*(A2.Sq(1)*A2.Sq(2)*M.generator(1) + M.generator(2))
183
+ Sq(2,1)*y0 + Sq(2)*z3
184
+
185
+ TESTS::
186
+
187
+ sage: # needs sage.combinat
188
+ sage: elements = [M.an_element(n) for n in range(1,10)]
189
+ sage: a = A2.Sq(3)
190
+ sage: [a*x for x in elements]
191
+ [Sq(1,1)*x0 + Sq(1,1)*y0,
192
+ 0,
193
+ Sq(3,1)*x0 + Sq(3,1)*y0 + Sq(3)*z3,
194
+ Sq(1,1)*z3,
195
+ 0,
196
+ Sq(3,2)*x0 + Sq(3,2)*y0 + Sq(3,1)*z3,
197
+ Sq(3,0,1)*x0 + Sq(3,0,1)*y0 + Sq(7)*z3,
198
+ Sq(1,1,1)*x0 + Sq(1,1,1)*y0 + Sq(5,1)*z3,
199
+ Sq(3,2)*z3]
200
+ """
201
+ return self.parent()(a * c for c in self.dense_coefficient_list())
202
+
203
+ @cached_method
204
+ def vector_presentation(self):
205
+ r"""
206
+ A coordinate vector representing ``self`` when it is a nonzero
207
+ homogeneous element.
208
+
209
+ These are coordinates with respect to the basis chosen by
210
+ :meth:`~sage.modules.fp_graded.free_module.FreeGradedModule.basis_elements`.
211
+ When the element is zero, it has no well defined degree, and this
212
+ function returns ``None``.
213
+
214
+ OUTPUT:
215
+
216
+ A vector of elements in the ground ring of the algebra for
217
+ this module when this element is nonzero. Otherwise, the value
218
+ ``None``.
219
+
220
+ .. SEEALSO::
221
+
222
+ * :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.vector_presentation`
223
+ * :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.basis_elements`
224
+ * :meth:`sage.modules.fp_graded.free_module.FreeGradedModule.element_from_coordinates`
225
+
226
+ EXAMPLES::
227
+
228
+ sage: # needs sage.combinat
229
+ sage: A2 = SteenrodAlgebra(2, profile=(3,2,1))
230
+ sage: M = A2.free_graded_module((0,1))
231
+ sage: x = M.an_element(7)
232
+ sage: v = x.vector_presentation(); v
233
+ (1, 0, 0, 0, 0, 1, 0)
234
+ sage: type(v) # needs sage.libs.m4ri
235
+ <class 'sage.modules.vector_mod2_dense.Vector_mod2_dense'>
236
+ sage: M.gen(0).vector_presentation()
237
+ (1)
238
+ sage: M.gen(1).vector_presentation()
239
+ (0, 1)
240
+ sage: V = M.vector_presentation(7)
241
+ sage: v in V
242
+ True
243
+ sage: M.element_from_coordinates(v, 7) == x
244
+ True
245
+
246
+ We can use the basis for the module elements in the degree of `x`,
247
+ together with the coefficients `v` to recreate the element `x`::
248
+
249
+ sage: # needs sage.combinat
250
+ sage: basis = M.basis_elements(7)
251
+ sage: x_ = sum( [c*b for (c,b) in zip(v, basis)] ); x_
252
+ Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
253
+ sage: x__ = M.linear_combination(zip(basis, v)); x__
254
+ Sq(0,0,1)*g[0] + Sq(3,1)*g[1]
255
+ sage: x == x_ == x__
256
+ True
257
+
258
+ This is not defined for elements that are not homogeneous::
259
+
260
+ sage: sum(M.basis()).vector_presentation() # needs sage.combinat
261
+ Traceback (most recent call last):
262
+ ...
263
+ ValueError: this is a nonhomogeneous element, no well-defined degree
264
+
265
+ TESTS::
266
+
267
+ sage: M.zero().vector_presentation() is None # needs sage.combinat
268
+ True
269
+ """
270
+ # We cannot represent the zero element since it does not have a degree,
271
+ # and we therefore do not know which vector space it belongs to.
272
+ #
273
+ # In this case, we could return the integer value 0 since coercion would
274
+ # place it inside any vector space. However, this will not work for
275
+ # homomorphisms, so we return None to be consistent.
276
+ if self.is_zero():
277
+ return None
278
+
279
+ P = self.parent()
280
+ deg = self.degree()
281
+ m = len(P._generator_degrees)
282
+ V = P.vector_presentation(deg)
283
+
284
+ ret = V.zero_vector()
285
+ j = 0
286
+ I = P._indices
287
+ for i in range(m):
288
+ if I[i] not in self._monomial_coefficients:
289
+ j += len(P._basis_coeffs(deg, i))
290
+ continue
291
+ coeff = self._monomial_coefficients[I[i]]
292
+ mc = coeff.monomial_coefficients(copy=False)
293
+ for mono in P._basis_coeffs(deg, i):
294
+ supp = mono.leading_support()
295
+ if supp in mc:
296
+ ret[j] = mc[supp]
297
+ j += 1
298
+ return ret
@@ -0,0 +1,53 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Homsets of finitely generated free graded left modules
4
+
5
+ For an overview, see the :mod:`free graded modules documentation
6
+ <sage.modules.fp_graded.free_module>`.
7
+
8
+ EXAMPLES::
9
+
10
+ sage: from sage.modules.fp_graded.free_module import FreeGradedModule
11
+ sage: A = SteenrodAlgebra(2)
12
+ sage: F1 = FreeGradedModule(A, (1,3), names='g')
13
+ sage: F2 = FreeGradedModule(A, (2,3), names='h')
14
+ sage: homset = Hom(F1, F2)
15
+ sage: homset
16
+ Set of Morphisms from Free graded left module on 2 generators ...
17
+ sage: homset([F2((Sq(1), 1)), F2((0, Sq(2)))])
18
+ Module morphism:
19
+ From: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
20
+ To: Free graded left module on 2 generators over mod 2 Steenrod algebra, milnor basis
21
+ Defn: g[1] |--> Sq(1)*h[2] + h[3]
22
+ g[3] |--> Sq(2)*h[3]
23
+ sage: TestSuite(homset).run() # needs sage.combinat
24
+
25
+ AUTHORS:
26
+
27
+ - Robert R. Bruner, Michael J. Catanzaro (2012): Initial version.
28
+ - Sverre Lunoee--Nielsen and Koen van Woerden (2019-11-29): Updated the
29
+ original software to Sage version 8.9.
30
+ - Sverre Lunoee--Nielsen (2020-07-01): Refactored the code and added
31
+ new documentation and tests.
32
+ """
33
+
34
+ # *****************************************************************************
35
+ # Copyright (C) 2021 Robert R. Bruner <rrb@math.wayne.edu> and
36
+ # Michael J. Catanzaro <mike@math.wayne.edu>
37
+ #
38
+ # This program is free software: you can redistribute it and/or modify
39
+ # it under the terms of the GNU General Public License as published by
40
+ # the Free Software Foundation, either version 2 of the License, or
41
+ # (at your option) any later version.
42
+ # https://www.gnu.org/licenses/
43
+ # ****************************************************************************
44
+
45
+ from sage.modules.fp_graded.free_morphism import FreeGradedModuleMorphism
46
+ from sage.modules.fp_graded.homspace import FPModuleHomspace
47
+
48
+
49
+ class FreeGradedModuleHomspace(FPModuleHomspace):
50
+ """
51
+ Homspace between two free graded modules.
52
+ """
53
+ Element = FreeGradedModuleMorphism