passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

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

Potentially problematic release.


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

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,685 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Quotients of modules with basis
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2010-2015 Florent Hivert <Florent.Hivert@univ-mlv.fr>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # https://www.gnu.org/licenses/
10
+ # *****************************************************************************
11
+
12
+ from sage.misc.cachefunc import cached_method
13
+ from sage.sets.family import Family
14
+ from sage.combinat.free_module import CombinatorialFreeModule
15
+ from sage.misc.lazy_attribute import lazy_attribute
16
+ from sage.categories.modules_with_basis import ModulesWithBasis
17
+
18
+
19
+ class QuotientModuleWithBasis(CombinatorialFreeModule):
20
+ r"""
21
+ A class for quotients of a module with basis by a submodule.
22
+
23
+ INPUT:
24
+
25
+ - ``submodule`` -- a submodule of ``self``
26
+ - ``category`` -- a category (default: ``ModulesWithBasis(submodule.base_ring())``)
27
+
28
+ ``submodule`` should be a free submodule admitting a basis in
29
+ unitriangular echelon form. Typically ``submodule`` is a
30
+ :class:`SubmoduleWithBasis` as returned by
31
+ :meth:`Modules.WithBasis.ParentMethods.submodule`.
32
+
33
+ The ``lift`` method should have a method
34
+ ``.cokernel_basis_indices`` that computes the indexing set of a
35
+ subset `B` of the basis of ``self`` that spans some supplementary
36
+ of ``submodule`` in ``self`` (typically the non characteristic
37
+ columns of the aforementioned echelon form). ``submodule`` should
38
+ further implement a ``submodule.reduce(x)`` method that returns
39
+ the unique element in the span of `B` which is equivalent to `x`
40
+ modulo ``submodule``.
41
+
42
+ This is meant to be constructed via
43
+ :meth:`Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module`
44
+
45
+ This differs from :class:`sage.rings.quotient_ring.QuotientRing`
46
+ in the following ways:
47
+
48
+ - ``submodule`` needs not be an ideal. If it is, the
49
+ transportation of the ring structure is taken care of by the
50
+ ``Subquotients`` categories.
51
+
52
+ - Thanks to ``.cokernel_basis_indices``, we know the indices of a
53
+ basis of the quotient, and elements are represented directly in
54
+ the free module spanned by those indices rather than by wrapping
55
+ elements of the ambient space.
56
+
57
+ There is room for sharing more code between those two
58
+ implementations and generalizing them. See :issue:`18204`.
59
+
60
+ .. SEEALSO::
61
+
62
+ - :meth:`Modules.WithBasis.ParentMethods.submodule`
63
+ - :meth:`Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module`
64
+ - :class:`SubmoduleWithBasis`
65
+ - :class:`sage.rings.quotient_ring.QuotientRing`
66
+ """
67
+ @staticmethod
68
+ def __classcall_private__(cls, submodule, category=None):
69
+ r"""
70
+ Normalize the input.
71
+
72
+ TESTS::
73
+
74
+ sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis
75
+ sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
76
+ sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) )
77
+ sage: J1 = QuotientModuleWithBasis(I)
78
+ sage: J2 = QuotientModuleWithBasis(I, category=Modules(QQ).WithBasis().Quotients())
79
+ sage: J1 is J2
80
+ True
81
+ """
82
+ default_category = ModulesWithBasis(submodule.category().base_ring()).Quotients()
83
+ category = default_category.or_subcategory(category, join=True)
84
+ return super().__classcall__(cls, submodule, category)
85
+
86
+ def __init__(self, submodule, category, *args, **opts):
87
+ r"""
88
+ Initialize this quotient of a module with basis by a submodule.
89
+
90
+ TESTS::
91
+
92
+ sage: from sage.modules.with_basis.subquotient import QuotientModuleWithBasis
93
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
94
+ sage: I = X.submodule( (x[0]-x[1], x[1]-x[2]) )
95
+ sage: Y = QuotientModuleWithBasis(I)
96
+ sage: Y.print_options(prefix='y')
97
+ sage: Y
98
+ Free module generated by {2} over Rational Field
99
+ sage: Y.category()
100
+ Join of Category of finite dimensional vector spaces with basis over Rational Field and Category of quotients of sets
101
+ sage: Y.basis().list()
102
+ [y[2]]
103
+ sage: TestSuite(Y).run()
104
+ """
105
+ self._submodule = submodule
106
+ self._ambient = submodule.ambient()
107
+ embedding = submodule.lift
108
+ indices = embedding.cokernel_basis_indices()
109
+ CombinatorialFreeModule.__init__(self,
110
+ submodule.base_ring(), indices,
111
+ category=category, *args, **opts)
112
+
113
+ def ambient(self):
114
+ r"""
115
+ Return the ambient space of ``self``.
116
+
117
+ EXAMPLES::
118
+
119
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
120
+ sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2]))
121
+ sage: Y.ambient() is X
122
+ True
123
+ """
124
+ return self._ambient
125
+
126
+ def lift(self, x):
127
+ r"""
128
+ Lift ``x`` to the ambient space of ``self``.
129
+
130
+ INPUT:
131
+
132
+ - ``x`` -- an element of ``self``
133
+
134
+ EXAMPLES::
135
+
136
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
137
+ sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2])); y = Y.basis()
138
+ sage: Y.lift(y[2])
139
+ x[2]
140
+ """
141
+ assert x in self
142
+ return self._ambient._from_dict(x._monomial_coefficients)
143
+
144
+ def retract(self, x):
145
+ r"""
146
+ Retract an element of the ambient space by projecting it back to ``self``.
147
+
148
+ INPUT:
149
+
150
+ - ``x`` -- an element of the ambient space of ``self``
151
+
152
+ EXAMPLES::
153
+
154
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
155
+ sage: Y = X.quotient_module((x[0]-x[1], x[1]-x[2])); y = Y.basis()
156
+ sage: Y.print_options(prefix='y')
157
+ sage: Y.retract(x[0])
158
+ y[2]
159
+ sage: Y.retract(x[1])
160
+ y[2]
161
+ sage: Y.retract(x[2])
162
+ y[2]
163
+ """
164
+ return self._from_dict(self._submodule.reduce(x)._monomial_coefficients)
165
+
166
+
167
+ class SubmoduleWithBasis(CombinatorialFreeModule):
168
+ r"""
169
+ A base class for submodules of a ModuleWithBasis spanned by a
170
+ (possibly infinite) basis in echelon form.
171
+
172
+ INPUT:
173
+
174
+ - ``basis`` -- a family of elements in echelon form in some
175
+ :class:`module with basis <ModulesWithBasis>` `V`, or data that
176
+ can be converted into such a family
177
+
178
+ - ``support_order`` -- an ordering of the support of ``basis``
179
+ expressed in ``ambient`` given as a list
180
+
181
+ - ``unitriangular`` -- if the lift morphism is unitriangular
182
+
183
+ - ``ambient`` -- the ambient space `V`
184
+
185
+ - ``category`` -- a category
186
+
187
+ Further arguments are passed down to
188
+ :class:`CombinatorialFreeModule`.
189
+
190
+ This is meant to be constructed via
191
+ :meth:`Modules.WithBasis.ParentMethods.submodule`.
192
+
193
+ .. SEEALSO::
194
+
195
+ - :meth:`Modules.WithBasis.ParentMethods.submodule`
196
+ - :class:`QuotientModuleWithBasis`
197
+ """
198
+ @staticmethod
199
+ def __classcall_private__(cls, basis, support_order, ambient=None,
200
+ unitriangular=False, category=None, *args, **opts):
201
+ r"""
202
+ Normalize the input.
203
+
204
+ TESTS::
205
+
206
+ sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis
207
+ sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
208
+ sage: Y1 = SubmoduleWithBasis((x[0]-x[1], x[1]-x[2]), [0,1,2], X)
209
+ sage: Y2 = SubmoduleWithBasis([x[0]-x[1], x[1]-x[2]], (0,1,2), X)
210
+ sage: Y1 is Y2
211
+ True
212
+ """
213
+ basis = Family(basis)
214
+ if ambient is None:
215
+ ambient = basis.an_element().parent()
216
+ Mod = ModulesWithBasis(ambient.category().base_ring())
217
+ default_category = Mod.Subobjects()
218
+ # Submodules of filtered modules are always canonically filtered.
219
+ # We add this to the category if it has not been explicitly passed.
220
+ if category is None and ambient.category().is_subcategory(Mod.Filtered()):
221
+ default_category = default_category.Filtered()
222
+ category = default_category.or_subcategory(category, join=True)
223
+ return super().__classcall__(cls, basis, tuple(support_order),
224
+ ambient, unitriangular, category,
225
+ *args, **opts)
226
+
227
+ def __init__(self, basis, support_order, ambient, unitriangular, category,
228
+ *args, **opts):
229
+ r"""
230
+ Initialization.
231
+
232
+ TESTS::
233
+
234
+ sage: from sage.modules.with_basis.subquotient import SubmoduleWithBasis
235
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
236
+ sage: ybas = (x[0]-x[1], x[1]-x[2])
237
+ sage: Y = SubmoduleWithBasis(ybas, [0, 1, 2], X)
238
+ sage: Y.print_options(prefix='y')
239
+ sage: Y.basis().list()
240
+ [y[0], y[1]]
241
+ sage: [ y.lift() for y in Y.basis() ]
242
+ [x[0] - x[1], x[1] - x[2]]
243
+ sage: TestSuite(Y).run()
244
+ """
245
+ ring = ambient.base_ring()
246
+ CombinatorialFreeModule.__init__(self, ring, basis.keys(),
247
+ category=category.Subobjects(),
248
+ *args, **opts)
249
+ self._ambient = ambient
250
+ self._basis = basis
251
+ self._unitriangular = unitriangular
252
+ self._support_order = support_order
253
+ self.lift_on_basis = self._basis.__getitem__
254
+ self.lift.register_as_coercion()
255
+
256
+ def ambient(self):
257
+ """
258
+ Return the ambient space of ``self``.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: X = CombinatorialFreeModule(QQ, range(3)); x = X.basis()
263
+ sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]))
264
+ sage: Y.ambient() is X
265
+ True
266
+ """
267
+ return self._ambient
268
+
269
+ @cached_method
270
+ def _support_key(self, x):
271
+ """
272
+ Return a key corresponding to the index ``x`` for ordering the
273
+ basis of ``self``.
274
+
275
+ EXAMPLES::
276
+
277
+ sage: # needs sage.libs.flint
278
+ sage: A = GradedModulesWithBasis(ZZ).example()
279
+ sage: M = A.submodule(list(A.basis(3)), already_echelonized=True)
280
+ sage: [M._support_key(x) for x in M._support_order]
281
+ [0, 1, 2]
282
+ """
283
+ return self._support_order.index(x)
284
+
285
+ @lazy_attribute
286
+ def lift(self):
287
+ r"""
288
+ The lift (embedding) map from ``self`` to the ambient space.
289
+
290
+ EXAMPLES::
291
+
292
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
293
+ sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True); y = Y.basis()
294
+ sage: Y.lift
295
+ Generic morphism:
296
+ From: Free module generated by {0, 1} over Rational Field
297
+ To: Free module generated by {0, 1, 2} over Rational Field
298
+ sage: [ Y.lift(u) for u in y ]
299
+ [x[0] - x[1], x[1] - x[2]]
300
+ sage: (y[0] + y[1]).lift()
301
+ x[0] - x[2]
302
+ """
303
+ return self.module_morphism(self.lift_on_basis,
304
+ codomain=self._ambient,
305
+ triangular='lower',
306
+ unitriangular=self._unitriangular,
307
+ key=self._support_key,
308
+ inverse_on_support='compute')
309
+
310
+ @lazy_attribute
311
+ def reduce(self):
312
+ r"""
313
+ The reduce map.
314
+
315
+ This map reduces elements of the ambient space modulo this
316
+ submodule.
317
+
318
+ EXAMPLES::
319
+
320
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
321
+ sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True)
322
+ sage: Y.reduce
323
+ Generic endomorphism of Free module generated by {0, 1, 2} over Rational Field
324
+ sage: Y.reduce(x[1])
325
+ x[2]
326
+ sage: Y.reduce(2*x[0] + x[1])
327
+ 3*x[2]
328
+
329
+ TESTS::
330
+
331
+ sage: all( Y.reduce(u.lift()) == 0 for u in Y.basis() )
332
+ True
333
+ """
334
+ return self.lift.cokernel_projection()
335
+
336
+ @lazy_attribute
337
+ def retract(self):
338
+ r"""
339
+ The retract map from the ambient space.
340
+
341
+ EXAMPLES::
342
+
343
+ sage: X = CombinatorialFreeModule(QQ, range(3), prefix='x'); x = X.basis()
344
+ sage: Y = X.submodule((x[0]-x[1], x[1]-x[2]), already_echelonized=True)
345
+ sage: Y.print_options(prefix='y')
346
+ sage: Y.retract
347
+ Generic morphism:
348
+ From: Free module generated by {0, 1, 2} over Rational Field
349
+ To: Free module generated by {0, 1} over Rational Field
350
+ sage: Y.retract(x[0] - x[2])
351
+ y[0] + y[1]
352
+
353
+ TESTS::
354
+
355
+ sage: all( Y.retract(u.lift()) == u for u in Y.basis() )
356
+ True
357
+ """
358
+ return self.lift.section()
359
+
360
+ def is_submodule(self, other) -> bool:
361
+ r"""
362
+ Return whether ``self`` is a submodule of ``other``.
363
+
364
+ INPUT:
365
+
366
+ - ``other`` -- another submodule of the same ambient module
367
+ or the ambient module itself
368
+
369
+ EXAMPLES::
370
+
371
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
372
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
373
+ sage: G = X.submodule([x[0]-x[2]])
374
+ sage: H = X.submodule([x[0]-x[1], x[2]])
375
+ sage: F.is_submodule(X)
376
+ True
377
+ sage: G.is_submodule(F)
378
+ True
379
+ sage: H.is_submodule(F)
380
+ False
381
+ sage: H.is_submodule(G)
382
+ False
383
+
384
+ Infinite dimensional examples::
385
+
386
+ sage: X = CombinatorialFreeModule(QQ, ZZ); x = X.basis()
387
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
388
+ sage: G = X.submodule([x[0]-x[2]])
389
+ sage: H = X.submodule([x[0]-x[1]])
390
+ sage: F.is_submodule(X)
391
+ True
392
+ sage: G.is_submodule(F)
393
+ True
394
+ sage: H.is_submodule(F)
395
+ True
396
+ sage: H.is_submodule(G)
397
+ False
398
+
399
+ Different ambient spaces::
400
+
401
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
402
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
403
+ sage: Y = CombinatorialFreeModule(QQ, range(6)); y = Y.basis()
404
+ sage: G = Y.submodule([y[0]-y[1], y[1]-y[2], y[2]-y[3]])
405
+ sage: F.is_submodule(G)
406
+ False
407
+ """
408
+ if other is self._ambient:
409
+ return True
410
+ if not (isinstance(self, SubmoduleWithBasis) and self.ambient() is other.ambient()):
411
+ return False # different ambient spaces
412
+ if self not in ModulesWithBasis.FiniteDimensional:
413
+ raise NotImplementedError("only implemented for finite dimensional submodules")
414
+ if self.dimension() > other.dimension(): # quick dimension check
415
+ return False
416
+ if not set(self._support_order) <= set(other._support_order): # quick support check
417
+ return False
418
+ for b in self.basis():
419
+ try:
420
+ other.retract(b.lift())
421
+ except ValueError:
422
+ return False
423
+ return True
424
+
425
+ def _common_submodules(self, other):
426
+ """
427
+ Helper method to return a pair of submodules of the same ambient
428
+ free modules to do the corresponding linear algebra.
429
+
430
+ EXAMPLES::
431
+
432
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
433
+ sage: F = X.submodule([x[0]-x[1], x[1]-3*x[2], x[2]-5*x[3]])
434
+ sage: G = X.submodule([x[0]-x[1], x[1]-2*x[2], x[2]-3*x[3]])
435
+ sage: H = X.submodule([x[0]-x[1], x[1]-2*x[2], x[2]-3*x[3]], support_order=(3,2,1,0))
436
+ sage: F._common_submodules(G)
437
+ (Vector space of degree 4 and dimension 3 over Rational Field
438
+ Basis matrix:
439
+ [ 1 0 0 -15]
440
+ [ 0 1 0 -15]
441
+ [ 0 0 1 -5],
442
+ Vector space of degree 4 and dimension 3 over Rational Field
443
+ Basis matrix:
444
+ [ 1 0 0 -6]
445
+ [ 0 1 0 -6]
446
+ [ 0 0 1 -3])
447
+ sage: H._common_submodules(F)
448
+ (Vector space of degree 4 and dimension 3 over Rational Field
449
+ Basis matrix:
450
+ [ 1 0 0 -1/6]
451
+ [ 0 1 0 -1/2]
452
+ [ 0 0 1 -1],
453
+ Vector space of degree 4 and dimension 3 over Rational Field
454
+ Basis matrix:
455
+ [ 1 0 0 -1/15]
456
+ [ 0 1 0 -1/3]
457
+ [ 0 0 1 -1])
458
+ sage: G._common_submodules(H)
459
+ (Vector space of degree 4 and dimension 3 over Rational Field
460
+ Basis matrix:
461
+ [ 1 0 0 -6]
462
+ [ 0 1 0 -6]
463
+ [ 0 0 1 -3],
464
+ Vector space of degree 4 and dimension 3 over Rational Field
465
+ Basis matrix:
466
+ [ 1 0 0 -6]
467
+ [ 0 1 0 -6]
468
+ [ 0 0 1 -3])
469
+ sage: H._common_submodules(G)
470
+ (Vector space of degree 4 and dimension 3 over Rational Field
471
+ Basis matrix:
472
+ [ 1 0 0 -1/6]
473
+ [ 0 1 0 -1/2]
474
+ [ 0 0 1 -1],
475
+ Vector space of degree 4 and dimension 3 over Rational Field
476
+ Basis matrix:
477
+ [ 1 0 0 -1/6]
478
+ [ 0 1 0 -1/2]
479
+ [ 0 0 1 -1])
480
+ """
481
+ from sage.modules.free_module import FreeModule
482
+ supp_order = self._support_order
483
+ A = FreeModule(self.base_ring(), len(supp_order))
484
+ U = A.submodule([A([vec[supp] for supp in supp_order]) for vec in self._basis], check=False)
485
+ V = A.submodule([A([vec[supp] for supp in supp_order]) for vec in other._basis], check=False)
486
+ return (U, V)
487
+
488
+ def is_equal_subspace(self, other) -> bool:
489
+ r"""
490
+ Return whether ``self`` is an equal submodule to ``other``.
491
+
492
+ .. NOTE::
493
+
494
+ This is the mathematical notion of equality (as sets that are
495
+ isomorphic as vector spaces), which is weaker than the `==`
496
+ which takes into account things like the support order.
497
+
498
+ INPUT:
499
+
500
+ - ``other`` -- another submodule of the same ambient module
501
+ or the ambient module itself
502
+
503
+ EXAMPLES::
504
+
505
+ sage: R.<z> = LaurentPolynomialRing(QQ)
506
+ sage: X = CombinatorialFreeModule(R, range(4)); x = X.basis()
507
+ sage: F = X.submodule([x[0]-x[1], z*x[1]-z*x[2], z^2*x[2]-z^2*x[3]])
508
+ sage: G = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
509
+ sage: H = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]], support_order=(3,2,1,0))
510
+ sage: F.is_equal_subspace(F)
511
+ True
512
+ sage: F == G
513
+ False
514
+ sage: F.is_equal_subspace(G)
515
+ True
516
+ sage: F.is_equal_subspace(H)
517
+ True
518
+ sage: G == H # different support orders
519
+ False
520
+ sage: G.is_equal_subspace(H)
521
+ True
522
+
523
+ ::
524
+
525
+ sage: X = CombinatorialFreeModule(QQ, ZZ); x = X.basis()
526
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[3]])
527
+ sage: G = X.submodule([x[0]-x[1], x[2]])
528
+ sage: H = X.submodule([x[0]+x[1], x[1]+3*x[2]])
529
+ sage: Hp = X.submodule([x[0]+x[1], x[1]+3*x[2]], prefix='Hp')
530
+ sage: F.is_equal_subspace(X)
531
+ False
532
+ sage: F.is_equal_subspace(G)
533
+ False
534
+ sage: G.is_equal_subspace(H)
535
+ False
536
+ sage: H == Hp
537
+ False
538
+ sage: H.is_equal_subspace(Hp)
539
+ True
540
+ """
541
+ if self is other: # trivial case
542
+ return True
543
+ if not isinstance(self, SubmoduleWithBasis) and self.ambient() is other.ambient():
544
+ raise ArithmeticError("other (=%s) should be a submodule of the same ambient space" % other)
545
+ if self.dimension() != other.dimension(): # quick dimension check
546
+ return False
547
+ if self not in ModulesWithBasis.FiniteDimensional:
548
+ raise NotImplementedError("only implemented for finite dimensional submodules")
549
+ if set(self._basis) == set(other._basis):
550
+ return True
551
+ if set(self._support_order) != set(other._support_order): # different supports
552
+ return False
553
+ U, V = self._common_submodules(other)
554
+ return U == V
555
+
556
+ def __add__(self, other):
557
+ r"""
558
+ Return the sum of ``self`` and ``other``.
559
+
560
+ EXAMPLES::
561
+
562
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
563
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
564
+ sage: G = X.submodule([x[0]-x[2]])
565
+ sage: H = X.submodule([x[0]-x[1], x[2]])
566
+ sage: FG = F + G; FG
567
+ Free module generated by {0, 1, 2} over Rational Field
568
+ sage: [FG.lift(b) for b in FG.basis()]
569
+ [B[0] - B[3], B[1] - B[3], B[2] - B[3]]
570
+ sage: FH = F + H; FH
571
+ Free module generated by {0, 1, 2, 3} over Rational Field
572
+ sage: [FH.lift(b) for b in FH.basis()]
573
+ [B[0], B[1], B[2], B[3]]
574
+ sage: GH = G + H; GH
575
+ Free module generated by {0, 1, 2} over Rational Field
576
+ sage: [GH.lift(b) for b in GH.basis()]
577
+ [B[0], B[1], B[2]]
578
+
579
+ TESTS::
580
+
581
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
582
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
583
+ sage: Y = CombinatorialFreeModule(QQ, range(5)); y = Y.basis()
584
+ sage: U = Y.submodule([y[0]-y[2]+y[3]])
585
+ sage: F + U
586
+ Traceback (most recent call last):
587
+ ...
588
+ ArithmeticError: both subspaces must have the same ambient space
589
+ sage: F + 3
590
+ Traceback (most recent call last):
591
+ ...
592
+ TypeError: both objects must be submodules
593
+ """
594
+ if not isinstance(other, SubmoduleWithBasis):
595
+ raise TypeError("both objects must be submodules")
596
+ if other.ambient() != self.ambient():
597
+ raise ArithmeticError("both subspaces must have the same ambient space")
598
+ return self.ambient().submodule(set(list(self._basis) + list(other._basis)), check=False)
599
+
600
+ subspace_sum = __add__
601
+
602
+ def __and__(self, other):
603
+ r"""
604
+ Return the intersection of ``self`` and ``other``.
605
+
606
+ EXAMPLES::
607
+
608
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
609
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
610
+ sage: G = X.submodule([x[0]-x[2]])
611
+ sage: H = X.submodule([x[0]-x[1], x[2]])
612
+ sage: FG = F & G; FG
613
+ Free module generated by {0} over Rational Field
614
+ sage: [FG.lift(b) for b in FG.basis()]
615
+ [B[0] - B[2]]
616
+ sage: FH = F & H; FH
617
+ Free module generated by {0} over Rational Field
618
+ sage: [FH.lift(b) for b in FH.basis()]
619
+ [B[0] - B[1]]
620
+ sage: GH = G & H; GH
621
+ Free module generated by {} over Rational Field
622
+ sage: [GH.lift(b) for b in GH.basis()]
623
+ []
624
+
625
+ sage: F.intersection(X) is F
626
+ True
627
+
628
+ TESTS::
629
+
630
+ sage: X = CombinatorialFreeModule(QQ, range(4)); x = X.basis()
631
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]])
632
+ sage: Y = CombinatorialFreeModule(QQ, range(5)); y = Y.basis()
633
+ sage: U = Y.submodule([y[0]-y[2]+y[3]])
634
+ sage: F & U
635
+ Traceback (most recent call last):
636
+ ...
637
+ ArithmeticError: both subspaces must have the same ambient space
638
+ sage: F & 3
639
+ Traceback (most recent call last):
640
+ ...
641
+ TypeError: both objects must be submodules
642
+ """
643
+ if other is self._ambient:
644
+ return self
645
+ if not isinstance(other, SubmoduleWithBasis):
646
+ raise TypeError("both objects must be submodules")
647
+ if other.ambient() != self.ambient():
648
+ raise ArithmeticError("both subspaces must have the same ambient space")
649
+ U, V = self._common_submodules(other)
650
+ UV = U & V # the intersection
651
+ A = self._ambient
652
+ supp = self._support_order
653
+ return A.submodule([A.element_class(A, {supp[i]: c for i, c in vec.iteritems()})
654
+ for vec in UV.basis()])
655
+
656
+ intersection = __and__
657
+ __rand__ = __and__
658
+
659
+ def subspace(self, gens, *args, **opts):
660
+ r"""
661
+ The submodule of the ambient space spanned by a finite set
662
+ of generators ``gens`` (as a submodule).
663
+
664
+ INPUT:
665
+
666
+ - ``gens`` -- list or family of elements of ``self``
667
+
668
+ For additional optional arguments, see
669
+ :meth:`ModulesWithBasis.ParentMethods.submodule`.
670
+
671
+ EXAMPLES::
672
+
673
+ sage: X = CombinatorialFreeModule(QQ, range(4), prefix='X'); x = X.basis()
674
+ sage: F = X.submodule([x[0]-x[1], x[1]-x[2], x[2]-x[3]], prefix='F'); f = F.basis()
675
+ sage: U = F.submodule([f[0] + 2*f[1] - 5*f[2], f[1] + 2*f[2]]); U
676
+ Free module generated by {0, 1} over Rational Field
677
+ sage: [U.lift(u) for u in U.basis()]
678
+ [F[0] - 9*F[2], F[1] + 2*F[2]]
679
+ sage: V = F.subspace([f[0] + 2*f[1] - 5*f[2], f[1] + 2*f[2]]); V
680
+ Free module generated by {0, 1} over Rational Field
681
+ sage: [V.lift(u) for u in V.basis()]
682
+ [X[0] - 9*X[2] + 8*X[3], X[1] + 2*X[2] - 3*X[3]]
683
+ """
684
+ gens = [self._ambient(g) for g in gens]
685
+ return self._ambient.submodule(gens, *args, **opts)
@@ -0,0 +1,6 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.misc.lazy_import import lazy_import
3
+ lazy_import("sage.numerical.optimize",
4
+ ["find_fit", "find_local_maximum", "find_local_minimum",
5
+ "find_root", "minimize", "minimize_constrained"])
6
+ del lazy_import