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,719 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Multiple `\ZZ`-graded filtrations of a single vector space
4
+
5
+ See :mod:`filtered_vector_space` for simply graded vector spaces. This
6
+ module implements the analog but for a collection of filtrations of
7
+ the same vector space.
8
+
9
+ The basic syntax to use it is a dictionary whose keys are some
10
+ arbitrary indexing set and values are
11
+ :func:`~sage.modules.filtered_vector_space.FilteredVectorSpace` ::
12
+
13
+ sage: F1 = FilteredVectorSpace(2, 1)
14
+ sage: F2 = FilteredVectorSpace({0:[(1,0)], 2:[(2,3)]})
15
+ sage: V = MultiFilteredVectorSpace({'first':F1, 'second':F2})
16
+ sage: V
17
+ Filtrations
18
+ first: QQ^2 >= QQ^2 >= 0 >= 0
19
+ second: QQ^2 >= QQ^1 >= QQ^1 >= 0
20
+
21
+ sage: V.index_set() # random output
22
+ {'second', 'first'}
23
+ sage: sorted(V.index_set())
24
+ ['first', 'second']
25
+
26
+ sage: V.get_filtration('first')
27
+ QQ^2 >= 0
28
+ sage: V.get_degree('second', 1)
29
+ Vector space of degree 2 and dimension 1 over Rational Field
30
+ Basis matrix:
31
+ [ 1 3/2]
32
+ """
33
+
34
+ # ****************************************************************************
35
+ # Copyright (C) 2013 Volker Braun <vbraun.name@gmail.com>
36
+ #
37
+ # Distributed under the terms of the GNU General Public License (GPL)
38
+ # as published by the Free Software Foundation; either version 2 of
39
+ # the License, or (at your option) any later version.
40
+ # https://www.gnu.org/licenses/
41
+ # ****************************************************************************
42
+
43
+ from sage.rings.rational_field import QQ
44
+ from sage.rings.integer_ring import ZZ
45
+ from sage.rings.integer import Integer
46
+ from sage.rings.infinity import infinity, minus_infinity
47
+ from sage.categories.fields import Fields
48
+ from sage.modules.free_module import FreeModule_ambient_field, VectorSpace
49
+ from sage.misc.cachefunc import cached_method
50
+ from sage.modules.filtered_vector_space import FilteredVectorSpace
51
+
52
+
53
+ def MultiFilteredVectorSpace(arg, base_ring=None, check=True):
54
+ """
55
+ Construct a multi-filtered vector space.
56
+
57
+ INPUT:
58
+
59
+ - ``arg`` -- either a non-empty dictionary of filtrations or an
60
+ integer. The latter is interpreted as the vector space
61
+ dimension, and the indexing set of the filtrations is empty.
62
+
63
+ - ``base_ring`` -- a field (default: ``'None'``). The
64
+ base field of the vector space. Must be a field. If not
65
+ specified, the base field is derived from the filtrations.
66
+
67
+ - ``check`` -- boolean (default: ``True``); whether
68
+ to perform consistency checks
69
+
70
+ EXAMPLES::
71
+
72
+ sage: MultiFilteredVectorSpace(3, QQ)
73
+ Unfiltered QQ^3
74
+
75
+ sage: F1 = FilteredVectorSpace(2, 1)
76
+ sage: F2 = FilteredVectorSpace(2, 3)
77
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2}); V
78
+ Filtrations
79
+ 1: QQ^2 >= 0 >= 0 >= 0
80
+ 2: QQ^2 >= QQ^2 >= QQ^2 >= 0
81
+ """
82
+ if arg in ZZ:
83
+ dim = ZZ(arg)
84
+ filtration = {}
85
+ if base_ring is None:
86
+ base_ring = QQ
87
+ else:
88
+ filtration = dict(arg)
89
+ F = next(iter(arg.values())) # the first filtration
90
+ dim = F.dimension()
91
+ if base_ring is None:
92
+ base_ring = F.base_ring()
93
+ for deg in filtration:
94
+ filt = filtration[deg]
95
+ if filt.base_ring() != base_ring:
96
+ filt = filt.change_ring(base_ring)
97
+ filtration[deg] = filt
98
+ return MultiFilteredVectorSpace_class(base_ring, dim, filtration)
99
+
100
+
101
+ class MultiFilteredVectorSpace_class(FreeModule_ambient_field):
102
+
103
+ def __init__(self, base_ring, dim, filtrations, check=True):
104
+ """
105
+ Python constructor.
106
+
107
+ .. warning::
108
+
109
+ Use :func:`MultiFilteredVectorSpace` to construct
110
+ multi-filtered vector spaces.
111
+
112
+ INPUT:
113
+
114
+ - ``base_ring`` -- the base ring
115
+
116
+ - ``dim`` -- integer; the dimension of the ambient vector space
117
+
118
+ - ``filtrations`` -- dictionary whose values are filtrations
119
+
120
+ - ``check`` -- boolean (default: ``True``); whether to perform
121
+ additional consistency checks
122
+
123
+ EXAMPLES::
124
+
125
+ sage: F1 = FilteredVectorSpace(2, 1)
126
+ sage: F2 = FilteredVectorSpace(2, 3)
127
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2}); V
128
+ Filtrations
129
+ 1: QQ^2 >= 0 >= 0 >= 0
130
+ 2: QQ^2 >= QQ^2 >= QQ^2 >= 0
131
+ """
132
+ if check:
133
+ assert isinstance(dim, Integer)
134
+ assert base_ring in Fields()
135
+ assert all(base_ring == f.base_ring() for f in filtrations.values())
136
+ assert all(dim == f.dimension() for f in filtrations.values())
137
+ super().__init__(base_ring, dim)
138
+ self._filt = dict(filtrations)
139
+
140
+ @cached_method
141
+ def index_set(self):
142
+ """
143
+ Return the allowed indices for the different filtrations.
144
+
145
+ OUTPUT: set
146
+
147
+ EXAMPLES::
148
+
149
+ sage: F1 = FilteredVectorSpace(2, 1)
150
+ sage: F2 = FilteredVectorSpace(2, 3)
151
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
152
+ sage: V.index_set()
153
+ {1, 2}
154
+ """
155
+ from sage.sets.set import Set
156
+ return Set(self._filt.keys())
157
+
158
+ def change_ring(self, base_ring):
159
+ """
160
+ Return the same multi-filtration over a different base ring.
161
+
162
+ INPUT:
163
+
164
+ - ``base_ring`` -- the new base ring
165
+
166
+ OUTPUT:
167
+
168
+ This method returns a new multi-filtered vector space whose
169
+ subspaces are defined by the same generators but over a
170
+ different base ring.
171
+
172
+ EXAMPLES::
173
+
174
+ sage: V = FilteredVectorSpace(2, 0)
175
+ sage: W = FilteredVectorSpace(2, 2)
176
+ sage: F = MultiFilteredVectorSpace({'a':V, 'b':W}); F
177
+ Filtrations
178
+ a: QQ^2 >= 0 >= 0 >= 0
179
+ b: QQ^2 >= QQ^2 >= QQ^2 >= 0
180
+ sage: F.change_ring(RDF)
181
+ Filtrations
182
+ a: RDF^2 >= 0 >= 0 >= 0
183
+ b: RDF^2 >= RDF^2 >= RDF^2 >= 0
184
+
185
+ sage: MultiFilteredVectorSpace(3, base_ring=QQ).change_ring(RR)
186
+ Unfiltered RR^3
187
+ """
188
+ if not self._filt:
189
+ return MultiFilteredVectorSpace(self.dimension(),
190
+ base_ring=base_ring)
191
+ filtrations = {}
192
+ for key, F in self._filt.items():
193
+ filtrations[key] = F.change_ring(base_ring)
194
+ return MultiFilteredVectorSpace(filtrations, base_ring=base_ring)
195
+
196
+ def ambient_vector_space(self):
197
+ """
198
+ Return the ambient (unfiltered) vector space.
199
+
200
+ OUTPUT: a vector space
201
+
202
+ EXAMPLES::
203
+
204
+ sage: V = FilteredVectorSpace(2, 0)
205
+ sage: W = FilteredVectorSpace(2, 2)
206
+ sage: F = MultiFilteredVectorSpace({'a':V, 'b':W})
207
+ sage: F.ambient_vector_space()
208
+ Vector space of dimension 2 over Rational Field
209
+ """
210
+ return VectorSpace(self.base_ring(), self.dimension())
211
+
212
+ @cached_method
213
+ def is_constant(self) -> bool:
214
+ """
215
+ Return whether the multi-filtration is constant.
216
+
217
+ OUTPUT: boolean; whether the each filtration is constant, see
218
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.is_constant`
219
+
220
+ EXAMPLES::
221
+
222
+ sage: V = FilteredVectorSpace(2, 0)
223
+ sage: W = FilteredVectorSpace(2, 2)
224
+ sage: F = MultiFilteredVectorSpace({'a':V, 'b':W}); F
225
+ Filtrations
226
+ a: QQ^2 >= 0 >= 0 >= 0
227
+ b: QQ^2 >= QQ^2 >= QQ^2 >= 0
228
+ sage: F.is_constant()
229
+ False
230
+ """
231
+ return all(F.is_constant() for F in self._filt.values())
232
+
233
+ def is_exhaustive(self) -> bool:
234
+ r"""
235
+ Return whether the multi-filtration is exhaustive.
236
+
237
+ A filtration `\{F_d\}` in an ambient vector space `V` is
238
+ exhaustive if `\cup F_d = V`. See also :meth:`is_separating`.
239
+
240
+ OUTPUT: boolean; whether each filtration is constant, see
241
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.is_exhaustive`
242
+
243
+ EXAMPLES::
244
+
245
+ sage: F1 = FilteredVectorSpace(2, 1)
246
+ sage: F2 = FilteredVectorSpace(2, 3)
247
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
248
+ sage: V.is_exhaustive()
249
+ True
250
+ """
251
+ return all(F.is_exhaustive() for F in self._filt.values())
252
+
253
+ def is_separating(self) -> bool:
254
+ r"""
255
+ Return whether the multi-filtration is separating.
256
+
257
+ A filtration `\{F_d\}` in an ambient vector space `V` is
258
+ exhaustive if `\cap F_d = 0`. See also :meth:`is_exhaustive`.
259
+
260
+ OUTPUT: boolean; whether each filtration is separating, see
261
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.is_separating`
262
+
263
+ EXAMPLES::
264
+
265
+ sage: F1 = FilteredVectorSpace(2, 1)
266
+ sage: F2 = FilteredVectorSpace(2, 3)
267
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
268
+ sage: V.is_separating()
269
+ True
270
+ """
271
+ return all(F.is_separating() for F in self._filt.values())
272
+
273
+ @cached_method
274
+ def support(self):
275
+ """
276
+ Return the degrees in which there are non-trivial generators.
277
+
278
+ OUTPUT:
279
+
280
+ A tuple of integers (and plus infinity) in ascending
281
+ order. The last entry is plus infinity if and only if the
282
+ filtration is not separating (see :meth:`is_separating`).
283
+
284
+ EXAMPLES::
285
+
286
+ sage: F1 = FilteredVectorSpace(2, 1)
287
+ sage: F2 = FilteredVectorSpace(2, 3)
288
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
289
+ sage: V.support()
290
+ (1, 3)
291
+ """
292
+ support = set()
293
+ for F in self._filt.values():
294
+ support.update(F.support())
295
+ return tuple(sorted(support))
296
+
297
+ @cached_method
298
+ def min_degree(self):
299
+ r"""
300
+ Return the lowest degree of the filtration.
301
+
302
+ OUTPUT:
303
+
304
+ Integer or plus infinity. The largest degree `d` of the
305
+ (descending) filtrations such that, for each individual
306
+ filtration, the filtered vector space `F_d` still equal to
307
+ `F_{-\infty}`.
308
+
309
+ EXAMPLES::
310
+
311
+ sage: F1 = FilteredVectorSpace(2, 1)
312
+ sage: F2 = FilteredVectorSpace(2, 3)
313
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
314
+ sage: V.min_degree()
315
+ 1
316
+ """
317
+ if not self._filt:
318
+ return infinity
319
+ return min(F.min_degree() for F in self._filt.values())
320
+
321
+ @cached_method
322
+ def max_degree(self):
323
+ r"""
324
+ Return the highest degree of the filtration.
325
+
326
+ OUTPUT:
327
+
328
+ Integer or minus infinity. The smallest degree of the
329
+ filtrations such that the filtrations are constant to the
330
+ right.
331
+
332
+ EXAMPLES::
333
+
334
+ sage: F1 = FilteredVectorSpace(2, 1)
335
+ sage: F2 = FilteredVectorSpace(2, 3)
336
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
337
+ sage: V.max_degree()
338
+ 4
339
+ """
340
+ if not self._filt:
341
+ return minus_infinity
342
+ return max(F.max_degree() for F in self._filt.values())
343
+
344
+ def get_filtration(self, key):
345
+ """
346
+ Return the filtration indexed by ``key``.
347
+
348
+ OUTPUT: a filtered vector space
349
+
350
+ EXAMPLES::
351
+
352
+ sage: F1 = FilteredVectorSpace(2, 1)
353
+ sage: F2 = FilteredVectorSpace(2, 3)
354
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
355
+ sage: V.get_filtration(2)
356
+ QQ^2 >= 0
357
+ """
358
+ return self._filt[key]
359
+
360
+ def get_degree(self, key, deg):
361
+ r"""
362
+ Return one filtered vector space.
363
+
364
+ INPUT:
365
+
366
+ - ``key`` -- an element of the :meth:`index_set`; specifies
367
+ which filtration
368
+
369
+ - ``d`` -- integer; the desired degree of the filtration
370
+
371
+ OUTPUT:
372
+
373
+ The vector space of degree ``deg`` in the filtration indexed
374
+ by ``key`` as subspace of the ambient space.
375
+
376
+ EXAMPLES::
377
+
378
+ sage: F1 = FilteredVectorSpace(2, 1)
379
+ sage: F2 = FilteredVectorSpace(2, 3)
380
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
381
+ sage: V.get_degree(2, 0)
382
+ Vector space of degree 2 and dimension 2 over Rational Field
383
+ Basis matrix:
384
+ [1 0]
385
+ [0 1]
386
+ """
387
+ return self._filt[key].get_degree(deg)
388
+
389
+ def graded(self, key, deg):
390
+ r"""
391
+ Return the associated graded vector space.
392
+
393
+ INPUT:
394
+
395
+ - ``key`` -- an element of the :meth:`index_set`; specifies
396
+ which filtration
397
+
398
+ - ``d`` -- integer; the desired degree of the filtration
399
+
400
+ OUTPUT:
401
+
402
+ The quotient `G_d = F_d / F_{d+1}` of the filtration `F`
403
+ corresponding to ``key``.
404
+
405
+ EXAMPLES::
406
+
407
+ sage: F1 = FilteredVectorSpace(2, 1)
408
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
409
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
410
+ sage: V.graded(2, 3)
411
+ Vector space quotient V/W of dimension 1 over Rational Field where
412
+ V: Vector space of degree 2 and dimension 1 over Rational Field
413
+ Basis matrix:
414
+ [1 0]
415
+ W: Vector space of degree 2 and dimension 0 over Rational Field
416
+ Basis matrix:
417
+ []
418
+ """
419
+ return self.get_degree(key, deg).quotient(self.get_degree(key, deg + 1))
420
+
421
+ def _repr_(self):
422
+ r"""
423
+ Return as string representation of ``self``.
424
+
425
+ OUTPUT: string
426
+
427
+ EXAMPLES::
428
+
429
+ sage: rays = [(1,0), (1,1), (1,2), (-1,-1)]
430
+ sage: F1 = FilteredVectorSpace(rays, {0:[1, 2], 2:[3]})
431
+ sage: F2 = FilteredVectorSpace(rays, {0:[1, 2], oo:[3]})
432
+ sage: F3 = FilteredVectorSpace(rays, {oo:[3]})
433
+ sage: F4 = FilteredVectorSpace(rays, {0:[3]})
434
+ sage: MultiFilteredVectorSpace({'a':F1, 'b':F2, 'c': F3, 'd': F4})
435
+ Filtrations
436
+ a: QQ^2 >= QQ^1 >= QQ^1 >= 0
437
+ b: QQ^2 >= QQ^1 >= QQ^1 >= QQ^1
438
+ c: QQ^1 >= QQ^1 >= QQ^1 >= QQ^1
439
+ d: QQ^1 >= 0 >= 0 >= 0
440
+
441
+ sage: MultiFilteredVectorSpace(123, base_ring=RR)
442
+ Unfiltered RR^123
443
+ """
444
+ if not self._filt:
445
+ F = FilteredVectorSpace(self.dimension(),
446
+ base_ring=self.base_ring())
447
+ return 'Unfiltered ' + repr(F)
448
+ rows = []
449
+ min_deg, max_deg = self.min_degree(), self.max_degree()
450
+ for key in sorted(self.index_set()):
451
+ F = self.get_filtration(key)
452
+ r = [str(key)] + F._repr_degrees(min_deg, max_deg - 1)
453
+ rows.append(r)
454
+ from sage.misc.table import table
455
+ t = table(rows)
456
+ w = t._widths()
457
+ lines = ['Filtrations']
458
+ for r in rows:
459
+ s = ' '
460
+ s += r[0].rjust(w[0]) + ': '
461
+ s += ' >= '.join(r[i].center(w[i]) for i in range(1, len(w)))
462
+ lines.append(s)
463
+ return '\n'.join(lines)
464
+
465
+ def __eq__(self, other):
466
+ """
467
+ Return whether ``self`` is equal to ``other``.
468
+
469
+ EXAMPLES::
470
+
471
+ sage: F1 = FilteredVectorSpace(2, 1)
472
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
473
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
474
+ sage: V == MultiFilteredVectorSpace({2:F2, 1:F1})
475
+ True
476
+ sage: V == MultiFilteredVectorSpace({'a':F1, 'b':F2})
477
+ False
478
+ """
479
+ if type(self) is not type(other):
480
+ return False
481
+ return self._filt == other._filt
482
+
483
+ def __ne__(self, other):
484
+ """
485
+ Return whether ``self`` is not equal to ``other``.
486
+
487
+ EXAMPLES::
488
+
489
+ sage: F1 = FilteredVectorSpace(2, 1)
490
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
491
+ sage: V = MultiFilteredVectorSpace({1:F1, 2:F2})
492
+ sage: V != MultiFilteredVectorSpace({2:F2, 1:F1})
493
+ False
494
+ sage: V != MultiFilteredVectorSpace({'a':F1, 'b':F2})
495
+ True
496
+ """
497
+ return not (self == other)
498
+
499
+ def direct_sum(self, other):
500
+ """
501
+ Return the direct sum.
502
+
503
+ INPUT:
504
+
505
+ - ``other`` -- a multi-filtered vector space with the same
506
+ :meth:`index_set`
507
+
508
+ OUTPUT:
509
+
510
+ The direct sum as a multi-filtered vector space. See
511
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.direct_sum`.
512
+
513
+ EXAMPLES::
514
+
515
+ sage: F1 = FilteredVectorSpace(2, 1)
516
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
517
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
518
+ sage: G1 = FilteredVectorSpace(1, 1)
519
+ sage: G2 = FilteredVectorSpace(1, 3)
520
+ sage: W = MultiFilteredVectorSpace({'a':G1, 'b':G2})
521
+ sage: V.direct_sum(W)
522
+ Filtrations
523
+ a: QQ^3 >= QQ^3 >= 0 >= 0 >= 0
524
+ b: QQ^3 >= QQ^2 >= QQ^2 >= QQ^2 >= 0
525
+ sage: V + W # syntactic sugar
526
+ Filtrations
527
+ a: QQ^3 >= QQ^3 >= 0 >= 0 >= 0
528
+ b: QQ^3 >= QQ^2 >= QQ^2 >= QQ^2 >= 0
529
+ """
530
+ if not self.index_set() == other.index_set():
531
+ raise ValueError('the index sets of the two summands'
532
+ ' must be the same')
533
+ filtrations = {}
534
+ for key in self.index_set():
535
+ filtrations[key] = self._filt[key] + other._filt[key]
536
+ return MultiFilteredVectorSpace(filtrations)
537
+
538
+ __add__ = direct_sum
539
+
540
+ def tensor_product(self, other):
541
+ r"""
542
+ Return the graded tensor product.
543
+
544
+ INPUT:
545
+
546
+ - ``other`` -- a multi-filtered vector space with the same
547
+ :meth:`index_set`
548
+
549
+ OUTPUT:
550
+
551
+ The tensor product of ``self`` and ``other`` as a
552
+ multi-filtered vector space. See
553
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.tensor_product`.
554
+
555
+ EXAMPLES::
556
+
557
+ sage: F1 = FilteredVectorSpace(2, 1)
558
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
559
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
560
+ sage: G1 = FilteredVectorSpace(1, 1)
561
+ sage: G2 = FilteredVectorSpace(1, 3)
562
+ sage: W = MultiFilteredVectorSpace({'a':G1, 'b':G2})
563
+ sage: V.tensor_product(W)
564
+ Filtrations
565
+ a: QQ^2 >= 0 >= 0 >= 0 >= 0 >= 0
566
+ b: QQ^2 >= QQ^2 >= QQ^1 >= QQ^1 >= QQ^1 >= 0
567
+ sage: V * W # syntactic sugar
568
+ Filtrations
569
+ a: QQ^2 >= 0 >= 0 >= 0 >= 0 >= 0
570
+ b: QQ^2 >= QQ^2 >= QQ^1 >= QQ^1 >= QQ^1 >= 0
571
+ """
572
+ if not self.index_set() == other.index_set():
573
+ raise ValueError('the index sets of the two summands'
574
+ ' must be the same')
575
+ filtrations = {}
576
+ for key in self.index_set():
577
+ filtrations[key] = self._filt[key] * other._filt[key]
578
+ return MultiFilteredVectorSpace(filtrations)
579
+
580
+ __mul__ = tensor_product
581
+
582
+ def exterior_power(self, n):
583
+ """
584
+ Return the `n`-th graded exterior power.
585
+
586
+ INPUT:
587
+
588
+ - ``n`` -- integer; exterior product of how many copies of ``self``
589
+
590
+ OUTPUT:
591
+
592
+ The exterior power as a multi-filtered vector space. See
593
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.exterior_power`.
594
+
595
+ EXAMPLES::
596
+
597
+ sage: F1 = FilteredVectorSpace(2, 1)
598
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
599
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
600
+ sage: V.exterior_power(2) # long time
601
+ Filtrations
602
+ a: QQ^1 >= 0 >= 0
603
+ b: QQ^1 >= QQ^1 >= 0
604
+ """
605
+ filtrations = {key: value.exterior_power(n)
606
+ for key, value in self._filt.items()}
607
+ return MultiFilteredVectorSpace(filtrations)
608
+
609
+ wedge = exterior_power
610
+
611
+ def symmetric_power(self, n):
612
+ """
613
+ Return the `n`-th graded symmetric power.
614
+
615
+ INPUT:
616
+
617
+ - ``n`` -- integer; symmetric product of how many copies of ``self``
618
+
619
+ OUTPUT:
620
+
621
+ The symmetric power as a multi-filtered vector space. See
622
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.symmetric_power`.
623
+
624
+ EXAMPLES::
625
+
626
+ sage: F1 = FilteredVectorSpace(2, 1)
627
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
628
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
629
+ sage: V.symmetric_power(2)
630
+ Filtrations
631
+ a: QQ^3 >= QQ^3 >= QQ^3 >= 0 >= 0 >= 0 >= 0 >= 0
632
+ b: QQ^3 >= QQ^2 >= QQ^2 >= QQ^2 >= QQ^1 >= QQ^1 >= QQ^1 >= 0
633
+ """
634
+ filtrations = {key: value.symmetric_power(n)
635
+ for key, value in self._filt.items()}
636
+ return MultiFilteredVectorSpace(filtrations)
637
+
638
+ def dual(self):
639
+ """
640
+ Return the dual.
641
+
642
+ OUTPUT:
643
+
644
+ The dual as a multi-filtered vector space. See
645
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.dual`.
646
+
647
+ EXAMPLES::
648
+
649
+ sage: F1 = FilteredVectorSpace(2, 1)
650
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
651
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
652
+ sage: V.dual()
653
+ Filtrations
654
+ a: QQ^2 >= QQ^2 >= QQ^2 >= 0 >= 0
655
+ b: QQ^2 >= QQ^1 >= QQ^1 >= QQ^1 >= 0
656
+ """
657
+ filtrations = {key: value.dual()
658
+ for key, value in self._filt.items()}
659
+ return MultiFilteredVectorSpace(filtrations)
660
+
661
+ def shift(self, deg):
662
+ """
663
+ Return a filtered vector space with degrees shifted by a constant.
664
+
665
+ OUTPUT:
666
+
667
+ The shift of ``self``. See
668
+ :meth:`~sage.modules.filtered_vector_space.FilteredVectorSpace_class.shift`.
669
+
670
+ EXAMPLES::
671
+
672
+ sage: F1 = FilteredVectorSpace(2, 1)
673
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
674
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
675
+ sage: V.support()
676
+ (0, 1, 3)
677
+ sage: V.shift(-5).support()
678
+ (-5, -4, -2)
679
+ """
680
+ filtrations = {key: value.shift(deg)
681
+ for key, value in self._filt.items()}
682
+ return MultiFilteredVectorSpace(filtrations)
683
+
684
+ def random_deformation(self, epsilon=None):
685
+ """
686
+ Return a random deformation.
687
+
688
+ INPUT:
689
+
690
+ - ``epsilon`` -- a number in the base ring
691
+
692
+ OUTPUT:
693
+
694
+ A new multi-filtered vector space where the generating vectors
695
+ of subspaces are moved by ``epsilon`` times a random vector.
696
+
697
+ EXAMPLES::
698
+
699
+ sage: F1 = FilteredVectorSpace(2, 1)
700
+ sage: F2 = FilteredVectorSpace(1, 3) + FilteredVectorSpace(1,0)
701
+ sage: V = MultiFilteredVectorSpace({'a':F1, 'b':F2})
702
+ sage: V.get_degree('b',1)
703
+ Vector space of degree 2 and dimension 1 over Rational Field
704
+ Basis matrix:
705
+ [1 0]
706
+ sage: D = V.random_deformation(1/100).get_degree('b',1)
707
+ sage: D.degree()
708
+ 2
709
+ sage: D.dimension()
710
+ 1
711
+ sage: D.matrix()[0, 0]
712
+ 1
713
+
714
+ sage: while V.random_deformation(1/100).get_degree('b',1).matrix() == matrix([1, 0]):
715
+ ....: pass
716
+ """
717
+ filtrations = {key: value.random_deformation(epsilon)
718
+ for key, value in self._filt.items()}
719
+ return MultiFilteredVectorSpace(filtrations)