passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.whl

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

Potentially problematic release.


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

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,600 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs sage.numerical.mip
3
+ r"""
4
+ Gammoids
5
+
6
+ Let `D` be a directed graph and let `E` and `T` be not necessarily disjoint
7
+ sets of vertices of `D`. Say a subset `X` of `E` is in a collection `I` if
8
+ `X` can be linked into a subset of `T`. This defines a gammoid `(E, I)`,
9
+ where `E` is the groundset of a matroid and `I` is its independent sets.
10
+
11
+ Some authors use a reverse convention, where instead of a set `T` of roots,
12
+ they have a starting set `S` that is linked into subsets of `E`. Here we use
13
+ the convention that the vertices `T` are at the end of the directed paths,
14
+ not the beginning.
15
+
16
+ To construct a gammoid, first import Gammoid from
17
+ :mod:`sage.matroids.gammoid`.
18
+ A digraph and a list of roots from the vertex set are required for input::
19
+
20
+ sage: from sage.matroids.gammoid import *
21
+ sage: edgelist = [(0,1),(1,2),(2,3),(3,4)]
22
+ sage: D = DiGraph(edgelist)
23
+ sage: M = Gammoid(D, roots=[4]); M
24
+ Gammoid of rank 1 on 5 elements
25
+ sage: N = Gammoid(D, roots=[4], groundset=range(1,5)); N
26
+ Gammoid of rank 1 on 4 elements
27
+ sage: M.delete(0) == N
28
+ True
29
+ sage: N.is_isomorphic(matroids.Uniform(1,4))
30
+ True
31
+ sage: O = Gammoid(D, roots=[3]); O
32
+ Gammoid of rank 1 on 5 elements
33
+ sage: O.rank([0])
34
+ 1
35
+ sage: O.rank([4])
36
+ 0
37
+
38
+ AUTHORS:
39
+
40
+ - Zachary Gershkoff (2017-08-25): initial version
41
+ """
42
+
43
+ # *****************************************************************************
44
+ # Copyright (C) 2017 Zachary Gershkoff <zgersh2@lsu.edu>
45
+ #
46
+ #
47
+ # Distributed under the terms of the GNU General Public License (GPL)
48
+ # as published by the Free Software Foundation; either version 2 of
49
+ # the License, or (at your option) any later version.
50
+ # https://www.gnu.org/licenses/
51
+ # *****************************************************************************
52
+
53
+ from sage.graphs.digraph import DiGraph
54
+ from sage.matroids.matroid import Matroid
55
+ from sage.matroids.minor_matroid import MinorMatroid
56
+
57
+
58
+ class Gammoid(Matroid):
59
+ r"""
60
+ The gammoid class.
61
+
62
+ INPUT:
63
+
64
+ - ``D`` -- a loopless digraph representing the gammoid
65
+ - ``roots`` -- a subset of the vertices
66
+ - ``groundset`` -- (optional) a subset of the vertices
67
+
68
+ OUTPUT: :class:`Gammoid`; if ``groundset`` is not specified,
69
+ the entire vertex set is used (and the gammoid will be strict)
70
+
71
+ EXAMPLES::
72
+
73
+ sage: from sage.matroids.gammoid import Gammoid
74
+ sage: D = digraphs.TransitiveTournament(5)
75
+ sage: M = Gammoid(D, roots=[3, 4]); M
76
+ Gammoid of rank 2 on 5 elements
77
+ sage: M.is_isomorphic(matroids.Uniform(2, 5))
78
+ True
79
+ sage: D.add_vertex(6)
80
+ sage: N = Gammoid(D, roots=[3, 4])
81
+ sage: N.loops()
82
+ frozenset({6})
83
+ sage: O = Gammoid(D, roots=[3, 4, 6])
84
+ sage: O.coloops()
85
+ frozenset({6})
86
+ sage: O.full_rank()
87
+ 3
88
+ sage: P = Gammoid(D, roots=[3, 4], groundset=[0, 2, 3]); P
89
+ Gammoid of rank 2 on 3 elements
90
+ """
91
+
92
+ def __init__(self, D, roots, groundset=None):
93
+ """
94
+ See the class definition for full documentation.
95
+
96
+ EXAMPLES::
97
+
98
+ sage: from sage.matroids.gammoid import Gammoid
99
+ sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
100
+ ....: 6: [4, 7], 7: [5, 8]}
101
+ sage: D = DiGraph(edgedict)
102
+ sage: M = Gammoid(D, roots=[1, 2, 3])
103
+ sage: N1 = Gammoid(D, groundset=range(1, 8), roots=[1, 2, 3])
104
+ sage: N2 = M.delete(8)
105
+ sage: N1 == N2
106
+ True
107
+
108
+ TESTS::
109
+
110
+ sage: from sage.matroids.gammoid import Gammoid
111
+ sage: D = DiGraph([(0, 0), (0, 1), (1, 1)], loops=True)
112
+ sage: M = Gammoid(D, roots=[1])
113
+ Traceback (most recent call last):
114
+ ...
115
+ ValueError: cannot add edge from 0 to 0 in graph without loops
116
+ sage: D = DiGraph([(0, 1), (0, 1)], multiedges=True)
117
+ sage: M = Gammoid(D, roots=[1])
118
+ sage: M.is_isomorphic(matroids.Uniform(1, 2))
119
+ True
120
+ sage: M = Gammoid(D, roots=[3])
121
+ Traceback (most recent call last):
122
+ ...
123
+ ValueError: roots must be a subset of the vertices
124
+ sage: M = Gammoid(D, roots=[1], groundset=[3])
125
+ Traceback (most recent call last):
126
+ ...
127
+ ValueError: groundset must be a subset of the vertices
128
+
129
+ ::
130
+
131
+ sage: from sage.matroids.gammoid import Gammoid
132
+ sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
133
+ ....: 6: [4, 7], 7: [5, 8]}
134
+ sage: D = DiGraph(edgedict)
135
+ sage: M = Gammoid(D, roots=[]); M
136
+ Gammoid of rank 0 on 8 elements
137
+ sage: M = Gammoid(D, roots=[], groundset=[]); M
138
+ Gammoid of rank 0 on 0 elements
139
+
140
+ ::
141
+
142
+ sage: from sage.matroids.gammoid import Gammoid
143
+ sage: M = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4])
144
+ sage: TestSuite(M).run()
145
+ sage: TestSuite(M).run(verbose=True)
146
+ running ._test_category() . . . pass
147
+ running ._test_new() . . . pass
148
+ running ._test_not_implemented_methods() . . . pass
149
+ running ._test_pickling() . . . pass
150
+ """
151
+ self._roots = frozenset(roots)
152
+ vertices = frozenset(D.vertices())
153
+ if not self._roots.issubset(vertices):
154
+ raise ValueError("roots must be a subset of the vertices")
155
+
156
+ if groundset is None:
157
+ self._groundset = vertices
158
+ else:
159
+ self._groundset = frozenset(groundset)
160
+ if not self._groundset.issubset(vertices):
161
+ raise ValueError("groundset must be a subset of the vertices")
162
+
163
+ # self._D is used for computations
164
+ # self._G is used for referencing and hashing
165
+ # loops will cause an error here, but multiedges will be ignored
166
+ self._D = DiGraph([D.vertices(), D.edges(labels=False)])
167
+ self._prune_vertices()
168
+ self._G = self._D.copy(immutable=True)
169
+ self._rootv = self._D.add_vertex()
170
+ for v in roots:
171
+ self._D.add_edge(v, self._rootv)
172
+
173
+ def _prune_vertices(self):
174
+ """
175
+ Remove irrelevant vertices from the internal digraph.
176
+
177
+ This will remove vertices that are not part of the groundset and
178
+ cannot be used in a valid path between an element and a root.
179
+ However, this will not remove a cycle of such vertices.
180
+
181
+ EXAMPLES::
182
+
183
+ sage: from sage.matroids.gammoid import Gammoid
184
+ sage: D = digraphs.TransitiveTournament(5)
185
+ sage: D.add_vertex(6)
186
+ sage: M = Gammoid(D, roots=[3, 4], groundset=[0, 1, 4])
187
+ sage: M.digraph().vertices()
188
+ [0, 1, 2, 3, 4]
189
+ """
190
+ vertices_c = self._roots.union(self._groundset)
191
+ extra_sources = set(self._D.sources()).difference(vertices_c)
192
+ extra_sinks = set(self._D.sinks()).difference(vertices_c)
193
+ while extra_sources or extra_sinks:
194
+ self._D.delete_vertices(set(extra_sources).union(extra_sinks))
195
+ extra_sources = set(self._D.sources()).difference(vertices_c)
196
+ extra_sinks = set(self._D.sinks()).difference(vertices_c)
197
+
198
+ def __hash__(self):
199
+ r"""
200
+ Return an invariant of the matroid.
201
+
202
+ This function is called when matroids are added to a set. It is very
203
+ desirable to override it so it can distinguish matroids on the same
204
+ groundset, which is a very typical use case!
205
+
206
+ .. WARNING::
207
+
208
+ This method is linked to ``__richcmp__`` (in Cython) and ``__cmp__``
209
+ or ``__eq__``/``__ne__`` (in Python). If you override one, you
210
+ should (and, in Cython, \emph{must}) override the other!
211
+
212
+ EXAMPLES::
213
+
214
+ sage: from sage.matroids.gammoid import Gammoid
215
+ sage: D = digraphs.TransitiveTournament(5)
216
+ sage: M1 = Gammoid(D, roots=[3, 4])
217
+ sage: M2 = Gammoid(D, roots=[2, 3])
218
+ sage: hash(M1) == hash(M2)
219
+ False
220
+ sage: N1 = M1.delete(2)
221
+ sage: N2 = Gammoid(D, roots=[3, 4], groundset=[0, 1, 3, 4])
222
+ sage: hash(N1) == hash(N2)
223
+ True
224
+ sage: D.delete_edge(0, 4)
225
+ sage: M3 = Gammoid(D, roots=[3, 4])
226
+ sage: hash(M1) == hash(M3)
227
+ False
228
+ """
229
+ return hash((self._G, self._groundset, self._roots))
230
+
231
+ def __eq__(self, other):
232
+ """
233
+ Compare two matroids.
234
+
235
+ For two graphic matroids to be equal, all attributes of the underlying
236
+ graphs must be equal.
237
+
238
+ INPUT:
239
+
240
+ - ``other`` -- matroid
241
+
242
+ OUTPUT: ``True`` if ``self`` and ``other`` have the same digraph,
243
+ roots, and groundset; ``False`` otherwise
244
+
245
+ EXAMPLES::
246
+
247
+ sage: from sage.matroids.gammoid import Gammoid
248
+ sage: D = digraphs.TransitiveTournament(5)
249
+ sage: M1 = Gammoid(D, roots=[3, 4])
250
+ sage: M2 = Gammoid(D, roots=[2, 3])
251
+ sage: M1 == M2
252
+ False
253
+ sage: N1 = M1.delete(2)
254
+ sage: N2 = Gammoid(D, roots=[3, 4], groundset=[0, 1, 3, 4])
255
+ sage: N1 == N2
256
+ True
257
+ """
258
+ if not isinstance(other, Gammoid):
259
+ return False
260
+ # The roots are implied by self._D
261
+ return (self._D == other._D and self._groundset == other._groundset)
262
+
263
+ def __ne__(self, other):
264
+ """
265
+ Compare two matroids.
266
+
267
+ INPUT:
268
+
269
+ - ``other`` -- matroid
270
+
271
+ OUTPUT: ``False`` if ``self`` and ``other`` have the same digraphs,
272
+ roots, and groundset; ``True`` otherwise
273
+
274
+ EXAMPLES::
275
+
276
+ sage: from sage.matroids.gammoid import Gammoid
277
+ sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8], 6: [4, 7],
278
+ ....: 7: [5, 8]}
279
+ sage: D = DiGraph(edgedict)
280
+ sage: M = Gammoid(D, roots=[1, 2, 3])
281
+ sage: D.relabel([1, 2, 3, 4, 5, 6, 7, 'a'])
282
+ sage: N = Gammoid(D, roots=[1, 2, 3])
283
+ sage: M == N
284
+ False
285
+ sage: M.delete(8) == N.delete('a')
286
+ True
287
+ """
288
+ return (not self == other)
289
+
290
+ def __reduce__(self):
291
+ """
292
+ Save the matroid for later reloading.
293
+
294
+ OUTPUT:
295
+
296
+ A tuple ``(unpickle, (version, data))``, where ``unpickle`` is the
297
+ name of a function that, when called with ``(version, data)``,
298
+ produces a matroid isomorphic to ``self``. ``version`` is an integer
299
+ (currently 0) and ``data`` is a tuple ``(E, F, name)`` where ``E`` is
300
+ the groundset, ``F`` is the dictionary of flats, and ``name`` is a
301
+ custom name.
302
+
303
+ EXAMPLES::
304
+
305
+ sage: from sage.matroids.gammoid import Gammoid
306
+ sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
307
+ ....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
308
+ sage: D = DiGraph(edgelist)
309
+ sage: M = Gammoid(D, roots=[4, 5, 6])
310
+ sage: M.rename("Example Gammoid: " + repr(M))
311
+ sage: M == loads(dumps(M)), loads(dumps(M)) # indirect doctest
312
+ (True, Example Gammoid: Gammoid of rank 3 on 7 elements)
313
+ sage: M.reset_name()
314
+ sage: loads(dumps(M))
315
+ Gammoid of rank 3 on 7 elements
316
+ """
317
+ import sage.matroids.unpickling
318
+ data = (self._D, self._roots, self._groundset, self.get_custom_name())
319
+ version = 0
320
+ return sage.matroids.unpickling.unpickle_gammoid, (version, data)
321
+
322
+ def digraph(self):
323
+ """
324
+ Return the digraph associated with the gammoid.
325
+
326
+ EXAMPLES::
327
+
328
+ sage: from sage.matroids.gammoid import Gammoid
329
+ sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
330
+ ....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
331
+ sage: D = DiGraph(edgelist)
332
+ sage: M = Gammoid(D, roots=[4, 5, 6])
333
+ sage: M.digraph() == D
334
+ True
335
+ """
336
+ return self._G.copy(data_structure='sparse')
337
+
338
+ def digraph_plot(self):
339
+ """
340
+ Plot the graph with color-coded vertices.
341
+
342
+ Vertices that are elements but not roots will be shown as blue. Vertices that
343
+ are roots but not elements are red. Vertices that are both are pink, and vertices
344
+ that are neither are grey.
345
+
346
+ EXAMPLES::
347
+
348
+ sage: from sage.matroids.gammoid import Gammoid
349
+ sage: D = digraphs.TransitiveTournament(4)
350
+ sage: M = Gammoid(D, roots=[2, 3])
351
+ sage: M.digraph_plot()
352
+ Graphics object consisting of 11 graphics primitives
353
+ """
354
+ self._inter = frozenset(self._roots.intersection(self._groundset))
355
+ self._buckets = frozenset(self._roots.difference(self._inter))
356
+ self._ending = frozenset(self._groundset.difference(self._inter))
357
+ self._therest = set(self._G.vertices()).difference(self._roots)
358
+ self._therest = frozenset(self._therest.difference(self._groundset))
359
+ # Vertices just in buckets set are red "#D55E00"
360
+ # Vertices just in the ending set are blue "#0072B2"
361
+ # Vertices in both are pink "#CC79A7"
362
+ # Vertices in neither are grey "#999999"
363
+ d = {"#D55E00": list(self._buckets), "#CC79A7": list(self._inter),
364
+ "#0072B2": list(self._ending), "#999999": list(self._therest)}
365
+ return self._G.plot(vertex_colors=d)
366
+
367
+ def _rank(self, X):
368
+ """
369
+ Return the rank of a set.
370
+
371
+ EXAMPLES::
372
+
373
+ sage: from sage.matroids.gammoid import Gammoid
374
+ sage: D = digraphs.TransitiveTournament(4)
375
+ sage: M = Gammoid(D, roots=[2, 3])
376
+ sage: M.rank([2])
377
+ 1
378
+ sage: M.full_rank()
379
+ 2
380
+ sage: M.rank(M.groundset())
381
+ 2
382
+ """
383
+ source = self._D.add_vertex()
384
+ for x in X:
385
+ self._D.add_edge(source, x)
386
+
387
+ rank = len(self._D.vertex_disjoint_paths(source, self._rootv))
388
+ self._D.delete_vertex(source)
389
+ return rank
390
+
391
+ def groundset(self):
392
+ """
393
+ Return the groundset of the matroid.
394
+
395
+ EXAMPLES::
396
+
397
+ sage: from sage.matroids.gammoid import Gammoid
398
+ sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
399
+ ....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
400
+ sage: D = DiGraph(edgelist)
401
+ sage: M = Gammoid(D, roots=[4, 5, 6])
402
+ sage: sorted(M.groundset())
403
+ [0, 1, 2, 3, 4, 5, 6]
404
+ """
405
+ return self._groundset
406
+
407
+ def _repr_(self):
408
+ """
409
+ Return a string representation of the matroid.
410
+
411
+ EXAMPLES:
412
+
413
+ sage: from sage.matroids.gammoid import Gammoid
414
+ sage: edgelist = [(0, 4), (0, 5), (1, 0), (1, 4), (2, 0), (2, 1), (2, 3),
415
+ ....: (2, 6), (3, 4), (3, 5), (4, 0), (5, 2), (6, 5)]
416
+ sage: D = DiGraph(edgelist)
417
+ sage: M = Gammoid(D, roots=[4, 5, 6]); M
418
+ Gammoid of rank 3 on 7 elements
419
+ """
420
+ self._mrank = str(self._rank(self._groundset))
421
+ self._elts = str(len(self._groundset))
422
+ return "Gammoid of rank " + self._mrank + " on " + self._elts + " elements"
423
+
424
+ def _minor(self, contractions=frozenset(), deletions=frozenset()):
425
+ """
426
+ Return a minor.
427
+
428
+ INPUT:
429
+
430
+ - ``contractions`` -- frozenset; subset of ``self.groundset()`` to be contracted
431
+ - ``deletions`` -- frozenset; subset of ``self.groundset()`` to be deleted
432
+
433
+ Assumptions: contractions are independent, deletions are coindependent,
434
+ contractions and deletions are disjoint.
435
+
436
+ OUTPUT:
437
+
438
+ If there are contractions, a :class:`MinorMatroid`. If not, a :class:`Gammoid`.
439
+
440
+ EXAMPLES::
441
+
442
+ sage: from sage.matroids.gammoid import Gammoid
443
+ sage: edgedict = {1: [2], 2: [3], 4: [1,5], 5: [2, 3, 8],
444
+ ....: 6: [4, 7], 7: [5, 8]}
445
+ sage: D = DiGraph(edgedict)
446
+ sage: M = Gammoid(D, roots=[1, 2, 3]); M
447
+ Gammoid of rank 3 on 8 elements
448
+ sage: N1 = M.delete([3, 4])
449
+ sage: N1.groundset()
450
+ frozenset({1, 2, 5, 6, 7, 8})
451
+ """
452
+ # Unlike TransversalMatroid, we don't check for coloops to delete
453
+ # because that would mean altering the roots
454
+ if deletions:
455
+ new_groundset = self.groundset().difference(deletions)
456
+ N = Gammoid(self.digraph(), self._roots, new_groundset)
457
+ else:
458
+ N = self
459
+
460
+ if contractions:
461
+ return MinorMatroid(N, contractions=contractions, deletions=frozenset())
462
+ else:
463
+ return N
464
+
465
+ def gammoid_extension(self, vertex, neighbors=[]):
466
+ """
467
+ Return a gammoid extended by an element.
468
+
469
+ The new element can be a vertex of the digraph that is not in the starting set,
470
+ or it can be a new source vertex.
471
+
472
+ INPUT:
473
+
474
+ - ``vertex`` -- a vertex of the gammoid's digraph that is not already in the
475
+ groundset, or a new vertex
476
+ - ``neighbors`` -- (optional) a set of vertices of the digraph
477
+
478
+ OUTPUT:
479
+
480
+ A :class:`Gammoid`. If ``vertex`` is not already in the graph, then the
481
+ new vertex will be have edges to ``neighbors``. The new vertex will have
482
+ in degree `0` regardless of whether or not ``neighbors`` is specified.
483
+
484
+ EXAMPLES::
485
+
486
+ sage: from sage.matroids.gammoid import Gammoid
487
+ sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
488
+ ....: 6: [4, 7], 7: [5, 8]}
489
+ sage: D = DiGraph(edgedict)
490
+ sage: M = Gammoid(D, roots=[2, 3, 4], groundset=range(2, 9))
491
+ sage: M1 = M.gammoid_extension(1)
492
+ sage: M1.groundset()
493
+ frozenset({1, 2, 3, 4, 5, 6, 7, 8})
494
+ sage: N = Gammoid(D, roots=[2, 3, 4])
495
+ sage: M1 == N
496
+ True
497
+ sage: M1.delete(1)
498
+ Gammoid of rank 3 on 7 elements
499
+ sage: M == M1.delete(1)
500
+ True
501
+ sage: M2 = M.gammoid_extension(9); sorted(M2.loops())
502
+ [8, 9]
503
+ sage: M4 = M.gammoid_extension(9, [1, 2, 3])
504
+ sage: M4.digraph().neighbors_out(9)
505
+ [1, 2, 3]
506
+ sage: M4.digraph().neighbors_in(9)
507
+ []
508
+
509
+ TESTS::
510
+
511
+ sage: from sage.matroids.gammoid import Gammoid
512
+ sage: edgedict = {1: [2], 2: [3], 4: [1, 5], 5: [2, 3, 8],
513
+ ....: 6: [4, 7], 7: [5, 8]}
514
+ sage: D = DiGraph(edgedict)
515
+ sage: M = Gammoid(D, roots=[2, 3, 4], groundset=range(2, 9))
516
+ sage: M.gammoid_extension(2)
517
+ Traceback (most recent call last):
518
+ ...
519
+ ValueError: cannot extend by element already in groundset
520
+ sage: M.gammoid_extension(1, [2, 3, 4])
521
+ Traceback (most recent call last):
522
+ ...
523
+ ValueError: neighbors of vertex in digraph cannot be changed
524
+ sage: M.gammoid_extension(9, [9])
525
+ Traceback (most recent call last):
526
+ ...
527
+ ValueError: neighbors must already be in graph
528
+ """
529
+ if vertex in self._groundset:
530
+ raise ValueError("cannot extend by element already in groundset")
531
+ elif vertex in self._G:
532
+ if neighbors:
533
+ raise ValueError("neighbors of vertex in digraph cannot be changed")
534
+ new_groundset = set(self._groundset).union([vertex])
535
+ return Gammoid(D=self._G, roots=self._roots,
536
+ groundset=new_groundset)
537
+ else:
538
+ if not set(neighbors).issubset(self._G.vertices()):
539
+ raise ValueError("neighbors must already be in graph")
540
+ D = self.digraph()
541
+ D.add_vertex(vertex)
542
+ for n in neighbors:
543
+ D.add_edge(vertex, n)
544
+ new_groundset = set(self._groundset).union([vertex])
545
+ return Gammoid(D=D, roots=self._roots, groundset=new_groundset)
546
+
547
+ def gammoid_extensions(self, vertices=None):
548
+ """
549
+ Return an iterator of Gammoid extensions.
550
+
551
+ This will only consider extensions from vertices that are already present
552
+ in the digraph.
553
+
554
+ INPUT:
555
+
556
+ - ``vertices`` -- (optional) a list of vertices not in the digraph
557
+
558
+ OUTPUT:
559
+
560
+ An iterator of Gammoids. If ``vertices`` is not specified, every vertex
561
+ not already in the groundset will be considered.
562
+
563
+ EXAMPLES::
564
+
565
+ sage: from sage.matroids.gammoid import Gammoid
566
+ sage: M = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4],
567
+ ....: groundset=[0, 1, 4])
568
+ sage: [sorted(M1.groundset()) for M1 in M.gammoid_extensions()]
569
+ [[0, 1, 2, 4], [0, 1, 3, 4]]
570
+ sage: N = Gammoid(digraphs.TransitiveTournament(5), roots=[3, 4])
571
+ sage: [sorted(N1.groundset()) for N1 in N.gammoid_extensions()]
572
+ []
573
+
574
+ ::
575
+
576
+ sage: from sage.matroids.gammoid import Gammoid
577
+ sage: edgelist =[(i, i+1) for i in range(10)]
578
+ sage: M = Gammoid(DiGraph(edgelist), roots=[9], groundset=[0])
579
+ sage: sum(1 for M1 in M.gammoid_extensions(vertices=[3, 4, 5]))
580
+ 3
581
+ sage: sum(1 for M1 in M.gammoid_extensions())
582
+ 9
583
+ sage: set([M1.is_isomorphic(matroids.Uniform(1, 2))
584
+ ....: for M1 in M.gammoid_extensions()])
585
+ {True}
586
+ sage: len([M1 for M1 in M.gammoid_extensions([0, 1, 2])])
587
+ Traceback (most recent call last):
588
+ ...
589
+ ValueError: vertices must be in the digraph and not already in the groundset
590
+ """
591
+ free_vertices = set(self._G.vertices()).difference(self._groundset)
592
+ if vertices is None:
593
+ vertices = free_vertices
594
+ else:
595
+ vertices = set(vertices)
596
+ if not vertices.issubset(free_vertices):
597
+ raise ValueError("vertices must be in the digraph and not already in the groundset")
598
+ for v in vertices:
599
+ new_groundset = self._groundset.union([v])
600
+ yield Gammoid(self._G, self._roots, new_groundset)
@@ -0,0 +1,39 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.matroids.matroid cimport Matroid
3
+
4
+
5
+ cdef class GraphicMatroid(Matroid):
6
+ cdef frozenset _groundset
7
+ cdef readonly object _G
8
+ cdef dict _vertex_map
9
+ cdef dict _groundset_edge_map
10
+ cpdef frozenset groundset(self)
11
+ cpdef int _rank(self, frozenset X) except? -1
12
+ cpdef _vertex_stars(self)
13
+ cpdef _minor(self, contractions, deletions)
14
+ cpdef _has_minor(self, N, bint certificate=*)
15
+ cpdef int _corank(self, frozenset X) noexcept
16
+ cpdef bint _is_circuit(self, frozenset X) noexcept
17
+ cpdef frozenset _closure(self, frozenset X)
18
+ cpdef frozenset _max_independent(self, frozenset X)
19
+ cpdef frozenset _max_coindependent(self, frozenset X)
20
+ cpdef frozenset _circuit(self, frozenset X)
21
+ cpdef frozenset _coclosure(self, frozenset X)
22
+ cpdef bint _is_closed(self, frozenset X) noexcept
23
+ cpdef _is_isomorphic(self, other, certificate=*)
24
+ cpdef _isomorphism(self, other)
25
+ cpdef is_valid(self, certificate=*) noexcept
26
+ cpdef bint is_graphic(self, algorithm=*) except -1
27
+ cpdef bint is_regular(self, algorithm=*) except -1
28
+ cpdef graph(self)
29
+ cpdef vertex_map(self)
30
+ cpdef list groundset_to_edges(self, X)
31
+ cpdef _groundset_to_edges(self, X)
32
+ cpdef subgraph_from_set(self, X)
33
+ cpdef _subgraph_from_set(self, X)
34
+ cpdef graphic_extension(self, u, v=*, element=*)
35
+ cpdef graphic_coextension(self, u, v=*, X=*, element=*)
36
+ cpdef twist(self, X)
37
+ cpdef one_sum(self, X, u, v)
38
+ cpdef regular_matroid(self)
39
+ cpdef relabel(self, mapping)