passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_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 (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,16 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.matroids.matroid cimport Matroid
3
+
4
+ cdef class CircuitClosuresMatroid(Matroid):
5
+ cdef frozenset _groundset # _E
6
+ cdef dict _circuit_closures # _CC
7
+ cdef int _matroid_rank # _R
8
+ cpdef frozenset groundset(self)
9
+ cpdef int _rank(self, frozenset X) except? -1
10
+ cpdef full_rank(self)
11
+ cpdef bint _is_independent(self, frozenset F) noexcept
12
+ cpdef frozenset _max_independent(self, frozenset F)
13
+ cpdef frozenset _circuit(self, frozenset F)
14
+ cpdef dict circuit_closures(self)
15
+ cpdef _is_isomorphic(self, other, certificate=*)
16
+ cpdef relabel(self, mapping)
@@ -0,0 +1,559 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Circuit closures matroids
4
+
5
+ Matroids are characterized by a list of all tuples `(C, k)`, where `C` is the
6
+ closure of a circuit, and `k` the rank of `C`. The CircuitClosuresMatroid
7
+ class implements matroids using this information as data.
8
+
9
+ Construction
10
+ ============
11
+
12
+ A ``CircuitClosuresMatroid`` can be created from another matroid or from a
13
+ list of circuit-closures. For a full description of allowed inputs, see
14
+ :class:`below <sage.matroids.circuit_closures_matroid.CircuitClosuresMatroid>`.
15
+ It is recommended to use the
16
+ :func:`Matroid() <sage.matroids.constructor.Matroid>` function for a more
17
+ flexible construction of a ``CircuitClosuresMatroid``. For direct access to
18
+ the ``CircuitClosuresMatroid`` constructor, run::
19
+
20
+ sage: from sage.matroids.advanced import *
21
+
22
+ See also :mod:`sage.matroids.advanced`.
23
+
24
+ EXAMPLES::
25
+
26
+ sage: from sage.matroids.advanced import *
27
+ sage: M1 = CircuitClosuresMatroid(groundset='abcdef',
28
+ ....: circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
29
+ sage: M2 = Matroid(circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
30
+ sage: M3 = Matroid(circuit_closures=[(2, 'abc'),
31
+ ....: (3, 'abcdef'), (2, 'ade')])
32
+ sage: M1 == M2
33
+ True
34
+ sage: M1 == M3
35
+ True
36
+
37
+ Note that the class does not implement custom minor and dual operations::
38
+
39
+ sage: from sage.matroids.advanced import *
40
+ sage: M = CircuitClosuresMatroid(groundset='abcdef',
41
+ ....: circuit_closures={2: ['abc', 'ade'], 3: ['abcdef']})
42
+ sage: isinstance(M.contract('a'), MinorMatroid)
43
+ True
44
+ sage: isinstance(M.dual(), DualMatroid)
45
+ True
46
+
47
+ AUTHORS:
48
+
49
+ - Rudi Pendavingh, Stefan van Zwam (2013-04-01): initial version
50
+ """
51
+
52
+ # ****************************************************************************
53
+ # Copyright (C) 2013 Rudi Pendavingh <rudi.pendavingh@gmail.com>
54
+ # Copyright (C) 2013 Stefan van Zwam <stefanvanzwam@gmail.com>
55
+ #
56
+ # Distributed under the terms of the GNU General Public License (GPL)
57
+ # as published by the Free Software Foundation; either version 2 of
58
+ # the License, or (at your option) any later version.
59
+ # https://www.gnu.org/licenses/
60
+ # ****************************************************************************
61
+
62
+ from cpython.object cimport Py_EQ, Py_NE
63
+ from sage.structure.richcmp cimport rich_to_bool, richcmp
64
+ from sage.matroids.matroid cimport Matroid
65
+ from sage.matroids.set_system cimport SetSystem
66
+ from sage.matroids.utilities import setprint_s
67
+
68
+
69
+ cdef class CircuitClosuresMatroid(Matroid):
70
+ r"""
71
+ A general matroid `M` is characterized by its rank `r(M)` and the set of
72
+ pairs
73
+
74
+ `(k, \{` closure `(C) : C ` circuit of ` M, r(C)=k\})` for `k=0, .., r(M)-1`
75
+
76
+ As each independent set of size `k` is in at most one closure(`C`) of rank
77
+ `k`, and each closure(`C`) of rank `k` contains at least `k + 1`
78
+ independent sets of size `k`, there are at most `\binom{n}{k}/(k + 1)`
79
+ such closures-of-circuits of rank `k`. Each closure(`C`) takes `O(n)` bits
80
+ to store, giving an upper bound of `O(2^n)` on the space complexity of the
81
+ entire matroid.
82
+
83
+ A subset `X` of the groundset is independent if and only if
84
+
85
+ `| X \cap ` closure `(C) | \leq k` for all circuits `C` of `M` with
86
+ `r(C)=k`.
87
+
88
+ So determining whether a set is independent takes time proportional to the
89
+ space complexity of the matroid.
90
+
91
+ INPUT:
92
+
93
+ - ``M`` -- matroid (default: ``None``)
94
+ - ``groundset`` -- groundset of a matroid (default: ``None``)
95
+ - ``circuit_closures`` -- dictionary (default: ``None``); the collection of
96
+ circuit closures of a matroid presented as a dictionary whose keys are
97
+ ranks, and whose values are sets of circuit closures of the specified rank
98
+
99
+ OUTPUT:
100
+
101
+ - If the input is a matroid ``M``, return a ``CircuitClosuresMatroid``
102
+ instance representing ``M``.
103
+ - Otherwise, return a ``CircuitClosuresMatroid`` instance based on
104
+ ``groundset`` and ``circuit_closures``.
105
+
106
+ .. NOTE::
107
+
108
+ For a more flexible means of input, use the ``Matroid()`` function.
109
+
110
+ EXAMPLES::
111
+
112
+ sage: from sage.matroids.advanced import *
113
+ sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
114
+ sage: M
115
+ Matroid of rank 3 on 7 elements with circuit-closures
116
+ {2: {{'a', 'b', 'f'}, {'a', 'c', 'e'}, {'a', 'd', 'g'},
117
+ {'b', 'c', 'd'}, {'b', 'e', 'g'}, {'c', 'f', 'g'},
118
+ {'d', 'e', 'f'}}, 3: {{'a', 'b', 'c', 'd', 'e', 'f', 'g'}}}
119
+ sage: M = CircuitClosuresMatroid(groundset='abcdefgh',
120
+ ....: circuit_closures={3: ['edfg', 'acdg', 'bcfg', 'cefh',
121
+ ....: 'afgh', 'abce', 'abdf', 'begh', 'bcdh', 'adeh'],
122
+ ....: 4: ['abcdefgh']})
123
+ sage: M.equals(matroids.catalog.P8())
124
+ True
125
+ """
126
+
127
+ # necessary (__init__, groundset, _rank)
128
+
129
+ def __init__(self, M=None, groundset=None, circuit_closures=None):
130
+ """
131
+ Initialization of the matroid. See the class docstring for full
132
+ documentation.
133
+
134
+ EXAMPLES::
135
+
136
+ sage: from sage.matroids.advanced import *
137
+ sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
138
+ sage: M
139
+ Matroid of rank 3 on 7 elements with circuit-closures
140
+ {2: {{'a', 'b', 'f'}, {'a', 'c', 'e'}, {'a', 'd', 'g'},
141
+ {'b', 'c', 'd'}, {'b', 'e', 'g'}, {'c', 'f', 'g'},
142
+ {'d', 'e', 'f'}},
143
+ 3: {{'a', 'b', 'c', 'd', 'e', 'f', 'g'}}}
144
+
145
+ sage: M = CircuitClosuresMatroid(groundset='abcdefgh',
146
+ ....: circuit_closures={3: ['edfg', 'acdg', 'bcfg', 'cefh',
147
+ ....: 'afgh', 'abce', 'abdf', 'begh', 'bcdh', 'adeh'],
148
+ ....: 4: ['abcdefgh']})
149
+ sage: M.equals(matroids.catalog.P8())
150
+ True
151
+
152
+ TESTS::
153
+
154
+ sage: from sage.matroids.advanced import *
155
+ sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
156
+ sage: TestSuite(M).run()
157
+ """
158
+ if M is not None:
159
+ self._groundset = M.groundset()
160
+ self._circuit_closures = M.circuit_closures()
161
+ else:
162
+ self._groundset = frozenset(groundset)
163
+ self._circuit_closures = {}
164
+ for k in circuit_closures:
165
+ self._circuit_closures[k] = frozenset([frozenset(X) for X in circuit_closures[k]])
166
+ self._matroid_rank = self.rank(self._groundset)
167
+
168
+ cpdef frozenset groundset(self):
169
+ """
170
+ Return the groundset of the matroid.
171
+
172
+ The groundset is the set of elements that comprise the matroid.
173
+
174
+ OUTPUT: frozenset
175
+
176
+ EXAMPLES::
177
+
178
+ sage: M = matroids.catalog.Pappus()
179
+ sage: sorted(M.groundset())
180
+ ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
181
+ """
182
+ return frozenset(self._groundset)
183
+
184
+ cpdef int _rank(self, frozenset X) except? -1:
185
+ """
186
+ Return the rank of a set ``X``.
187
+
188
+ This method does no checking on ``X``, and
189
+ ``X`` may be assumed to have the same interface as ``frozenset``.
190
+
191
+ INPUT:
192
+
193
+ - ``X`` -- an object with Python's ``frozenset`` interface
194
+
195
+ OUTPUT: the rank of ``X`` in the matroid
196
+
197
+ EXAMPLES::
198
+
199
+ sage: M = matroids.catalog.NonPappus()
200
+ sage: M._rank(frozenset('abc'))
201
+ 2
202
+ """
203
+ return len(self._max_independent(X))
204
+
205
+ # optional
206
+
207
+ cpdef full_rank(self):
208
+ r"""
209
+ Return the rank of the matroid.
210
+
211
+ The *rank* of the matroid is the size of the largest independent
212
+ subset of the groundset.
213
+
214
+ OUTPUT: integer
215
+
216
+ EXAMPLES::
217
+
218
+ sage: M = matroids.catalog.Vamos()
219
+ sage: M.full_rank()
220
+ 4
221
+ sage: M.dual().full_rank()
222
+ 4
223
+ """
224
+ return self._matroid_rank
225
+
226
+ cpdef bint _is_independent(self, frozenset F) noexcept:
227
+ """
228
+ Test if input is independent.
229
+
230
+ INPUT:
231
+
232
+ - ``X`` -- an object with Python's ``frozenset`` interface containing
233
+ a subset of ``self.groundset()``
234
+
235
+ OUTPUT: boolean
236
+
237
+ EXAMPLES::
238
+
239
+ sage: M = matroids.catalog.Vamos()
240
+ sage: M._is_independent(frozenset(['a', 'b', 'c']))
241
+ True
242
+ sage: M._is_independent(frozenset(['a', 'b', 'c', 'd']))
243
+ False
244
+ """
245
+ for r in sorted(self._circuit_closures):
246
+ if len(F) <= r:
247
+ break
248
+ for C in self._circuit_closures[r]:
249
+ S = F & C
250
+ if len(S) > r:
251
+ return False
252
+ return True
253
+
254
+ cpdef frozenset _max_independent(self, frozenset F):
255
+ """
256
+ Compute a maximal independent subset.
257
+
258
+ INPUT:
259
+
260
+ - ``X`` -- an object with Python's ``frozenset`` interface containing
261
+ a subset of ``self.groundset()``
262
+
263
+ OUTPUT: a maximal independent subset of ``X``
264
+
265
+ EXAMPLES::
266
+
267
+ sage: M = matroids.catalog.Vamos()
268
+ sage: X = M._max_independent(frozenset(['a', 'c', 'd', 'e', 'f']))
269
+ sage: sorted(X) # random
270
+ ['a', 'd', 'e', 'f']
271
+ sage: M.is_independent(X)
272
+ True
273
+ sage: all(M.is_dependent(X.union([y])) for y in M.groundset() if y not in X)
274
+ True
275
+ """
276
+ I = set(F)
277
+ for r in sorted(self._circuit_closures.keys()):
278
+ if len(I) == 0:
279
+ break
280
+ for C in self._circuit_closures[r]:
281
+ if len(I) == 0:
282
+ break
283
+ S = I & C
284
+ while(len(S) > r):
285
+ I.discard(S.pop())
286
+
287
+ return frozenset(I)
288
+
289
+ cpdef frozenset _circuit(self, frozenset F):
290
+ """
291
+ Return a minimal dependent subset.
292
+
293
+ INPUT:
294
+
295
+ - ``X`` -- an object with Python's ``frozenset`` interface containing
296
+ a subset of ``self.groundset()``
297
+
298
+ OUTPUT: a circuit contained in ``X``, if it exists; otherwise, an error
299
+ is raised
300
+
301
+ EXAMPLES::
302
+
303
+ sage: M = matroids.catalog.Vamos()
304
+ sage: sorted(M._circuit(frozenset(['a', 'c', 'd', 'e', 'f'])))
305
+ ['c', 'd', 'e', 'f']
306
+ sage: sorted(M._circuit(frozenset(['a', 'c', 'd'])))
307
+ Traceback (most recent call last):
308
+ ...
309
+ ValueError: no circuit in independent set
310
+ """
311
+ for r in sorted(self._circuit_closures):
312
+ for C in self._circuit_closures[r]:
313
+ S = set(F & C)
314
+ if len(S) > r:
315
+ while len(S) > r + 1:
316
+ S.pop()
317
+ return frozenset(S)
318
+ raise ValueError("no circuit in independent set")
319
+
320
+ cpdef dict circuit_closures(self):
321
+ """
322
+ Return the closures of circuits of the matroid.
323
+
324
+ A *circuit closure* is a closed set containing a circuit.
325
+
326
+ OUTPUT: dictionary containing the circuit closures of the matroid,
327
+ indexed by their ranks
328
+
329
+ .. SEEALSO::
330
+
331
+ :meth:`Matroid.circuit() <sage.matroids.matroid.Matroid.circuit>`,
332
+ :meth:`Matroid.closure() <sage.matroids.matroid.Matroid.closure>`
333
+
334
+ EXAMPLES::
335
+
336
+ sage: from sage.matroids.advanced import *
337
+ sage: M = CircuitClosuresMatroid(matroids.catalog.Fano())
338
+ sage: CC = M.circuit_closures()
339
+ sage: len(CC[2])
340
+ 7
341
+ sage: len(CC[3])
342
+ 1
343
+ sage: len(CC[1])
344
+ Traceback (most recent call last):
345
+ ...
346
+ KeyError: 1
347
+ sage: [sorted(X) for X in CC[3]]
348
+ [['a', 'b', 'c', 'd', 'e', 'f', 'g']]
349
+ """
350
+ return self._circuit_closures
351
+
352
+ cpdef _is_isomorphic(self, other, certificate=False):
353
+ """
354
+ Test if ``self`` is isomorphic to ``other``.
355
+
356
+ Internal version that performs no checks on input.
357
+
358
+ INPUT:
359
+
360
+ - ``other`` -- matroid
361
+ - ``certificate`` -- boolean (default: ``False``)
362
+
363
+ OUTPUT: boolean, and, if ``certificate = True``, a dictionary giving
364
+ the isomorphism or ``None``
365
+
366
+ .. NOTE::
367
+
368
+ Internal version that does no input checking.
369
+
370
+ EXAMPLES::
371
+
372
+ sage: from sage.matroids.advanced import *
373
+ sage: M1 = CircuitClosuresMatroid(matroids.Wheel(3))
374
+ sage: M2 = matroids.CompleteGraphic(4) # needs sage.graphs
375
+ sage: M1._is_isomorphic(M2) # needs sage.graphs
376
+ True
377
+ sage: M1._is_isomorphic(M2, certificate=True) # needs sage.graphs
378
+ (True, {0: 0, 1: 1, 2: 2, 3: 3, 4: 5, 5: 4})
379
+ sage: M1 = CircuitClosuresMatroid(matroids.catalog.Fano())
380
+ sage: M2 = matroids.catalog.NonFano()
381
+ sage: M1._is_isomorphic(M2)
382
+ False
383
+ sage: M1._is_isomorphic(M2, certificate=True)
384
+ (False, None)
385
+ """
386
+ if certificate:
387
+ return self._is_isomorphic(other), self._isomorphism(other)
388
+ N = CircuitClosuresMatroid(other)
389
+ if sorted(self._circuit_closures.keys()) != sorted(N._circuit_closures.keys()):
390
+ return False
391
+ SM = SetSystem(self.groundset())
392
+ for r in self._circuit_closures:
393
+ for C in self._circuit_closures[r]:
394
+ SM.append(C)
395
+ SN = SetSystem(N.groundset())
396
+ for r in N._circuit_closures:
397
+ for C in N._circuit_closures[r]:
398
+ SN.append(C)
399
+ return SM._isomorphism(SN) is not None
400
+
401
+ # representation
402
+
403
+ def _repr_(self):
404
+ """
405
+ Return a string representation of the matroid.
406
+
407
+ EXAMPLES::
408
+
409
+ sage: M = matroids.catalog.Vamos()
410
+ sage: print(M._repr_())
411
+ Matroid of rank 4 on 8 elements with circuit-closures
412
+ {3: {{'a', 'b', 'c', 'd'}, {'a', 'b', 'e', 'f'},
413
+ {'a', 'b', 'g', 'h'}, {'c', 'd', 'e', 'f'},
414
+ {'e', 'f', 'g', 'h'}},
415
+ 4: {{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}}}
416
+ """
417
+ return Matroid._repr_(self) + " with circuit-closures\n" + setprint_s(self._circuit_closures)
418
+
419
+ # comparison
420
+
421
+ def __hash__(self):
422
+ r"""
423
+ Return an invariant of the matroid.
424
+
425
+ This function is called when matroids are added to a set. It is very
426
+ desirable to override it so it can distinguish matroids on the same
427
+ groundset, which is a very typical use case!
428
+
429
+ .. WARNING::
430
+
431
+ This method is linked to ``__richcmp__`` (in Cython) and ``__cmp__``
432
+ or ``__eq__``/``__ne__`` (in Python). If you override one, you
433
+ should (and, in Cython, \emph{must}) override the other!
434
+
435
+ EXAMPLES::
436
+
437
+ sage: M = matroids.catalog.Vamos()
438
+ sage: N = matroids.catalog.Vamos()
439
+ sage: hash(M) == hash(N)
440
+ True
441
+ sage: O = matroids.catalog.NonVamos()
442
+ sage: hash(M) == hash(O)
443
+ False
444
+ """
445
+ return hash(tuple([self.groundset(), tuple([(r, len(self._circuit_closures[r])) for r in sorted(self._circuit_closures.keys())])]))
446
+
447
+ def __richcmp__(left, right, int op):
448
+ r"""
449
+ Compare two matroids.
450
+
451
+ We take a very restricted view on equality: the objects need to be of
452
+ the exact same type (so no subclassing) and the internal data need to
453
+ be the same. For ``BasisMatroid``s, this means that the groundsets and
454
+ the sets of bases of the two matroids are equal.
455
+
456
+ EXAMPLES::
457
+
458
+ sage: M = matroids.catalog.Pappus()
459
+ sage: N = matroids.catalog.NonPappus()
460
+ sage: M == N
461
+ False
462
+ sage: N = Matroid(M.bases())
463
+ sage: M == N
464
+ False
465
+ """
466
+ cdef CircuitClosuresMatroid lt, rt
467
+ if op not in [Py_EQ, Py_NE]:
468
+ return NotImplemented
469
+ if type(left) is not type(right):
470
+ return NotImplemented
471
+ lt = <CircuitClosuresMatroid> left
472
+ rt = <CircuitClosuresMatroid> right
473
+ if lt.groundset() != rt.groundset():
474
+ return rich_to_bool(op, 1)
475
+ if lt.full_rank() != rt.full_rank():
476
+ return rich_to_bool(op, 1)
477
+ return richcmp(lt._circuit_closures, rt._circuit_closures, op)
478
+
479
+ # copying, loading, saving
480
+
481
+ def __reduce__(self):
482
+ """
483
+ Save the matroid for later reloading.
484
+
485
+ OUTPUT:
486
+
487
+ A tuple ``(unpickle, (version, data))``, where ``unpickle`` is the
488
+ name of a function that, when called with ``(version, data)``,
489
+ produces a matroid isomorphic to ``self``. ``version`` is an integer
490
+ (currently 0) and ``data`` is a tuple ``(E, CC, name)`` where ``E`` is
491
+ the groundset, ``CC`` is the dictionary of circuit closures, and
492
+ ``name`` is a custom name.
493
+
494
+ EXAMPLES::
495
+
496
+ sage: M = matroids.catalog.Vamos()
497
+ sage: M == loads(dumps(M)) # indirect doctest
498
+ True
499
+ sage: M.reset_name()
500
+ sage: loads(dumps(M))
501
+ Matroid of rank 4 on 8 elements with circuit-closures
502
+ {3: {{'a', 'b', 'c', 'd'}, {'a', 'b', 'e', 'f'},
503
+ {'a', 'b', 'g', 'h'}, {'c', 'd', 'e', 'f'},
504
+ {'e', 'f', 'g', 'h'}},
505
+ 4: {{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}}}
506
+ """
507
+ import sage.matroids.unpickling
508
+ data = (self._groundset, self._circuit_closures, self.get_custom_name())
509
+ version = 0
510
+ return sage.matroids.unpickling.unpickle_circuit_closures_matroid, (version, data)
511
+
512
+ cpdef relabel(self, mapping):
513
+ r"""
514
+ Return an isomorphic matroid with relabeled groundset.
515
+
516
+ The output is obtained by relabeling each element `e` by
517
+ ``mapping[e]``, where ``mapping`` is a given injective map. If
518
+ ``mapping[e]`` is not defined, then the identity map is assumed.
519
+
520
+ INPUT:
521
+
522
+ - ``mapping`` -- a Python object such that ``mapping[e]`` is the new
523
+ label of `e`
524
+
525
+ OUTPUT: matroid
526
+
527
+ EXAMPLES::
528
+
529
+ sage: # needs sage.rings.finite_rings
530
+ sage: from sage.matroids.circuit_closures_matroid import CircuitClosuresMatroid
531
+ sage: M = CircuitClosuresMatroid(matroids.catalog.RelaxedNonFano())
532
+ sage: sorted(M.groundset())
533
+ [0, 1, 2, 3, 4, 5, 6]
534
+ sage: N = M.relabel({'g': 'x', 0: 'z'}) # 'g': 'x' is ignored
535
+ sage: from sage.matroids.utilities import cmp_elements_key
536
+ sage: sorted(N.groundset(), key=cmp_elements_key)
537
+ [1, 2, 3, 4, 5, 6, 'z']
538
+ sage: M.is_isomorphic(N)
539
+ True
540
+
541
+ TESTS::
542
+
543
+ sage: # needs sage.rings.finite_rings
544
+ sage: from sage.matroids.circuit_closures_matroid import CircuitClosuresMatroid
545
+ sage: M = CircuitClosuresMatroid(matroids.catalog.RelaxedNonFano())
546
+ sage: f = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g'}
547
+ sage: N = M.relabel(f)
548
+ sage: for S in powerset(M.groundset()):
549
+ ....: assert M.rank(S) == N.rank([f[x] for x in S])
550
+ """
551
+ d = self._relabel_map(mapping)
552
+ E = [d[x] for x in self.groundset()]
553
+ CC = {}
554
+ for i in self.circuit_closures():
555
+ CC[i] = [[d[y] for y in x] for x in self._circuit_closures[i]]
556
+ M = CircuitClosuresMatroid(groundset=E, circuit_closures=CC)
557
+ return M
558
+
559
+ # todo: customized minor, extend methods.
@@ -0,0 +1,38 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.matroids.matroid cimport Matroid
3
+ from sage.matroids.set_system cimport SetSystem
4
+
5
+ cdef class CircuitsMatroid(Matroid):
6
+ cdef frozenset _groundset
7
+ cdef int _matroid_rank
8
+ cdef set _C # circuits
9
+ cdef dict _k_C # k-circuits (k=len)
10
+ cdef list _sorted_C_lens
11
+ cdef bint _nsc_defined
12
+ cpdef frozenset groundset(self)
13
+ cpdef int _rank(self, frozenset X) except? -1
14
+ cpdef full_rank(self)
15
+ cpdef bint _is_independent(self, frozenset X) noexcept
16
+ cpdef frozenset _max_independent(self, frozenset X)
17
+ cpdef frozenset _circuit(self, frozenset X)
18
+ cpdef frozenset _closure(self, frozenset X)
19
+
20
+ # enumeration
21
+ cpdef SetSystem independent_sets(self, long k=*)
22
+ cpdef SetSystem dependent_sets(self, long k)
23
+ cpdef SetSystem circuits(self, k=*)
24
+ cpdef SetSystem nonspanning_circuits(self)
25
+ cpdef SetSystem no_broken_circuits_facets(self, ordering=*, reduced=*)
26
+ cpdef SetSystem no_broken_circuits_sets(self, ordering=*, reduced=*)
27
+ cpdef broken_circuit_complex(self, ordering=*, reduced=*)
28
+
29
+ # properties
30
+ cpdef girth(self)
31
+ cpdef bint is_paving(self) noexcept
32
+
33
+ # isomorphism and relabeling
34
+ cpdef _is_isomorphic(self, other, certificate=*)
35
+ cpdef relabel(self, mapping)
36
+
37
+ # verification
38
+ cpdef is_valid(self, certificate=*)